张书康
码龄14年
关注
提问 私信
  • 博客:547,005
    547,005
    总访问量
  • 54
    原创
  • 1,989,526
    排名
  • 937
    粉丝
  • 5
    铁粉

个人简介:学海无涯。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2011-04-22
博客简介:

程序员阿康

博客描述:
源码面前,了无秘密。
查看详细资料
个人成就
  • 获得360次点赞
  • 内容获得150次评论
  • 获得1,513次收藏
  • 代码片获得310次分享
创作历程
  • 14篇
    2019年
  • 33篇
    2018年
  • 6篇
    2017年
  • 1篇
    2016年
成就勋章
TA的专栏
  • SpringBoot源码深入解析
    10篇
  • SpringBoot
    24篇
  • Spring
    24篇
  • SpringCloud
    12篇
  • 多线程
    7篇
  • 分布式锁
    2篇
  • 开发工具
    1篇
  • spring-security
    2篇
  • springmvc
    5篇
  • oauth2
    1篇
  • java
    22篇
  • Consul
    1篇
  • Netty
    2篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

重写spring bean的几种方式

概述工作中会经常会需要重写jar包中的一个类,开源的jar包或者是其他项目提供的share包,比较通用的做法是下载源码下来,修改后重新打包。但是很多时候我们只是重写一个类,下载源码打包太过繁琐,而且有可能别人的share没有提供源码下载。可以通过下面几种方式重写:1、直接同包路径,同报名,进行替换这种方式简单粗暴,前提必须是同包路径,同类名。可以直接覆盖掉jar包中的类,spring项目会...
原创
发布博客 2019.09.17 ·
7449 阅读 ·
1 点赞 ·
1 评论 ·
19 收藏

SpringBoot 生成带水印pdf | 中文字体问题

