- 博客(9)
- 收藏
- 关注
转载 HashMap与ConcurrentHashMap
扩容 HashMap 底层新生成一个数组,然后拷贝旧数组里每一个Node链表到新数组,在多线程下有问题,问题在于基于头插法的数据迁移,会有几率造成链表倒置,引发链表循环导致死循环,并吃满CPU。 JDK8里HashMap的底层数据结构变为数组+链表+红黑树,因为在hash冲突严重时链表查询效率是O(n),所以JDK8做了优化,对于单个链表的个数大于8的链表,会直接转为红黑树算是以空间换时间,这样...
2019-02-26 15:47:08 120
原创 AQS解析
AbstractQueuedSynchronizer即抽象队列同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。 它维护了一个volatile int state(代表共享资源)和一个FIFO双端队列(多线程争用阻塞时线程进入此队列尾部,队列头节点是成功获取锁的线程,当头节点释放...
2019-02-22 21:46:51 134
原创 JAVA基础试题集合1
1.解释"static"和&
2019-02-21 21:56:08 716
原创 数据结构与算法相关
原子类 Hbase:Hbase中HLog使用AtomicLong作为日志序列号,因为一个RS的多个region会并发写入HLog,使用AtomicLong保证线程安全。 Kafka:生产者消息分发Partition—如果消息有key,使用key的哈希值与分区个数取模;如果没有key,使用AtomicInteger累加的counter与分区个数取模获取要发送的分区。(负载均衡) 特殊数据结构 Mys...
2019-02-21 17:26:23 98
原创 Kafka相关
消息发送 producer 采用 push 模式将消息发布到 broker,每条消息都被 append 到 patition 中,属于顺序写磁盘(保障吞吐率)。 日志文件的删除策略:启动一个后台线程定期扫描log file列表,把保存时间超过阀值的文件删除,为避免删除文件时仍然有read操作(consumer消费),采取copy-on-write方式。 producer 发送消息到 brok...
2019-02-19 18:01:12 156
原创 JAVA编程问题总结
加密算法打包时出错 Cipher.getInstance(“DES/ECB/NoPadding”); 编码算法选择问题 error_prone_core扫描出来 java.security.InvalidKeyException: Parameters missing Cipher.init(Cipher.DECRYPT_MODE, deskey); 改为 byte[] iv = new sun....
2019-02-19 15:58:57 419
原创 git-maven
maven按需打包 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin&am
2019-02-18 21:32:52 86
原创 Jedis代码走读
核心类:redis.clients.jedis.Jedis (以set为例) Jedis#set(String, String, SetParams) Client#set(String,String,SetParams) BinaryClient#set(byte[], byte[], redis.clients.jedis.params.set.SetParams) Connection#...
2019-02-13 17:58:31 160
原创 Spring--官方文档部分翻译(第六章 AOP)
6.1 切点API 6.11 概念 核心接口:org.springframework.aop.Pointcut public interface Pointcut { ClassFilter getClassFilter(); MethodMatcher getMethodMatcher(); } 两个子对象都有matches方法,用于测试切点是否匹配特定的类或方法。这种测...
2019-02-13 17:58:04 136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人