请问JSI是什么东西?一般在什么情况下使用的?
JSI项目分两部分:框架内核、基于这个内核开发的系列功能子项目。
框架内核旨在提供一个 开放的、无侵入的 脚本库管理解决方案,让类库编写者能够自己管理好自己编写的类库的相关依赖,提高类库的易用性,让最终用户从繁琐的依赖管理中解脱出来;隔离各个模块的执行上下文,方便于重用、组织第三方脚本库,避免它们带来的命名污染问题。同时尽量做到简单,不加入特殊语法,被管理的脚本无框架依赖。JSI的功能子项目,可以提供某方面的具体实用功能。如网页装饰框架,模板引擎。作为一个开放的脚本管理框架,JSI不打算提供庞大的功能API,而是让最终用户根据自己喜好整合其他类库,我们也提供一些常用脚本类库的整合实例(如:jQuery、Prototype、Scriptaculous、FCKEditor 、YAHOO UI...)。框架内核具体功能有: l 依赖管理: 脚本依赖的暴露是复杂度陡增的最大祸根。JSI提供了完善的依赖管理方案,将依赖终结在类库开发者手中。提高类库的易用性。对于一些简单的脚本,JSI很难体现它的优势,但是对于复杂的脚本库,特别是有多个且存在相互依赖脚本的复杂类库,那么最明显的一点,JSI可以简化网页上的脚本导入标记,不用成堆的script元素,只需导入直接使用的元素。JSI将自动导入间接依赖,且不污染全局空间。l 真正意义的按需装载: 通常的安需装载是阻塞式的,没有实际意义,就一个宣传的幌子;JSI提供了无阻塞的按需装载方式(延迟同步装载,异步装载,JSI2.0+) l 脚本执行上下文的隔离: 传统方式使用类库,将其直接导入进来,在全局上下文执行,这带来一个非常严重的冲突隐患,JSI不是这样,每个脚本都有单独的执行上下文,不必担心各个脚本的命名冲突。jquery ajax xhr监听上传进度显示不准确,求解?
如果你是用这种方式上传的话,确实没有好方法。
因为 XMLHttpRequest.onProgress 事件能拿到的是网络传输的字节而已;你说的问题里,“上传进度已完成”,实际是指浏览器已经把文件传输给了服务端;“很久才可以”,是你服务端额外处理的时间,这段时间对浏览器来说是不可感知的,它怎么会知道你服务端处理需要多久呢? 一般处理思路有这么几种:1、上传进度设置一个最大值,比如 99%,只有当服务端真正返回结果时才会变到 100%,这种方法最为简单粗暴;
2、尽量减少服务端处理的时间,例如收到文件后交给异步队列去处理,立刻返回给客户端响应,这种方法需要额外做的事件比较多,开发难度更高一些;
3、客户端分片上传,把大文件变成若干段小“文件”,缺点是浏览器只有支持 HTML5 才支持 FormData 分片。
Java到底有多强大,它可以做什么?
Java简介(有多强大)
多年来使用最广泛的编程语言,集成C++等主流编程语言的优点,摒弃多重继承,指针等复杂概念,因为语法简单,容易上手,跨平台等特性,大受欢迎。经过多年的积累和发展,形成了非常完善的Java生态。目前地球最强大(流行)编程语言!
Java能做啥
目前除了驱动,操作系统等少数领域,使用Java不太合适,Java几乎可以做目前IT领域的大部分软件开发。比如:
- 服务器开发
- 分布式,大数据,云
- Android开发
- 嵌入式开发
- 桌面端开发(很少)
- 。。。 。。。
前途
精了,透了,前途无量。
但是谈何容易!没有10年8年的长期积累,很难做到精通,学透。
而且Java的生态非常庞大,永远有学不完的东西。
不要想把所有东西都精通,精通某个领域即可。因为很多东西是类似的,很容易做到触类旁通。需要学习新领域的时候,可以快速掌握新领域的基本开发技能。
为何第一(优势)
- 语法相对简单,入门比较容易。
- 强大的生态,用户量庞大!
- 跨平台,能真正做到一次编译,到处运行。
- 。。。 。。。
Java劣势
解释型语言,需要虚拟机进行翻译执行,没有虚拟机的地方,不能使用,而且执行速度不是最快的。
版本更新比较慢,最新流行的语法或语法糖支持不是很到位。因为用户量庞大,生态复杂,再加上本身已经很完善了,所以语言更新少 新特性少。
相比新生代语言,比如Go,在语言新机制方面跟进不及时。

