自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

glmapper_2018

开放,开源,分享,共享

  • 博客(157)
  • 资源 (5)
  • 收藏
  • 关注

原创 SpringBoot 系列-Bean 的生命周期与扩展

个人博客:glmapper更多请关注 glmapper工作室 微信公众号注:本篇基于 SpringBoot 2.2.2.RELEASE 版本,Spring 各个版本之间多少存在一些差异,不过主流程基本相同;大家在阅读过程中需关注这点。继续承接上一篇 SpringBoot 系列-启动过程分析,本篇围绕一个 bean 的生命周期,对 bean 进行一些修改和扩展。本篇将涉及到以下主要内容:...

2020-01-01 22:50:59 369

原创 SpringBoot 系列-配置解析

注:本文基于 SpringBoot 2.1.11 版本说到配置,你能想到的是什么?在日常的开发和运维过程中,可以说配置都是及其重要的,因为它可能影响到应用的正常启动或者正常运行。相信在之前 Spring xml 时代,很多人都会被一堆 xml 配置折腾的够呛,除此之外,还有像数据库连接配置、缓存配置、注册中心配置、消息配置等等,这些相信大家都不会陌生。配置对于开发人员或者运维人员来说可以...

2020-01-01 22:39:49 341

原创 Nginx 转发 404 问题的排查和思考

theme: cyanosis 本篇文章原自当前业务遇到的一个实际问题,因为受到所在网络环境的因素影响,所以整体排查下来耗费了很大精力,记录一下。项目背景项目是 toG 项目,部署的网络环境是一个大的内网环境(又具体分为内网和内网互联网区),项目涉及到小程序、前端、后端(又包括 JAVA 和 GO 两个项目)的部署。整体的部署拓扑图大致如下: 虚拟 IP 映射:大多...

2023-09-10 16:54:27 2496

原创 如何编写测试用例

theme: cyanosis代码质量管理是软件开发过程中的关键组成部分,比如我们常说的代码规范、代码可读性、单元测试和测试覆盖率等,对于研发人员来说单元测试和测试覆盖率是保障自己所编写代码的质量的重要手段;好的用例可以帮助研发人员确保代码质量和稳定性、减少维护成本、提高开发效率以及促进团队合作。之前看过一篇关于 OceanBase 质量之道的文章,文章中提到的工程理念就把测试作为非常重要...

2023-09-08 17:07:11 153

原创 基于 CentOS 7.6 + Samba 搭建文件服务器

出于团队诉求,需要搭建一个用于共享文件的平台,因此基于 Samba 搭建了一个共享文件服务器,这里记录一下,以便用于后续维护参阅。 Samba 是 SMB/CIFS 网络文件共享协议的免费开放源重新实现,该协议允许最终用户访问文件,打印机和其他共享资源。环境CentOS 7.6Samba 4.10.16能够访问互联网环境安装 Samba执行安装shell...

2023-06-19 22:24:04 204

原创 如何实现一个简单的数据同步组件

目前关于数据同步的组件开源社区有很多,如:Flink CDC, DataX, seaTunel,Kattle 等等,大体上可以分为两种:基于日志的和基于 JDBC 的。这些同步组件在进行整库同步或者 schema 差异性不大的情况下通过可视化界面或者配置文件映射的方式可以直接达到我们库-库的同步诉求,但是对于一些定制化较大的场景处理起来还比较麻烦。为了满足这样的一个场景,笔者写了一个小的同步组件。...

2023-06-18 23:02:11 227

原创 聊一聊 Linux 的起源和发展

本文正在参加「金石计划」最近在系统性重新整理下关于 linux 的一些知识。linux 对于所有的开发工程师来说都不算是陌生的东西,但往往在面对它时,却又显得那么生疏。关于生疏,对于出入门的同学来说,其过多发行版和指令已经够吃一壶的了。这篇文章主要是看看 linux 自身的一些故事。计算机主机实际上就是一堆硬件,为了更好的、有效率的控制这些硬件资源,于是乎就有了操作系统。操作系统除了负责控...

2023-04-05 22:05:01 57

原创 聊聊 SpringBoot3 的 Micrometer Tracing

