说到jquery可能是大家最经常用到的,在日常的编写程序中最经常使用到,在使用jquery插件的同时,深入的解读jquery源码有利于我们学到设计的思想和实现的技巧 在jquery源码的分析中,其中艾伦 Aaron的博客有深入的介绍,其在慕课网上也有相应的源码的解读,感兴趣的同学可以去看看 此博客是鉴于自己对jquery的学习中的所记录的,学习的jquery源码 jquery源码整体分析 //采用闭包传入window (function( window, undefined ) {//doing…
    HashMap源码在jdk1.8中,改动挺大,里面内容已经变的非常复杂了,后面另起博客分析.jdk1.8以前,HashMap一直是数组加链表的数据结构,在数组的某个下标位置,有多次碰撞,则使用链表数据结果存储.在jdk1.8中,引入了红黑二叉查找树的数据结构.刚开始产生碰撞时,碰撞处仍然是链表结构,当链表的长度超过源码设定值8以后,该处的链表将转为红黑二叉树.相比以前,查询效率会高很多,同时代码也变得有一定的复杂度.       HashMap的查询快速的特性是了利用了数组查询快速的特性…
前文地址 https://www.cnblogs.com/tera/p/13336627.html 本系列文章主要是博主在学习spring aop的过程中了解到其使用了java动态代理,本着究根问底的态度,于是对java动态代理的本质原理做了一些研究,于是便有了这个系列的文章 上一篇文章详细分析了class字节码结构中的field_info和method_info,以及对应的Proxy的源码.本文将会更详细的分析method_info中的方法执行体部分 因为方法的字节码涉及到了jvm的操作指令,…
jQuery.Callbacks = function( flags ) { // Convert flags from String-formatted to Object-formatted // (we check in cache first) flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; var // Actual callback list list = [], // Stack of fi…
例子的详细讲解 Filter Resolve var filterResolve = function() { var defer = $.Deferred(), filtered = defer.then(function( value ) { return value * 2; }); defer.resolve( 5 ); filtered.done(function( value ) { $( "p" ).html( "Value is ( 2*5 = ) 10: &…
jquery.extend jQuery.extend = jQuery.fn.extend = function () { var options, name, src, copy, copyIsArray, clone, //target为传入的一个参数 target = arguments[0] || {}, i = 1, //传入参数的个数 length = arguments.length, //首先默认为浅拷贝 deep = false; // Handle a deep copy…
jQuery.extend({ // 显示或操作在匹配元素上执行的函数队列 queue: function (elem, type, data) { var queue; if (elem) { // type没定义的话就默认使用fxqueue type = (type || 'fx') + 'queue'; // 先获取elem上的缓存数据 queue = jQuery._data(elem, type); if (data) { // 如果没有缓存数据或者data是数组 // 则给elem设…
jQuery.fn.extend({ attr: function( name, value ) { return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); }, removeAttr: function( name ) { return this.each(function() { jQuery.removeAttr( this, name ); }); }, prop: function( n…
$.support 的英文注释很详细的介绍的这里,就稍微的写了下 Query.support = (function() { var support, all, a, select, opt, input, fragment, tds, events, eventName, i, isSupported, div = document.createElement( "div" ), documentElement = document.documentElement; // Preli…
javascript的异步编程 为什么要使用异步编程? JS是单线程语言,就简单性而言,把每一件事情(包括GUI事件和渲染)都放在一个线程里来处理是一个很好的程序模型,因为这样就无需再考虑线程同步这些复杂问题.然而从另一方面来看,它也暴露了实际开发中的一个严重问题,单线程环境看起来对用户请求响应迅速,但是当线程忙于处理其它事情时,就不能对用户的鼠标点击和键盘操作做出响应.因此提出了异步需求,以此来解放当前线程,可以处理其他业务,待回调请求数据返回再发起回来处理. 何谓异步?关于这个问题,司徒正美…