自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 接口时延超高,记录自己的一次性能调优

初始状态:arthas查看任务时间: 1000条数据处理了194秒,性能较差,吞吐量在 5条/sarthas命令:trace -E cn.migu.deal.pori.....SubscribeFlowRecordTask auditSubFlowRecord优化点1:定时任务间隔原先配置为@Scheduled(initialDelay = 30000,fixedDelayString ="60000")将fixedDelayString 时间优化为 1000 由 ...

2020-08-13 16:05:29 848

原创 记录一次测试环境,cpu过高的处理经验

现象: 测试服务器卡顿,有时候都连接不上去,请求过了好几秒才有进入到服务器1、top命令看一下 227%(也可以使用 jps -1 拿到对应的进程id)2、找到具体的线程idps -mp 4878 -o THREAD,tid,time3、将线程id转换为16进制printf "%x\n" 108154、jstack来定位jstack 4878 |grep 2a3f -A60可能会提示:well-known file is not secure 这样的报错,..

2020-08-13 15:29:07 484

原创 nacos源码图

个人学习理解,可能会有偏差,欢迎指正,谢谢!

2022-03-08 20:23:55 170

原创 mysql索引的数据结构和使用原则

索引是什么?索引是帮助mysql高效获取数据的排好序的数据结构,以协助快速查询和更新数据。索引的类型: 普通索引 唯一索引 全文索引索引数据结构的演进:链表 --> 二叉树 --> AVL树 --> B树 --> B+树InnoDB内部存储结构:表空间 段 区(簇) 页 行索引的方式: B+ tree 、 hash(hash的查找快,但hash会存在hash冲突,会出现不能范围查询等缺点)实际上,我们并不能创建hash索引,选...

2022-02-15 11:10:42 151

原创 一条sql语句的执行过程(查询、更新)

​思考:一条mysql的执行语句,经过了哪些流程​​​​1、连接层mysql服务端,暴露了一个3306端口,客户端用什么协议和他连接?mysql支持多种协议,一般我们都是使用TCP (mysql-connector-java-x.x.xx.jar) mysql-connector-java-x.x.xx.jar: 看了下代码,是解析url的 ip port 协议,建立了socket连接 连接方式:可以支持同步和异步

2022-02-12 12:37:19 686

原创 记录OOM的排查过程

代码背景: 系统上传图片到其他平台,需要对图片进行剪裁,压缩,处理等操作,发生OOM定位思路:1、jmap 打印存活实例,看下是否有 存在问题的业务对象jmap -histo:live 19277发现有大量的byte[] ,char [] int[]等基础数据结构,OOM发生是在大量图片上传时产生,第一反应,是检查对应代码先检查流是否正常关闭,图片对象是否置为null,内容是否刷新,完善该部分逻辑后,发现还是OOM依然发生,继续往下定位2、arthas或者 jstat 查看GC信息

2021-04-19 09:45:35 598

原创 rocketMQ分享

一、MQ介绍1、什么是MQ?为什么要用MQ?2、MQ的优缺点3、几大MQ产品特点比较二、RocketMQ快速实战1、下载RocketMQ 4.7.1版本2、快速安装RocketMQ3、 快速运行RocketMQ3.1 启动NameServer3.2 启动Broker3.3 命令行快速验证3.4 关闭RocketMQ服务三、RocketMQ集群架构1、RocketMQ集群中的各个角色2、RocketMQ集群搭建3、RocketMQ的其他参考资料一、MQ介绍1、什么是MQ?为什

2021-04-01 11:45:23 140

原创 自定义springboot starter和相关源码理解

springboot小结什么是springboot服务于框架的框架、是脚手架来帮助快速构建一个spring项目。例如,我们想构建一个spring项目,没有spring-boot时,我们需要引入大量依赖,调整版本,解决jar包冲突等问题。spring-boot则帮我们解决了这些。关注点: @SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inheri

2021-03-12 10:52:12 199 1

原创 elk安装搭建

es部分:1、下载wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz2、解压 tar -zxvf elasticsearch-6.3.2.tar.gz3、修改配置文件:vim config/elasticsearch.yml# 数据路径path.data: /usr/local/tools/es/data#日志路径path.logs: /usr/loc...

2020-12-11 17:38:29 148

原创 记录日常代码延时高的问题

场景1 前端反映,首页index接口延时过高,几乎一秒才有响应步骤一:定位问题代码因为该模块,线上arthas禁用了,没办法,老老实实打日志,定位具体哪里耗时比较多发现,接口整体时延在800ms左右,但第一步查询当日订单数的时候,就已经花了500多ms了,其他查询一般都是几十ms左右,找到问题所在。步骤二:具体问题分析看下获取逻辑,其实就是单纯从表里查询数据然后走dubbo返回,那就更nice了,sql出问题的概率大,到测试环境看下执行计划全表扫,没走上索引,线上...

