摘要:
本文所有的源码都是基于JDK1.8 ConcurrentHashmap中的size()方法源码: public int size() { long n = sumCount(); return ((n < 0L) ? 0 : (n > (long)Integer.MAX_VALUE) ? Integ 阅读全文
摘要:
本文表达HashMap和ConcurrentHashMap中的put()方法的执行流程图,基于JDK1.8的源码执行过程。 HashMap的put()方法: ConcurrentHashMap的put()方法: final V putVal(K key, V value, boolean onlyI 阅读全文
摘要:
快排中核心的方法应该算是Partition函数了,它的作用就是将整个数组分成小于基准值的左边,和大于基准值的右边。普通的Partition函数是这样的:public static int partition1(int[] array,int lo,int hi){ //... 阅读全文
摘要:
堆排序: 一棵完全二叉树,如果父节点的值大于等于左右节点的值,则称此完全二叉树为小根堆(小顶堆);如果父节点的值小于等于左右节点的值,则次完全二叉树为大根堆(大顶堆)。 堆排序是建立在大顶堆或小顶堆的基础上的,通过不断的交换堆顶元素和堆尾元素,来对数组排序。基于大顶堆的堆排序,数组排序结果是升序的。 阅读全文
摘要:
在练习剑指offer的时候,第12题打印1到最大的n位数的时候,想找个java版的,但大家要么用BigInteger做,要么给出其他的方法。我觉得要给就给最好的方法,下面是我自己参考C++代码写的java版的全排列方法。代码:public class Quanpaixu { p... 阅读全文
摘要:
两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示。例如S1=”7832974972840919321747983209327”,S2=”1987432091904327543957”,设计算法计算出S1*S2的结果,结果用String输出,不准用BigI... 阅读全文
摘要:
序列化能干吗? (1)通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里) (2)利用序列化实现远程通信,即在网络上传送对象的字节序列。网上搜索的都是这样的解释,抽象,难懂。 我当时看见这两问题的时候,我就有两个问题? (1).txt,.java,.class文件我也没序列化,... 阅读全文
摘要:
来源:牛客网2017年校招全国统一模拟笔试(第五场)编程题集合 本文是转载博客,原博客:[编程题] 猜数游戏 题目: 牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是”Y”或者”N”,表示牛牛选择的数是否是i的倍数。例如,如果提示是” 阅读全文
摘要:
步骤: 1.设置快慢两个指针,slow和fast,每次slow走一步slow.next,而fast走两步fast.next.next. 2.如果链表有环肯定可以在环内的一个节点相遇. 3.此时,slow指向相遇的节点,而fast指向头结点,然后slow和fast继续走,每次都走一步,slow.nex 阅读全文
摘要:
原博客地址: 多线程编程 实战篇 (四) 不客气地说,至少有一半人认为,线程的”中断”就是让线程停止。 如果你也这么认为,那你对多线程编程还没有入门。 在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后带来的结果,那是无法确定的,有时它更是让停止中的线程继 阅读全文