如何阅读源码?
阅读源码是每个优秀开发工程师的必经之路,那么这篇文章就来讲解下为什么要阅读源码以及如何阅读源码。首先来说下为什么要读源码,有学习源码的必要吗?为什么要阅读源码?关于为什么阅读和学习源码,我个人认为可能有以下几点:(一)吊打面试官,应对面试为了找到更好的工作,应对面试,因为在面试中肯定会问到源码级别的
Java Stream 流的合并操作
1.前言JavaStreamApi[1]提供了很多有用的Api让我们很方便将集合或者多个同类型的元素转换为流进行操作。今天我们来看看如何合并Stream流。2.Stream流的合并Stream流合并的前提是元素的类型能够一致。2.1concat最简单合并流的方法是通过Stream.concat()静
分布式系统的基石——CAP理论
「什么是cap?」♚CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)。CAP原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾「一致性」♚一致性(C):在分布式系统中的
SpringBoot的模块及结构
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1前言阅读源码,此时我们一定要对项目结构等有一个整体的认识,然后再进行源码分析调试。2SpringBoot源码模块一览我们先来对SpringBoot的源码模块来一个大致的了解,如下图:从上图可以看到,主要有以下四个模块:sprin
面试篇之消息队列
本文来源:http://rrd.me/gEffa1.MQ的应用场景1.1.解耦智能客服系统中,企业注册完成后,需要完成一系列初始化操作,如创建es的索引,创建默认的一些数据发短信1.2.异步减少耗时,异步下单操作,接收到参数之后写入mq,通过多个节点去下单,然后websocket推送结果(参数中带有
换一种方式编写 Spring MVC 接口
1.前言通常我们编写SpringMVC接口的范式是这样的:@RestController@RequestMapping("/v1/userinfo")publicclassUserInfoController{@GetMapping("/foo")publicStringfoo(){return"f
TCP和UDP的区别
TCPTCP(TransmissionControlProtocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。TCP首部格式•序号:用于对字节流进行编号,例如序号为301,表示第一个字节的编号为301,如果携带的数据长度为100字节,那么下一个报文段的序号应
Spring MVC 函数式编程进阶
1.前言上一篇对SpringMVC的函数式接口编程进行了简单入门,让很多不知道的同学见识了这种新操作。也有反应这种看起来没有传统写法顺眼,其实大家都一样。但是我们还是要敢于接受和尝试新事物。JavaLambada刚出来也是被人各种吐槽,现在我在很多项目都见到了它的身影。好了转回正题,本文是对上一篇的
Java 集合排序规则接口 Comparator
1.前言最近用到了集合排序(基于Java8)。现在我能用Stream的就用Stream,真香!排序可以这么写:List<People>peoples=newArrayList<>();//中间省略//按照年龄从小到大排序peoples.sort(Comparator.comp
Mybatis 强大的结果映射器ResultMap
1.前言resultMap元素是MyBatis中最重要最强大的元素。它可以让你从90%的JDBCResultSets数据提取代码中解放出来,并在一些情形下允许你进行一些JDBC不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份resultMap能够代替实现同等功能的数千行代码。
Java 面试精选:volatile 关键字
本文脑图volatile是java中热门关键字,也是面试中的高频问点,今天就来深入的从各种volatile面试题中剖析它的底层原理实现,并通过简单的代码去证明。在深入volatile之前,我们先从原理入手,然后层层深入,逐步剖析它的底层原理,使用过volatile关键字的程序员都知道,在多线程并发场
使用Docker构建企业级自定义镜像
前言临下班前,楼主接到了一个需求,由于基础镜像标准发生变更,需要按照最新的Docker镜像标准构建自己应用的自定义镜像。目前的标准是这样的:基础架构组只提供所有项目必须接入的3个公共镜像,这3个公共基础镜像包含了:JDK8、Skywalking、Arthas。对于各自业务组的应用如果还需要加入其它镜
Buildpacks高效构建Spring Boot应用Docker镜像
1.前言SpringBoot2.3.0.RELEASE正式发布了几天了,其中有个新的特性:可以将SpringBoot应用代码直接打包为Docker镜像。这是什么科技?我赶紧去官网查了一番才知道用的是基于云原生的Buildpacks技术,这是一个直接将代码转换为容器镜像的技术,它意味着你不用在写Doc
felord.cn增加站内搜索能力
随着我个人felord.cn文章的增多和访问量的提高,很多同学反映查找文章困难。所以抽时间给网站增加了新的能力——站内搜索功能,来提升用户的体验。你可以通过首页的搜一搜功能输入一些关键字,比如SpringSecurity,列出的结果中就会高亮显示含有该关键字的文章,帮你快速找到你想要的信息。如果你在
如何在Mysql的Docker容器启动时初始化数据库
1.前言Docker在开发中使用的越来越多了,最近搞了一个SpringBoot应用,为了方便部署将Mysql也放在Docker中运行。那么怎么初始化SQL脚本以及数据呢?我这里有两个传统方案。第一种方案是在容器启动后手动导入,太low了不行。第二种在SpringBoot客户端连接Mysql容器时初始
深入剖析AQS和CAS,看了都说好
前言今天来深入的了解CAS和AQS,文章采用层次式、图文并茂的方式一层一层的进行剖析,让各位读者能够深入理解。AQS简介AQS(AbstractQueuedSynchronizer)为「抽象队列同步器」,简单的说「AQS就是一个抽象类」,抽象类就是AbstractQueuedSynchronizer
Java设计模式之命令模式
1.前言设计模式中的命令模式是一种行为设计模式。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象执行。典型的“大家各干各的把事情干成”。2.命令模式命令模式的基本UML类图如下:命令模式一共有几个角色,根据上面的类图,我来一一介绍它们:Command一个具体命令的抽象接口。Concr
Java设计模式之命令模式
1. 前言 设计模式中的命令模式是一种行为设计模式。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象执行。典型的 “大家各干各的把事情干成”。 2. 命令模式 Command 一个具体命令的抽象接口。 ConcreteCommand 就是其具体的一个实现,你可以…
Docker容器启动时初始化Mysql数据库
1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行。那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案。 第一种方案是在容器启动后手动导入,太low了不行。第二种在Spring B…
使用Buildpacks高效构建Docker镜像
1. 前言 Spring Boot 2.3.0.RELEASE 正式发布了几天了,其中有个新的特性:可以将Spring Boot应用代码直接打包为Docker镜像。这是什么科技?我赶紧去官网查了一番才知道用的是基于云原生的Buildpacks技术,这是一个直接将代码转换为容器镜…