上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 101 下一页
摘要: 协议的传统实现: 定义接口+实现协议 由抽象到具体; 协议的逆向实现(使用扩展): 由已存在的类型抽离部分功能作为协议,并让原体符合协议; 由具体到抽象; 向上抽离; 向上生成; 协议的缺省实现: (使用扩展)协议遵从的从无到有。 本质是协议于具体:先有谁,后有谁 及 怎么结合的问题; 协议的生成律 阅读全文
posted @ 2018-11-26 19:40 zzfx 阅读(357) 评论(0) 推荐(0)
摘要: swift的特性:扩展、协议、泛型 扩展与继承:对象的生长方式; 协议:支持 协议->类型、类型<-协议 的双向抽象; 泛型; 阅读全文
posted @ 2018-11-26 19:01 zzfx 阅读(259) 评论(0) 推荐(0)
摘要: 相信大家都封装过网络层。 虽然系统提供的网络库以及一些著名的第三方网络库(AFNetworking, Alamofire)已经能满足各种 HTTP/HTTPS的网络请求,但直接在代码里用起来,终归是比较晦涩,不是那么的顺手。所以我们都会倾向于根据自己的实际需求,再封装一个更好用的网络层,加入一些特殊 阅读全文
posted @ 2018-11-26 17:55 zzfx 阅读(651) 评论(0) 推荐(0)
摘要: 数据访问分为两种: 1、位置(索引)访问; 2、遍历访问; 基于比较的二叉树; 基于位置的数组; 基于位置和比较的hash表。 结构维护: 增删; 及访问与维护的效率。 阅读全文
posted @ 2018-11-25 22:52 zzfx 阅读(349) 评论(0) 推荐(0)
摘要: 常见的时间复杂度量级有: 常数阶O(1) 字典查找、数组索引 对数阶O(logN) 二分查找 线性阶O(n) 循环 线性对数阶O(nlogN) 循环+分而治之 平方阶O(n²) 双重循环 立方阶O(n³) 多重循环 K次方阶O(n^k) 指数阶(2^n) 常数阶O(1) 字典查找、数组索引 对数阶O 阅读全文
posted @ 2018-11-23 15:10 zzfx 阅读(607) 评论(0) 推荐(0)
摘要: 有关字符串的匹配问题,有很好的算法,即KMP算法,但是还有一种其实经常使用到的算法是Rabin-Karp算法,它是使用hash的原理来进行字符串匹配的。具体的做法如下。 Rabin-Karp算法是由Rabin和Karp提出的一个在实际中有比较好应用的字符串匹配算法,此算法的预处理时间为O(m),但它 阅读全文
posted @ 2018-11-22 19:35 zzfx 阅读(731) 评论(0) 推荐(0)
摘要: 算法一:快速排序算法 算法二:堆排序算法 算法三:归并排序 算法四:二分查找算法 算法五:BFPRT(线性查找算法) 算法六:DFS(深度优先搜索) 算法七:BFS(广度优先搜索) 算法八:Dijkstra算法 算法九:动态规划算法 算法十:朴素贝叶斯分类算法 算法一:快速排序算法 快速排序是由东尼 阅读全文
posted @ 2018-11-21 22:30 zzfx 阅读(176) 评论(0) 推荐(0)
摘要: 前言:当您在读该文章的时候,我认为您已经知道HashMap的底层实现原理,如果您还不清楚HashMap是如何实现的,请先去了解,再回来看本文章。 1.HashMap什么时候扩容? HashMap的容量是有限的。当经过多次元素插入的时候,使得HashMap达到一定的饱和度,Key映射位置的几率不断变大 阅读全文
posted @ 2018-11-21 18:02 zzfx 阅读(439) 评论(0) 推荐(0)
摘要: HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。 HashMap 非线程安全 TreeMap 非线程安全 阅读全文
posted @ 2018-11-21 17:00 zzfx 阅读(526) 评论(0) 推荐(0)
摘要: 平衡二叉树的平衡稳定是通过查找最低不平衡节递归实现的; 自平衡二叉树的平衡是通过局部不平衡的动态优化最终达到全局优化的。 阅读全文
posted @ 2018-11-16 19:15 zzfx 阅读(4326) 评论(0) 推荐(0)
摘要: 字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串,在文本中找到一个和该模式相符的子字符串,并返回该字字符串在文本中的位置。 KMP 算法,全称是 Knuth-Morris-Pratt 算法,以三个发明者命名,开头的那个K就是著名科学家 Donald Knuth 阅读全文
posted @ 2018-11-16 19:06 zzfx 阅读(486) 评论(0) 推荐(0)
摘要: 因为红黑树需要进行左旋,右旋操作, 而单链表不需要,以下都是单链表与红黑树结构对比。如果元素小于8个,查询成本高,新增成本低如果元素大于8个,查询成本低,新增成本高 https://bbs.csdn.net/topics/392346931 阅读全文
posted @ 2018-11-16 18:55 zzfx 阅读(3915) 评论(0) 推荐(0)
摘要: 3、旋转 在进行插入和删除之前需要先了解AVL树的旋转操作。旋转操作主要包括LL(左左)旋转、LR(左右)旋转、RR(右右)旋转、RL(右左)旋转,LL旋转与RR旋转对称,LR旋转与RL旋转对称。旋转操作是在插入结点或删除结点导致原AVL树不平衡时进行的。我的理解是当二叉树失衡的原因出现在“最低失衡 阅读全文
posted @ 2018-11-16 17:28 zzfx 阅读(419) 评论(0) 推荐(0)
摘要: unsigned int SDBMHash(char *str){ unsigned int hash = 0; while (*str) { // equivalent to: hash = 65599*hash + (*str++); hash = (*str++) + (hash << 6)  阅读全文
posted @ 2018-11-16 16:44 zzfx 阅读(308) 评论(0) 推荐(0)
摘要: 模式匹配算法的本质就是:扫描+特征比较; 特征提取:核心是目标特征分析 1、整体特征:整体hash; 2、边界特征:忽略中间量,仅对首尾做特征提取; 3、分析特征:适合有重复字符的匹配模式; 4、统配特征:边界特征+限制特征+位数; 扫描: 1、逐位扫描; 2、边界特征扫描; 3、 阅读全文
posted @ 2018-11-16 11:21 zzfx 阅读(495) 评论(0) 推荐(0)
摘要: 递归与循环的共同点:同一计算被执行多次; 递归与栈的共同点:递归依靠栈帧来存储先进后出的计算,栈存储先进后出的数据;共同点是存储。 或者可以这么理解:递归解决的是有依赖顺序关系的多个问题。 递归与栈的关系 因为程序中的栈结构是顺序栈,因此,如果递归的次数过多,程序中的数据过大,在不断的压栈过程中造成 阅读全文
posted @ 2018-11-15 17:14 zzfx 阅读(523) 评论(0) 推荐(0)
摘要: Attributes provide more information about a declaration or type. There are two kinds of attributes in Swift, those that apply to declarations and thos 阅读全文
posted @ 2018-11-14 19:17 zzfx 阅读(983) 评论(0) 推荐(0)
摘要: 运行时系统包含两个系统: 1、运行时类型系统:内省、反射; 2、运行时派发(调用、绑定、消息路由、上下文绑定)系统; 动态派发体统依赖于运行时类型系统; 对数据结构+算法 分别作出了规范; 运行时系统是一个解释系统。 阅读全文
posted @ 2018-11-14 18:30 zzfx 阅读(304) 评论(0) 推荐(0)
摘要: 所谓反射(Refection),其实就是程序自己能够检查自身信息,就像程序会通过镜子反光来看自己本身一样。反射使得 Java语言具有了“动态性”,即程序首先会检查某个类中的方法、属性等信息,然后再动态地调用或创建该类或该类的对象 一、反射的基石——Class类 Class类用来描述Java中的一切事 阅读全文
posted @ 2018-11-14 17:20 zzfx 阅读(182) 评论(0) 推荐(0)
摘要: 动态语言关于类型和结构的功能,是的该语言天然具有解释器的功能。 将平凡数据解释为语言兼容结构--类型映射; 将功能字符串解释为函数执行--功能热更新; 将功能字符串桥接为寄生语言执行--oc<->js; 将已有的第三方(不可物理修改)功能重新解释执行--方法修改; 将已存在的类型解释为新的类型 is 阅读全文
posted @ 2018-11-14 17:13 zzfx 阅读(172) 评论(0) 推荐(0)
上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 101 下一页