【修炼内功】[spring-boot] [1] SpringBoot是如何实现自动装配的

2020-08-06
阅读 18 分钟
4.3k
本文已收录【修炼内功】跃迁之路微信关注“林中小舍”,林小二带你聊技术!上篇文章 Spring Framework中的注解是如何运作的 介绍了Spring Framework中各种注解的运作方式,(在SpringBoot推出之前)对于组件的使用还需要手动进行配置(无论xml/groovy文件方式还是注解方式),如DataSource、SessionFactory、TransactionMa...

【修炼内功】[spring-framework] [7] Spring Framework中的注解是如何运作的

2020-06-26
阅读 21 分钟
3.5k
本文已收录【修炼内功】跃迁之路 微信关注“林中小舍”,林小二带你聊技术! 截止本篇,已经介绍了Spring中的Resource、BeanDefinitionReader、BeanFactory、ApplicationContext、AOP等,本篇重点介绍Spring Framework中基于注解的Bean装配原理 注解的使用大大简化了配置的过程,也更能表现代码与配置之间的直接关系,但同...

【修炼内功】[spring-framework] [6] Spring AOP的其他实现方式

2020-05-30
阅读 12 分钟
3.4k
在Spring AOP是如何代理的一文中介绍了Spring AOP的原理,了解到其通过JDK Proxy及CGLIB生成代理类来实现目标方法的切面(织入),这里有一个比较重要的概念 - 织入(Weaving),本篇就来探讨 什么是织入? 织入有哪些类型以及实现手段? Spring分别是如何支持的?

【修炼内功】[spring-framework] [5] Spring AOP 是如何代理的

2020-05-23
阅读 19 分钟
10.1k
在之前的文章中介绍了Spring的IoC(Resource | BeanDefinitionReader | BeanFactory | ApplicationContext),如果说前者是Spring的基石,则本篇要介绍的AOP则可以称作是Spring的点睛之笔,它在整个Spring生态中扮演着重要的角色

【修炼内功】[spring-framework] [4] ApplicationContext给开发者提供了哪些(默认)扩展

2020-04-19
阅读 19 分钟
2.9k
在 [spring-framework] [3] Bean是如何被创建的 一文中介绍了Spring体系内bean的创建及销毁过程,也简单提到了Spring预留给开发者的一些扩展点 @Value中的表达式是如何解析的 代理类是如何生成的(AOP) 各种Aware的setter方法是如何被调用的 Event是如何被监听并处理的 各种开箱即用的starter是如何动态注册bean的 ... ...

【修炼内功】[spring-framework] [3] Bean是如何被创建的

2020-04-09
阅读 32 分钟
4.9k
书接上文,在 BeanDefinitionReader 一文中简单介绍了XMLBeanFactory解析xml配置、并注册BeanDefinition的逻辑,本文就bean的实例化过程及销毁做简要分析

基于vue实现的 个人主页 模板

2020-01-10
阅读 1 分钟
7.5k
自开通公众号开始便在想怎么做推广(事实也证明我很失败),后来想,推广公众号不如先推销自己,于是便有了搭建个人主页的想法 在Google了n久之后发现,世上还真的是没有免费的午餐,要么收费颇高、要么定制成本颇高,身为猿类大军为什么不能自己动手撸一个? 前前后后经过几次深夜独欢之后,第一个Beta版终于面世了 ~ 👉...

【修炼内功】[spring-framework] [2] BeanDefinitionReader

2020-01-01
阅读 14 分钟
3.5k
写在最前~距spring-framework开篇的那篇文章已经一个月了,如果再照这样的速度下去,这个flag估计大概率又要呵呵~ 最近发生了一些事情让我迷茫于应该坚持什么,为什么还要痴迷于工作两三年本就应该掌握的东西上~ ‘年’(夕兽)就要来了,总要准备点儿什么才能有资本‘除夕’不是~ 言归正传,切入正题!

【修炼内功】[spring-framework][1]Resource