这是个很尴尬的话题,为什么这么说呢?当我们在讨论卷和造轮子两个事情的时候,SpringBoot 的开发人员也正在做着同样的事情...回顾之前在 微服务-分布式链路 这篇文章中我介绍了 Dapper、OpenTracing,并以蚂蚁分布式链路组件 SOFATracer 为例,较为详细的说明了分布式链路组件中的一些技术细节和实现方式,有兴趣的同学可以自行查看。Micrometer ...

2022-12-06 14:11:54 1317

原创 New Features Of JDK - JDK9 Modular System

Modular System 是 JAVA9 中提供的新特性,它从一个独立的开源项目而来,名为 Jigsaw Project。在此之前,我们对于 Java 技术栈中模块化的认知是基于 OSGI 的,实际上 OSGI 也确实形成了它自己独有的体系,并且是一定程度上的行业标准。JAVA 模块化发展JAVA 从没有停止过在模块化事情上的努力,比如 JSR 294 提出的 superpackage...

2022-12-01 17:51:11 40

原创 K8S system OOM 和资源配置实践

背景我们目前服务是托管在 Aws K8S 的,近期出现了一次由于生产环境流量增大而导致的 system OOM 问题,进而导致了部分核心业务受损。在此之前,团队并没有思考过关于 K8S 资源配置上存在的一些问题,也没有按照业务自身情况使用对应的 QoS 类,从而导致了故障的产生。本文将从这个角度切入,对 K8s 中的资源属性以及 QoS 进行介绍,最后给出生产环境使用的一些建议。CPU...

2022-11-29 10:56:47 156

原创 一次 G1 堆大小不均问题的排查及解决

现象生产服务中,存在部分服务在 JVM 参数、POD 规格、物理机规格 一致,负载流量差异不大的情况下,出现在内存使用上差异较大的情况。下面是一些基本信息的收集和整理。JVM 参数-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 -XX:+UnlockExperimen...

2022-11-15 10:59:37 64

原创 Mysql - 从一个小 case 理解 MVCC

从 innoDB 的一致性非锁定读说起非锁定读和行快照数据一致性的非锁定读(consistent nonlocking read)是指 InnoDB 存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中行的数据。如果读取的行正在执行 DELETE 或 UPDATE 操作,这时读取操作不会因此去等待行上锁的释放。相反地,InnoDB 存储引擎会去读取行...

2022-11-09 16:45:58 39

原创 RocketMQ Push 消费模型

theme: cyanosis “我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第4篇文章,点击查看活动详情”Push 模式是指由 Server 端来控制消息的推送,即当有消息到 Server 之后,会将消息主动投递给 client(Consumer 端)。使用 DefaultMQPushConsumer 消费消息下面是使用 DefaultMQPushConsum...

2022-09-20 11:25:07 39

原创 RocketMQ 本地部署问题总结

theme: cyanosis “我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情”本篇分为 RocketMQ 部署和 RocketMQ-dashboard 部署两部分,主要是 RocketMQ 部署问题较多,汇总了下网上各路大神以及官方 issue 的讨论汇总而来。RocketMQ 部署根据官方的快速开始 尝试在本地部署 RocketM...

2022-09-16 17:25:44 115

原创 Apache HTTP server benchmarking tool

theme: cyanosis “我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情” Apache Benchmark Tool ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to...

2022-09-15 11:46:42 66

原创 你知道 @Async 是怎么让方法异步执行的吗?

本文通过对 @Async 注解的分析,和你解释了 @Async 是怎么让方法异步执行的吗? 这个问题;从分析过程中可以知道,对于绝大多数面向工程师使用的注解或者工具,本质上是离不开那些最最基本知识点的

2022-09-09 15:14:46 292

原创 闲来无事,聊聊掘金?

和掘金认识掘金是 2017 年,当年推荐这个产品给我的那个哥们之前也算是掘金的忠实粉丝,现在已经很久没更新了。那时候作为职场新人,从掘金得到了很多帮助,包括技术学习、文章输出的积极反馈,还有一些周边礼品,也包括认识很多技术同行。我自己写技术文章算是挺早的,从 15,16 年那会在博客园,再到后来的简书,到掘金。博客园除了写文章不是很方便之外,到现在来看,我也觉得它是个比较不错的技术网站;简...

