
java进阶
全威指南
千古七夕沦落人,鹊桥安在玉楼深。
摘星有意青天远,葬月无心古木分。
不老平添千尺恨,长生空乱万劫身。
朝朝暮暮不相守,岁岁年年负良辰!
展开
-
20个使用 Java CompletableFuture的例子
转载:https://mp.weixin.qq.com/s/QZnHePlNB2je8grkrb0xsw 在Java中异步编程,不一定非要使用rxJava, Java本身的库中的CompletableFuture可以很好的应对大部分的场景。 这篇文章介绍 Java 8 的 CompletionStage API和它的标准库的实现 CompletableFuture。API通过例子的方式演示了它的行为,每个例子演示一到两个行为。 既然CompletableFut...原创 2020-08-26 10:01:39 · 207 阅读 · 0 评论 -
Springboot简单的自动配置模块
在开发过程中,我们需要根据不同的应用场景添加不同的模块,比如jdbc操作,我们除了添加基础的接口模块外,还需要根据不同的数据库添加针对该数据库的模块,在这样的场景下,就需要用到自动配置模块。实现一个简单的自动配置模块的步骤:1.构建一个配置类,用于读取配置文件本例子直接读取application.properties,若有自定义的配置文件,可以单独进行配置@Configur...原创 2019-06-12 15:55:40 · 552 阅读 · 0 评论 -
Java8时间类型
具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date/** * Date类型转LocalDateTime类型 * java.util.Date --> java.time.LocalDateTime * @p...原创 2019-01-23 17:39:24 · 357 阅读 · 0 评论 -
java集合类(四)(java8 ConcurrentHashMap)
Java8 ConcurrentHashMapJava7 中实现的 ConcurrentHashMap 说实话还是比较复杂的,Java8 对 ConcurrentHashMap 进行了比较大的改动。建议读者可以参考 Java8 中 HashMap 相对于 Java7 HashMap 的改动,对于 ConcurrentHashMap,Java8 也引入了红黑树。说实话,Java8 Concu...转载 2018-08-23 15:21:00 · 288 阅读 · 0 评论 -
java集合类(三)(java8 HashMap)
Java8 HashMapJava8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。为了降低这部分的开销,在 Jav...转载 2018-08-23 15:16:57 · 321 阅读 · 0 评论 -
java集合类(二)(java7 ConcurrentHashMap)
Java7 ConcurrentHashMapConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些。整个 ConcurrentHashMap 由一个个 Segment 组成,Segment 代表”部分“或”一段“的意思,所以很多地方都会将其描述为分段锁。注意,行文中,我很多地方用了“槽”来代表一个 segment。简单理解就是,...转载 2018-08-23 15:12:18 · 151 阅读 · 0 评论 -
java集合类(一)(java7 HashMap)
Java7 HashMapHashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。首先,我们用下面这张图来介绍 HashMap 的结构。这个仅仅是示意图,因为没有考虑到数组要扩容的情况,具体的后面再说。大方向上,HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。上图中,每个绿色的实体是嵌套类 Entry 的实例,Ent...转载 2018-08-23 15:07:28 · 162 阅读 · 0 评论 -
java中的锁(一)(锁的介绍)
转载:https://blog.youkuaiyun.com/zqz_zqz/article/details/70233767/测试结果:1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是高并发下,性能...转载 2018-08-23 10:08:50 · 24339 阅读 · 1 评论 -
JVM调优(jstack找出最耗CPU的线程及代码)
jstack找出最耗CPU的线程及代码1.通过top命令找出我们程序的进程2.通过top -Hp <pid> 查看耗CPU的线程发现133603线程一直在耗CPU3.使用printf "%x\n" <pid(线程的pid)> 将线程号转化成16进制4.使用jstack查看最耗CPU的代码jstack <进程的pid> | grep -A 13 <线程的16...原创 2018-07-16 09:48:51 · 837 阅读 · 0 评论 -
Java进阶(四) 线上问题定位
备注:此文章参考《Java并发编程的艺术》有很多问题在开发环境下并不会出现,在生产环境下才会出现,而在生产环境下又不能调试代码,只能根据线上日志,系统状态,dump线程来定位问题一.查看每一个进程的状态使用命令:topuser:表示当前登录该机器的用户数load average:一分钟负载,五分钟负载,十分钟负载(每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数原创 2017-06-05 21:31:17 · 723 阅读 · 0 评论 -
java进阶(三) 用单例模式加载配置文件
在实际开发中,经常需要加载配置文件,在读取配置文件的过程中,我们只需要初始化一次即可。就想到了用单例模式来加载配置文件,最常用的单例模式有四种:懒汉式(线程安全,延迟加载,线程阻塞),饿汉式(线程安全,不会延迟加载,响应迅速),匿名内部类(线程安全,延迟加载,响应迅速),枚举。综合考虑,使用匿名内部类的方式加载配置文件(根据自己的业务场景,挑选)比较好。以下是实现方式:原创 2017-06-05 14:52:53 · 1204 阅读 · 0 评论 -
java进阶(二) java对象和json字符串的互转
一.Jackson框架,轻松实现java对象和json字符串的互转为什么使用jackson框架:1.Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象2.相比json-lib框架,Jackson所依赖的jar包较少3.简单易用并且性能也要相对高些4.Jackson社区相对比较活跃,更新速度也比较快二.原创 2017-06-05 14:36:58 · 646 阅读 · 0 评论 -
java进阶(一) java 自动装箱与拆箱
【优快云 技术主题月】物联网全栈开发 【评论送书】每周荐书:MySQL、Kafka、微信小程序 优快云日报20170602 ——《程序员、技术主管和架构师》 IBM PowerAI人工智能马拉Java进阶(三十七)java 自动装箱与拆箱标签: java自动装箱拆箱2016-07-23 17:21 38287人阅读 评论(1转载 2017-06-05 14:14:03 · 324 阅读 · 0 评论