2019-12-02
阅读 13 分钟
2.6k
阅读源码是一件极其枯燥无比的事情,对于使用频率较高的组件,如果能做到知其然且知其所以然,这对日常工作中不论是问题排查、代码优化、功能扩展等都是利大于弊的,如同老司机开车(对,就是开车),会让你有一种参与感,而不仅仅把它当成一种工具,若能习之精髓、学以致用,那便再好不过!

聊一聊协程(上):从Node.js谈起

2019-11-11
阅读 15 分钟
11.5k
本文已收录【修炼内功】跃迁之路 在上一篇文章JVM 细说线程中已经介绍了应用程序常见的一些线程模型,本篇就上篇提及的协程做简单的介绍 谈到并发/异步,首先想到的可能便是线程/进程,Java在近20年的发展中从JDK1.2之后便采用1:1线程模型,Java在核心类库中提供了众多异步API,可以使多线程应用发挥强大的并发能力并获...

【修炼内功】[JVM] 细说线程

2019-10-26
阅读 7 分钟
7.5k
不论你在使用c、C++、.Net,还是Java、Python、Golang,都免不了要踏过这一关,即使使用以“单线程”著称的Node.js,也要借助pm2类似的进程管理工具fork一批进程,来榨干机器资源

【修炼内功】[Java8] Lambda究竟是不是匿名类的语法糖

2019-06-25
阅读 6 分钟
14.3k
初次接触Java8的时候感觉Lambda表达式很神奇(Lambda表达式带来的编程新思路),但又总感觉它就是匿名类或者内部类的语法糖而已,只是语法上更为简洁罢了,如同以下的代码

【修炼内功】[JVM] 虚拟机视角的方法调用

2019-06-23
阅读 10 分钟
6k
『我们写的Java方法在被编译为class文件后是如何被虚拟机执行的?对于重写或者重载的方法,是在编译阶段就确定具体方法的么?如果不是,虚拟机在运行时又是如何确定具体方法的?』

【修炼内功】[JVM] 虚拟机栈及字节码基础

2019-06-13
阅读 1 分钟
2.5k
在浅谈虚拟机内存模型一文中有简单介绍过,虚拟机栈是线程私有的,每个方法在执行的同时都会创建一个栈帧,方法执行时栈帧入栈,方法结束时栈帧出栈,虚拟机中栈帧的入栈顺序就是方法的调用顺序

【修炼内功】[JVM] 类文件结构

2019-06-02
阅读 10 分钟
5k
学习C语言的时候,需要在不同的目标操作系统上(或者使用交叉编译环境),(使用正确的CPU指令集)编译成对应操作系统可运行的执行文件,才可以在相应的系统上运行,如果使用操作系统差异性的库或者接口,还需要针对不同的系统做不同的处理(宏)

【修炼内功】[JVM] 浅谈虚拟机内存模型

2019-05-19
阅读 7 分钟
5.1k
对于C/C++而言,可以轻易地操作任意地址的内存,而对于已申请内存数据的生命周期,又要担负起维护的责任。不知各位在初学C语言时,是否经历过由于内存泄漏导致系统内存不足,又或者因为误操作系统关键内存导致强制关机……

【修炼内功】[Java8] Stream是怎么工作的

2019-05-10
阅读 14 分钟
6.2k
Java8中新增的Stream,相信使用过的同学都已经感受到了它的便利,允许你以声明性的方式处理集合,而不用去做繁琐的for-loop/while-loop,并且可以以极低的成本并行地处理集合数据

【修炼内功】[Java8] 使用Optional的正确姿势及序列化问题

2019-04-21
阅读 7 分钟
11.3k
Java8的Optional为解决'空'的问题带来了很多新思路,查看Optional源码,实现非常简单,逻辑也并不复杂。Stuart Marks在其一次演讲中花了约1个小时的时间来讲述如何正确的使用Optional (Optional - The Mother of All Bikesheds by Stuart Marks),也有人调侃道1 hour for Optional, you gotta be kidding me.使用Option...

【修炼内功】[Java8] Lambda表达式里的"陷阱"

