设计思想

jQuery设计思想

感情迁移 提交于 2020-01-31 01:06:04
jQuery 是目前使用最广泛的javascript函数库。 据 统计 ,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。 对于网页开发者来说,学会jQuery是必要的。因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果。 虽然jQuery上手简单,比其他库容易学会,但是要全面掌握,却不轻松。因为它涉及到网页开发的方方面面,提供的各种方法和内部变化有上千种之多。初学者常常感到,入门很方便,提高很困难。 目前,互联网上最好的jQuery入门教材,是 Rebecca Murphey 写的 《jQuery基础》 (jQuery Fundamentals)。在Google里搜索"jQuery 培训",此书排在第一位。jQuery官方团队已经 同意 ,把此书作为官方教程的基础。 这本书虽然是入门教材,但也足足有100多页。我对它做了一个详细的笔记,试图理清jQuery的设计思想,找出学习的脉络。我的目标是全面掌握jQuery,遇到问题的时候,心里有底,基本知道使用它的哪一个功能,然后可以迅速从 手册 中找到具体的写法。 下面就是我的笔记,它应该是目前网上不多的jQuery中文教程之一。你只需要一点javascript语言的基本知识,就能看懂它,在最短的时间里

dict.c设计思想

試著忘記壹切 提交于 2020-01-29 08:24:52
双hash_table设计 typedef struct dict { dictType * type ; void * privdata ; dictht ht [ 2 ] ; long rehashidx ; int iterators ; } dict ; 作者在dict数据类型中引入了两个hash_table,其作用是为了动态变化hash_table的大小。 按照常规操作,如果我们想要将一个hash_table的大小进行动态变化,我们需要进行两个步骤 1:改变数组大小 2:将old_hash_table内全部元素进行rehash,重新链接至new_hash_table上。 如果我们在瞬时间内完成从old_hash_table到new_hash_table的转化的话,意味着我们必须对old_hash_table的元素全部遍历一遍,这种操作显然是很费时间的,容易导致CPU在一段时间内处于一个很繁忙的状态(这里没有引入线程什么的,所以这个操作在dict内存储很多数据时,很可能致使Redis无法及时相应其他请求,而致使服务质量下降)。 因此这里引入了一个 rehash 状态,表示当前字典正在进行 rehash ,即将old_hash_table数据迁移至new_hash_table的状态。通过阅读源代码,我们会发现这样一个函数 static void _dictRehashStep

Dubbo框架设计-分层设计思想

£可爱£侵袭症+ 提交于 2020-01-24 19:58:38
目录 整体设计 各层说明 config 配置层: proxy 服务代理层: registry 注册中心层: cluster 路由层: monitor 监控层: protocol 远程调用层: exchange 信息交换层: transport 网络传输层: serialize 数据序列化层: 关系说明 模块分包 依赖关系 调用链 暴露服务时序 引用服务时序 领域模型 基本设计原则 整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。 图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法。 各层说明 config 配置层: 对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类 proxy 服务代理层: 服务接口透明代理,生成服务的客户端

jQuery设计思想

老子叫甜甜 提交于 2020-01-24 06:41:24
【目录】   一、选择网页元素   二、改变结果集   三、链式操作   四、元素的操作:取值和赋值   五、元素的操作:移动   六、元素的操作:复制、删除和创建   七、工具方法   八、事件操作   九、特殊效果 【正文】 一、选择网页元素 jQuery的基本设计思想和主要用法,就是 "选择某个网页元素,然后对其进行某种操作" 。这是它区别于其他Javascript库的根本特点。 使用jQuery的第一步,往往就是将一个选择表达式,放进构造函数jQuery()(简写为$),然后得到被选中的元素。 选择表达式可以是 CSS选择器 :   $(document) //选择整个文档对象   $('#myId') //选择ID为myId的网页元素   $('div.myClass') // 选择class为myClass的div元素   $('input[name=first]') // 选择name属性等于first的input元素 也可以是jQuery 特有的表达式 :   $('a:first') //选择网页中第一个a元素   $('tr:odd') //选择表格的奇数行   $('#myForm :input') // 选择表单中的input元素   $('div:visible') //选择可见的div元素   $('div:gt(2)') // 选择所有的div元素

YOLOV3算法详解——设计思想以及候选区域选择

雨燕双飞 提交于 2020-01-23 05:44:56
本篇博文是笔者结合百度paddle公开课的一个AI识虫项目对YOLOV3算法做的一个解析 完整项目可参考https://aistudio.baidu.com/aistudio/projectdetail/250211 什么是目标检测? 相信有一定基础的深度学习开发者经常能听到目标检测这个词,那什么任务是目标检测呢。 简单地来说目标检测就是 让计算机识别出图片里面对应的物体,并标上边界框 对于分类任务,我只需要识别这种图片是不是动物的图片即可 而对于目标检测任务,我并不是对 整张图片 做一个分类,而是对图片里的部分区域做一个分类,并绘制一个目标框标记物体 目标检测算法发展历程 既然图片分类是对整张图片进行分类,我们能不能从原图里“抠”下不同区域的图片进行分类呢? 答案当然是可以的,而这也是最初目标检测算法的思路 我们将目标检测任务进行拆分成两个任务,分别是 产生候选区域 , 对候选区域进行分类 。而这也引入了算法的区别,我们常听到的一阶段目标检测算法,就是用一个网络同时产生候选区域并进行预测。而二阶段目标检测算法,则是分别进行候选区域产生和分类任务。 最初产生的候选区域方法比较“笨”,更准确地来说应该称其为 穷举法 ,也就是将图片中每个像素都遍历一遍,再遍历其右下方的像素。两个像素就能确定一个区域,穷举法的好处就是思想简单,产生的候选区域都遍布整张图片,但它带来的计算量实在是过于庞大