2020-11-05 10:11:04 189

原创 mysql存过批量插入数据

开发需要,需要批量插入数据配合测试,记录一下,方便以后查找,也方便小伙伴搜索DELIMITER $$USE `库名`$$DROP PROCEDURE IF EXISTS `proc_lottery`$$CREATE DEFINER=`username`@`%` PROCEDURE `proc_lottery`()BEGIN DECLARE `shop_id` bigint(20) ; DECLARE created TIMESTAMP; DECLARE t...

2020-11-04 16:05:31 164

原创 kafka入门之环境搭建(单机+集群)

版本:kafka_2.11-1.1.0下载:wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11‐1.1.0.tgzzookeeper的版本:zookeeper-3.4.14wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper‐3.4.14.tar.gz我已经安装好了,所以就不再介绍zookeeper怎么安装,后面我再单独写一篇关于zookeepe.

2020-08-13 16:08:10 226

原创 kafka-概念和内部原理理解

kafka是什么? 是一个分布式的消息系统。(支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统)。主要应用场景是:日志收集系统: ELK+kafka 可以跟进写一篇ELK的博客消息系统主要的概念:Broker :消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群Topic:逻辑上的概念,Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个

2020-08-13 16:07:57 338

原创 mysql的架构、数据结构(内存+磁盘)

思考:一条mysql的执行语句,经过了哪些流程1、通信协议: mysql服务端,暴露了一个3306端口,客户端用什么协议和他连接? mysql支持多种协议,一般我们都是使用TCP (mysql-connector-java-x.x.xx.jar) 连接方式:可以支持同步和异步 同步通信一般依赖于被调用方,会被阻塞,等待被调用方返回结果 ...

2020-08-13 16:07:36 3726 1

原创 基于AQS实现的并发控制-ReentrantLock和CountDownLatch源码分析

这里的描述,其实都基于上一个AQS的分析,AQS不熟悉可以看下之前写的,有大致介绍AQS描述先整理一下countDownLatch的数据结构和ReenTrantLock一样,内部持有一个Sync引用,实现AQS模板方法的try*** 来定制化操作按方法挨个看下去:构造方法: public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count.

2020-07-14 23:02:54 228

原创 Java并发编程-AQS数据结构和图解

AQS的概念: 队列同步器 是用来构建锁和其他基础并发组件的框架。内部维护了一个state,维护同步器状态,一个双向队列维护等待线程排队工作。运用了模板方法模式,父类抽取了公共代码和执行逻辑,子类继承复写定制化方法即可。数据结构:成员: Node head; 头节点 Node tail; 尾节点 int state; state=0 表示释放锁 s...

2020-07-12 20:47:37 454

原创 proxy理解

