
易筋经——Java
文章平均质量分 62
Java的基本功和高阶知识点就如同易筋经一般,掌握了它,学别的武动就会触类旁通,一点即会。
cauchy6317
所求不智,万苦之源
展开
-
Java无为之道
前言:常言道,好记性不如烂笔头。在写博客的过程中,可以更加清楚地看到自己到底掌握了多少。很多东西,理解起来不难,知道是什么,怎么用并不困难,可是为什么这样做,有时候甚至我们都没去思考过。所以,通过写博客这样一种将知识输出的方式,可以站到更高的高度,去审视自己。写完自己读一读,想想读者会提什么样的问题,是不是哪里不严谨,用词是否准确。当然了,写作能力的提升那是水到渠成的事儿了。我不可能系统地写出一...原创 2019-10-15 17:53:20 · 200 阅读 · 0 评论 -
集合之深入理解PriorityQueue
PriorityQueue源码解析转载 2021-12-05 13:06:53 · 5278 阅读 · 0 评论 -
真实业务场景展现CAS原理的ABA问题及解决方案
文章目录阅读提示CAS原理、ABA问题介绍真实业务场景如何解决ABA问题CAS学习总结阅读提示本文将借助开保险柜的业务场景重点阐述误用AtomicBoolean引起的ABA问题,以及解决方案。基于此,请先深入理解CAS原理,以及其会产生的ABA问题。关于CAS原理和ABA问题的优秀博客已经存在很多,所以本文只简单介绍CAS原理,希望读者有此基础。CAS原理、ABA问题介绍CAS(Compare and Swap)是一种乐观锁机制。CAS有3个操作数,预期值A,内存值V,要修改的新值B。当且仅当预期值原创 2021-09-25 18:28:30 · 20549 阅读 · 6 评论 -
线程状态的一点思考
关于多线程的线程状态,有很多种说法。在看过很多博客、书籍、视频后,同时,也请教过一些阿里的大佬以及韩顺平老师。我认为下图是最好的线程状态流转图。第一:阅读源码的Thread类的State枚举类;第二:不要只看博客,视频,动手实践比什么都重要;第三:要不断地总结,思考。反问自己,为什么是这样,有什么用?第四:摆正好心态,戒急戒躁,不要听信***天学习系列。多线程是Java中最难的知识点,这点毋庸置疑。下苦功夫,打扎实基础。不要认为自己学个几天,记得十几个方法和常用类,就学会了多线程。纸上得来终觉原创 2021-09-17 16:22:31 · 4081 阅读 · 0 评论 -
从jdk1.8源码看modCount的作用
上一篇《fail-fast究竟是个什么鬼》我们学习了什么是fail-fast,那么,java.util包下的集合类是如何利用modCount保证fail-fast机制的?那么modCount作为java.util包中的灵魂字段,我觉得就很有必要专门为它写上一篇。接下来,本文将以最常用的ArrayList类作为源码切入点,一起来揭秘modCount的神秘面纱。先看一下ArrayList的继承实现关系图(idea快捷键 Ctrl + Alt + u 或 Ctrl + Alt + Shift + u )。在原创 2020-08-17 17:09:02 · 582 阅读 · 2 评论 -
fail-fast究竟是个什么鬼
文章目录概念引入实例分析集合类中的fail-fast异常分析异常原理总结概念引入首先我们看下维基百科中关于fail-fast的解释:在系统设计中,快速失效系统一种可以立即报告任何可能表明故障的情况的系统。快速失效系统通常设计用于停止正常操作,而不是试图继续可能存在缺陷的过程。这种设计通常会在操作中的多个点检查系统的状态,因此可以及早检测到任何故障。快速失败模块的职责是检测错误,然后让系统的下一个最高级别处理错误。其实,这是一种理念,fail-fast就是在做系统设计的时候先考虑异常情况,一旦发生异常转载 2020-08-10 11:27:01 · 449 阅读 · 1 评论 -
从jdk1.8源码看ArrayList的扩容原理
ArrayList源码中是用一个数组(Object[] elementData)来保存元素的,自然,三个构造函数都会为elementData赋值。最简单的构造函数如下:/** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }原创 2020-07-30 17:23:26 · 228 阅读 · 0 评论 -
java常用命令
查看.class文件,javap -verbose **.class原创 2019-10-18 10:34:23 · 163 阅读 · 0 评论 -
交互式的Git命令学习
黑客都喜欢在命令行敲命令入侵别的系统,这给世人留下了一种印象——在命令行敲命令看起来酷酷滴。Git作为一种现如今最流行的代码托管器,虽然它已经有了很不错的客户端(如:sourceTree),但是程序猿要显得逼格高,敲命令是门必修课。今天,我们来好好撸撸Git的命令。这里已经有个可视化的交互式网站https://learngitbranching.js.org/,可以很好的帮助我们快速得掌握Git命...原创 2019-08-01 16:53:58 · 329 阅读 · 0 评论 -
JDK1.8 接口的新特性
在JDK1.8中对接口的一些改动。函数式接口的注解@FunctionalInterface接口内的default 方法和static 方法函数式接口的概念:只有一个抽象方法的接口,其中抽象接口的接口名不能和Object中的方法重名。若重名则这个接口不能算是函数式接口。jdk1.8提供了一个注解@FunctionalInterface,当用@FunctionalInterface注解在...原创 2018-12-22 10:20:21 · 1435 阅读 · 0 评论 -
Redis的个人学习总结
20181024更 在此之前,笔者只知道redis是个内存数据库,很多公司用。Redis是什么?什么场景适合用Redis?Redis的安装和基本用法有哪些?Redis官网https://redis.io/Redis的官网没有Windows版本的redis,需要到github上下载。https://github.com/MicrosoftArchive/redis/releases官...原创 2018-10-25 00:24:30 · 303 阅读 · 0 评论 -
单例模式的学习总结
单例模式,饿汉式,懒汉式,线程安全的双重校验模式原创 2018-10-20 19:40:48 · 381 阅读 · 6 评论 -
JAVA枚举类型(Enum)的使用
在现实社会中,有些类的实例对象是固定的。例如季节,只有春夏秋冬。如果你创建了一个season类,你当然有义务维护这个类的实例对象只能是春(SPRING)、夏(SUMMER)、秋(AUTUMN)、冬(WINTER)这四个。这个时候就体现出枚举类的作用了,java中枚举类型就是针对这样的场景需求所设计的。/** * 枚举类的后缀建议为Enum,枚举类型的实例对象建议全大写(这样做符合JAVA的...原创 2018-09-02 11:02:33 · 72533 阅读 · 9 评论 -
DecimalFormat的正确打开姿势
目录DecimalFormat的产生背景DecimalFormat的初始化原创 2019-09-05 14:09:30 · 312 阅读 · 0 评论 -
BigDecimal简单介绍
目录BigDecimal的产生背景如何使用BigDecimal初始化BigDecimal对象BigDecimal的加减乘除等实例方法八种舍入模式总结参考网址:BigDecimal的产生背景在前一篇文章Java的8种基本类型简单介绍中,我们了解到double和float基本类型存在着精度缺失问题。虽然误差非常小,但是如果开发银行金融类产品时,我们就需要绝对精确的数据。例如,在定义某类产品的单价—...原创 2019-08-29 15:28:26 · 1055 阅读 · 0 评论 -
Hibernate(JPA)中实体类变量与表中字段顺序不一致问题
在使用JPA的过程,当使用spring.jpa.hibernate.ddl-auto=update属性时,我们是能在数据库中创建实体类所对应的表,但是却发现表中字段的顺序和实体类中变量的顺序不一致。作为一名爱思考(装b)的程序猿,我觉得是时候展现我真正的实力了。作为一名爱读源码的程序猿,我先打开了hibernate的源码包位置,如图:接下来,就开始思考(Google),这么多我读个锤子哦。...原创 2019-08-27 16:48:41 · 3587 阅读 · 2 评论 -
jdk1.8的新特性——时间日期之LocalDateTime
在上一篇jdk1.8的新特性——时间日期之LocalTime中,我们学习了LocalTime的API使用,其中更加全面得讲解了如何创建一个LocalTime对象,并且初步学会了DateTimeFormatter的使用,将时间的格式转化成我们想要的字符表达式。同时,我们结合LocalDate对象,在LocalTime对象的基础上“合成”了一个LocalDateTime对象。那么这个LocalDate...原创 2019-08-13 09:35:24 · 1552 阅读 · 0 评论 -
jdk1.8的新特性——时间日期之LocalTime
在上一篇jdk1.8的新特性——时间日期之LocalDate中,我们学习了LocalDate的基本的常用用法,学会了如何获取一个本地日期对象,如何获取年月日,如何比较日期的是否相等以及日期前后顺序,如何在LocalDate对象的基础获取指定日期单位和数量的副本等等。今天,我们一起来学习LocalTime这个API,其中的学习目标和LocalDate相似。首先如何获取一个LocalTime对象?...原创 2019-08-12 13:53:51 · 1540 阅读 · 1 评论 -
jdk1.8的新特性——时间日期之LocalDate
现在开始忘了jdks1.8之前的时间日期API,开始一个新的纪元。jdk1.8的时间日期API简直不要太好用,谁用谁知道。接下来让我们一起探索这个新的API。:D这些新的API位于java.time包下,我们接下来按照开发者使用的角度来探索如何使用新的API。说到日期,首先我们想到的就是如何获取今日的日期,那让我们看看新的API是如何做的吧。public static void main...原创 2019-08-10 11:01:22 · 771 阅读 · 0 评论 -
Maven标签之dependencyManagement
当你想在你的某个项目中,将spring-boot的这个依赖的版本号从1.5.6升级到2.0.0的时候,你最直接且高效的办法是将<version>1.5.6</version>改为<version>2.0.0</version>。ok,这自然没什么问题。但是,如果你的项目经理发现2.0.0的版本更好用,让你给公司的108个maven项目全更新一遍。...原创 2019-07-31 13:20:47 · 236 阅读 · 3 评论 -
maven官网下载bin.tar.gz和bin.zip以及src.tar.gz和src.zip的区别
maven官网http://maven.apache.org/download.cgi去官网下载的时候不知道选哪个,现在记录一下:首先弄清楚各后缀的含义:(1)bin代表二进制class文件(由java文件编译而成),src代表源码(java源码),源码source比binary大一些,一般正常使用下载bin类型即可,如果要学习源码下载src类型。(2).tar.gz是linu...转载 2019-07-18 20:34:08 · 2084 阅读 · 0 评论 -
JsonView用法
@JsonView是jackson json中的一个注解,Spring webmvc也支持这个注解。源码如下:@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, // since 2.5 ElementType.TYPE //...原创 2019-06-18 15:18:30 · 4423 阅读 · 0 评论 -
JAVA泛型
https://blog.youkuaiyun.com/u011990285/article/details/46755149(泛型进阶)泛型就是变量类型的参数化。在使用泛型前,存入集合中的元素可以是任何类型的,当从集合中取出时,所有的元素都是Object类型,需要进行向下的强制类型转换,转换到特定的类型。而强制类型转换容易引起运行时错误。泛型类型参数只能被类或接口类型赋值,不能被原生数据类型赋值,原...转载 2018-09-19 15:54:06 · 151 阅读 · 0 评论