程序员进阶书单2021版

程序员进阶书单2021版

你好,我是看山。

今天列一下技术相关的书单,本文是第一版,后续持续更新。

更多

Geek 青年说北京沙龙分享

Geek 青年说北京沙龙分享

你好,我是看山。

5 月 23 号参加了 infoQ 写作平台组织的线下沙龙,瞻仰了很多大佬的英姿。在 Geek 青年说的环节,也壮起胆量上台分享了自己的一些观点。第一次上台,面对台下的大佬们,难免有些紧张。不过思考不易,整理出来,希望能够帮到有相同困惑的同仁们。

更多

一文掌握 Java8 的 Optional 的 6 种操作

一文掌握 Java8 的 Optional 的 6 种操作

你好,我是看山。

Java8 中引入了一个特别有意思类:Optional,一个可以让我们更加轻松的避免 NPE(空指针异常,NullPointException)的工具。

很久很久以前,为了避免 NPE,我们会写很多类似if (obj != null) {}的代码,有时候忘记写,就可能出现 NPE,造成线上故障。在 Java 技术栈中,如果谁的代码出现了 NPE,有极大的可能会被笑话,这个异常被很多人认为是低级错误。Optional的出现,可以让大家更加轻松的避免因为低级错误被嘲讽的概率。

更多

一文掌握 Java8 Stream 中 Collectors 的 24 个操作

一文掌握 Java8 Stream 中 Collectors 的 24 个操作

你好,我是看山。

Java8 应该算是业界主版本了,版本中重要性很高的一个更新是Stream流处理。关于流处理内容比较多,本文主要是说一下Stream中的Collectors工具类的使用。

更多

面试真题:无重复字符的最长子串

面试真题:无重复字符的最长子串

你好,我是看山。

来一个算法题,面试之后查了一下,是 LeetCode 的第三题,难度中等。居然在面试过程中碰到 LeetCode 真题,事后总结一波。加深印象。

更多

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 教程》 中的第三篇。

更多