SpringBoot 实战:自定义 Filter 优雅获取请求参数和响应结果

SpringBoot 实战:自定义 Filter 优雅获取请求参数和响应结果

你好,我是看山。

更多

SpringBoot 实战:通过 BeanPostProcessor 动态注入 ID 生成器

SpringBoot 实战:通过 BeanPostProcessor 动态注入 ID 生成器

你好,我是看山。

在分布式系统中,我们会需要 ID 生成器的组件,这个组件可以实现帮助我们生成顺序的或者带业务含义的 ID。

目前有很多经典的 ID 生成方式,比如数据库自增列(自增主键或序列)、Snowflake 算法、美团 Leaf 算法等等,所以,会有一些公司级或者业务级的 ID 生成器组件的诞生。本文就是通过 BeanPostProcessor 实现动态注入 ID 生成器的实战。

更多

Java 并发基础(五):面试实战之多线程顺序打印

Java 并发基础(五):面试实战之多线程顺序打印

你好,我是看山。

来个面试题,让大家练练手。这个题在阿里和小米都被问过,所以放在这个抛砖引玉,期望能够得到一个更佳的答案。

更多

Java 并发基础(一):synchronized 锁同步

Java 并发基础(一):synchronized 锁同步

你好,我是看山。

synchronized 是 java 内置的同步锁实现,一个关键字实现对共享资源的锁定。synchronized 有 3 种使用场景,场景不同,加锁对象也不同:

  1. 普通方法:锁对象是当前实例对象
  2. 静态方法:锁对象是类的 Class 对象
  3. 方法块:锁对象是 synchronized 括号中的对象

更多

Docker 教程(三):Docker 命令

Docker 教程(三):Docker 命令

你好,我是看山。

本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第三篇。

更多

Docker 教程(二):Dockerfile

Docker 教程(二):Dockerfile

你好,我是看山。

本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第二篇。

更多

Docker 教程(一):Docker 是什么

Docker 教程

本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第一篇,本文大概介绍了 Docker 是什么和有什么用。可能在工作中,会有专业运维同学管理服务器镜像或其他内容,但是如果不了解这些概念,很多时候我们不会全面了解到系统的全貌。

更多

Java 中 Vector 和 SynchronizedList 的区别

Java 中 Vector 和 SynchronizedList 的区别

你好,我是看山。

本文还是折腾 Java 中的队列,上次比较了 Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList,当时感觉挺明白,后来想想又有些不理解的地方,所以今天在重新翻出来研究一下,我承认我钻了牛角尖了。

更多

软件架构-事件驱动架构

软件架构-事件驱动架构

你好,我是看山。

本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《软件架构》 中关于事件驱动的内容,虽然是 2014 年的文章,但是从软件架构层面上,并不过时。

以下是正文。

事件驱动架构是一种系统或组件之间通过发送事件和响应事件彼此交互的架构风格。当某个事件发生时,组件A不直接调用组件B,而只是发出一个事件。组件A不知道哪些组件监听并处理这些事件。事件驱动架构可以在进程内和进程间使用。比如,GUI框架中会大量使用事件驱动。【译者注:目前很多系统采用微服务架构,事件驱动使用的更加广泛了。】此外,正如我在并发模型教程 中所提到的,装配线并发模型(AKA reactive,非阻塞并发模型)也使用了事件驱动架构。

本文主要介绍进程之间的事件驱动架构,后文提到这个词的时候也是指进程交互方式。

更多

认识 Java 中的队列:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList

认识 Java 中的队列:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList

你好,我是看山。

书接上文,上次聊了聊 在多线程中使用 ArrayList 会发生什么,这次我们说说平时常用的列表:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList。

更多