摘要: JDK1.7中 使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。 在has 阅读全文
posted @ 2017-08-03 15:26 yangchunchun 阅读(898) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap相关的文章网上有很多,而关于ConcurrentHashMap扩容机制是很关键的点,尤其是在并发的情况下实现数组的扩容的问题经常会碰到,看到这篇写的具有代表性,详细讲解了ConcurrentHashMap是如何在并发情况扩容的。 转自简书:占小狼http://www 阅读全文
posted @ 2017-08-03 15:14 yangchunchun 阅读(2023) 评论(0) 推荐(0) 编辑
摘要: 强引用是使用最普遍的引用:Object o=new Object(); 特点:不会被GC 将对象的引用显示地置为null:o=null; // 帮助垃圾收集器回收此对象 举例ArrayList的实现源代码:<img src="https://pic2.zhimg.com 阅读全文
posted @ 2017-08-02 11:19 yangchunchun 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。 char、varchar、nchar、nvarchar特点比较 CHARCHAR存 阅读全文
posted @ 2017-08-02 11:19 yangchunchun 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 一般而言,有以下几种常见的负载均衡策略: 一.轮询。作为非常经典的负载均衡策略,早期该策略应用地非常广泛。其原理很简单,给每个请求标记一个序号,然后将请求依次派发到服务器节点中,适用于集群中各个节点提供服务能力等同且无状态的场景。其缺点也非常明显,该策略将节点视为等同,与实际中复杂的环境不符。加权轮 阅读全文
posted @ 2017-08-01 14:05 yangchunchun 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 问题: 给你两个排序的数组,求两个数组的交集。 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5. 思路: 1. 每一次从B数组中取一值,然后在A数组里逐个比较,如果有相等的,则保存。该算法复杂度为 O(MN). M, N 分别为数组 A B 的长度。 2. 阅读全文
posted @ 2017-08-01 11:04 yangchunchun 阅读(2277) 评论(0) 推荐(0) 编辑
摘要: Java有好多类库,可是自己不知道,有时候会走很多弯路。。 Integer有很多有用的类库,其中包括了进制转化。。 十进制转任意进制: 比如:parseInt(1010,2) 意思就是:输出2进制数1010在十进制下的数. 更直白地说:parseInt(String s,int radix)就是求“ 阅读全文
posted @ 2017-07-31 21:34 yangchunchun 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 关于最长递增子序列时间复杂度O(n^2)的实现方法在博客http://blog.csdn.net/iniegang/article/details/47379873(最长递增子序列 Java实现)中已经做了实现,但是这种方法时间复杂度太高,查阅相关资料后我发现有人提出的算法可以将时间复杂度降低为O( 阅读全文
posted @ 2017-07-31 21:19 yangchunchun 阅读(1162) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为 阅读全文
posted @ 2017-07-31 21:07 yangchunchun 阅读(471) 评论(0) 推荐(0) 编辑
摘要: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); String[] s1=s.nextLine().spli 阅读全文
posted @ 2017-07-31 21:02 yangchunchun 阅读(391) 评论(0) 推荐(0) 编辑