[算法2-数组与字符串的查找与匹配] (.NET源码学习) 关键词:1. 数组查找(算法)   2. 字符串查找(算法)   3. C#中的String(源码)   4. 特性Attribute 与内在属性(源码)   5. 字符串的比较(底层原理)   6. C#中的StringComparsion(源码)   7. 字符串与暂存池(底层原理)   [注:本人在写文章时遇到认为有必要或想要展开的点就会将其并入文章中,避免事后遗忘.因此非主题内容可能会比较多,篇幅也可能比较大,各位学者在浏览时可…
Redis源码学习:字符串 1.初识SDS 1.1 SDS定义 Redis定义了一个叫做sdshdr(SDS or simple dynamic string)的数据结构.SDS不仅用于 保存字符串,还用来当做缓冲区,例如AOF缓冲区或输入缓冲区等.如下所示,整数len和free分别表示buf数组中已使用的长度和剩余可用的长度,buf是一个原生C字符串,以\0结尾. sds就是sdshdr中char buf[]的别名,后面能看到,各种操作函数的入参和返回值都是sds而非sdshdr.那sdshd…
[算法1-排序](.NET源码学习)& LINQ & Lambda 说起排序算法,在日常实际开发中我们基本不在意这些事情,有API不用不是没事找事嘛.但必要的基础还是需要了解掌握. 排序的目的是为了让无序的数据,变得"有序".此处的有序指的是,满足当前使用需求的顺序,除了自带的API,我们还可以自定义比较器对象.使用LINQ语句.Lambda表达式等方式完成排序.本文将逐一介绍十大排序,并着重介绍分析基于C#的LINQ常用语句和Lambda表达式,二者对排序的实现. […
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTable.栈Stack.队列Queue.链表LinkedList.字典Dictionary.点列阵BitArray.本文将基于动态数组ArrayList,从源码的角度出发,分析其内部定义以及常用方法的实现. [# 请先阅读注意事项] [注:(1)以下提到的复杂度仅为算法本身,不计入算法之外的部分(如,…
柔性数组(Redis源码学习) 1. 问题背景 在阅读Redis源码中的字符串有如下结构,在sizeof(struct sdshdr)得到结果为8,在后续内存申请和计算中也用到.其实在工作中有遇到过这种 struct结构 + 应用数据的情况,但没有意识到自己使用的是柔性数组,在学习阅读Redis代码中,遇到该方法,就特总结记录之. /* * 类型别名,用于指向 sdshdr 的 buf 属性 */ typedef char * sds; /* * 保存字符串对象的结构 */ struct sds…
第一章:前言 学习笔记,记录学习STL算法的一些个人所得,在以后想用的时候可以快速拾起. 第二章:明细 copy 函数原型: template <class InputIterator, class OutputIterator>  OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result); 函数作用: 将[first,last)区间的元素拷贝至result开头的迭代器区间,并返回赋…
这是一篇记录学习 underscore v0.0.5 的fragment,觉得有点意思,和大家分享一下. 先看_.sortedIndex的源码,它用来确定 obj 在 array中的位置(array升序): _.sortedIndex = function(array, obj, iterator) { iterator = iterator || _.identity; var low = 0, high = array.length; while (low < high) { var mid…
功能概述 Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中.Excel的多个Sheet对应页面的多个Tab选项卡.转换算法的难点在于,如何处理行列合并,将Excel的行列合并模型转换成Html表格的行列合并模型. 背景故事 因实际需要,需要将Excel展现在Web界面中. 最初,想在网上找开源的东东,结果没有1个是想要的.有的特别复杂,有的只能在Windows平台,需要闭源的dll,最终还是得靠自己. 人不逼迫自己,真是想偷懒,不能出成果. 要是不是自己实…
List的使用 List的子类 1). ArrayList 数据结构:数组 2). Vector 数据结构:数组 3). LinkedList 数据结构:循环双向链表 ArrayList .Vector.LinkedList都来自AbstractList的实现,AbstratList直接实现了List接口并扩展自AbstactCollection. 一).对ArrayList的 操作 == ArrayList的属性 == //默认容量 private static final int DEFAU…
人话不多,直接上代码,在代码中解析,不足之处请谅解: push() Array.prototype._push=function(...value){//在Array原型链上添加_push方法 for(var i=0;i<arguments.length;i++){//按索引从小到大循环数组 this[this.length]=arguments[i];//把入参,按照顺序,依次添加在数组的索引最大值加一的位置 } } var arr=[231];//例子 arr._push(1,2,3,4);…