jquery 闭包原理?
jQuery闭包原理
闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
简单说就是,定义在函数中的函数,并且可以在外部访问
可以减少全局变量的对象,防止全局变量过去庞大,导致难以维护
防止可修改变量,因为内部的变量外部是无法访问的,并且也不可修改的,确保安全
读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
什么是NPM,为什么要用NPM来管理包?
会产生冗余问题
前端与后端使用同一套包管理软件可以减少公共部分的耦合,但是会导致不必要的冗余。
比如一个bootstrap包,是不可能被后端使用的。但是如果统一使用npm管理,每次npm install都会安装bootstrap包,而后端一辈子都用不倒,完全是浪费带宽、存储空间、时间。并且你在运行后端前,每次都安装个bootstrap,你不觉得恶心吗?
运行环境完全不同
前端与后端的运行环境是完全不同的,前端运行于浏览器内(即主要是DOM与BOM环境,相对受限),后端则运行于OS内(有无限的API与可能性)。所以这两种开发环境是完全不同的。不同的开发环境使用同一个包管理文件显然是不合时宜的,也不符合模块化的理念。
开发人员也可能不同
前端与后端通常是不同的开发团队,因些前端关注的是HTML,CSS,DOM,BOM, js的UI库与动作库。而后端关注的是性能,安全,效率,数据,缓存,用户管理。他们可能都会用到gulp/grunt,而后端通常不会用到webpack,wiredep,bootstrap, jQuery这类纯前端的包。所以强行将他们捆绑在一起是没有必要的。
同构包可以分开打包
由于isomorphic js的流行,同构包也会越来越多。但是其实你会发现,不管如何同构,前后端的运行环境还是不同的。所以同构包的调用环境还是不一样的。前端的包通常需要通过browserify,webpack或者gulp等工具发布成前端可用的包。跟npm包直接通过package.json决定从什么地方接入是不同的。即使npm可以为前端包提供字段供前端接入,也会显得非常混乱。
请问java如何学习?
首先,对于IT行业来说,基础最重要。万丈高楼平地起,不论什么技术、中间件、工具,都是由基础知识为根基搭建起来的。就像建造大楼,没有水泥、钢筋、混凝土,也建不起来。
基础知识是所有技术的根基,应该花足够的时间学习、巩固。
Java开发方面的知识不少,总结了一下:
- 计算机基础,计算机原理、数据结构、算法基础、网络原理、操作系统原理、数据库原理、汇编原理等等;
- 编程语言基础,Java基础知识、JVM内存模型、GC原理、性能调优、设计模式、数据结构Java版等;
- 架系列,Spring系列如Spring Framework、Spring Security、Spring Boot、Spring Cloud等、Redis、MongoDB、ActiveMQ/JMS/RocketMQ/RabbitMQ/Kafka、zookeeper、dubbo等框架、中间件;
- 架构基础,CAP原理、BASE原理、Paxos、Raft算法、高性能架构理论、负载均衡算法、网关、流量削峰等等;
- 容器化,Docker原理、k8s、DevOps原理与实践等;
- 高级技术,大数据、区块链
一定要自主学习
我们都是从学生时代过来的,可以说我们一生之中的知识巅峰时期,正是高中那三年,确切的来说,是高三那一年。各种资料、书籍、试卷堆积如山,一周一小考,一月一大考,反复强化记忆。
这说明,我们的大脑是健忘的,需要我们持续不断的去复习,去巩固。但是,其遗忘也是有规律的。一天后,只剩余了所记忆内容的四成,甚至更低。随着时间的推移,遗忘的速度会加快。
所以,我们要做的,就是持续不断的学习、复习、巩固。第二天复习巩固一下第一天的内容,一周后复习本周的所有内容。为的就是能记住这些东西,对抗遗忘。
抓住碎时间,挤出长时间
上班族最大的问题就是没有时间,偶尔过个周末、放个假,还想歇一会儿,或者追个剧。那怎么办呢?其实,我们可以利用碎片时间。比如,在公交车上,地铁上,路上,我们都可以以各种形式记忆知识,比如听音频内容。
但是,碎片化时间毕竟有限,我们要做的,还是需要挤出来长一些的时间,多学习复杂的知识,可以看视频教程,也可以自己研究、自己实践。周末了,拿着电脑,去咖啡店,一坐一天。
固化知识
主动学习的效果是最好的。那作为Java开发者,我们该怎么主动学习呢?
此时不要觉得你已经学到了Java的知识。其实不然,这些知识知识在你闹钟游离,随时都有可能离去,而我们要做的,就是要固化这些知识,让他们彻彻底底的变成自己的资产。
而此时,笔记、博客等都是很好的方式。
把我们平时遇到的问题,归纳总结,然后组织语言描述出来,发到博客上,一方面巩固了自己的知识,另一方面也帮助了他人,何乐而不为呢?
实践里面出真知
光说不练假把式,掌握再多的理论知识终归无用,还是要看动手能力的。在学了这些理论知识之后,一定要试着自己做一些挑战性的项目,或者试着参与一些开源项目。
下面就是笔者花了1个月的时间,做的一个开源的定时任务调度框架开源项目,已经212颗星星了,发布之处,还获得了一周热门推荐:
总而言之,就是多参与到实践当中去,只有多实践,才能把我们所掌握的理论知识最大化的固化到我们的脑海中,形成我们自己的知识体系。
祝早日成为大神!
关注 银河架构师,发现更多科技精彩内容。

