自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 java突发内存和CPU同时100%排查解决

mat工具找到占用内存的入口堆栈和具体对象,最后就是根据业务去优化了。

2022-12-27 13:30:23 3081 1

原创 一篇文章看懂Serverless

一篇文章看懂Serverless什么是ServerlessServerless架构和传统的项目的区别Serverless实战什么是Serverless自2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次提出“云计算”(Cloud Computing)的概念之后,云计算的发展可以用日新月异这个词来形容。那么究竟什么才是Serverless呢?简单来说,Serverless可以说是一种架构,一种云计算发展的产物,至于具体说

2020-07-19 23:43:31 11039

原创 Sharding-JDBC多数据源动态切换

Sharding-JDBC多数据源动态切换背景介绍方案介绍版本说明实现方式1. spring-boot依赖2. 启动类配置3. yml配置4. 自定义强制路由5. AOP切换数据源6. 编写事务代码7. 源码下载背景介绍我们公司项目使用多个mysql实例,业务分库,无需分表。需要实现如下功能:多数据源动态切换读写分离分布式事务(XA)方案介绍通过阅读Sharding-Sphere官方文档,结合业务进行了设计,给出如下解决方案:使用Sharding-JDBC管理数据源,自带读写分离和分布

2020-07-12 22:59:15 27185 17

原创 Mac本地部署Rancher和Kubernetes

背景介绍Kubernetes(k8s)在容器编排领域已成为不二选择,公司最近开发、测试、生产环境,都在推进容器化部署。Rancher是目前最活跃的Kubernetes管理平台,本文使用mac,本地部署docker、Kubernetes、Rancher,然后在rancher上部署nginx进行测试。部署过程中踩的坑进行记录分享。版本说明:docker版本:19.03.8Kubernetes:v1.16.5mac安装docker官方提供了mac桌面版本docker,内部集成了k8s稳定docker

2020-06-26 22:32:50 13447 3

原创 k8s nginx ingress原理解读

阅读本文需要以下知识为前提了解k8s基本架构,k8s基本资源清单用自己的k8s实验环境首先了解ingress解决了什么问题k8s内部项目暴露外部访问,只用一个固定端口,暴露多个服务。相对于:LoadBlancer Service、NodePort Service更灵活更方便。pod漂移后的ip变化,自动识别pod ip修改nginx配置不用reload加载实现灰度发布(根据流量或者http请求头进行灰度)架构介绍ingress controller入口流量控制器。Kubern

2022-02-24 23:52:11 3226

原创 阿里巴巴P3C java编程规范(最新版github下载)

阿里java编程规范推荐,以及最新版下载方法

2022-02-24 09:59:15 3379

原创 深拷贝(clone)最佳实践 -- 考虑拷贝消耗的cpu和拷贝速度

深拷贝(clone)是java开发过程中经常遇到问题,有人用io流、有人用json序列化、有人循环拷贝属性等等,网上文章都能实现功能。问题:clone是计算操作,消耗cpu如果速度慢(高并发场景几十ms也是非常慢的)会导致程序卡顿,qps降低。网上解决方案都没有提到性能问题,我实际使用后对性能进行了优化,最后推荐:FastCloneFastClone介绍FastClone是一款非常好用,支持大部分场景深克隆和浅克隆的工具。被推荐的不多,被埋没了。<dependency> <gr

2021-08-07 09:49:53 1955 3

原创 Arthas jvm诊断工具入门到精通

我举个常见场景,你有没有遇到有没有觉得难搞,熟练使用Arthas会让以下问题非常简单:生产环境慢接口分析,不知道接口耗时的原因 (trace命令)生成环境断点,查看某个方法入参返回值(watch命令)觉得运维发版的代码和我本地代码不一样,需要反编译 (Decompile Class Jad 命令)查看内存中,变量的值 (OGNl表达式)cpu高时,分析造成cpu高的代码 (thread命令)拦截某个方法,并且以同样的入参进行重试调用 (TT命令)调用代码中任意方法 (OGNl表达式)a

2021-08-06 23:34:46 274

原创 TIDB和mysql优缺点对比

最近这几年,公司一直在使用mysql,数据量在千万级以下时,mysql有着非常优秀的性能和稳定性。随着数据增长,单表无法满足业务需求,我们需要使用mycat、shading-jdbc等中间件去实现分库分表。分库分表的缺点:分页查询性能不好,需求聚合多库数据,多次io,内存消耗大。分布式事务问题分库之后,想二次扩容,数据迁移等会更复杂跨库join很难实现随着newsql数据库出现,分库分表这些问题都得到解决,newsql特性如下:SQL支持 (TiDB 是 MySQL 兼容的)水平线性

