![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码考究
猫哥灬01
话不在多,在于精
展开
-
HASHMAP RESIZE() 单链表复制
Node<K,V>[] newTab = (Node<K,V>[])new Node[newCap];table = newTab;if (oldTab != null) { for (int j = 0; j < oldCap; ++j) { Node<K,V> e; if ((e = oldTab[j...原创 2018-06-13 23:54:19 · 282 阅读 · 0 评论 -
结合BitSet 操作数组 - removeif 源码分析
public boolean removeIf(Predicate<? super E> filter) {for (int i=0; modCount == expectedModCount && i < size; i++) { @SuppressWarnings("unchecked") final E element = (E) elem...原创 2018-07-11 21:40:39 · 172 阅读 · 0 评论 -
HashMap get 单链表查询
if ((tab = table) != null && (n = tab.length) > 0 && (first = tab[(n - 1) & hash]) != null) { if (first.hash == hash && // always check first node ...原创 2018-06-19 22:50:45 · 717 阅读 · 0 评论 -
HashMap put 单链表插入
Node<K,V> e; K k; if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k)))) e = p; else if (p instanceof T...原创 2018-06-19 22:43:57 · 449 阅读 · 0 评论 -
JD SSO 单点登录
DotnetAuthenticationTicket ticket = DotnetAuthenticationTicket.getTicket(); if (ticket == null) {// 如果没有这个ticket removeLoginContext(); } else { LoginContext loginC...原创 2018-06-22 10:17:02 · 439 阅读 · 0 评论 -
ThreadLocalMap 原理
https://www.jianshu.com/p/27e309e1d0f5总结:哈希表本质就是一个数组ThreadLocal 使用的是Thread 对象的全局变量数据结构为: 数组 Entry[]entry 本质是一个Threadlocal的弱引用 当发生gc时一定清楚...原创 2018-06-22 00:43:21 · 347 阅读 · 0 评论 -
MyBatis LRU 算法实现
public void setSize(final int size) { // TODO look for a better solution to this, see issue #335 keyMap = Collections.synchronizedMap(new LinkedHashMap<Object, Object>(size, .75F, true) ...原创 2018-06-21 23:33:51 · 567 阅读 · 0 评论 -
Mybatis 一级缓存设计
创建public class TransactionalCache implements Cache { private Cache delegate; private boolean clearOnCommit; private Map<Object, AddEntry> entriesToAddOnCommit; private Map<Object, RemoveE...原创 2018-06-21 23:20:13 · 119 阅读 · 0 评论 -
Mybatis Cache key 源码级
public CacheKey createCacheKey(MappedStatement ms, Object parameterObject, RowBounds rowBounds, BoundSql boundSql) { if (closed) throw new ExecutorException("Executor was closed."); CacheKey c...原创 2018-06-21 23:11:14 · 904 阅读 · 1 评论 -
代码review
方法签名上不能声明方法中没有抛出的异常 否则报错多线程目的并行新开线程目的不阻塞主线程消息队列可以解决突然掉电问题接口入参语言枚举不要引入非自己jar包的内容,因为调用接口方也需要引入同样的jar包业务逻辑放在具体的逻辑Service,而不是写在RpcService,rpc只做参数校验数据查一段处理一段,不要等到全部获取完再统一处理,有OOM风险;服务重启异常会被中断(需要...原创 2018-07-31 21:49:59 · 353 阅读 · 0 评论