静态代理:动态代理:jdk动态代理实现:public class ProxyDemo implements InvocationHandler{ private Phone apple; public ProxyDemo(Phone apple) { this.apple = apple; } @Override public Object invoke(Object proxy, Method method, Object[] a

2020-06-24 10:01:18 523

原创 mybatis学习-02-数据源模块源码

数据源模块其实是mybatis自己帮我们封装了一个数据库连接池,以便我们使用包结构如下:工厂模式: 属于创建型的设计模式,主要是统一创建其他实例对象,调用者不用关心对象创建的内部具体细节(这个我觉得是和建造者模式最大的区别)主要组成部分工厂接口(Factory): 简单工厂的接口,定义了创建产品的方法,具体工厂必须实现这个接口工厂角色(ConcreteFactory): 简单...

2020-06-23 21:40:48 91

原创 mybatis学习-01-日志模块源码

日志模块的需求mybatis没有自己提供日志的实现类,需要接入第三方的日志框架。但第三方的日志组件的日志级别等都不一致。所以mybatis统一往外提供了trace debug warn error四个级别自动扫描日志实现 mybatis需要实现,并且第三方日志的加载有固定级别 : slf4J → commonsLoging → Log4J2 → Log4J → JdkLog;日志功能...

2020-06-23 10:33:49 117

原创 spring学习_05-循环依赖的解决

spring目前只能解决属性中的循环依赖,构造方法中的没办法解决,会报异常,这个其实和spring解决循环依赖的机制有关 ,往下看其实就明白了。实现:Bird和Dog里面互相依赖对方,循环依赖1、按照bean的创建流程走下去 doGetBean()protected <T> T doGetBean(final String name, @Nullable final Class<T> requiredType, @Nullable final...

2020-06-21 12:45:07 208

原创 spring学习_04-事务源码解析

实现:configuration设置:关注点:和aop一样,先看一下EnableXXX注解@EnableTransactionManagement @Import(TransactionManagementConfigurationSelector.class)注入了这样两个beanAutoProxyRegistrar:和aop的注册一样,注入一个beanbeanName:org.springframework.aop.config.interna..

2020-06-20 17:14:52 108

原创 spring学习_03-aop源码解析

实现:1、定义切面类:2、被拦截的方法翻一翻源码,总体介绍流程:1、configuration中,增加 @EnableAspectJAutoProxy 跟进: @Import(AspectJAutoProxyRegistrar.class) class AspectJAutoProxyRegistrar implements ImportBeanDefinitionRegistrar 从这里我们可以知道,EnableAspectJAutoProxy...

2020-06-17 23:05:23 118

原创 spring学习_02-bean的Autowired依赖注入和初始化方法加载

实现: 简单的Autowired注入内部: bean创建的逻辑,默认知道的情况下,直接从构造方法创建出,后续出一个完整的逻辑吧。其实这些只是简单记录一下代码位置,方便自己复习而已方法:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean1、走postProcess InstantiationAwareBeanPostProcessor的 p...

2020-06-16 22:57:00 785

原创 spring学习_01-spring-factoryBean加载bean的流程

1、代码实现,利用factoryBean,控制bean创建实现思路:实现FactoryBean接口,复写getObject方法,利用工厂bean来实现具体的bean对象源码分析:1、2、3、4、5、6、7、

2020-06-13 23:39:06 406 1

原创 zookeeper-源码解读

curator:封装了zookeeper原生方式,相比于zkClient 抽取的更高1、curator 实现分布式锁:实现方式: CuratorFramework curatorFramework = CuratorFrameworkFactory.builder() .connectString(CONNECTION_STR) .retryPolicy(new RetryForever(3)) .sessionTimeou

2020-06-07 20:53:59 260

原创 redis学习-主从、哨兵搭建和原理

主从:先搭建大把,上手撸一个主从,配置相对比较简单步骤:1、mkdir redis8000(主) mkdir redis8001(从) mkdir redis8002 (从)2、从单击版复制一份redis.conf 放入到上面新建的文件夹中,修改8000的配置文件 修改内容如下: 主机 bind port daemonizepidfile logfile requirepass(密码,最好设置下) 从机:...

2020-05-16 17:00:20 474

原创 redis学习(单机集群安装、三大问题、持久化)

是什么?开源的,C语言写的,单线程的,高性能的,key-value的内存数据库,基于内存运行并支持持久化的nosql数据库安装下载:官网/github/ymllinux单机版安装步骤:1、下载tar.gz (https://github.com/antirez/redis/releases)2、tar -zxvf 解压3、yum install gcc 安装gcc环境,因为redis是c语言写的,所以需要环境4、make5、make install6、修改r...

2020-05-11 11:45:13 143

原创 dubbo-客户端服务消费proxy创建源码分析

入口:ReferenceBean: 服务注册用@reference 引入服务本质: 创建对应的动态代理 invoker,调用代理类的本质,是通过socket来获取zk注册中心上的节点信息,发起远程调用源码:

2020-05-09 09:51:16 317

原创 dubbo-服务端的服务注册和发布源码分析

基本配置:代码入口:dubbo在和spring整合的时候,本质是利用namespaceHandler和BeanDefinitionParser来进行处理本质是在构建serviceBean的时候,实现了服务注册和发布,方法入口:onApplicationEventspring容器加载完成以后,进入关键方法public void onApplicationEvent(...

2020-05-07 19:35:05 209

原创 单例设计模式的N种写法

一.单例模式简介单例模式(Singleton Pattern):是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。确保单例:1.私有构造方法2.提供公有方法获取单例对象二.单例模式的常见写法1.饿汉式;2.懒汉式;3.注册式;4.ThreadLocal式;(一).饿汉式单例 饿汉式单例是在类加载的时候就立...

2020-04-20 11:17:44 209

原创 spring中的beandefinition

1.什么是beandefinition?beandefinition在spring中是用来对bean的信息进行描述,包含了bean当中的scope、lazy,以及属性和方法等等其他信息,在spring实例化bean对象时,会从beanDefintionMap中获取对应的beandefinition,进一步实例化bean,并管理bean.2.beandefinition的继承体系...

2020-03-26 17:04:55 181

空空如也

空空如也

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

TA关注的人

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