2019-04-13
阅读 12 分钟
9.9k
本文已收录【修炼内功】跃迁之路 Lambdab表达式带来的好处就不再做过多的介绍了,这里重点介绍几点,在使用Lambda表达式过程中可能遇到的"陷阱" 0x00 Effectively Final 在使用Lambda表达式的过程中,经常会遇到如下的问题 图中的sayWords为什么一定要是final类型,effectively final又是什么? 但,如果改为如下,貌似...

【修炼内功】[Java8] Lambda表达式带来的编程新思路

2019-04-01
阅读 10 分钟
9.8k
该文章已收录 【修炼内功】跃迁之路 Lambda表达式,可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型。 这里,默认您已对Java8的Lambda表达式有一定了解,并且知道如何使用。 Java8中引入的Lambda表达式,为编程体验及效率带来了极大的提升。 0x00 行为参数化 行为参数...

【修炼内功】跃迁之路

2019-03-28
阅读 2 分钟
4.4k
经历了2018的种种之后,终于找到一丝平静。跃迁,这是2019年,对自己的一种期待。树无根不长,人无志不立。志不立,天下无可成之事!此文用以记录2019年成长之路(不定期更新),谨以自勉!博文· 修炼内功Java8 - Lambda表达式带来的编程新思路Java8 - Lambda表达式里的"陷阱"Java8 - 使用Optional的正确姿势及序列化问...

【修炼内功】[kotlin] 聊一聊泛型的可空性

2018-11-09
阅读 3 分钟
3.1k
Introduced in J2SE 5.0, this long-awaited enhancement to the type system allows a type or method to operate on objects of various types while providing compile-time type safety. It adds compile-time type safety to the Collections Framework and eliminates the drudgery of casting.

什么是JSON5以及JSON5的解析

2018-08-29
阅读 3 分钟
14.1k
The JSON5 Data Interchange Format is a proposed extension to JSON that aims to make it easier for humans to write and maintain by hand. It does this by adding some minimal syntax features directly from ECMAScript 5.1.

SnowFlake分布式自增ID--基于Zookeeper的集群实现

2018-06-22
阅读 4 分钟
9.5k
分布式系统中,有一些需要全局唯一ID的场景,为了防止ID冲突,一般都会使用发号器 最简单的方式便是采用UUID,但UUID无序。 分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种,并且生成的ID在整体上有序。

一致性哈希的通用实现

2018-06-20
阅读 4 分钟
9.4k
一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题

再来聊一聊版本号--语义化版本 2.0.0

2018-05-17
阅读 5 分钟
2.3k
语义化版本 2.0.0 摘要 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。 简介 在软件管理的领域里存...

记一次Spring MVC 406 Not Acceptable的问题

2018-05-14
阅读 5 分钟
10.2k
问题比较小,重点不在问题的解决,在于碰到问题时对框架的理解和源码的走读,而不是一味地依赖搜索引擎此思路不局限于我所就职的码农行业,同样适用于其他事业,有问题,请深入

重新理解mysql的锁、事务隔离级别及事务传播行为

2018-05-10
阅读 6 分钟
8k
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。ACID,是指在可靠数据库管理系统(DBMS)中,事务(Transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

从Hash到散列表到HashMap

2018-03-26
阅读 3 分钟
4.8k
Hash Hash 哈希、散列,通常我们讲的都是hash函数,是将任意长度的数据映射到有限长度的域上,作为这段数据的特征(指纹)。 什么是哈希算法,比较常见的有MDx系列(MD5等)、SHA-xxx系列(SHA-256等),对于哈希算法,一般需要满足两点: 抗碰撞能力:对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数...

springboot应用启动原理(二) 扩展URLClassLoader实现嵌套jar加载

2018-03-05
阅读 10 分钟
33.4k
在上篇文章《springboot应用启动原理(一) 将启动脚本嵌入jar》中介绍了springboot如何将启动脚本与Runnable Jar整合为Executable Jar的原理,使得生成的jar/war文件可以直接启动本篇将介绍springboot如何扩展URLClassLoader实现嵌套jar的类(资源)加载,以启动我们的应用。