概述生成pdfSpringBoot部署方式以jar包方式运行,在获取字体的时候获取不到,因为在服务器上读取的字体路径为jar包中的路径:file:/root/startup/za-minos-ms.jar!/BOOT-INF/classes!/如上图,这种路径是无法正确读取文件的,所以合理的解决方案是通过流读取,然后在服务器上创建新的文件。读取和创建新文件的代码:/** * Crea...
原创
发布博客 2019.07.30 ·
4023 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

SpringCloud Sleuth 实现业务逻辑日志包含 Span 和 Trace信息

概述SpringCloud Sleuth是Spring Cloud的核心组件之一,实现了一种分布式链路跟踪的功能。在调用链层级很深的分布式系统中,为定位问题提供了很大便利。Sleuth 大致的原理是自定义了一个拦截器:TraceFeignRequestInterceptor,该拦截器继承了 Feign 的拦截器接口:RequestInterceptor,所以在服务与服务直接调用时,可以进行一些...
原创
发布博客 2019.05.21 ·
4894 阅读 ·
1 点赞 ·
2 评论 ·
9 收藏

Netty系列 | 再谈NIO

三大组件
原创
发布博客 2019.05.16 ·
429 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

再谈序列化

JDK序列化jdk序列化会生成二进制文件类似于class文件,(Java中的calss文件是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行。所以打开之后并不是我们说的二进制0或1。如果是0或1了,那就不需要JVM进行解释执行了,所以我们常说java是半编译半解释型的语言。jdk序列化生成的二进...
原创
发布博客 2019.05.13 ·
313 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于 SpringBoot2 和 Netty 实现一个简易的RPC通信框架

概述大致的流程:实现客户端 代理类处理逻辑 :InvocationHandler扫描被代理接口,生成代理类,注入 spring 容器根据调用的接口,找到指定的实现类,并完成调用。代码1)NettyRpcInvocationHandlerpublic class NettyRpcInvocationHandler implements InvocationHandler { ...
原创
发布博客 2019.04.03 ·
2040 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

Java | Java 线程模型 | 用户线程 | 内核线程

概述在以前的操作系统中,没有线程的概念。进程是资源分配和调度的最小单元。引入线程的概念以后,线程则是资源调度和分配的最小单元。线程又分为用户线程和内核线程。用户线程:语言层面创建的线程,比如 java语言中多线程技术,通过语言提供的线程库来创建、销毁线程。内核线程:内核线程又称为守护线程 Daemon线程,用户线程的运行必须依赖内核线程,通过内核线程调度器来分配到相应的处理器上。线程模型...
原创
发布博客 2019.03.28 ·
1717 阅读 ·
5 点赞 ·
0 评论 ·
10 收藏

java | BitMap原理解析

概述在一些数据量比较大的场景中,做一些查重、排序,一般的方法难以实现。数据量过大,会占用较大的内存,常用的处理方式有两种:BitMap(位图法)和布隆过滤。本篇针对以下题目来看一下如何用位图法来实现:10亿个正整数,给定一个数值,如何快速排定该数值是否在10亿个正整数当中?位图法的思想类似于hash寻址,首先初始化一个int数组,每个元素对应32位比特,将10亿个元素分别读入内存,对int数...
原创
发布博客 2019.03.26 ·
16401 阅读 ·
14 点赞 ·
5 评论 ·
55 收藏

Spring Cloud Config 动态刷新实现机制

首先 spring cloud config 动态刷新功能相关类是整合在 spring-cloud-context包中,包括 RefreshEndpoint 以及配置类。通过以下变量来确定是否开启,默认为true。@ConditionalOnProperty(value = "endpoints.refresh.enabled", matchIfMissing = true)Refresh...
原创
发布博客 2019.03.07 ·
20015 阅读 ·
11 点赞 ·
8 评论 ·
36 收藏

Spring Cloud Ribbon 核心类

原创
发布博客 2019.02.28 ·
463 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Idea debug模式下出现 "Connected to the target VM, address: '127.0.0.1:55606', transport: 'socket'"

如题,一个很坑的错误。不在debug模式下启动,项目运行没有问题。在debug模式下运行,出现"Connected to the target VM, address: '127.0.0.1:55606', transport: 'socket'"网上有解决方案,说和测试类中方法的大写有关。然而,我换了一个全新的项目,启动时也有同样的问题。这种情况基本上就告别idea了(更换新版本...
原创
发布博客 2019.02.26 ·
68708 阅读 ·
4 点赞 ·
10 评论 ·
7 收藏

SpringCloud | 深入解析SpringCloud中的父子容器

概述在引入 SpringCloud 的项目中会多次创建 Spring 容器,本篇从源码角度深入分析具体哪些点会创建 Spring 容器,以及这些容器之间的区别与联系。本文介绍的Spring相关容器是基于SpringCloud项目。容器大致分为三层:BootStrap Spring 容器:由SpringCloud 监听器创建,用来初始化 SpringCloud 上下文Spring...
原创
发布博客 2019.01.27 ·
3047 阅读 ·
5 点赞 ·
4 评论 ·
9 收藏

Java | Jdk动态代理源码分析

大致核心类:执行时序图源码分析未完待续。
原创
发布博客 2019.01.26 ·
369 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)

概述Spring 的核心思想即是容器。整个容器运行时,外部看似风平浪静,内部实则一片汪洋大海。Spring 容器刷新的过程严格遵守开闭原则,内部对修改关闭,对扩展开放。可以这么理解:把 Spring 容器理解为一个钥匙环,上面挂满了钥匙,每个钥匙理解为一个扩展接口。钥匙的顺序是固定的,可理解为接口的调用顺序固定,对修改关闭。每个钥匙可以用来做不同的事情,可理解为扩展接口的实现不同,对扩展开...
原创
发布博客 2019.01.09 ·
5895 阅读 ·
9 点赞 ·
4 评论 ·
30 收藏

SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)

概述本篇来介绍一个Spring强大的扩展接口:ImportBeanDefinitionRegistrar,该接口主要用来注册beanDefinition。很多三方框架集成Spring 的时候,都会通过该接口,实现扫描指定的类,然后注册到spring 容器中。比如 Mybatis 中的Mapper接口,springCloud中的 FeignClient 接口,都是通过该接口实现的自定义注册逻辑。...
原创
发布博客 2018.12.27 ·
7584 阅读 ·
11 点赞 ·
0 评论 ·
29 收藏

SpringBoot2 | SpingBoot FilterRegistrationBean 注册组件 | FilterChain 责任链源码分析(九)

微信公众号:吉姆餐厅ak学习更多源码知识,欢迎关注。SpringBoot2 | SpringBoot启动流程源码分析(一)SpringBoot2 | SpringBoot启动流程源码分析(二)SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)SpringBoot2 | SpringBoot Environment源码分析(四...
原创
发布博客 2018.12.15 ·
12814 阅读 ·
7 点赞 ·
5 评论 ·
42 收藏

Spring | Spring AOP 增强框架 Nepxion Matrix 详解

概述在 SpringBoot2 | Spring AOP 原理源码深度剖析(八)一文中,介绍了 Spring AOP 的多种实现机制,原理大同小异。本篇来继续介绍一款开源的 AOP 框架:Nepxion Matrix,该框架致力于对 Spring AOP 的扩展和增强,灵活而且易用。代码:https://github.com/Nepxion/MatrixMatrix框架主要对Spring做了...
原创
发布博客 2018.12.02 ·
1211 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Spring | Spring AOP 增强框架 Nepxion Matrix 详解

概述在 SpringBoot2 | Spring AOP 原理源码深度剖析(八)一文中,介绍了 Spring AOP 的多种实现机制,原理大同小异。本篇来继续介绍一款开源的 AOP 框架:Nepxion Matrix,该框架致力于对 Spring AOP 的扩展和增强,灵活而且易用。代码:https://github.com/Nepxion/MatrixMatrix框架主要对Spring做了...
原创
发布博客 2018.12.02 ·
1211 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

SpringBoot2 | Spring AOP 原理深度源码分析(八)

概述AOP(Aspect-Oriented Programming) 面向切面编程。简单来说,就是将影响对象行为的一些公共方法抽取出来,做成公共部分即为切面。使用方式就不用阐述了,本系列主要是对源码进行深度分析和总结。UML图Spring Aop 自动装配核心类 UML图:源码springboot 自动装配肯定还是从spring.factories开始:# Auto Config...
原创
发布博客 2018.11.25 ·
18742 阅读 ·
19 点赞 ·
11 评论 ·
87 收藏

SpringBoot2 | 条件注解 @ConditionalOnBean 原理源码分析(七)

条件注解是Spring4提供的一种bean加载特性,主要用于控制配置类和bean初始化条件。在springBoot,springCloud一系列框架底层源码中,条件注解的使用到处可见。本篇就来探讨一下比较常用的一个调节注解:@ConditionalOnBean。可能不少人在使用该注解时会遇到不生效的情况:@ConditionalOnBean依赖的 bean 明明已经配置了,但就是不生效。@C...
原创
发布博客 2018.11.17 ·
14618 阅读 ·
11 点赞 ·
7 评论 ·
46 收藏
加载更多