- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 JVM优化 - JVM参数配置
JVM参数配置你都知道吗?前言 首先提前祝大家新年快乐哈,祝福大家生龙活虎、虎虎生威、福虎呈祥、瑞虎运財。最近由于一些线上故障,断更了几天,故障的原因包含各种情况,比较曲折,包含JVM,慢SQL,监控告警等,稍后我会细心整理一下,给大家带来一个线上事故的一个复盘,废话不多说,针对java程序员,JVM参数这些必知必会的配置你知道多少呢?配置方式 java [options] MainClass [arguments]options - JVM启动参数。 配置多个参数的时候,参数之间使用空格分隔。
2022-09-04 10:56:52
912
1
原创 RocketMQ整体设计及启动流程
Dubbo集群容错 - 容错机制的实现前言在微服务环境中,为了保证服务的高可用,很少会有单点服务出现,服务通常都是以集群 的形式出现的。在之前文章中 [Dubbo远程调用过程](Dubbo远程调用过程 (qq.com)) 我们已经了解了远程调用的实现,然而被调用的远程服务 并不是每时每刻都保持良好状况,当某个服务调用出现异常时,如网络抖动、服务短暂不可用 需要自动容错,或者只想本地测试、服务降级,需要Mock返回结果,就需要使用本篇提到集群容错机制。概述集群容错机制主要集中在源码dubbo-clus
2022-09-04 10:27:32
304
原创 大厂是如何做基础配置管理的?
大厂是如何做基础配置管理的?大家好,我是janker。小伙伴们在平时开发过程中,无论使用什么技术栈,随着中间件接入的越来越多(DB、MySQL、NoSQL、MQ等等等等),配置越来越多,就导致配置文件越来越臃肿,每次新增或者修改配置的时候就得肉眼秒,手动改,还容易出错,简直令人发狂。那么有没有更方便快捷的方法呢?通用解法是什么样的,今天我的这篇文章就告诉你答案。正文基于上面的问题,肯定有小伙伴说上配置中心不得了,还有界面配置,维护起来也方便,(其他小伙伴持反对意见。这种方式要你说,我上我也行)。
2022-09-04 10:25:34
226
原创 什么是数据碎片?
【MySQL】- 什么是数据碎片?怎么产生的?有什么副作用?如何优化?叨叨今天为什么会提到MySQL的数据碎片?事情是这样的周五跟同事说了一下系统中有一张表有一些容量问题,一开始想是不是需要分库分表了。但是考虑到分库分表的迁移成本问题,以及必要性问题,咨询了DBA的相关同事,DBA询问了一些系统参数(QPS,TPS,表数据占用空间(表数据4G、索引1G、碎片22G)等),给的结果:单实例足够支撑了。img跟我想象的答案不是很一样啊?是哪里出了问题。紧接着我反驳到:我们表数据目标会打到 ***W,现
2022-09-04 10:22:05
1292
原创 一文解读Dockerfile
一文解读Dockerfile前言上一篇我们说到Docker镜像及镜像分层结构,今天这一篇也跟上一篇联系比较密切,接下来我们来说一下如何使用Dockerfile来构建一个镜像。什么是DockerfileDockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。客户可以基于dockerfile生成新的镜像,从而生成一个新的容器。dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器
2022-09-04 10:21:25
295
原创 canal入门,看这一篇就够了。
整体结构前言我们在日常的开发中,为了业务查询以及业务实现的需要,不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis、MQ等等。这时我注意到阿里开源的框架「Canal」,他可以很方便地「同步数据库的增量数据到其他的存储应用」。什么是Canal❝**canal [kə'næl]**,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费❞早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是
2022-09-04 10:20:45
2156
1
原创 麻了! 被 jar 包冲突坑哭了!
麻了! 被 jar 包冲突坑哭了!❝一杯茶一包烟,一行代码写一天听说这个是编程大佬的行为准则。而我没有茶没有烟,但是一行代码写了一天,(算起来可能不止一天)。❞大家好,我是janker。今天来聊下关于jar包冲突的事儿。Part 1最近接了一个产品需求: 永哥,最近业务方提出了一个诉求,就是让我们把某某功能开放给他们,入口参数就只需要添加一个字段,我都调研过了,我们系统都是支持的。 一看到这样的话术,作为接过很多一句话产品需求的爬坑程序员,我建议你们不要乱答应。因为很有可能加一个字段,
2022-09-04 10:01:37
285
原创 Dubbo拓展点加载机制
Dubbo拓展点加载机制前言本篇首先介绍现有Dubbo加载机制的概况,包括Dubbo所做的改进及部分特性。然后介绍加载机制已经存在的一些关键注解,@SPI、@Adaptive、@Activate。然后介绍整个接在机制中最核心的ExtensionLoader的工作流程及实现原理。最后介绍拓展中使用的类动态编译的实现原理。通过本篇的阅读,我们会对Dubbo SPI加载机制有深入的了解,也会对这部分的源码有深入的认识,后续胖友自行阅读源码也会更容易。加载机制概述Dubbo良好的拓展性与两个方面是密不可分的
2022-01-08 20:45:18
1018
原创 Dubbo注册中心
Dubbo注册中心文章目录Dubbo注册中心前言概述模块介绍工作流程数据结构ZooKeeper原理概述Nacos原理概述订阅与发布ZooKeeper的实现发布的实现订阅的实现Dubbo中有哪些ZooKeeper客户端实现?Nacos的实现发布的实现订阅的实现缓存机制缓存的加载缓存的保存与更新重试机制设计模式模板模式工厂模式小结前言本篇主要介绍一下Dubbo的注册中心的总体工作流程,以及不同类型注册中心的数据结构和实现原理,同时还会介绍一下注册中心支持的通用特性,如缓存机制、重试机制,最会会对整个注册中
2022-01-06 23:56:26
755
原创 论systemctl命令的利与弊
前言今天在测试环境发布SpringBoot服务,发现死活找不到错误的地方,错误日志也生成,然后就一顿tail,一顿cat,发现日志就截止到我发服务之前,dubbo服务结束的地方,如图所示。WTF,why,我是丈二和尚摸不着头脑,后来我发现他这个服务不是像我之前那种nohup java -jar xxx.jar启动的,他这个是使用systemctl restart service@xx启动的...
2020-03-18 20:42:43
922
原创 MyBatis 源码分析-项目总览
#MyBatis 源码分析-项目总览1.概述本文主要大致介绍一下MyBatis的项目结构。引用参考资料《MyBatis技术内幕》此外,https://mybatis.org/mybatis-3/zh/index.html MyBatis官方也提供了很不错的中文文档。对于使用中有碰到一些问题,可以参考一下。2.模块划分MyBatis在项目模块划分还是很清晰的。各个模块层次以及具体作用,如下...
2020-03-15 00:18:31
175
原创 线上占用CPU过高问题排查
前言最近博主在搬砖的时候遇到了线上的一些问题,大致情况是这样的。表象:服务挂了,CPU占用比较高,一直在百分之九十多。肯定有小伙伴会说常规操作 ,reboot一下完事儿了。其实这样吧没毛病,但是解决不了根本问题。啥也不多说。咱们先说下线上排查三板斧。就算不能解决问题也能猜个差不多。理论基础top 命令找出应用 pid-apptop -Hp 命令找出线程 pid-thread printf...
2020-03-14 16:04:37
1584
1
原创 MyBatis源码解析 - 解析器模块
MyBatis源码解析 - 解析器模块1. 前言 在MyBatis中涉及多个xml文件,解析这些xml文件自然离不开解析器。本文就来分析一下解析器模块。2. 准备工作 xml常见的解析方式分为以下三种:DOM ( Document Object Model)解析方式SAX (Simple APIfor XML)解析方式StAX( Streaming API for XML)解析方...
2020-03-12 09:47:16
802
原创 MyBatis源码解析 - 反射模块
MyBatis源码解析 - 反射模块1. 前言 该模块位于org.apache.ibatis.reflection包中,MyBatis在进行参数处理、结果映射等操作时,会涉及大量的反射操作。Java 中的反射虽然功能强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,它对常见的反射操作做了进一步封装,提供了更加简洁方便的反射API...
2020-03-12 09:45:32
245
原创 MyBatis源码解析 - 类型转换模块
MyBatis源码解析 - 类型转换模块前言JDBC数据类型与Java语言中的数据类型并不是完全对应的,所以在PreparedStatement为SQL语句绑定参数时,需要从Java类型转换成JDBC类型,而从结果集中获取数据时,则需要从JDBC类型转换成Java类型。MyBatis 使用类型处理器完成上述两种转换,如图所示。在MyBatis中使用JdbeType这个枚举类型代表JIDBC...
2020-03-12 09:44:17
897
原创 MyBatis源码解析 - 反射模块
MyBatis源码解析 - 反射模块1. 前言 该模块位于org.apache.ibatis.reflection包中,MyBatis在进行参数处理、结果映射等操作时,会涉及大量的反射操作。Java 中的反射虽然功能强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,它对常见的反射操作做了进一步封装,提供了更加简洁方便的反射API...
2020-03-12 00:07:52
277
原创 MyBatis源码解析 - 解析器模块
MyBatis源码解析 - 解析器模块1. 前言 在MyBatis中涉及多个xml文件,解析这些xml文件自然离不开解析器。本文就来分析一下解析器模块。2. 准备工作 xml常见的解析方式分为以下三种:DOM ( Document Object Model)解析方式SAX (Simple APIfor XML)解析方式StAX( Streaming API for XML)解析方...
2020-03-11 23:09:56
276
原创 MyBatis 源码分析-项目总览
#MyBatis 源码分析-项目总览1.概述本文主要大致介绍一下MyBatis的项目结构。引用参考资料《MyBatis技术内幕》此外,https://mybatis.org/mybatis-3/zh/index.html MyBatis官方也提供了很不错的中文文档。对于使用中有碰到一些问题,可以参考一下。2.模块划分MyBatis在项目模块划分还是很清晰的。各个模块层次以及具体作用,如下...
2020-03-11 23:05:57
143
原创 MyBatis源码解析-搭建调试环境
MyBatis源码解析-搭建调试环境1. 相关工具MavenGitJDK1.8IntelliJ IDEA2. 源码拉取一般来说,我们直接从https://github.com/mybatis/mybatis-3 Fork到自己的仓库中,为什么要Fork呢?我们在之后的源码分析中,我们可能会加一些注释,英文翻译一波,方便自己理解,也方便自己自由提交。版本:3.5.4-SNAPS...
2020-03-11 23:00:00
296
原创 MyBatis 源码分析-项目总览
MyBatis 源码分析-项目总览1.概述本文主要大致介绍一下MyBatis的项目结构。引用参考资料《MyBatis技术内幕》此外,https://mybatis.org/mybatis-3/zh/index.htmlMyBatis官方也提供了很不错的中文文档。对于使用中有碰到一些问题,可以参考一下。2.模块划分MyBatis在项目模块划分还是很清晰的。各个模块层次以及具体作...
2020-03-11 17:23:20
139
原创 Android开发经验总结
在Android library中不能使用switch-case语句访问资源ID:在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案不能在Activity没有完全显示时显示PopupWindow和Dialog:popupwindow - Problems creating a Popup Window in Android Ac
2015-12-15 18:02:46
539
1
hibernate-search-4.4.0.Final-dist
2013-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人