LSM树由来、设计思想以及应用到HBase的索引

不打扰是莪最后的温柔 提交于 2020-01-20 17:35:49
讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚 LSM树的由来 : 哈希存储引擎 是哈希表的持久化实现,支持增、删、改以及随机读取操作, 但不支持顺序扫描 ,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就是your Mr.Right B树存储引擎是B树 (关于B树的由来,数据结构以及应用场景可以看之前一篇博文) 的持久化实现,不仅支持单条记录的增、删、读、改操作,还支持顺序扫描(B+树的叶子节点之间的指针),对应的存储系统就是关系数据库(Mysql等)。 LSM树(Log-Structured Merge Tree)存储引擎和B树存储引擎一样,同样支持增、删、读、改、顺序扫描操作。而且通过批量存储技术规避磁盘随机写入问题。 当然凡事有利有弊,LSM树和B+树相比,LSM树牺牲了部分读性能,用来大幅提高写性能。 通过以上的分析,应该知道LSM树的由来了,LSM树的设计思想非常朴素: 将对数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘 ,不过读取的时候稍微麻烦,需要合并磁盘中历史数据和内存中最近修改操作,所以写入性能大大提升,读取时可能需要先看是否命中内存,否则需要访问较多的磁盘文件。极端的说

jQuery设计思想

↘锁芯ラ 提交于 2020-01-16 18:55:29
【目录】   一、选择网页元素   二、改变结果集   三、链式操作   四、元素的操作:取值和赋值   五、元素的操作:移动   六、元素的操作:复制、删除和创建   七、工具方法   八、事件操作   九、特殊效果 【正文】 一、选择网页元素 jQuery 的基本设计思想和主要用法,就是 " 选择某个网页元素,然后对其进行某种操作 " 。这是它区别于其他 Javascript 库的根本特点。 使用 jQuery 的第一步,往往就是将一个选择表达式,放进构造函数 jQuery() (简写为 $ ),然后得到被选中的元素。 选择表达式可以是 CSS 选择器 : $(document) //选择整个文档对象$('#myId') //选择ID为myId的网页元素$('div.myClass') // 选择class为myClass的div元素$('input[name=first]') // 选择name属性等于first的input元素也可以是jQuery特有的表达式:$('a:first') //选择网页中第一个a元素$('tr:odd') //选择表格的奇数行$('#myForm :input') // 选择表单中的input元素$('div:visible') //选择可见的div元素$('div:gt(2)') // 选择所有的div元素,除了前三个$('div

MVC设计思想

核能气质少年 提交于 2020-01-16 00:11:12
MVC 设计思想 MVC 是三个单词的首字母缩写,它们是 Model(模型)、View(视图)和 Controller(控制)。 这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层: 最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。 最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。 中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。 来源: CSDN 作者: 量子计算机牛逼 链接: https://blog.csdn.net/qq_41877948/article/details/103996389

jQuery设计思想

好久不见. 提交于 2020-01-15 07:46:20
前面的话   在深入了解jQuery的各个细节之前,需要对jQuery的设计思想有一个大致的了解。在遇到问题时, 知道应该使用jQuery的哪一个功能,然后迅速从手册中找到具体的用法。本文将详细介绍jQuery的设计思想 选择元素   jQuery的基本设计思想和主要用法,就是"选择某个网页元素,然后对其进行某种操作"。这是它区别于其他javascript库的根本特点   使用jQuery的第一步,往往就是将一个选择表达式,放进构造函数jQuery()(简写为$),然后得到被选中的元素 【模拟CSS选择元素】 $(document) //选择整个文档对象 $('#myId') //选择ID为myId的网页元素 $('div.myClass') // 选择class为myClass的div元素 $('input[name=first]') // 选择name属性等于first的input元素 【特有表达式选择】 $('a:first') //选择网页中第一个a元素 $('tr:odd') //选择表格的奇数行 $('#myForm :input') // 选择表单中的input元素 $('div:visible') //选择可见的div元素 $('div:gt(2)') // 选择所有的div元素,除了前三个 $('div:animated') // 选择当前处于动画状态的div元素

POS设计思想

寵の児 提交于 2020-01-13 04:41:25
什么是POS? POS是一种在公链中的共识算法,可作为POW算法的一种替换。POW是保证比特币、当前以太坊和许多其它区块链安全的一种机制,但是POW算法在挖矿过程中因破坏环境和浪费电力而受到指责。POS试图通过以一种不同的机制取代挖矿的概念,从而解决这些问题。 POS机制可以被描述成一种虚拟挖矿。鉴于POW主要依赖于计算机硬件的稀缺性来防止女巫攻击,POS则主要依赖于区块链自身里的代币。在POW中,一个用户可能拿1000美元来买计算机,加入网络来挖矿产生新区块,从而得到奖励。而在POS中,用户可以拿1000美元购买等价值的代币,把这些代币当作押金放入POS机制中,这样用户就有机会产生新块而得到奖励。在POW中,如果用户花费2000美元购买硬件设备,当然会获得两倍算力来挖矿,从而获得两倍奖励。同样,在POS机制中投入两倍的代币作为押金,就有两倍大的机会获得产生新区块的权利。 总体上说,POS算法如下所示。存在一个持币人的集合,他们把手中的代币放入POS机制中,这样他们就变成验证者。假设在区块链最前面一个区块(区块链中最新的块),这时POS算法在这些验证者中随机选取一个(选择验证者的权重依据他们投入的代币多少,比如一个投入押金为10000代币的验证者被选择的概率是一个投入1000代币验证者的10倍),给他们权利产生下一个区块。如果在一定时间内,这个验证者没有产生一个区块