摘要:
响应式编程是一种面向数据流和变化传播的编程范式 https://www.cnblogs.com/feng9exe/p/9019773.html https://www.cnblogs.com/feng9exe/p/8602889.html 阅读全文
摘要:
内聚性是模块之所以成为模块的原因--一个中心、单一职责。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量,一个内聚成都高的模块(在理想情况下)应当制作一件事 内聚的目的在于降低通信的消耗; 阅读全文
摘要:
所谓系统集成(SI,System Integration),就是通过结构化的综合布线系统和计算机网络技术,将各个分离的设备(如个人电脑)、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理。 系统集成实现的关键在于解决系统之间的互连和互操作性问题,它是 阅读全文
摘要:
编程是把需求打碎然后按照编程思想的指导进行重组的过程; 就和机器的拆分和组装一样; https://www.cnblogs.com/feng9exe/p/6804824.html https://www.cnblogs.com/feng9exe/p/9955152.html https://www. 阅读全文
摘要:
协议的传统实现: 定义接口+实现协议 由抽象到具体; 协议的逆向实现(使用扩展): 由已存在的类型抽离部分功能作为协议,并让原体符合协议; 由具体到抽象; 向上抽离; 向上生成; 协议的缺省实现: (使用扩展)协议遵从的从无到有。 本质是协议于具体:先有谁,后有谁 及 怎么结合的问题; 协议的生成律 阅读全文
摘要:
swift的特性:扩展、协议、泛型 扩展与继承:对象的生长方式; 协议:支持 协议->类型、类型<-协议 的双向抽象; 泛型; 阅读全文
摘要:
相信大家都封装过网络层。 虽然系统提供的网络库以及一些著名的第三方网络库(AFNetworking, Alamofire)已经能满足各种 HTTP/HTTPS的网络请求,但直接在代码里用起来,终归是比较晦涩,不是那么的顺手。所以我们都会倾向于根据自己的实际需求,再封装一个更好用的网络层,加入一些特殊 阅读全文
摘要:
数据访问分为两种: 1、位置(索引)访问; 2、遍历访问; 基于比较的二叉树; 基于位置的数组; 基于位置和比较的hash表。 结构维护: 增删; 及访问与维护的效率。 阅读全文
摘要:
常见的时间复杂度量级有: 常数阶O(1) 字典查找、数组索引 对数阶O(logN) 二分查找 线性阶O(n) 循环 线性对数阶O(nlogN) 循环+分而治之 平方阶O(n²) 双重循环 立方阶O(n³) 多重循环 K次方阶O(n^k) 指数阶(2^n) 常数阶O(1) 字典查找、数组索引 对数阶O 阅读全文
摘要:
有关字符串的匹配问题,有很好的算法,即KMP算法,但是还有一种其实经常使用到的算法是Rabin-Karp算法,它是使用hash的原理来进行字符串匹配的。具体的做法如下。 Rabin-Karp算法是由Rabin和Karp提出的一个在实际中有比较好应用的字符串匹配算法,此算法的预处理时间为O(m),但它 阅读全文
摘要:
算法一:快速排序算法 算法二:堆排序算法 算法三:归并排序 算法四:二分查找算法 算法五:BFPRT(线性查找算法) 算法六:DFS(深度优先搜索) 算法七:BFS(广度优先搜索) 算法八:Dijkstra算法 算法九:动态规划算法 算法十:朴素贝叶斯分类算法 算法一:快速排序算法 快速排序是由东尼 阅读全文
摘要:
前言:当您在读该文章的时候,我认为您已经知道HashMap的底层实现原理,如果您还不清楚HashMap是如何实现的,请先去了解,再回来看本文章。 1.HashMap什么时候扩容? HashMap的容量是有限的。当经过多次元素插入的时候,使得HashMap达到一定的饱和度,Key映射位置的几率不断变大 阅读全文
摘要:
HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。 HashMap 非线程安全 TreeMap 非线程安全 阅读全文
摘要:
平衡二叉树的平衡稳定是通过查找最低不平衡节递归实现的; 自平衡二叉树的平衡是通过局部不平衡的动态优化最终达到全局优化的。 阅读全文
摘要:
字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串,在文本中找到一个和该模式相符的子字符串,并返回该字字符串在文本中的位置。 KMP 算法,全称是 Knuth-Morris-Pratt 算法,以三个发明者命名,开头的那个K就是著名科学家 Donald Knuth 阅读全文
摘要:
因为红黑树需要进行左旋,右旋操作, 而单链表不需要,以下都是单链表与红黑树结构对比。如果元素小于8个,查询成本高,新增成本低如果元素大于8个,查询成本低,新增成本高 https://bbs.csdn.net/topics/392346931 阅读全文
摘要:
3、旋转 在进行插入和删除之前需要先了解AVL树的旋转操作。旋转操作主要包括LL(左左)旋转、LR(左右)旋转、RR(右右)旋转、RL(右左)旋转,LL旋转与RR旋转对称,LR旋转与RL旋转对称。旋转操作是在插入结点或删除结点导致原AVL树不平衡时进行的。我的理解是当二叉树失衡的原因出现在“最低失衡 阅读全文
摘要:
unsigned int SDBMHash(char *str){ unsigned int hash = 0; while (*str) { // equivalent to: hash = 65599*hash + (*str++); hash = (*str++) + (hash << 6) 阅读全文
摘要:
模式匹配算法的本质就是:扫描+特征比较; 特征提取:核心是目标特征分析 1、整体特征:整体hash; 2、边界特征:忽略中间量,仅对首尾做特征提取; 3、分析特征:适合有重复字符的匹配模式; 4、统配特征:边界特征+限制特征+位数; 扫描: 1、逐位扫描; 2、边界特征扫描; 3、 阅读全文
摘要:
递归与循环的共同点:同一计算被执行多次; 递归与栈的共同点:递归依靠栈帧来存储先进后出的计算,栈存储先进后出的数据;共同点是存储。 或者可以这么理解:递归解决的是有依赖顺序关系的多个问题。 递归与栈的关系 因为程序中的栈结构是顺序栈,因此,如果递归的次数过多,程序中的数据过大,在不断的压栈过程中造成 阅读全文