2021-08-06 21:10:50 16218

原创 Junit5 + Jenkins + Allure 继承单元测试报告

关于这三个组件的安装网上文档很多,官方文档也很详细,这里就不演示了,本文主要讲解使用工程的的坑和解决方案。这里给几个友情链接:spring-boot 继承Allure :Allure Junit5jenkins 安装Allure插件 :Allure JenkinsAllure本地图表没有历史趋势图解决:Allure 本地生成趋势图看看效果:采坑记录spring-boot版本和Junit5兼容问题我们公司spring-boot版本2.15,默认支持junit4。如果使用Junit5,本

2021-08-06 11:58:39 762

原创 创业公司单元测试落地问题和解决方案

创业公司单元测试落地问题和解决方案一. 为什么需要单元测试?二. 创业公司软件开发维护现状三. 一套可行的技术方案四. 落实实施需要跨越的坎一. 为什么需要单元测试?单元测试对软件开发好处多多,我总结为一下几点:1. 提升软件质量提前发现问题,减少代码提测和线上bug,和集成测试互补。防止业务迭代过程的bug,比如经常出现,改A问题,出现B、C业务bug。黑盒测试做不到零bug,对应代码中隐藏逻辑,可以通过单元测试发现。2. 提升开发效率联调、集成、回归测试过程中,问题少、易修复。虽然

2021-08-06 11:18:53 437

原创 查看MetaMask发起的节点请求

背景    在调研一个defi项目时,经常需要抓取eth节点上请求的数据。节点请求数据和restful的http请求数据不一样,完全看不懂。本文主要教大家如何看懂区块链节点请求请求举例前提:有eth MetaMask钱包操作经验举例项目:借贷项目compound看如下请求:入参和返回值入参说明:“to” 表示需要请求的合约地址:0xa1bd4a10185f30932c78185f86641f11902e873f 可以到区块链浏览器查询合约源码:h

2021-07-01 11:47:01 640 3

原创 ETH(以太坊)交易日志解读 -- 智能合约开发必备知识

背景介绍    很多人都在使用区块链浏览器查询交易记录,对于一个研发人员,我们需要更深入的了解交易调用的方法和请求参数。    今天待大家看看浏览器上的交易究竟什么意思,智能合约开发人员必备知识。交易举例随便找了一笔交易:https://etherscan.io/tx/0x25b53f45d8712c0d58d1797f1040189921bb1174598bbde42e7bf9c6fca00c04下面对交易主体和事件

2021-07-01 11:01:11 1030

原创 git 命令修改代码提交人

git 命令修改代码提交人1. git log 查看提交记录2. 设置全局提交人和提交邮箱3. 设置项目提交人和提交邮箱4. 修改历史记录提交人关于git提交人知识点:1. git log 查看提交记录-- git logcommit c486034812cac1538007240dacc6be5 Merge: ffbde9fc cc2306deAuthor: zhongjingyun <zhongjingyun@163.com>Date: Wed Jan 27 23:54:3

2021-01-28 00:10:26 3994 1

原创 什么是真正的云原生 -- 应用视角

什么是正在的云原生 -- 应用视角2020云原生落地之年什么是云原生?云原生时代企业如何落地云原生系统2020云原生落地之年  2020年之前,各个公司都在落地微服务。随着微服务落地,容器技术得到广泛应用,Kubernetes,Docker swarm,Marathon等开源容器编排引擎广为流传。Kubernetes在竞争中脱颖而出,奠定了云原生的基础,形成了容器编码的标准。过去的2020年,大部分公司都引入了云原生相关技术架构。什么是云原生?百度百科:云原生是基于分布部署和统一运管的云端服务,以容

2021-01-22 17:18:06 239 1

原创 一条sql造成死锁

问题背景 访问量增加,突然大量死锁报警,看日志是一条这样sql:insert into tableName (uid,name) select ?,? from dual where not exists (select 1 from tableName where uid=? and name=?);  uid,name有唯一索引。知识点这个问题有几个知识点:insert后面的select会当前读,隐式加锁查询不存在,会降级为间隙锁间隙锁查询不是互斥的,会造成死锁案例分析间隙锁死锁

2020-12-10 10:12:33 828

原创 MybatisPlus动态修改表名或增加库名

