- 博客(107)
- 资源 (3)
- 收藏
- 关注
原创 真实业务场景展现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
20540
6
原创 线程状态的一点思考
关于多线程的线程状态,有很多种说法。在看过很多博客、书籍、视频后,同时,也请教过一些阿里的大佬以及韩顺平老师。我认为下图是最好的线程状态流转图。第一:阅读源码的Thread类的State枚举类;第二:不要只看博客,视频,动手实践比什么都重要;第三:要不断地总结,思考。反问自己,为什么是这样,有什么用?第四:摆正好心态,戒急戒躁,不要听信***天学习系列。多线程是Java中最难的知识点,这点毋庸置疑。下苦功夫,打扎实基础。不要认为自己学个几天,记得十几个方法和常用类,就学会了多线程。纸上得来终觉
2021-09-17 16:22:31
4080
原创 IDEA换行快捷键
红线为光标当前位置:情景一:Shift + Enter 后(向下键入一行,并将光标移到下一行的开头)情景二:键入 Ctrl + Alt + Enter,当前行上方生成空行,并将光标移到上行的开头Ctrl + Enter 不好用,将光标所在位置后面的内容 另一起一行。...
2021-09-13 21:06:35
10367
原创 多线程学习心得
多线程的学习,不要求快,不要在意速度。任何一个事物的学习,基础永远是最重要的。所以,一开始求快,比如什么看 **天学会多线程 的书籍或视频。这些内容,往往都是直接说一个类中的几个方法的使用,大同小异,不会说为什么会有这个方法,这个类存在的意义,这个方法适合什么情况下使用?同时,因为这些内容讲究速成,就算老师懂,也不可能在短时间内讲清楚。更何况,大都数视频是半吊子。而且作为一个初学线程的人,不能很好地验证老师或书籍内容的对错。所以我们在挑选多线程学习资料的时候,第一项就是书籍的厚薄,视频的长短。厚的书籍好
2021-09-13 06:32:04
474
2
原创 关于编程学习的一点思考
在计算机的书籍中,通常,一个专业名词需要很多其它专业名词进行解释。这是就和数学中的名词定义一样,必须 严谨且唯一。但在学习的时候,如果对一个专业名词从初次接触就试图完全理解它,这是完全没必要的且低效的。第一,理解这个专业名词需要很深的基础,如果没有很深的基础,理解起来很吃力。第二,即使把解释这个名词的其它名词都了解一遍,也无法说完全理解该名词。因为其它专业名词还有别的专业名词进行解释。所以我们刚开始学习的重点,不应该着重于完全理解它,但一点概念没有也是不行的。一点概念没有的话,后面的学习就是空中建楼。所以
2021-07-18 15:47:09
194
原创 mysql如何高效存储IPv4、IPv6地址
目录一、IPv4之简介 + 高效存储二、 IPv6之简介 + 高效存储三、引用:一、IPv4之简介 + 高效存储IPv4百度百科,简单地来说IPv4地址是一个4字节的无符号整数。为了方便人类阅读和分析,IPv4通常被写作点分十进制的形式,即四个字节被分开用十进制写出,中间用点分隔。所以如何存储IPv4,在脑海中想到的第一个答案是用varchar也是很自然的事情。但是使用varchar要使用的字节数是3*4+3+1 = 16,其中1指的是varchar需要一个字节保存长度(varchar的长度小于等于25
2021-06-06 13:12:12
5467
4
转载 转载:关于数据库存储时间的一点思考
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间等等。你会发现这个时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以,我们有必要重新出发,好好认识一下这个东西。这是一篇短小精悍的文章,仔细阅读一定能学到不少东西!1.切记不要用字符串存储日期我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不
2021-03-04 16:16:09
399
1
原创 msyql的大小写不敏感问题和collate属性
前提:创建table student,语句见文末。msyql的大小写不敏感情况;1.sql语句关键字不敏感,例如 select 1和SeLeCt 1,执行结果完全相同;2.sql语句表名、字段名不敏感,例如 select * from student where id = 1和 select * from Student where ID = 1 完全相同;3.sql语句的条件值不敏感,例如select * from student where name ="cauchy6317" 和 select
2021-03-04 11:42:34
867
2
原创 字段不等于某个值意味着字段有值
table personnameheight小赵165小钱170小孙小李null1.select height, count(*) from person group by height;result:heightcount(*)null11165117012.select * from person where height !=165;result:nameheight
2020-12-28 14:54:06
456
原创 从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
448
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
原创 Bug之java.io.OptionalDataException
产生背景:在线上的生产环境中,登录时有一个将用户的访问权限写入redis缓存的逻辑,以便后面访问接口时候,快速验证用户是否具有权限。写入的时候,没有报错提示。但是取出来的时候,偶发性的会报Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.OptionalDataExcept
2020-07-13 14:43:12
4384
2
原创 mysql的explain笔记
explain的作用explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。explain的用法mysqsql文件...
2020-04-13 10:01:46
293
原创 IDEA中debugger模式调试Stream操作
jdk1.8新增的Stream流操作,极大地提升了编程快感,也精简了代码。同时,存在一个问题——debugger下不易调试,不能一行一行地看到执行结果。庆幸的是,Java Stream Debugger 插件解决了此问题。IDEA版本:IntelliJ IDEA 2018.2.4JDK:1.8+在插件库,可以看到Java Stream Debugger插件已经被默认集成到了IDEA中了。有...
2019-12-21 11:38:15
8608
5
原创 IDEA中设置类注释和方法注释
一. 为什么写这篇博客?注释是代码的指南针,能让开发者快速掌握方向。一段代码写得好不好,从注释一眼就能看出来。良好的注释能清楚地表明代码的功能,不用其他开发者再去分析具体的逻辑。这并不是说,自己维护的代码就可以不用写注释,时间一长自己写的代码都会忘记具体的功能。所以,注释不仅助人,也是利己。今天,我们学习如何在Java中二. IDEA中如何设置类注释?三. IDEA中如何设置方法注释?...
2019-11-07 17:08:53
291
原创 Lombok之@Val和@Var使用
目录一. 为什么要用**?二. **如何使用?三. **源码四. 特别说明一. 为什么要用**?二. **如何使用?三. **源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-11-01 09:13:00
12662
12
原创 Lombok之@Cleanup使用
目录一. 为什么要用@Cleanup?二. @Cleanup如何使用?三. @Cleanup源码四. 特别说明一. 为什么要用@Cleanup?二. @Cleanup如何使用?三. @Cleanup源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-31 15:16:40
29382
11
原创 Lombok之@Synchronized使用
目录一. 为什么要用@Synchronized?二. @Synchronized如何使用?三. @Synchronized源码四. 特别说明一. 为什么要用@Synchronized?二. @Synchronized如何使用?三. @Synchronized源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-30 09:22:50
14818
3
原创 IDEA 安装Lombok时下载超时及安装后注解无效
IDEA安装Lombok插件:IDEA的插件中心使用的是https的链接,我们在浏览器中使用https访问插件中心并不能访问。 而使用普通的http是可以访问插件中心的。安装后注解无效:将Enable annotation processing 勾选上...
2019-10-28 21:34:03
1377
1
原创 Lombok实验室之@Accessors使用
目录一. 为什么要用@Accessors?二. @Accessors如何使用?三. @Accessors源码四. 特别说明一. 为什么要用@Accessors?二. @Accessors如何使用?三. @Accessors源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-22 13:52:06
3386
原创 Lombok之@Builder使用
目录一. 为什么要用@Builder?二. @Builder如何使用?三. @Builder源码四. 特别说明一. 为什么要用@Builder?从@Builder的源码和官网的介绍来看,我觉得@Builder的实用性不如它的另一个注解@Accessors。如果是对实用性看重的读者,可以直接跳转至《Lombok实验室之@Accessors使用》。讲解@Builder之前,首先,要求读者对建造者...
2019-10-22 13:36:14
9162
1
原创 Lombok之@Value使用
目录一. 为什么要用@Value?二. @Value如何使用?三. @Value源码四. 特别说明一. 为什么要用@Value?二. @Value如何使用?三. @Value源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-20 09:32:42
17628
5
原创 Lombok之@Data使用
目录一. 为什么要用@Data?二. @Data如何使用?三. @Data源码四. 特别说明一. 为什么要用@Data?二. @Data如何使用?三. @Data源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-16 09:22:02
11687
2
原创 Lombok之@XXXArgsConstructor系列注解使用
目录一. 为什么要用@XXXArgsConstructor?二. @XXXArgsConstructor如何使用?三. @XXXArgsConstructor源码四. 特别说明一. 为什么要用@XXXArgsConstructor?二. @XXXArgsConstructor如何使用?三. @XXXArgsConstructor源码四. 特别说明本文已经收录在Lombok注解系列文章总览...
2019-10-16 09:18:10
14072
原创 Java无为之道
前言:常言道,好记性不如烂笔头。在写博客的过程中,可以更加清楚地看到自己到底掌握了多少。很多东西,理解起来不难,知道是什么,怎么用并不困难,可是为什么这样做,有时候甚至我们都没去思考过。所以,通过写博客这样一种将知识输出的方式,可以站到更高的高度,去审视自己。写完自己读一读,想想读者会提什么样的问题,是不是哪里不严谨,用词是否准确。当然了,写作能力的提升那是水到渠成的事儿了。我不可能系统地写出一...
2019-10-15 17:53:20
200
原创 Lombok之@NonNull使用
目录一. 为什么要用@NonNull?二. @NonNull如何使用?三. @NonNull源码四. 特别说明一. 为什么要用@NonNull?二. @NonNull如何使用?三. @NonNull源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-15 15:07:31
40315
原创 Lombok之@EqualsAndHashCode使用
目录一. 为什么要用@EqualsAndHashCode?二. @EqualsAndHashCode如何使用?三. @EqualsAndHashCode源码四. 特别说明一. 为什么要用@EqualsAndHashCode?在java.lang.Object中有两个实例方法——equals和hashCode。这两个方法就像孪生兄弟一样,重写equals,就要重写hashCode。至于为什么?可...
2019-10-12 17:02:53
38856
原创 Lombok之@ToString使用
在java.lang.Object中有个实例方法方法toString,这个方法是一个对象的自我描述。在源码中有这样一句注释,It is recommended that all subclasses override this method.即推荐所有的子类重新该方法,因为该方法在Object中的实现,不具有可读性。一般在一个实体类中,通常的实现方法是将该类的各个字段和字段的值拼接成一个字符串。...
2019-10-12 10:44:08
48531
1
原创 Lombok的注解文章模板
目录一. 为什么要用**?二. **如何使用?三. **源码四. 特别说明一. 为什么要用**?二. **如何使用?三. **源码四. 特别说明本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。源码地址:gitee...
2019-10-11 16:11:44
599
原创 Lombok之@Getter/@Setter使用
一. 为什么要用@Getter/@Setter?二. @Getter/@Setter如何使用?三. @Getter/@Setter源码四. 特别说明本文已经收录在[Lombok注解系列文章总览]中,并继承总览中所提的特别说明。(https://blog.youkuaiyun.com/cauchy6317/article/details/102498569)...
2019-10-11 13:49:15
22444
原创 Lombok注解系列文章总览
目录前言:为什么写lombok的注解系列文章?备注前言:为什么写lombok的注解系列文章?前段时间,有个前辈帮我调试代码的,他给实体类上加了@Accessors注解后,new对象的时候,链式写法使得代码即简洁又漂亮。我就好奇地问他,“你是怎么知道这种写法的?”他的回答道:“多看看官网。”在下班的路上,我就一直在想,“我也知道lombok,知道@Data注解,@NoArgsConstruct...
2019-10-11 12:15:07
15045
4
原创 SpringData JPA中@OneToMany和@ManyToOne的使用
尝试一次简洁风格环境:springboot2.1.7+jdk1.8+mysql8.0+druid1.1.10+Springdata JPA+Lombok作者:cauchy6317在csdn需求场景:学生和学校的业务设计博文目标:使用这两个注解的正确姿势pom.xml文件的dependencies见附录Student类和School类@Data@Table@Entity@Acce...
2019-09-17 14:49:01
18600
10
原创 springboot的apllication.yml文件没有小叶子图标
setting >Editor>file Type>YAML>加上 *.yaml 和 *.yml 确定即可,还要确保在Plugins中启用IDEA自带的YAML插件。插件安装在settings>plugins里面browse repositories 搜yaml/ansible support...
2019-09-12 10:48:30
2631
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人