Java
文章平均质量分 95
zdxiq000
这个作者很懒,什么都没留下…
展开
-
并发编程:聊聊常用的并发同步模板
我们从一道简单的题出发,覆盖了并发场景下经常会遇到的几种变成模式,这里面的每一种都值得我们细细去理解,并熟练掌握。对于并发包里给出的大量同步工具,我想不同工具会有自己的适用场景,而信号量(Semaphore)是一种必须掌握的工具。其他工具我也会另做总结。原创 2023-06-02 16:21:28 · 746 阅读 · 0 评论 -
[Leetcode] LRU Cache
题目来源:LRU CacheDesign and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put.get(key) - Get the value (will always be positive) o...原创 2019-08-13 15:15:48 · 245 阅读 · 0 评论 -
抛砖引玉:Java中依赖冲突的解决方法
依赖冲突的解决方法早在去年的一次面试中,我就曾被问及依赖冲突如何解决,当时确实没有遇到过相关的问题,所以似乎并没有给出很满意的答案。因为在通常情况下,构建工具帮你解决了这些问题,好像一切都没有发生过,万事大吉。正所谓,“出来混,总是要还的”——最近在升级Spring版本时又遇到了这个问题,并且断断续续地困扰了我一段时间,到现在为止总算是完整地解决了。故有此文,以告慰我逝去的青春。依赖冲...原创 2018-07-15 01:13:16 · 3093 阅读 · 0 评论 -
源码阅读笔记:并发环境下的HashMap
并发环境下的HashMap本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键线程安全(Thread Safty) Thread safety is a c...原创 2018-05-21 00:34:10 · 578 阅读 · 0 评论 -
源码阅读笔记:AbstractQueuedSynchronizer
锁是面向使用者的,定义了使用者与锁交互的接口,隐藏了实现细节;同步器是面向所得实现者的,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。AbstractQueuedSynchronizer(以下简称AQS),就是所谓的同步器。更准确地说是队列同步器,描述了线程在获取共享资源时以FIFO的方式依次获取同步状态的一种同步模型。这个模型扩展了CLH同步模型,使得其适用于大部原创 2017-03-31 19:53:42 · 743 阅读 · 0 评论 -
读书笔记:从happens-before原则说起
看Java内存模型(JMM, Java Memory Model)时,总有一个困惑。关于线程、主存(main memory)、工作内存(working memory),我都能找到实际映射的硬件:线程可能对应着一个内核线程,主存对应着内存,而工作内存则涵盖了写缓冲区、缓存(cache)、寄存器等一系列为了提高数据存取效率的暂存区域。但是,一提到happens-before原则,就让人有点“丈二和尚摸不原创 2017-03-09 20:10:52 · 5222 阅读 · 1 评论 -
源码阅读笔记:J.U.C CLH lock
java.utils.concurrency(J.U.C)中提供了一系列对锁的封装,如ReentrantLock、CountDownLatch等,而这其中用到的实现又都基于AbstractQueuedSynchronizer(AQS)。而CLH算法又是AQS实现的基础,所以网上查阅了一些资料,总结在此。 CLH lock is Craig, Landin, and Hagersten (CLH)原创 2017-03-04 19:38:23 · 730 阅读 · 0 评论 -
Kafka与UnknownHostException
今天启动Kafka consumer时遇到了一个很诡异的问题,莫名其妙地抛出了UnknownHostException。同事的提醒下,将/etc/hosts中配置上了VM的主机名的映射,解决了问题。如今日志已不可追溯,但发现StackOverFlow已有此类问题。原创 2017-03-17 15:48:57 · 7239 阅读 · 2 评论 -
抛砖引玉:为何java.lang.String被声明为final
java.lang.String为何被声明为final,不假思索地回答,当然是为了不能让client改变String的内置方法,得到了否定的答案。确实,这仅仅是表象。查阅了资料,总结一下其根本原因。原创 2017-02-18 14:47:22 · 1363 阅读 · 0 评论 -
源码阅读笔记:java.lang.Object
java.lang.Object是Java中所有类的父类(super class),是唯一一个没有父类的Java类。所有对象都会自动继承Object,通过Object可以了解一个对象最基本的行为。由于Object涉及到JVM加载的过程,很多方法都是native方法,可以通过下载OpenJDK源码来查看方法的具体内容。 Method Return Paremeters registerN原创 2017-02-21 00:46:34 · 2347 阅读 · 1 评论