摘要:
【并发那些事】可见性问题的万恶之源 硬件工程师为均衡 CPU 与 缓存之间的速度差异,特意加的 CPU 缓存,竟然在多核的场景下阴差阳错的成为了并发可见性问题的万恶之源!( 本文过长,如果不是特别无聊,看到这里就可以了 ) 前言 还记得那些年,你写的那些多线程 BUG 吗?明明只想得到个 1 + 1 阅读全文
摘要:
Step 1. 什么是生产者消费者问题 生产者消费者问题 也叫 有限缓冲问题 ,是多线程同步的一个最最最经典的问题。这个问题描述的场景是对于一个有固定大小的缓冲区,同时共享给两个线程去使用。而这两个线程会分为两个角色,一个负责往这个缓冲区里放入一定的数据,我们叫他 生产者 。另一个负责从缓冲区里取数 阅读全文
摘要:
0. 为什么人人都讨厌写单测 在之前的关于 "swagger" 文章里提到过, 程序员最讨厌的两件事,一件是别人不写文档,另一件就是自己写文档。这里如果把文档换成单元测试也同样成立。 每个开发人员都明白单元测试的作用,也都知道代码覆盖率越高越好。高覆盖率的代码,相对来说出现 BUG 的概率就越低,在 阅读全文
摘要:
集成 websocket 的四种方案 1. 原生注解 pom.xml WebSocketConfig 说明: 这个配置类很简单,通过这个配置 spring boot 才能去扫描后面的关于 websocket 的注解 WsServerEndpoint 说明 这里有几个注解需要注意一下,首先是他们的包都 阅读全文
摘要:
创建线程可以说是并发知识中最基础的操作了,JDK 提供的创建线程的方式,如果不包括通过线程池的话,目前有三种形式,它们分别是通过继承 Thread 类,通过实现 Runable 接口,通过 FutureTask。如下图所示 下面整理了一下 3 种方法的具体使用与异同。 创建线程的 3 种方法 1. 阅读全文
摘要:
作为程序员,我真的有时候特别想 debug 这个世界。看看这个世界究竟是怎么运行的。因为经常会遇到她的输出跟我断言的不一样,或者我觉得正常的输入,却被她判定为非法。 先分享两件事吧。 第一件事,记得去年考驾照的时候,应该是在练科目三。教练带着我练车,当开到一个地方时,让我停车。然后跟我说:『这里是一 阅读全文
摘要:
【Sentinel】sentinel 集成 apollo 最佳实践 前言 在 sentinel 的控制台设置的规则信息默认都是存在内存当中的。所以无论你是重启了 sentinel 的客户端还是 sentinel 的控制台。你所设置的规则都会丢失。如果想要 sentinel 在 阅读全文
摘要:
1. 安装 Namesrv 拉取镜像 docker pull rocketmqinc/rocketmq:4.4.0` docker run d p 9876:9876 v {RmHome}/data/namesrv/logs:/root/logs v {RmHome}/data/namesrv/st 阅读全文
摘要:
【Swagger】可能是目前最好的Spring Boot集成 swagger 的方案 据说程序员最恨的两件事:一件是别人不写文档,另一件是自己写文档。 可见文档真的是程序员生活中相爱相杀的存在。一方面对于使用者来说,一份 全面、准确 的文档简直就是旅行 阅读全文
摘要:
JMH 简单入门 "" 什么是 JMH JMH 是 Java Microbenchmark Harness 的缩写。中文意思大致是 “JAVA 微基准测试套件”。首先先明白什么是“基准测试”。百度百科给的定义如下: "基准测试" 是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某 阅读全文