在javascript中,我们把比较复杂的都是用模块化,今天我们就来了解一下require.js来实现模块化开发 require.js是什么?...require.js是在AMD规范上实现的一个 JavaScript 模块异步加载器。...require.js下载 下载地址:http://requirejs.org/docs/download.html 项目结构 首先请按照我的目录创建如下目录: ?...lib下存放一些常用的库,和我们最关键的require.js script下存放我们自己写的一些js。 index.html代码 <!...代码,我们主要看script标签,导入了require.js然后还有个data-main属性,这属性指定在加载完 reuqire.js 后,就用 requireJS 加载该属性值指定路径下的 JS 文件并运行
这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。 我采用的是一个非常流行的库require.js。...require.js的诞生,就是为了解决这两个问题: (1)实现js文件的异步加载,避免网页失去响应; (2)管理模块之间的依赖性,便于代码的编写和维护。...二、require.js的加载 使用require.js的第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。 ...六、加载非规范的模块 理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。...jQuery.fn.scroll' } } 七、require.js插件 require.js还提供一系列插件,实现一些特定的功能。
在服务器端可以先对网页数据进行压缩,然后将压缩后的文件提供给访问用户,最后在用户浏览器端解压显示(但要衡量加解压时间) 第三章 内容缓存工作原理 有CDN前的网站服务技术 – 硬件扩展...在OSI七层协 议模型中的第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略(算法),在数据链路层上实现负载均衡的原理是 根据数据包的目的MAC地址选择不同的路径...SSL加密分对称秘钥和非对称秘钥(计算资源消耗更大) SSL的基本原理和实现 – 可认证性(authentication) – 隐私性(privacy) –...– 通过在服务器上安装一块SSL加速板卡,可有效分担服务器CPU处理SSL事务的压力 ---- CDN的实现原理 在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,以便了解...zsvalue.com/201405/foundation-of-cdn-%e3%80%8acdn%e6%8a%80%e6%9c%af%e8%af%a6%e8%a7%a3%e3%80%8bnote/ CDN原理实现来源
这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。 我采用的是一个非常流行的库require.js。 一、为什么要用require.js?...require.js的诞生,就是为了解决这两个问题: (1)实现js文件的异步加载,避免网页失去响应; (2)管理模块之间的依赖性,便于代码的编写和维护。...二、require.js的加载 使用require.js的第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。 ...因此,require.js提供了一个优化工具,当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数。 五、AMD模块的写法 require.js加载的模块,采用AMD规范。...' } } 七、require.js插件 require.js还提供一系列插件,实现一些特定的功能。
abc"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); 运行结果为:false、true ### HashMap 的实现原理...#### HashMap概述 HashMap 是基于哈希表的Map接口的非同步实现。...此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。...ArrayList 中,所以这是一个通用的操作,很多人对它的性能表示过怀疑,不过想想我们的“均摊”原理,就释然了,而在 hashmap 数组扩容之后,最消耗性能的点就出现了:原数组中的数据必须重新计算其在新数组中的位置...总结 HashMap的实现原理: 利用 key 的 hashCode 重新 hash 计算出当前对象的元素在数组中的下标。 存储时,如果出现 hash 值相同的 key,此时有两种情况: (1).
当我们在硬盘上进行查询时,也就产生了硬盘的 I/O (读写)操作。相比于内存的存取来说,硬盘的 I/O 存取消耗的时间要高很多。当磁盘 I/O 次数越多,所消耗的时间也就越大。...这里说下数据结构的实现原理 hash 把key转换为int 数据,取模运算,将key存储到hash表中,数据都会加载到内存中,数据表小,没啥问题,数据大,就会耗费大量内存空间,MySQL中采用的是“自适应...B+tree 索引的数据结构都有个小问题,如果索引的值是递增的,那么插入数据就会在新的叶子里插入,如果不是递增,就会将其中的页进行分列合并,旋转,因此索引的维护和更新比较麻烦。...这也是为什么需要给每张表添加自增的主键索引,因为自增,所以每插入一条记录,都是在末尾的叶子节点添加key,这样就避免了索引结构的分列而导致的性能问题。 存储引擎怎么实现数据结构的呢?...Innodb -- B+tree 叶子节点存储的是实际的data值 MyISAM -- B+tree 叶子节点存储的是数据的地址值,如同书籍的目录.根据地址找到对应的数据内容
AQS的功能可以分为独占和共享,ReentrantLock实现了独占功能。 ReentrantLock实现了Lock接口,加锁和解锁都需要显式写出,注意一定要在适当时候unlock。...公平锁:线程获取锁的顺序和调用lock的顺序一样,FIFO; 非公平锁:线程获取锁的顺序和调用lock的顺序无关,全凭运气。...和lock的tryAcquire一样,unlock的tryRelease同样由ReentrantLock实现: ?...非公平锁 分析完公平锁的实现,还剩下非公平锁,主要区别是获取锁的过程不同。 ? 在NonfairSync的lock方法里,第一步直接尝试将state修改为1,很明显,这是抢先获取锁的过程。...这点体验出公平锁和非公平锁的不同,公平锁会关注队列里排队的情况,老老实实按照FIFO的次序;非公平锁只要有机会就抢占,才不管排队的事。
Synchronized是由JVM实现的一种实现互斥同步的一种方式,如果你查看被Synchronized修饰过的程序块编译后的字节码,会发现,被Synchronized修饰过的程序块,在编译前后被编译器生成了...+1,其实本质上就通过这种方式实现了可重入性。...3、JVM对Java的原生锁做了哪些优化? 在Java6之前,Monitor的实现完全依赖底层操作系统的互斥锁来实现,也就是我们刚才在问题二中所阐述的获取/释放锁的逻辑。...现代JDK中还提供了三种不同的Monitor实现,也就是三种不同的锁: 偏向锁(BiasedLocking) 轻量级锁 重量级锁 这三种锁使得JDK得以优化Synchronized的运行,当JVM检测到不同的竞争状况时...,会自动切换到适合的锁实现,这就是锁的升级、降级。
K,V>, Cloneable, java.io.Serializable{} 从源码中,我们可以看出,Hashtable 继承于 Dictionary 类,实现了 Map, Cloneable, java.io.Serializable...该话指出 Dictionary 这个类过时了,新的实现类应该实现Map接口。 Hashtable 源码解读 成员变量 Hashtable是通过"拉链法"实现的哈希表。...modCount 是用来实现 fail-fast 机制的。 关于变量的解释在源码注释中都有,最好还是应该看英文注释。...Dictionary 是任何可将键映射到相应值的类的抽象父类,而 AbstractMap 是基于 Map 接口的实现,它以最大限度地减少实现此接口所需的工作。...我们可以看一下源码,Hashtable 中的几乎所有的 public 的方法都是 synchronized 的,而有些方法也是在内部通过 synchronized 代码块来实现。
当我们在硬盘上进行查询时,也就产生了硬盘的 I/O (读写)操作。相比于内存的存取来说,硬盘的 I/O 存取消耗的时间要高很多。当磁盘 I/O 次数越多,所消耗的时间也就越大。...这里说下数据结构的实现原理 hash 把key转换为int 数据,取模运算,将key存储到hash表中,数据都会加载到内存中,数据表小,没啥问题,数据大,就会耗费大量内存空间,MySQL中采用的是...[B+tree] 索引的数据结构都有个小问题,如果索引的值是递增的,那么插入数据就会在新的叶子里插入,如果不是递增,就会将其中的页进行分列合并,旋转,因此索引的维护和更新比较麻烦。...这也是为什么需要给每张表添加自增的主键索引,因为自增,所以每插入一条记录,都是在末尾的叶子节点添加key,这样就避免了索引结构的分列而导致的性能问题。 存储引擎怎么实现数据结构的呢?...Innodb -- B+tree 叶子节点存储的是实际的data值 MyISAM -- B+tree 叶子节点存储的是数据的地址值,如同书籍的目录.根据地址找到对应的数据内容 关于B+树的数据结构的图解
VIP即Virtual IP Address,是实现HA(高可用)系统的一种方案,高可用的目的是通过技术手段避免因为系统出现故障而导致停止对外服务,一般实现方式是部署备用服务器,在主服务器出现故障时接管业务...注意VIP始终指向一个Master,因此VIP的方案并不能实现LB,只能实现HA。...| Role: Slave | |______________________| VIP的实现原理...VIP Keepalived的设计目的即是为了管理VIP,因此使用Keepalived实现VIP的配置非常简单。...采用Pacemaker实现VIP的原理和Keepalived基本相同,也是采用将VIP作为Secondary IP绑定到Master网卡的方式,具体设置步骤略。
在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,需要服务器请到TG@Daisy9677/@Vicky105805找我。...CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现。...通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被加速网站原有的域名即可访问,又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分...,以实现透明的加速服务,下面是CDN网络实现的具体操作过程。...2)、作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录; 3)、当需要进行sortlist时,CDN运营商可以利用DNS
它是一种观察者模式的衍生。其基本思想是,对目标对象的某属性添加观察,当该属性发生变化时,通过触发观察者对象实现的KVO接口方法,来自动的通知观察者。...KVO实现原理 以下代码为p对象的name属性添加了KVO观察。然后在添加观察前下个断点。...实现功能依赖的就是这个setName。 那这个setName方法究竟做了啥呢? 我们首先下俩个断点。...这个需要用到GNUstep的源码,虽然GNUstep不是苹果官方的源码,但是还是有很高的参考价值的 在GNUstep搜索observeValueForKeyPath 表示被观察对象收到了一个 -setValue...总结 所以,KVO的实现原理为:在我们调用addObserve的时候,会动态生成一个以NSKVONotifying_开头的当前类的一个子类,对象的isa指针就会指向这个类,系统会自动生成相应的方法。
HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。...HashMap的存取实现 存储 public V put(K key, V value) { // HashMap允许存放null键和null值。...而当数组长度为16时,即为2的n次方时,2n-1得到的二进制数的每个位上的值都为1,这使得在低位上&时,得到的和原hash的低位相同,加之hash(int h)方法对key的hashCode的进一步优化...HashMap的实现中,通过threshold字段来判断HashMap的最大容量: threshold = (int)(capacity * loadFactor); 结合负载因子的定义公式可知,threshold...这一策略在源码中的实现是通过modCount域,modCount顾名思义就是修改次数,对HashMap内容的修改都将增加这个值,那么在迭代器初始化过程中会将这个值赋给迭代器的expectedModCount
也就是说,假设某个类的成员变量是transient,那么当通过ObjectOutputStream把这个类的某个实例保存到磁盘上时,实际上transient变量的值是不会保存的。...因为当从磁盘中读出这个对象的时候,对象的该变量会没有被赋值。...另外这篇文章还提到,当从磁盘中读出某个类的实例时,实际上并不会执行这个类的构造函数,而是读取这个类的实例的状态,并且把这个状态付给这个类的对象。...首先获取key的散列值,并且根据散列值进行key的Index定位 这里存在同一个index多个HashtableEntry 存在,所以才会有了next的变量,next就是存放相同位置不同key的实体。...{ // 循环遍历oldTable的对应的实体,并且遍历对应的实体的没一个对象,进行 // 重新分配index,再进行保存 for (HashtableEntry
首先通过源代码和反汇编代码研究锁的实现原理。 ...同步方法依赖flags标志ACC_SYNCHRONIZED实现,字节码中没有具体的逻辑,可能需要查看JVM的底层实现(同步方法也可以通过Monitor指令实现)。...Java虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现。...Monitor的本质是依赖于底层操作系统的Mutex Lock实现,操作系统实现线程之间的切换需要从用户态到内核态的转换,成本非常高。 .../p/5994162.html (synchronized实现原理)http://www.cnblogs.com/pureEve/p/6421273.html (Java并行(2): Monitor
Yarn的发展过程 所以在我们开始聊Yarn的实现原理前,有必要看看Yarn发展的过程,这对你理解Yarn的原理以及为什么被称为资源调度框架很有帮助。...,这样在一个Yarn集群中就可以同时并发执行各种不同的大数据计算框架,实现资源的统一调度管理。...Yarn 的设计原则 Yarn框架在架构设计上遵循一个重要的设计原则叫“ 依赖倒转原则”,依赖倒转原则是 高层模块不能依赖低层模块,它们应该共同依赖一个抽象,这个抽象由高层模块定义,由低层模块实现。...秘诀就是Tomcat和Spring MVC都依赖J2EE规范,Spring MVC实现了J2EE规范的HttpServlet抽象类,即DispatcherServlet,并配置在web.xml中。...实现MapReduce编程接口、遵循MapReduce编程规范就可以被MapReduce框架调用,在分布式集群中计算大规模数据;实现了Yarn的接口规范,比如Hadoop 2的MapReduce,就可以被
了解了JNI的实现原理,可以让我们对java虚拟机有更深的认识。本文主要从源码的角度,分析java虚拟机是如何实现对JNI的支持的。...self, method); } else { dvmInterpret(self, method, &retval); } 上面的代码就是dalvik虚拟机调用一个方法的实现...2. nativeFunc函数指针的赋值 nativeFunc主要有两种情况 默认情况下,nativeFunc会指向一个解析方法; 也可以通过JNIEnv提供的注册方法,手动建立native方法与实现方法的关系...,此时nativeFunc就指向了实现方法。...指针,从而建立和native实现方法的对应关系。
1)在 2)不在了 3)在 4)在 如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? ...(如果有不认可的小伙伴可以用京东实验一下) 下面我们就来讲解下购物车的原理,最后再来说下具体的code实现. 1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时...该用户选择的商品肯定还是存在的, 所以购物车中的商品还是存在的. 4)理由3) 这里再说下 没登录 保存商品到Cookie的优点以及保存到Session和数据库的对比: 1:Cookie: 优点...: 保存用户浏览器(不用浪费我们公司的服务器) 缺点:Cookie禁用,不提供保存 2:Session:(Redis : 浪费大量服务器内存:实现、禁用Cookie) 速度很快 3:数据库(Mysql...接下来就是代码实例来实现 购物车的功能了: 首先我们看下购物车和购物项两个JavaBean的设计: 购物车: buyerCart.java 1 public class BuyerCart implements
领取专属 10元无门槛券
手把手带您无忧上云