- 博客(12)
- 收藏
- 关注
原创 memcpy和memmove
memcpy()和memmove()函数的区别是在于对内存重叠的情况的处理。memcpy()对内存重叠不做任何处理,而memmove()在内存重叠时采用从尾部复制。以上,是官方的解释,也是各个博客的解释。肯定没问题。先贴一下两个函数的实现。void* memcpy(void*dest, constvoid*src, size_tn){ char*dp = dest; ...
2019-09-10 21:12:36
245
原创 finally的执行
finally finally作为异常处理的一部分,只能在try/catch语句中,并且附带一个语句块,标识这段语句最终一定被执行,经常用在释放资源的情况下。 关于finally的执行顺序——JVM规范中有:如果try语句里面有return,那么先将值保存到局部变量中,然后执行finally...
2018-11-26 11:32:53
281
原创 final修饰符
final       用于声明属性不可变、方法不可重载、类不可被继承。  &
2018-11-25 11:27:56
155
原创 ReentrantReadWriteLock解析
通常我们用的 Synchronized 和 ReentrantLock 都是独占锁,即在同一时刻只有一个线程获取到锁。然而在有些业务场景中,我们大多在读取数据,很少写入数据。这种情况下,如果仍使用独占锁,效率将及其低下。针对这种情况,Java提供了读写锁——ReentrantReadWriteLock。读写锁允许同一时刻被多个读线程访问,但是在写线程访问时,所有的读线程和其他的写线程都会被阻塞。...
2018-08-28 18:14:49
1331
原创 ReentrantLock源码分析
ReentrantLock比Synchronized提供了更加灵活的加锁方式,可中古段一个正则等待锁的线程,实现指定时间的获取锁,实现公平与非公平锁等。构造器及lock() //默认构造非公平同步器 public ReentrantLock() { sync = new NonfairSync(); } //可构造公平或非公平...
2018-08-18 21:45:05
356
原创 Java的Object类的源码分析
Object类是Java中所有类的父类,所以对其的认识是十分重要的。下面是我对Object类中个方法的认识(结合了代码中的注释以及看过的一些书)public class Object { //其主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。函数的执行是在静态代码块中执行的,在类首次进行加载的时候执行。 private stati...
2018-08-07 11:40:40
3549
原创 String、StringBuilder、StringBuffer
StringBuilderStringBuilder的构造器,无论是默认的无参构造器,或是指定容量的,或是指定字符串的,最终都是继承自AbstractStringBuilder的构造方法。 AbstractStringBuilder(int capacity) { value = new char[capacity]; }主要看一下append()方法 ...
2018-08-06 10:47:32
126
翻译 RDMA介绍
这是对这篇文章的大致翻译:zcopy.wordpress.com/2010/10/08/quick-concepts-part-1-%E2%80%93-introduction-to-rdma/What is RDMARDMA is Remote Dynamic Memory Access which is a way of moving buffers between two app...
2018-07-27 17:58:48
3539
原创 和为S的连续正数序列 剑指offer
题目描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 /** * 思路1:针对序列起始数字。 * 从start=1开始循环,假设序列的起始数字为start,那么用S逐渐减去start,start+1,star+2.... * 最后S会为0。若S最后为0,则说明以该start开始的序列是和为S的连续序列...
2018-07-23 15:43:48
171
原创 HashMap的put操作及扩容函数的源码分析 1.8
put操作步骤: 1、检查桶数组,如果数组为空,初始化HashMap;否则,执行2 2、根据带插入的key的hash找到在数组中的索引,如果该位置为空,直接插入;否则,执行3 3、根据该位置下的结构是链表或者红黑树选择相应的插入方式。红黑树的插入涉及去了解红黑树就知道了。链表的插入是在尾部插入。PS:HashTable的链表插入是在头节点插入,这也是两者不同之处。 fin...
2018-07-23 09:11:10
636
原创 二叉树的遍历
package algorithms;import util.TreeNode;import java.util.*;public class BinaryTree { ArrayList<TreeNode> list = new ArrayList<>(); /** * 二叉树的递归前序遍历: * 如果根节点为空,什么...
2018-07-23 08:54:44
128
原创 KMP算法
参考文档: http://jakeboxer.com/blog/2009/12/13/the-knuth-morris-pratt-algorithm-in-my-own-words/ http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html字符串模式匹配 ...
2018-07-18 22:48:05
224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人