背景 在数据库操作过程中,经常有修改表名的需求,例如:分表时,修改表名加上分表前后缀;多数据库一个实例,表名前面加上库名,实现本地跨库事务等等。 我用到的场景是后者,动态加库名。由于使用了MybatisPlus,整个开发过程中不会自己写sql,也没办法通过硬编码修改表名。解决方案 MybatisPlus中只需要一个配置类即可自定义,动态修改表名,代码如下:@Configurationpublic class MybatisPlusConfig { List<String> t

2020-12-06 21:22:11 8884 3

原创 线程池正确用法

背景 对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。 随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用forkjoin实现并行处理。 那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?  这些问题我分以下几篇文章进行详细说明:  1. 多线程并发和并行的区别  2. parallelStream()并行滥用的后果  3

2020-09-13 20:34:54 9007

原创 forkjoin和forkjoinpool讲解

forkjoin和forkjoinpool讲解背景为什么需要forkjoin先看代码结合多线程理解forkjoin代码forkjoin主要的类forkjoin常用方法forkjoin设计原理forkjoin整体工作流程工作队列和线程池背景 对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。 随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用fork

2020-09-13 17:20:37 9244

原创 parallelStream()并行滥用的后果

背景 对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。 随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用forkjoin实现并行处理。 那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?  这些问题我分以下几篇文章进行详细说明:  1. 多线程并发和并行的区别  2. parallelStream()并行滥用的后果 (本文

2020-09-13 16:52:11 19154 1

原创 多线程并发和并行的区别

背景 对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。 随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用forkjoin实现并行处理。 那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?  这些问题我分以下几篇文章进行详细说明:  1. 多线程并发和并行的区别  2. parallelStream()并行滥用的后果  3

2020-09-13 14:35:34 12476

原创 @Value(“${}“) 采坑记录

背景今天排查一个老代码bug,最终定位到是配置文件使用@Value注解获取,实际使用时值为null。对@value进行一下用法总结问题详细说明我们是一个加密盐存放在application.yml中,工具类中使用如下注解获取,结果为null,大家能看出问题吗? @Value("${md5_salt}") private static String md5Salt;问题就在static上,使用static修饰,会在spring初始化之前完成初始,无法注入。错误用法总结使用static或

2020-08-05 00:47:20 8886

原创 java正则表达式类用法

背景关于正则表达式的语法随处可见,java中正则的常用类究竟有哪些用法,应该如何使用呢?本文给出详细例子正则类说明import java.util.regex.Matcher;import java.util.regex.Pattern;最常用的两个工具类:Pattern类用于创建一个正则表达式Matcher类用于处理字符串。构造方法是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例方法说明Pattern.com

2020-08-01 16:00:40 11345

原创 正则表达式拆分url

背景做web开发的同学,经常会有从url中获取二级域名或者主域名或者参数等等需求,需要扎实的正则功底。本文提供一个全面的url拆分案例,需要哪个部分用哪个部分。案例将url的各个部分拆开,让我想取哪部分就取哪部分?url: http://www.baidu.com/love/java?lang=javaregex: (\w+):\/\/([^/:]+)(:\d*)?([^# ]*)使用js举例var url = "http://www.baidu.com:80/love/java?lang=

2020-08-01 15:41:42 13894 1

原创 java中将GMT-8时间输出为CST时间字符串

背景今天公司一个模块从服务器迁移到k8s,出现时间toString()以后输出结果和以前不一致的情况,原因是以前是CST时间,k8s上统一设置环境时区为GMT-8了。CST:China Standard Time(老外认为有其他含义,中国就这个缩写),中国标准时。GMT:Greenwich Mean Time,格林威治标准时,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区。如何设置-Duser.timezone=GMT+08 启动命令设置jvm参数

2020-07-31 01:25:06 12327

原创 Asia/Shanghai与GMT-8的区别

背景今天公司一个模块从服务器迁移到k8s,出现时间toString()以后输出结果和以前不一致的情况,原因是以前是CST时间,k8s上统一设置环境时区为GMT-8了本文会讲清楚中国使用时区的来龙去脉。下一篇文档,会讲java中,遇到改时区问题,如何解决。先了解冷知识知识很重要,理解了这些才是时区的关键。DST:Daylight Saving Time中文名叫“夏令时”,一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。中国1986-199

2020-07-31 01:13:03 29030 9

原创 IaaS、PaaS、SaaS、BaaS和FaaS英文全称以及解释说明

IaaS、PaaS、SaaS、BaaS和FaaS先说aaS:As-a-ServiceIaaS:Infrastructure as a ServicePaaS:Platform as a ServiceSaaS:Software as a ServiceBaaS:Backend as a ServiceFaaS:Function as a service其他最近几年,各种分享会,总后有这些听起来很相似的名字,究竟有啥区别呢?先说aaS:As-a-ServiceAs-a-Service的首字母,也就是作为

2020-07-19 22:38:20 15109

原创 Sonar报错Unknown url : /api/alm_settings/list解决

问题描述SonarQube 8.4.0版本,按照报错,如图:Unknown url : /api/alm_settings/list解决方案已提交官方,官方给出恢复在下一个版本(8.4.1 release)会修复影响范围对功能无影响,放心使用其他功能,关掉弹层即可。...

2020-07-14 23:18:04 11107

原创 java项目使用Sonar进行质量管理(最新版-增量代码扫描)

java项目使用Sonar进行质量管理百度搜索各种坑本文介绍1. SonarQube 8.4.0下载和安装2. IDEA SonarLint插件安装和使用3. mvn 命令扫描项目4. Sonar 增量代码扫码的使用百度搜索各种坑看到这篇文档的相信已经看了不少文章了,主要两个问题:版本老旧,5.x、6.x、7.x都有,而且安装复杂,新版本做了很多优化,简洁了很多搜索“增量代码扫描”,全都是一个人答案,而且是个老旧的答案。其实新版本,首页默认已经支持了增量代码扫码。教程都是配置mysql,新版so

2020-07-14 23:10:00 17153 11

原创 Netty线程模型

Netty线程模型Netty解决的问题Netty的使用场景Netty线程模型ByteBuf详解Netty解决的问题NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、SocketChannel、 ByteBuffer等。开发工作量和难度都非常大: 例如客户端面临断连重连、 网络闪断、心跳处理、半包读写、 网络拥塞 和异常流的处理等等。Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了上述问题。且Netty

2020-07-12 23:32:48 10654

原创 java IO模型详解

IO模型介绍java IO模型BIO(Blocking IO)缺点:应用场景:NIO(Non Blocking IO)应用场景:AIO(NIO 2.0)BIO、 NIO、 AIO 对比java IO模型IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式:BIO,NIO,AIOBIO(Blocking IO)同步阻塞模型,一个客户端连接对应一个处理线程缺点:1、IO代码里read操作是阻塞操作,如果连接不做数据读写操作会导致线程阻塞,浪费资源 2、如果线程很多,会

2020-07-12 23:24:02 11055

原创 分布式事务核心理论

分布式事务理论基础背景介绍CAP理论和BASE理论CAP理论BASE理论刚性事务和柔性事务DTP模型(刚性事务)最大努力通知(柔性事务)可靠消息最终一致性(柔性事务)TCC模式(柔性事务)背景介绍公司系统最近完善了微服务架构,以前单实例主从mysql进行了多实例拆分,根据业务分摊主库压力。基于微服务架构设计功能,总是绕不开分布式事务的问题,针对各种分布式事务解决方案进行了详细调研,这一篇文章,主要介绍一下分布式事务理论基础,有了这些理论才能结合业务选择合适的方案。(ps:最佳实践是,通过合理设计尽量避免

2020-07-08 01:16:31 10801 1

原创 RocketMq架构脑图

RocketMq架构和名词介绍

2020-06-13 19:01:43 10692

原创 ELK 7.6.2 安装文档

ELK 7.6.2 安装文档技术栈介绍一. 安装Elasticsearch(一主一从)二. 安装kibana三. 安装Filebeat技术栈介绍文档时间: 2020-04-05 (ps:elastic版本迭代非常快,每个月都不一样)当前版本:7.6.2官方文档:https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html文档包括elastic-stack6个组件,本次调研ELK,只安装前三个

2020-06-13 18:23:23 11030

原创 maven打包常用命令总结

maven打包常用命令总结基本命令介绍1、mvn clean2、mvn compile3、mvn package4、mvn install5、mvn deploy生产环境打包举例1、生产环境根据源码构建项目:2、可用用到的其他mvn参数介绍:开发过程中常见以下几个命令,这些命令执行后程序究竟发生了什么变化?生产环境如果使用shell脚本配置jenkins构建项目,如何使用命令呢?下面介绍一下我常...

2019-10-24 23:37:05 12404

原创 maven配置总结(pom.xml和settings.xml)

maven配置总结一、pom.xml配置1、自定义参数2、依赖包版本管理3、depoly发布路径配置4、设定远程仓库下载路径,按设定顺序依次下载5、环境变量配置(一般用于打包控制配置)二、setting.xml配置1、配置镜像(可以理解为代理)2、配置服务密码3、配置统一远程仓库一、pom.xml配置1、自定义参数 <properties> <slf4j.ve...

2019-10-24 23:01:16 11798

空空如也

空空如也

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

TA关注的人

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