自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 问答 (1)
  • 收藏
  • 关注

原创 深入剖析索引

了解基础索引运行情况以及认识trace工具

2022-06-01 00:07:25 297

原创 Mysql执行流程

序言内部构成连接器查询缓存词法分析器优化器执行器Bin-log归档归档模式归档常用命令序言看一条SQL漂流打卡。内部构成连接器在我们mysql数据库内部有一个默认的mysql数据库,其中user表中存储了用户名称、连接来源的host以及对库表的操作权限控制。客户端连接,连接器校验ip是否允许以及用户名,密码,同时校验权限。 服务端将在内存中创建一块区域为维护这个session,同时将权限信息放入该区域(因为接下来的所有

2022-05-30 22:15:00 309

原创 Explain工具使用与索引详解

Mysql Explain详解

2022-05-29 20:31:46 539

原创 3.垃圾收集

垃圾收集算法-方法论我们常用的垃圾收集器都是有方法论作为基础的,具体包含如下:复制算法、标记清除、标记整理、分代收集理论。复制算法将一块空间平均分成两份,处理东西的只是在其中一块区域,当垃圾回收时,存活的对象移动到另一块区域,并清空当前区域标记清除标记整理分代收集理论垃圾收集器-实现串性收集器-Serial并发收集器-Parallel并发标记清除收集器-CMSG1ZGC...

2022-05-23 23:35:17 280

原创 2.JVM深度剖析

目录JVM为什么能跨平台访问JVM组织构成类装载子系统运行时数据区域堆栈本地方法栈方法区程序计数器字节码执行引擎JVM为什么能跨平台访问java被称为一处编译,到处运行,那么它实现的机制到底是什么呢?关键就在jvm屏蔽了跨平台的多种处理。看图:JVM组织构成类装载子系统负责将class文件加载到运行时数据区域运行时数据区域我们代码里主要处理逻辑的地方堆首先堆是我们所有线程共享的区域 存放我们new出来的对象,例..

2022-05-20 17:42:12 208

原创 JVM入门实践

类加载执行过程我们看如下代码,当我们启动的时候,main方法将会被运行,这个执行过程其实是由我们的类加载器来完成的。package com.jvm;public class JvmRunner { public static final int month = 5; public void show(){ int one = 10; int two = 11; int result = one+two ; System.o

2022-05-18 12:47:42 214

原创 JVM学习

垃圾收集算法:标记清除(1.效率问题,如果标记太多,效率不高。 2.空间问题,碎片化)标记整理CMS 内存分配大约4~8G1.初始标记:stop the word ,只找GcRoot直接引用对象(一级),只有一个垃圾程序执行2.并发标记:GcRoot下寻找所有引用(其中会产生对象状态变化的问题),应用程序和垃圾回收程序同步进行。是整个流程中耗时比较长的3.重新标记:stop the word.(三色标记增量更新算法)4.并发清理:用户线程和垃圾回收线程同时进行。这个时候有新增对象会被标记.

2021-11-04 10:13:31 61

原创 SkyWalking

1. skywalking是什么对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如:如何串联整个调用链路,快速定位问题? 如何理清各个微服务之间的依赖关系? 如何进行各个微服务接口的性能分折? 如何跟踪整个业务流程的调用处理顺序?skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器。skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)

2021-09-13 17:04:33 1627

原创 测试流程简介

测试人员并不是一提需求就立马进行功能压测,而是先进行如下步骤:需求分析,明确定义性能指标 基于性能指标,定位到实际的性能场景以及测试数据的量级 准备脚本,其中包括单业务和业务链 执行脚本,在此期间需要关注指标的变化如:吞吐量,相应时间等 性能诊断,排查影响指标的因素如:内存,cpu百分比,gc,机器内存等 生成测试报告目前常用的自动化WebUI:基于Selenium来实现,支持java和python语言 AppUI:基于Appium渗透测试:只关联到信息安全的业务,发展方向比较受

2021-08-06 22:23:44 63

原创 logback遇上springclound所踩的坑

最近在别人基础上写代码,但是发现一个框架中写了好多日志输出的配置文件,比如logback-dev.xml,logback-beta.xml,logback-prod.xml,其实总结起来就是 除了日志输出目录不同外,其余的全部相同。于是呼我就开始了优化。思想如下:1.springboot项目默认便是logback日志框架,默认配置文件是logback-spring.xml【优点:该名称日志文件,是默认加载的,不用配置logging.config属性,且加载顺序是在属性配置文件之后加载,也就是说,logb

2021-05-11 11:38:30 519

原创 springboot理解

经常用springboot,但是所谓知其然,知其所以然。所以就慢慢整理一下自己所了解到的吧。springboot对于我们而言就好比是脚手架,便于我们迅速的进行开发。那它又是如何运行的呢?听我娓娓道来。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@AutoConfigurationPackage@Import({AutoConfigurationImportSelect

2021-03-25 11:49:22 101

原创 算法集锦

二分查找 /** * * @param arr 已经排好序的数据 * @param key 要查询的数值 * @return */ public static int halfsearch(int []arr,int key){ int begin = 0; int end= arr.length-1; while(begin<=end){ int mid =

2021-03-15 17:22:22 51

原创 RocketMQ整理

以公平锁为例1、ReentrantLock.lock 调用acquire(1); 1.1 如果当前状态为0且队列中没有等待的线程(头尾执行都是null),则将当前线程的状态state修改成1,同时将执行线程设置成自己,返回true加锁成功 1.2 如果当前执行线程就是自己,则state值累加1 返回加锁成功 1.3 除上述两者情况返回false,加锁失败2、如果加锁失败 2.1:判断当前是否有队列,如果没有则构造一个空的头结点A 2.2:当前线程封装成node结点B,入...

2020-12-22 18:29:57 54

原创 Spring源码心得

Spring所有的管理都是基于IOC容器的,Ioc容器中管理的都是一些bean,那么这些bean是如何来的呢?beanDefinitonReader:负责读取有关bean的配置说明,如 xml配置bean需要扫描的包路径,又或者是 @annotation 方式; beanDefinitionScan:负责在指定的包路径下,扫描出满足条件的bean类; beanDefinitionRegistry:负责将扫描出来的bean类,注册到一个统一的地方,我们叫做一级缓存,beanDefinitionMap;

2020-11-04 18:16:40 140

原创 Git语法整理

1. git 与 svn 的大致区别?答:s v n 是集中式的,如果远程服务挂掉,那么本地无法切换分支以及比对代码;git是分布式的,可以有多个远程仓库,它会从远程仓库同步分支信息到本地仓库,所以即使远程挂掉,也可以提交到本地,比对代码,切换分支等。2. git 实现方式?答:git 一旦有文件变动,就会产生新的文件,来记录。 git hash-object -w 文件名 (文件add或者commit 的时候相当于执行了,该命令,根据内容寻址的方式,将整体文件内容输出成一个字符串...

2020-11-02 18:28:56 61

原创 Redis心得-01

redis是单线程的,内部是有队列来顺序执行命令的。qps 大约是10w/s. 对象存储。我们可以通过 set key value 将对象序列化成json对象【注意:s t r对象不能太大;如果频繁获取以及修改对象值,则效率降低】 mset key value:如学生id=1,则 msetstu:1:name niuypstu:1:age 28; hmset key 则可以维护整个表:如 hmset stustu:1:name niuypstu:1:age 28; 分布式锁:setn...

2020-09-13 23:11:02 92

原创 Mysql锁机制理解

第一步:创建表CREATE TABLE `test_transaction` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) DEFAULT NULL,`age` INT(11) DEFAULT NULL,`height` INT(11) DEFAULT NULL,`score` INT(11) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREM

2020-07-30 16:17:22 117

原创 Mysql入门需要懂的数据结构-01

Mysql常用表数据结构介绍(红黑树、B树、B+树、Hash表)

2020-07-30 09:53:53 140

原创 RabblitMq使用心得

Direct模式下,需要交换机exchange与路由routkey完全匹配,才能将消息路由到队列,如果routkey不匹配,则默认消息丢失。 Direct模式,可以有多个消费者共享交换机,路由ke y,队列信息,此时消息会被发送到队列,而多个消费者同时从这个队列获取消息 Direct模式下,如果不同的队列queue,使用了相同的交换机名称,路由key,那么生产者发送的消息,将会同时分发到不同的队列上,而且消息体一致,类似于广播模式。 spring boot + rabbitmq2.2.4 ,默认每个消

2020-07-08 14:35:02 400

原创 Linux排查cpu占用

1.top查看当前耗资源的进程2.ps -mp pid -o THREAD,tid,time查看当前进程下哪些线程耗cpu高3.printf “%x\n” 6766将上面的耗cpu的线程号转成16进制4.jstack pid |grep tid查看当前耗资源的线程是什么5.jstat -gcutil查看当前GC情况6.jstack -l 6764 >> jstack...

2019-10-23 10:29:53 76

转载 通过配置tomcat实现项目免部署

对于一些比较大的项目,比如说使用了EXTJS这种重量级UI框架的项目,在部署的时候,eclipse会卡崩的,所以可以通过配置tomcat来实现免部署,直接运行即可:首先找到tomcat的localhost目录:D:\VIP\tomcat\tomcat7_2014\conf\Catalina\localhost在目录下新建一个XML文件,文件名是你要项目的项目名,然后在文件中添加下面的代码:

2015-11-01 20:51:10 262

空空如也

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

TA关注的人

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