随笔分类 -  Data Algorithms

数据结构和算法
摘要:首先排序分为四种: 交换排序: 包括冒泡排序,快速排序。 选择排序: 包括直接选择排序,堆排序。 插入排序: 包括直接插入排序,希尔排序。 归并排序 基数排序 交换排序主要有两种: 1:冒泡排序 Before sort: [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 阅读全文
posted @ 2016-12-10 15:27 hongdada 阅读(252) 评论(0) 推荐(0) 编辑
摘要:BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会阻塞。 ArrayBlockingQueue是一个由数组支持的有界阻塞队列。在读写操作上都需要锁住整 阅读全文
posted @ 2016-12-09 17:44 hongdada 阅读(943) 评论(0) 推荐(0) 编辑
摘要:SynchronousQueue是无界的,是一种无缓冲的等待队列,但是由于该Queue本身的特性,在某次添加元素后必须等待其他线程取走后才能继续添加;可以认为SynchronousQueue是一个缓存值为1的阻塞队列,但是 isEmpty()方法永远返回是true,remainingCapacity 阅读全文
posted @ 2016-12-08 23:45 hongdada 阅读(9587) 评论(5) 推荐(0) 编辑
摘要:这两个队列都是线程安全的。 LinkedBlockingQueue: 此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。 链接队列的吞吐量通常要高于基于数组的队列,但是 阅读全文
posted @ 2016-12-07 17:59 hongdada 阅读(619) 评论(0) 推荐(0) 编辑
摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。 从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实 阅读全文
posted @ 2016-11-12 00:32 hongdada 阅读(548) 评论(0) 推荐(0) 编辑
摘要:Map:键必须是唯一 同步方法:Map m = Collections.synchronizedMap(new TreeMap(...)); Hashtable:基于散列表的实现 允许空键空值 线程安全 HashMap:基于散列表的实现 允许空键空值 线程不安全 (与Hashtable基本一致) T 阅读全文
posted @ 2016-11-10 10:23 hongdada 阅读(644) 评论(0) 推荐(0) 编辑
摘要:一、List:、有顺序以线性方式存储,可以存放重复对象 线程安全方法:List list = Collections.synchronizedList(new LinkedList(...)); LinkedList:双向链表实现存储 索引数据慢插入数度较快 线程不安全(比安全性能好) ArrayL 阅读全文
posted @ 2016-11-10 10:22 hongdada 阅读(318) 评论(0) 推荐(0) 编辑
摘要:Set:无顺序,不包含重复的元素 HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。 TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。 LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素 阅读全文
posted @ 2016-11-10 10:20 hongdada 阅读(4462) 评论(0) 推荐(0) 编辑
摘要:一、List:、有顺序以线性方式存储,可以存放重复对象 线程安全方法:List list = Collections.synchronizedList(new LinkedList(...)); LinkedList:双向链表实现存储 索引数据慢插入数度较快 线程不安全(比安全性能好) ArrayL 阅读全文
posted @ 2016-11-09 14:17 hongdada 阅读(299) 评论(0) 推荐(0) 编辑
摘要:通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占, ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。 ConcurrentHashMap内部使用段 阅读全文
posted @ 2016-11-08 00:02 hongdada 阅读(485) 评论(0) 推荐(0) 编辑
摘要:HashMap: 在这里提到了两个参数:初始容量,加载因子。 这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量, 加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度 阅读全文
posted @ 2016-11-02 22:49 hongdada 阅读(13908) 评论(0) 推荐(2) 编辑
摘要:HashMap中的put方法 key为null: 获取Entry的第一个元素table[0],并基于第一个元素的next属性开始遍历,直到找到key为null的Entry,将其value设置为新的value值。如果没有找到key为null的元素,则调用如上述代码的addEntry(0, null, 阅读全文
posted @ 2016-11-02 22:37 hongdada 阅读(1543) 评论(0) 推荐(0) 编辑
摘要:KMP算法的思想就是:在匹配过程称,若发生不匹配的情况,如果next[j]>=0,则目标串的指针i不变,将模式串的指针j移动到next[j]的位置继续进行匹配;若next[j]=-1,则将i右移1位,并将j置0,继续进行比较。 next[j]是什么呢? 即求算模式串每个位置处的最长后缀与前缀相同的长 阅读全文
posted @ 2013-02-05 11:15 hongdada 阅读(326) 评论(0) 推荐(0) 编辑
摘要:1.快速排序 这种排序是.net中使用的,均衡性比较好,效率相对来说最高, 堆排序 http://www.cnblogs.com/huangxincheng/archive/2011/11/16/2251196.html 除了最后一个父节点以外,每个父节点都必须有两个子节点 大根堆: 就是说父节点要 阅读全文
posted @ 2013-01-28 14:14 hongdada 阅读(290) 评论(0) 推荐(0) 编辑
摘要:1.最长公共子序列 总结:就是在边上加一圈零,比较相对应的字符,相等,值就等于左上角的值, 不相等,值就去左边和上边的最大值。 2.字符串相似度 总结:就是在边上加一圈零,比较相对应的字符,相等,值就等于左上角的值, 不相等,值就去左边,左上角和上边的最小值,就是四角中最小的,再加1. http:/ 阅读全文
posted @ 2013-01-24 17:37 hongdada 阅读(410) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示