2022-08-19 17:38:47 40

原创 聊 一聊 maven 测试相关的插件

在之前的 聊一聊 maven 生命周期和 maven 插件编写 这篇文章中,简单聊了点maven 构建生命周期和如何编写一个 maven 插件。本篇文章从插件入手,来探讨下 maven 中那些于测试相关的插件,这些插件与工程师日常开发是密切相关的,可能很多情况下你不需要关注,因为已经有前辈帮你搞完了;“事不关己高高挂起” 与 “知其然知其所以然” 是两种不同的态度,对待技术,我建议是后者!ma...

2022-07-31 22:29:33 45

原创 聊聊 API 管理-开源版 Yapi 到 SaaS 版 Apifox

theme: cyanosis API 管理这个话题近些年听到的频次越来越多,这本质上是个 web 领域的发展有关,也和开发协作方式有关--前后端分离代替了全栈工程师 hold all 的局面,强调的更多的是 API 复用、分工和协作细化。 API 管理的重要性不言而喻,每家公司随着业务的发展,多多少少都会涉及到;从开源社区的产品到国内各类商业化产品,可以看到大家对于 API 管理...

2022-07-11 10:40:47 175

原创 浅析 SOFA 注册中心数据同步

本篇主要对 SOFARegistry 的数据同步模块进行解析,对于注册中心的概念以及 SOFARegistry 的基础架构不做过多阐述,相关介绍可以见海量数据下的注册中心 - SOFARegistry 架构介绍 这篇文章。本文主要写作思路大致分为下面 2 个部分:第一部分借助 SOFARegistry 中的角色分类来说明哪些角色之间会进行数据同步,第二部分对数据同步的具体实现进行解析。SO...

2022-07-05 17:39:47 59

原创 Spring Cloud Alibaba Nacos Config 是如何读取配置的?

本文主要分析 Spring Cloud Alibaba Nacos 配置客户端读取配置的部分过程,逻辑入口是 com.alibaba.cloud.nacos.client.NacosPropertySourceLocator#locate;通过本篇,* 1、了解到 sharedConfigs、extensionConfigs 如何加载* 2、应用配置加载时,dataId 的计算逻辑* 3、如...

2022-03-13 21:04:55 68

原创 1 分钟快速上手 Spring Cache

快速开始(从0到1)如果你现在有一个现成的工程,你想给你工程的某个接口增加缓存,再不可以分布式缓存的情况下,你可以通过以下两步完成 Spring Cache 接入:1、引用依赖xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr...

2022-02-21 17:22:02 75

原创 2021 年终总结-磊叔的 Work Life Balance

theme: fancy「时光不负,创作不停,本文正在参加2021年终总结征文大赛」 生活,在喜怒哀乐间走走停停。不知道会遇见什么,只知道阳光这么好,别辜负了今天抓了一把花生米,开了一罐啤酒,打开新买的台式机,用上被新同事“嫌弃”声音太大的机械键盘,然后以文字的方式来唠一唠我的 2021。对我来说 2021 年是特殊的,换了工作、换了城市、也换了一种心态;这可能和城市节奏...

2021-12-27 23:39:33 45

原创 SpringBoot Actuator 潜在的 OOM 问题

这是我参与11月更文挑战的第 14 天,活动详情查看:2021最后一次更文挑战此问题背景产生于近期需要上线的一个功能的埋点;主要表现就是在应用启动之后的一段时间内,内存使用一直呈现递增趋势。下图为场景复线后,本地通过 jconsole 查看到的内部使用走势图。 实际环境受限于配置,内存不会膨胀背景&问题应用 a 使用 rest template 通过 http...

2021-11-29 20:28:17 34

原创 Spring Data JPA-属性详解 JpaProperties 和 HibernateProperties

这是我参与11月更文挑战的第 13 天,活动详情查看:2021最后一次更文挑战本篇文 Spring Data JPA 属性的第二篇,第一篇见 Spring Data JPA-属性详解 JdbcProperties 和 DataSourceProperties;第一篇中主要是 jdbc 的配置,本篇主要是 jpa 自己的配置;在 spring 代码中,Spring Data JPA 对应的配置在...

