- 博客(244)
- 资源 (5)
- 收藏
- 关注
转载 mysql怎么实现事务
文章目录1. 开篇2. redo log 与 undo log介绍1. redo log2. undo log3. mysql锁技术以及MVCC基础1. mysql锁技术2. MVCC基础4. 事务的实现1. 原子性的实现1.1 undo log 的生成1.2 根据undo log 进行回滚2. 持久性的实现2.1 redo-log生成3. 隔离性实现4. 一致性的实现5. 总结参考文档1. 开篇相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离
2021-04-13 09:23:47 2033 2
原创 0120-分析GC日志
文章目录1. GC日志参数2. GC日志格式1. GC分类2. GC日志分类3. GC日志剖析4. MinorGC日志分析5. MajorGC日志分析3. GC日志分析工具1. GC日志参数-verbose:gc 输出gc日志信息,默认输出到标准输出-XX:+PrintGC 等同于-verbose:gc 表示打开简化的GC日志-XX:+PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志,并在进程退出时输出当前内存各区域分配情况-XX:+PrintGCTimeStamps 输出G
2021-04-07 23:12:59 1229
原创 0110-JVM运行时参数
文章目录1. JVM参数选项类型1. 类型一:标准参数选项2. 类型二:-X参数选项3. 类型三:-XX参数选项2. 添加JVM参数选项1. 运行jar包2. 通过Tomcat运行war包3. 常用的JVM参数选项1. 打印设置的XX选项及值2. 堆、栈、方法区等内存大小设置3. OutofMemory相关的选项4. 垃圾收集器相关的选项5. GC日志相关选项1. JVM参数选项类型1. 类型一:标准参数选项特点比较稳定,后续版本基本不会变化以-开头选项运行java或者java -help
2021-04-07 22:26:36 1242
原创 0100-JVM监控及诊断工具-命令行篇
文章目录1. 监控的意义2. jps查看正在运行的java进程1. 基本情况2. 基本用法3. jstat查看jvm统计信息1. 基本情况2. 基本语法2.1 options2.2 interval2.3 count2.4 -t2.5 -h3. 补充4. jinfo实时查看和修改JVM配置参数1. 基本情况2. 基本语法3. 拓展5. jmap导出内存映像文件&内存使用情况1. 基本情况2. 基本语法3. 使用3.1 使用1-导出内存映像文件3.2 使用2-显示堆内存的相关信息3.3 其它做用4.
2021-04-07 21:27:41 1132
原创 0090-再谈类的加载器
文章目录1. 概述2. 复习:类的加载器分类1. 引导类加载器2. 扩展类加载器3. 系统类加载器4. 用户自定义类加载器3. 测试不同的类加载器4. ClassLoader 源码解析ClassLoader 的主要方法2. SecureClassLoader 与 URLClassLoader3. ExtClassLoader 与 AppClassLoader4. Class.forName() 与 ClassLoader.loadClass()5. 双亲委派模型1. 定义与本质2. 优势与劣势3. 破
2021-04-07 21:10:48 1154
原创 0080-类的加载过程详解
文章目录1. 概述2. 过程一:Loading( 加载)1. 加载完成的操作2. 二进制流的获取方式3. 类模型与 Class 实例的位置4. 数组类的加载3. 过程二:Linking( 链接) 阶段环节 1:链接阶段之 Verification ( 验证)环节 2:链接阶段之 Preparation ( 准备)环节 3:链接阶段之 Resolution ( 解析)4. 过程三:Initialization( 初始化) 阶段5. 过程四:类的 Using( 使用)6. 过程五:类的 Unloading(
2021-04-07 21:08:55 1117
原创 0070-字节码指令集与解析举例
文章目录1. 概述1. 执行模型2. 字节码与数据类型3. 指令分类2. 加载与存储指令1. 复习:再谈操作数栈与局部变量表2. 局部变量压栈指令3. 常量入栈指令4. 出栈装入局部变量表指令3. 算术指令1. 所有算数指令2. 比较指令的说明4. 类型转换指令1. 宽化类型转换2. 窄化类型转换5. 对象的创建与访问指令1. 创建指令2. 字段访问指令3. 数组操作指令4. 类型检查指令6. 方法调用与返回指令1. 方法调用指令2. 方法返回指令7. 操作数栈管理指令8. 控制转移指令1.
2021-04-07 21:07:46 1658
原创 0060-Class文件结构
文章目录1. 虚拟机的基石:Class 文件2. Class 文件结构2.1 魔数:Class2.2 Class 文件版本号2.3 常量池:存放所有常量2.4 访问标识2.5 类索引、父类索引、接口索引集合2.6 字段表集合2.7 方法表集合2.8 属性表结合3. 总结1. 虚拟机的基石:Class 文件字节码文件里是什么?源代码经过编译器编译之后便会生成一个字节码文件,字节码是一种二进制的类文件,它的内容是 JVM 的指令,而不像 C、C++ 经由编译器直接生成机器码jvm指令由执行引擎再
2021-04-07 21:05:49 1110
原创 0051-为什么标记的时候需要STW
文章目录1. Serial 和 ParNew 在进行垃圾回收时,为什么需要stop the world?不stop thw world 可以吗?2. CMS 进行垃圾回收的时,为什么有些阶段工作线程可以不停止?2.1 并发标记阶段2.2 并发清理阶段2.3 CMS 不停止工作线程,会有哪些问题?1. Serial 和 ParNew 在进行垃圾回收时,为什么需要stop the world?不stop thw world 可以吗?在进行标记的时候,如果工作线程不停止的话,那么肯定会有新对象生成。这些对象是
2021-04-07 21:01:01 2352
原创 检测主从复制数据是否一致及恢复
文章目录1. 使用工具 percona-toolkit2. 创建账号3. 创建校验表4. 执行命令5. 数据恢复6. 常用命令1. 使用工具 percona-toolkitbin/pt-table-checksum用来检测主从数据的一致性bin/pt-table-sync用来恢复主从数据离线安装教程2. 创建账号主库执行-- centos0010是主库的host(ip也行)GRANT UPDATE,INSERT,DELETE,SELECT, PROCESS, SUPER, REPLICA
2020-11-16 16:55:51 1763
原创 离线安装percona-toolkit
文章目录1. 安装DBI2. 安装DBD3. 安装percona toolkit安装包1. 安装DBItar -xzf DBI-1.636.tar.gzperl Makefile.PLmakemake testmake install2. 安装DBDtar -xzf DBD-mysql-4.038.tar.gzperl Makefile.PL --mysql_config={path}makemake testmake install查找mysqld的位置信息find
2020-11-16 16:45:41 1982
原创 0050-垃圾回收器
文章目录1. 基础定义1.1 按线程数分1.2 按工作模式分1.3 性能指标2. 垃圾回收器概述3. Serial-串行回收器3.1 Serial3.2 Serial Old4. ParNew-并行回收器5. Parallel-吞吐量优先回收器5.1 Parallel Scavenge5.2 Parallel Old6. CMS-低延迟回收器7. G1-区域化分代式回收器8. GC总结9. GC日志分析1. 基础定义1.1 按线程数分按线程数分,垃圾回收器可以分为串行或者并行(指的是垃圾回收的线程)
2020-06-29 15:31:04 2122
原创 0040-垃圾收集算法
文章目录1. 前言2. 标记算法2.1 引用计数算法2.2 可达性分析算法3. 对象的finalization机制4. 垃圾清除阶段算法4.1 标记-清除(Mark-Sweep)4.2 复制算法(Copying)4.3 标记-压缩算法(Mark-Compact)4.4 三种算法的比较5. 分代收集算法6. 补充算法6.1 增量收集算法6.2 分区算法1. 前言垃圾回收分为两个阶段,首先确认哪些对象是垃圾——标记阶段,其次是垃圾确认以后的回收——回收阶段2. 标记算法2.1 引用计数算法1. 简述
2020-06-29 15:28:35 2101
原创 0036-StringTable
文章目录1. String的基本特性2. String的内存分配3. String的基本操作4. 字符串拼接操作5. intern()的使用1. String的基本特性String的基本特性1. String字符串的定义方式 String s1 = "atguigu";// 字面量定义方式 String s2 = new String("hello"); 2. String声明为final的,不可被继承3. String实现了Serializable接口:表示字符串是支持
2020-06-03 16:15:14 2260
原创 0035-对象实例化步骤,内存布局,访问定位
文章目录1. 实例化步骤2. 内存布局3. 对象访问定位1. 实例化步骤对象创建的方式1. new2. Class的newInstance()3. Contructor的newInstance(xxx)4. 使用clone5. 使用反序列化6. 第三方库Objenesis对象的创建步骤1. 判断对象对应的类是否加载,链接,初始化,没有加载,使用双亲委派机制加载类2. 为对象分配内存 不同的垃圾收集器会导致,内存规整或不规整,不同的内存结构,会有不同的分配方
2020-06-03 16:14:35 2141
原创 0034-方法区
文章目录1. 栈、堆、方法区的交互关系2. 方法区的理解3. 方法区的演进4. 设置方法区大小5. 方法区的内部结构5.1 类型信息5.2 域(Field)信息5.3 方法(Method)信息5.4 类变量5.5 运行时常量池 & 常量池6. 方法区的演进细节7. 方法区的垃圾回收1. 栈、堆、方法区的交互关系线程共享的角度1. 线程共享区域:堆和方法区,两者都会有OutOfMemoryError和GC2. 线程独占区域:虚拟机栈,本地方法栈,程序计数器,两个栈会出现StackOve
2020-06-03 16:14:03 2388
原创 0033-堆
文章目录1. 简述2. 堆空间的设置3. 年轻代与老年代4. 对象的分配过程5. Minor GC/ Major GC/ Full GC6. 堆空间分代思想7. 对象提升规则8. TLAB(Thread Local Allocation Buffer)9. 常用参数总结10. 堆是分配对象的唯一选择吗1. 简述1. 堆是jvm管理的一块最大内存空间,且一个jvm只存在一个堆内存2. 堆空间被所有的线程共享,同时也可以划分线程私有的缓冲区(Thread Local Allocation Buffer,
2020-06-03 16:13:10 2072
原创 0032-虚拟机栈
文章目录1 简介2 栈配置3 栈帧3.1 局部变量表(local variables)3.2 操作数栈(Operand Stack)3.3 动态链接(Dynamic Linking)3.4 方法返回地址(Return Address)3.5 一些附加信息4. 栈的相关面试题1 简介java虚拟机栈,早期也称为java栈,每个线程在创建时,都会创建一个虚拟机栈,其内部包含一个个栈帧(Stack Frame),对应一次次的方法调用,虚拟机栈是线程私有的,没有GC,有可能会出现StackOverFlowErr
2020-06-03 16:12:30 2261
原创 0031-程序计数器
文章目录1 简介2 作用3 举例4 常见问题1 简介1. 存储空间很小的内存空间,运行速度最快的存储区域2. 程序计数器是线程私有的,生命周期与线程的生命周期一致3. 任何一个线程同一个时间节点都只有一个方法执行,这个方法称为当前方法,程序计数器会存储当前正在执行java方法的jvm指令地址,如果是native方法,则是未指定值(undefined)4. 它是唯一一个在java虚拟机中没有规定任何OutOfMemoryError的情况2 作用程序计数器会存储当前正在执行java方法的
2020-06-03 16:02:33 2178
原创 0030-内存概述
文章目录概览图1. 内存角色1.1 方法区1.2 堆区1.3 虚拟机栈1.4 程序计数器1.5 本地方法栈2. 线程共享性概览图1. 内存角色内存中主要涉及到的角色有方法区,堆,虚拟机栈,程序计数器,本地方法栈1.1 方法区方法区主要存储加载的class类元数据,包括类型信息,运行时常量池(不包含字符串常量),域信息,方法信息等1.2 堆区堆区又分为新生代和老年代,新生代又分为Eden,s0,s1区,是垃圾回收的重点区域,主要存储new出来的对象,还有几个特殊的对象,Class对象及内部的
2020-06-03 16:01:47 2111
原创 0020-类的加载
文章目录1. 内存结构概述2. 类的加载过程2.1 类加载器的作用2.2 类加载器角色2.3 类的加载过程1. 加载2. 链接3. 初始化3. 类加载器的分类3.1 引导类加载器(Bootstrap ClassLoader)3.2 自定义类加载器(User-Defined ClassLoader)3.2.1 扩展类加载器(Extention ClassLoader)3.2.2 应用程序类加载器(Application ClassLoader)3.2.3 自定义加载器4. ClassLoader的使用说明5.
2020-06-03 16:01:02 2080
原创 wechat_0010-企业微信,把自己的项目接入企业微信
1、一个可以公网访问的接入项目2、需要一个企业微信账号 企业微信官网:https://work.weixin.qq.com/3、策略文件 报illegal key size异常时见 博客:http://www.cnblogs.com/shirui/p/7411735.html4、微信的加密解密包 下载链接:http://qydev.weixin.qq.com/java.zip5、企业微信api 链接:https://work.weixin.qq.com...
2020-05-12 17:54:12 5418 1
原创 0000-SpringCloud微服务搭建
1. 前言这篇文章整理的是SpringCloud的全家桶中的技术Demo采用的是SpringCloud F版所有的Dmeo代码在GitHup上都有 传送门SpringCloud目前很多项目已经停更,但这里不会出现替代技术解决方案2. 目录1. Eureka 0010-Eureka理论知识 0011-Eureka服务端和客户端单节点搭建 0012-Eureka Server集群...
2020-04-17 09:13:29 2336
原创 0083-Zipkin耗时分析
文章目录1. 搭建Zipkin Server2. 微服务改造2.1 pom依赖添加2.2 yml配置2.3 测试1. 搭建Zipkin ServerSpringCloud F版以后可以直接下载Server不需要自己搭建了下载地址下载jar即可启动java -jar zipkin-server-2.12.9-exec.jar 2. 微服务改造2.1 pom依赖添加为每个需...
2020-04-13 09:29:02 2650
原创 0082-整合ELK统一存储与查询
文章目录1. 背景2. ELK组成3. 日志架构4. 搭建4.1 统一日志输出4.1.1 pom依赖4.1.2 logback.xml配置4.1.3 redis日志查看4.2 ElasticSearch安装4.2.1 下载路径4.2.2 配置环境变量4.2.3 启动4.3 Kibana安装4.3.1 下载路径4.3.2 配置环境变量4.3.3 启动4.4 Logstash安装4.4.1 下载路径4...
2020-04-13 09:28:28 2325
原创 0081-开启Sleuth链路追踪
文章目录1. pom依赖2. 打印日志3. 日志信息1. pom依赖从网关开始,在每个微服务节点添加Sleuth依赖<!--链路追踪--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starte...
2020-04-13 09:27:55 2344
原创 0080-Sleuth链路追踪理论
文章目录1. 背景2. 术语3. 链路追踪的几个步骤3.1 开启链路追踪3.2 日志查询与分析3.3 耗时分析1. 背景复杂的微服务架构,每一个前端请求都会形成复杂的分布式调用链路,每个环节调用失败或者延时过高都有可能导致请求失败,所以监控全链路的调用的就变得额外重要,这可以帮我们实现快速定位失败和性能分析2. 术语TraceID: 一次前端请求的发起会产生一个TraceIDSpanI...
2020-04-13 09:26:46 2484
原创 0071-Bus实现方式-RabbitMQ
文章目录1. 启动Rabbit队列2. 增加Rabbit依赖3. yml配置3. 主启动类4. 测试5. 配置方式5.1 刷新在微服务上5.2 刷新在Config Server上6. 刷新范围1. 启动Rabbit队列2. 增加Rabbit依赖<dependencies> <dependency> <groupId>org.spri...
2020-04-13 09:25:59 2420
原创 0070-Bus理论
文章目录1. 什么是消息总线2. 实现方式1. 什么是消息总线在微服务架构钟,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统钟所有微服务实例都连接上来,由于该主题中长生的消息会被所有实例监听和消费,所以我们称它为消息总线。在总线上的各个实例都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息,例如配置信息的变更或者其他一些管理操作等。由于消息总线在微服务架构中被...
2020-04-13 09:24:40 2308
原创 0063-Conifg Server集群搭建
文章目录1. 前言2. Config Server集群搭建2.1 pom依赖2.2 yml配置2.3 主启动类2.4 测试3. Config Client搭建3.1 pom依赖3.2 bootstrap.yml配置3.3 主启动类3.4 测试1. 前言所有的微服务提供者都是Config Client,都需要从Config Server获取配置,所以Config Server的访问压力会很大,需...
2020-04-13 09:23:39 2406
原创 0062-Config Client搭建
文章目录1. 前言2. Client端搭建2.1 pom依赖2.2 bootstrap.yml配置文件2.3 主启动类3. 测试1. 前言上一节Config Server已经获取到远程的配置文件,Client端需要连上Server端,从Server端获取配置,真实环境中所有的微服务都是Client端。2. Client端搭建2.1 pom依赖<dependencies> ...
2020-04-13 09:23:02 2334
原创 0061-Config Server搭建
文章目录1. 前言2. git建立配置文件3. 搭建Config Server3.1 pom依赖3.2 yml配置3.3 主启动类4. git文件的访问方式1. 前言Config Server负责跟配置保存方通信例如git,将远程服务器上的配置克隆到本地。2. git建立配置文件springcloudconfig\shared目录下建立config-client-dev.ymlse...
2020-04-13 09:20:58 2349
原创 0060-Config理论
文章目录1. 背景2. config是啥3. config能干嘛1. 背景微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml...
2020-04-13 09:09:36 2330
原创 0053-Zuul使用过滤器
文章目录1. 过滤器1. 过滤器/** * Created by rongyaowen * on 2019/8/22. * zuul的第二个功能,统一过滤 * 请求过来以后,首先通过tomcat的过滤器,如果是对DispatcherServletd的请求,那么会通过springmvc的拦截器 * 如果是路由,则不会通过拦截器,会经过ZUUL的过滤器 */@Componentpu...
2020-04-12 21:22:57 2299
原创 0052-Zuul配置负载均衡算法和Hystrix
文章目录1. Zuul的负载均衡1.1 默认配置1.2 修改算法配置2. 熔断配置1. Zuul的负载均衡1.1 默认配置Zull默认结合Ribbon实现负载均衡,Ribbon默认的负载均衡算法是ZoneAvoidanceRule1.2 修改算法配置配置方式和Ribbon的消费者中配置一样,也可以自定义随机算法@Configurationpublic class RibbonClie...
2020-04-12 21:21:48 3139
原创 0051-Zuul搭建
文章目录1. pom依赖2. yml配置3. 主启动类4. 测试1. pom依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-n...
2020-04-12 21:21:08 2334
原创 0050-Zuul理论知识
文章目录1. Zuul2. 功能2.1 路由导航2.2 负载均衡2.3 熔断2.4 过滤器1. Zuulzull:客户端->ngix负载均衡->zull->具体服务相当于在服务调用之前包了一层,可以起到路由的作用,也可以起到过滤作用。2. 功能2.1 路由导航将微服务的提供者放在内网环境,外部只能通过zuul提供的路由进行访问,zuul可以隐藏微服务的真实名称2.2...
2020-04-12 21:20:25 2283
原创 0045-一个Dashbord页面监控多个消费者
文章目录1. 现状2. 改造Dashbord项目2.1 pom依赖2.2 yml配置2.3 主启动类2.4 测试1. 现状目前Hystrix项目可以监控消费者,但是每一个消费者就需要启动一个监控页面,很不方便,可以通过Turbine实现一个监控页面,监控多个消费者2. 改造Dashbord项目2.1 pom依赖增加turbine的依赖,其它和单机dashbord一致<depend...
2020-04-12 21:19:15 2425
原创 0044-Hystrix Dashbord监控单机Feign
文章目录1. Dashbord监控项目2. 改造Feign项目2.1 pom增加依赖2.2 yml配置2.3 主启动类2.4 测试1. Dashbord监控项目这个项目的搭建和监控ribbon的一样2. 改造Feign项目2.1 pom增加依赖feign集成了Hystrix的依赖,但是不是starter,监控需要引入starter <dependency> <...
2020-04-12 21:18:28 2311
原创 0043-Hystrix Dashbord监控单机Ribbon
文章目录1. 说明2. 搭建Dashbord仪表盘项目2.1 pom依赖2.2 yml配置2.3 主启动类2.4 测试3 改造Consumer3.1 增加依赖3.2 yml配置3.3 测试4. 监控项目1. 说明Hystrix Dashbord是一个监控模块,用来监控Hystrix的各项指标。这边文章使用的spring cloud的Finchley版本,Hystrix的的调用信息不再是http...
2020-04-12 21:17:23 2265
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人