摘要:
预备知识 可以先看下我的另一篇文章对于Java中的位掩码BitMask的解释。 1、一个整数在jvm中占用了4个字节,共32bits 2、最高位的bit代表符号位,0为正数、1为负,剩余的31bits则代表数字部分 3、反码加1即为补码 4、对于负数而言,是以补码的形式存储在内存中的。以-7(int 阅读全文
摘要:
JDK源码的使用 最近在JDK源码中闲逛,无意中看到了java.lang.reflect.Modifier这个类,这个类很简单,都是些常量定义和判断方法,于是扒了扒代码实现的含义,我们就看个isPublic方法吧: /** * Return {@code true} if the integer a 阅读全文
摘要:
背景 最近在很多JDK源码中都看到了Treiber stack这个单词。 比如CompletableFuture中的: volatile Completion stack; // Top of Treiber stack of dependent actions 比如FutureTask中的: /* 阅读全文
摘要:
Shell命令 mysql -uroot -p123 -h127.0.0.1 -P3306 #登录 mysqladmin kill ${processId} #杀掉进程ID mysqldump -uroot -p123 test1 > test_with_data.sql mysqldump -ur 阅读全文
摘要:
今天早上旁边同事喊我看一个Sonar检测出的问题: 当时看了好几眼没觉得这个有太大问题,于是又看了下Sonar建议: 这是说Math.abs()方法使用在数字上面可能返回最小值,觉得这个挺有意思的,于是Google一下: 在Oracle docs: Integer Operations中有这么一段话 阅读全文
摘要:
准备 实体 @Data @Table(name = "task_apply") @Entity public class TaskApply { @Id @GeneratedValue @Column(name = "apply_id") private Long applyId; private 阅读全文
摘要:
一、前言 在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。 特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。 今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存 阅读全文
摘要:
一、提前阅读 讨论这个问题之前可以先看下缓存模式(Cache Aside、Read Through、Write Through、Write Behind)这篇文章。 二、先更新缓存,再更新数据库 1、考虑并发操作:线程A写,线程B读 1、线程A发起一个写操作,第一步delete cache 2、此时 阅读全文
摘要:
概览 缓存是一个有着更快的查询速度的存储技术,这里的更快是指比起从初始的数据源查询(比如数据库,以下都称作数据库)而言。我们经常会把频繁请求的或是耗时计算的数据缓存起来,在程序收到请求这些数据的时候可以直接从缓存中查询数据返回给客户端来提高系统的吞吐量,现在我们来看看有哪些缓存模式可以考虑。 Cac 阅读全文
摘要:
概览 前段时间有同事提到了主线程这个名词,但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程。当时感觉这个描述很奇怪,所以就来研究下这个主线程的确切语义。 Java提供了内置的多线程编程支持,多线程包括两个或多个可并发执行的部分,每一部分叫做线程,每个线程定义了单独的执行部 阅读全文