2021-11-25 14:35:12 351

原创 Spring Data JPA-属性详解 JdbcProperties 和 DataSourceProperties

这是我参与11月更文挑战的第 12 天,活动详情查看:2021最后一次更文挑战最近查了一个 spring data jpa 的问题,其实也不能算是框架层面的问题,准确说是配置;因为之前没有怎么使用过 spring data jpa(更多是 mybatis 或者自研 orm 组件),所以期望通过本篇来记录下 spring data jpa 的配置。本篇从配置源码开始,先直观的了解 s...

2021-11-23 22:25:41 71

原创 微服务-分布式链路

这是我参与11月更文挑战的第 11 天,活动详情查看:2021最后一次更文挑战 本篇文章是近期在公司内做的分享,同步到这里希望更多的同学了解分布式链路在过去10-15 年间,移动互联网时代大背景下,诞生了无数日活都是千万级以上的 app 产品。我们在客户端的任何一次操作,往往都需要经过后端服务的多个模块、多个基础组件、多台机器的相互协作才能完成请求的处理和响应。在这一系列的请...

2021-11-18 22:15:15 61

原创 为什么你的 SpringBoot 自动配置失效了

这是我参与11月更文挑战的第 10 天,活动详情查看:2021最后一次更文挑战本文源自近期项目中遇到的问题, bug 总是出现在你自以为是的地方...问题描述下面是一个简单复现的代码片段,在你没有阅读完本文时,如果能做出正确的判断,那恭喜你可以节省阅读本文的时间了。1、自动配置类:AutoTestConfigurationjava@Configuration@Ena...

2021-11-15 19:39:09 98

原创 yum 指令

这是我参与11月更文挑战的第 9 天,活动详情查看:2021最后一次更文挑战yum(Yellowdog Updater Modified):是一个基于 RPM 的软件包管理器,能够从指定服务器自动下载RPM包并且安装,可以处理软件之间的依赖关系,一次性安装所有依赖的软件包,无需一个个下载安装。工作原理示意图yum客户端及服务器的工作原理如下图所示yum 的配置文件...

2021-11-10 21:42:27 61

原创 git 中 merge 和 rebase 小记

这是我参与11月更文挑战的第 8 天,活动详情查看:2021最后一次更文挑战作为一线工程师的你,对于 git一定不会陌生,git 作为一个开源的分布式版本控制系统,有着广泛的用户基础。git 使用有很多可视化的工具,idea 自身也大多都集成了 git 套件,如下:不过相比于这些可视化工具,我更喜欢使用命令行的方式。本篇背景也是源于实际工作,一个同学遇到的问题是:他从 ma...

2021-11-09 22:04:05 28

原创 mysql 日志文件

这是我参与11月更文挑战的第 7 天,活动详情查看:2021最后一次更文挑战日志文件记录了影响 mysql 数据库的各种类型活动,mysql 中常见的日志文件主要包括以下 4 种:错误日志二进制日志慢查询日志查询日志这些日志文件可以帮助我们对mysql数据库的运行状态进行诊断,从而更好的进行数据库层面的优化。错误日志错误日志文件对 mysql 的启动,运行,关...

2021-11-08 21:01:58 21

原创 聊一聊 Mockito

