摘要: 前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图: 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 do 阅读全文
posted @ 2019-11-07 11:54 日拱一兵 阅读(966) 评论(0) 推荐(0) 编辑
摘要: 写在前面 本来想写一篇「如何自定义Spring Boot Starter」,但是为了更好理解 Starter 的一些设计理念和其中的关键点,所以提前将一些细节内容单独提取出来讲解说明 在 Maven pom.xml 中,你经常会看到依赖项中有类似下面的代码: 这里的 是什么意思呢? optional 阅读全文
posted @ 2019-11-05 08:49 日拱一兵 阅读(21016) 评论(6) 推荐(11) 编辑
摘要: 写在前面 上一篇文章 "共享资源那么多,如何用一把锁保护多个资源?" 文章我们谈到了银行转账经典案例,其中有两个问题: 1. 单纯的用 synchronized 方法起不到保护作用(不能保护 target) 2. 用 Account.class 锁方案,锁的粒度又过大,导致涉及到账户的所有操作(取款 阅读全文
posted @ 2019-10-29 08:42 日拱一兵 阅读(860) 评论(1) 推荐(2) 编辑
摘要: 写在前面 Java 后端程序员应该会遇到读取 Excel 信息到 DB 等相关需求,脑海中可能突然间想起 Apache POI 这个技术解决方案,但是当 Excel 的数据量非常大的时候,你也许发现,POI 是将整个 Excel 的内容全部读出来放入到内存中,所以内存消耗非常严重,如果同时进行包含大 阅读全文
posted @ 2019-10-22 08:40 日拱一兵 阅读(37000) 评论(6) 推荐(5) 编辑
摘要: 写在前面 上一篇文章 "原子性问题的宏观理解" 带领大家了解了锁和资源的模型,有了这篇文章的铺垫,相信理解这一篇文章就非常轻松了 当我们要保护单个资源并对其进行修改其实很简单,只需按照下图分三步走 1. 创建受保护资源 R 的锁 2. 加锁进入临界区 3. 解锁走出临界区 上图的关键是「R1 的锁保 阅读全文
posted @ 2019-10-16 10:09 日拱一兵 阅读(814) 评论(0) 推荐(2) 编辑
摘要: 提前发现更多精彩内容,请访问 "个人博客" 提前发现更多精彩内容,请访问 "个人博客" 提前发现更多精彩内容,请访问 "个人博客" 写在前面 在 "可见性有序性,Happens before来搞定" 文章中,happens before 的原则之一: volatile变量规则 对一个 volatil 阅读全文
posted @ 2019-09-30 08:29 日拱一兵 阅读(770) 评论(0) 推荐(1) 编辑
摘要: 上一篇文章 "可见性有序性,Happens before来搞定" ,解决了并发三大问题中的两个,今天我们就聊聊如何解决原子性问题 原子性问题的源头就是 线程切换 ,但在多核 CPU 的大背景下,不允许线程切换是不可能的,正所谓「魔高一尺,道高一丈」,新规矩来了: 互斥: 同一时刻只有一个线程执行 实 阅读全文
posted @ 2019-09-23 08:41 日拱一兵 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 写在前面 上一篇文章 "并发 Bug 之源有三,请睁大眼睛看清它们" 谈到了 三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO 的短板,增加了缓存,但这导致了可见性问题 编译器/处理器 优化 ( Java代码在编译后会变成 Java 字节码, 阅读全文
posted @ 2019-09-17 08:14 日拱一兵 阅读(851) 评论(0) 推荐(1) 编辑
摘要: 写在前面 生活中你一定听说过——能者多劳 作为 Java 程序员,你一定听过——这个功能请求慢,能加一层缓存或优化一下 SQL 吗? 看过中国古代神话故事的也一定听过——天上一天,地上一年 一切设计来源于生活,上一章 "学并发编程,透彻理解这三个核心是关键" 中有讲过,作为"资本家",你要尽可能的榨 阅读全文
posted @ 2019-09-10 08:32 日拱一兵 阅读(870) 评论(2) 推荐(2) 编辑
摘要: 关于 Java String,这是面试的基础,但是还有很多童鞋不能说清楚,所以本文将简单而又透彻的说明一下那个让你迷惑的 String 在 Java 中,我们有两种方式创建一个字符串 你常见也常写第一种,很少见第二种,但面试还总问这类问题,双引号和构造器两种形式创建字符串到底有什么差别呢? 先来看例 阅读全文
posted @ 2019-09-05 08:51 日拱一兵 阅读(1662) 评论(5) 推荐(3) 编辑