- 博客(8)
- 收藏
- 关注
转载 Java并发-CopyOnWriteArrayList
前言今天我们一起学习下java.util.concurrent并发包里的CopyOnWriteArrayList工具类。当有多个线程可能同时遍历、修改某个公共数组时候,如果不希望因使用synchronize关键字锁住整个数组而影响性能,可以考虑使用CopyOnWriteArrayList。CopyOnWriteArrayList APICopyOnWriteArrayList的定义如下:p...
2019-07-22 23:14:28
93
转载 Java面试题必备知识之ThreadLocal
老套路,先列举下关于ThreadLocal常见的疑问,希望可以通过这篇学习笔记来解决这几个问题:ThreadLocal是用来解决什么问题的?如何使用ThreadLocal?ThreadLocal的实现原理是什么?可否举几个实际项目中使用ThreadLocal的案例?基础知识ThreadLocal是线程局部变量,和普通变量的不同在于:每个线程持有这个变量的一个副本,可以独立修改(s...
2019-07-21 21:38:05
145
转载 再谈源码阅读
在软件开发中遇到问题的时候,我倾向于在不需要阅读源码的情况下解决问题,我会优先去查官方文档、FAQ、google或stackoverflow等网站,去看下有没有前人已经遇到过同类问题。阅读源码来解决问题,算是杀手锏。当然,还有另一种需求,就是希望通过阅读源码了解软件的设计细节,来达到学习的目的,例如,通过阅读Dubbo的源码,我可以了解一个RPC框架的设计细节。前提阅读源码之前要做一定的准备...
2019-07-21 09:34:48
106
转载 【译】深入理解G1的GC日志(一)
本文翻译自:https://www.redhat.com/en/blog/collecting-and-reading-g1-garbage-collector-logs-part-2?source=author&term=22991这篇文章将深入研究G1的日志和调优参数。为了在实际工作中对G1进行调优,作为开发者的你需要理解G1垃圾收集器的每个步骤,以及每个步骤在整个垃圾收集周期中...
2019-07-21 09:23:28
160
转载 使用Optional摆脱NPE的折磨
在目前的工作中,我对Java中的Stream和Lambda表达式都使用得很多,之前也写了两篇文章来总结对应的知识。024:Java流实现Shell:cat 1.log | grep a | sort | uniq -c | sort -rn函数式编程让你忘记设计模式不过对于Optional这个特性,一直没有很好地使用起来,所以最近又开始阅读《Java 8实战》这本书,本文是针对其中第1...
2019-07-16 03:55:18
104
转载 利用MAT分析JVM内存问题,从入门到精通(二)
上一篇文章MAT入门到精通(一)介绍了MAT的使用场景和基本概念,这篇文章开始介绍MAT的基本功能,后面还有两篇,一篇是MAT的高级功能,另一篇是MAT实战案例分析。三、欢迎页使用MAT打开一个heap dump文件,解析完成后,默认会进入欢迎页,欢迎页里包含了一些常见的分析:最大内存占用分析、常见的分析动作、常用的分析报告、MAT使用教程等等。我们看下下面这张图,可以看出MAT的主要结构和...
2019-07-10 00:20:46
90
转载 笔记|软件调试的技巧
这篇文章是《调试九法:软硬件错误的排查之道》的阅读笔记。这本书的主旨,是介绍如何修复bug:找出bug发生的原因、并给出修复方案。调试bug的九个规则列举如下,建议将这个清单打印出来,摆放在工作时候能看到的地方。调试规则接下来一次看下每个规则的核心理念,从名字上来看,每个规则看起来都比较明显(PS:由于翻译的问题,有些词可能没那么容易理解),但是理解这些规则和应用这些规则中间还是差了很多距离...
2019-07-07 21:58:09
134
转载 函数式编程让你忘记设计模式
本文是一篇《Java 8实战》的阅读笔记,阅读大约需要5分钟。有点标题党,但是这确实是我最近使用Lambda表达式的感受。设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式。面向对象常见的设计模式有策略模式、模板方法、观察者模式、责任链模式以及工厂模式,使用Lambda表达式(函数式编程思维)有助于避免面向对象开发中的那些固定代码。下面我们挑选了策略模...
2019-07-07 21:41:42
82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人