这是我参与11月更文挑战的第 6 天,活动详情查看:2021最后一次更文挑战从一个最简单的案例看起 ```java@Testpublic void testAnswer() { MockitoAnswerService service = Mockito.mock(MockitoAnswerService.class); Mockito.when(service...

2021-11-06 22:24:56 72

原创 JVM-Java 对象模型

这是我参与11月更文挑战的第 5 天,活动详情查看:2021最后一次更文挑战Java对象保存在堆内存中。在内存中,一个Java对象包含三部分:对象头、实例数据和对齐填充。其中对象头是一个很关键的部分,因为对象头中包含锁状态标志、线程持有的锁等标志。对象头对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Word被设计成一个非固定的数据结构以便...

2021-11-05 23:24:56 32

原创 基于 Micrometer 封装的监控框架实践

这是我参与11月更文挑战的第 4 天,活动详情查看:2021最后一次更文挑战此背景也源于近期一个项目功能需求而来,本文对此进行整理,对 MicroMeter 实现监控埋点进行说明和扩展。MicrometerMicrometer 是一个用于基于 JVM 应用程序的度量工具库。它为最流行的监控系统的检测客户端提供了一个简单的门面(facade,类似于 slf4j)。Micromet...

2021-11-04 22:29:49 65

原创 SpringBoot 过期属性报错问题分析及排查

这是我参与11月更文挑战的第 3 天,活动详情查看:2021最后一次更文挑战背景近期发布项目时经常出现一个问题,大体报错如下:```javaThe use of configuration keys that are no longer supported was found in the environment:Property source 'systemEnviro...

2021-11-03 20:01:53 313

原创 finalize 方法重写对 GC 的影响分析

这是我参与11月更文挑战的第 2 天,活动详情查看:2021最后一次更文挑战关于 Object 的 finalize 方法,在日常开发中可能有超过 99% 的人都没有关注过,因为业务开发很少有重写 finalize 方法的场景;开发者对于 finalize 的认知大多在是“面试八股文”中,而且也不乏见到将 finalize、finally 以及 final 放在一块比较的 case,面...

2021-11-02 22:01:00 57

原创 log4j2 日志 PatternLayout 配置对 SOFAArk PluginClassLoader 的影响

这是我参与11月更文挑战的第 1 天,活动详情查看:2021最后一次更文挑战背景"Log4j2-TF-7-AsyncLoggerConfig-8" Id=52 BLOCKED on sun.misc.URLClassPath@26eb1b56 owned by "Log4j2-TF-7-AsyncLoggerConfig-4" Id=17 at sun.misc.URLClass...

2021-11-01 22:34:09 72

原创 Spring Aop 中的代理模式变化及 AopContext 问题小记

AOP 称为面向切面编程,其底层原理就是动态代理;JAVA 中比较常见的动态代理有两种,分别是 JDK 动态代理和 CGLIB 动态代理,这点从 Spring Aop 的 AopProxy 的实现就可以得出验证。AopProxy --- JdkDynamicAopProxy --- CglibAopProxySpring 作为 Java 应用领域最 牛 X 的基础框架产...

2021-07-18 12:11:47 120

原创 你知道 Junit 是怎么跑的吗?

Junit 是由 Kent Beck 和 Erich Gamma 于 1995 年底着手编写的框架,自此以后,Junit 框架日益普及,现在已经成为单元测试 Java 应用程序的事实上的标准。 在软件开发领域中,从来没有这样的事情:少数几行代码对大量代码起着如此重要的作用 --- Martin Fowler从一个简单的例子开始认识 Junit本文注重点在于研究 Junit 运行...

2021-06-24 09:48:20 27

原创 学习笔记-什么是 TestDouble?

| 术语 | 解释|| --- | --- || SUT(System Under Test) | 被测系统||DOC(depended-on component)|第三方依赖组件|简介&理解TestDouble 简单理解就是测试替身,在多数情况下,我们的系统能够正常运行,不仅仅依托系统本身,还需要依赖一些外部服务,比如其他系统提供的 http、rpc 服务,系统自身以来...

2021-06-01 09:02:39 24

基于maven构建的多模块ssm demo

基于maven构建的多模块ssm demo,里面含有阿里的一个setting文件;也欢迎大家关注我的个人博客:https://juejin.im/user/58fcc0768d6d810058965a06;一起学习

2017-11-19

cglib包;java动态代理

CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。

2017-09-03

SPRING技术内幕.pdf

SPRING技术内幕:深入解析SPRING架构与设计原理.pdf; 本书仅作为记录学习共享所用;如需使用,请购买正版;谢谢

2017-09-03

java socket通信实现

用java 实现的一个socket通信程序,包括服务端和客户端俩个部分。代码注释很详细。

2016-12-12

春秋招算法题总结,共65个

校招常见的算法题,基本算法分析。文档中的算法是综合了本人面试过程中被问过的算法以及同学被问到过的算法。

2016-12-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除