- 博客(46)
- 收藏
- 关注
原创 Mysql性能优化
慢查询日志,顾名思义,就是查询花费大量时间的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。如何开启,我们稍后再说。1.3.2.1.1慢查询基础-优化数据访问查询性能低下最基本的原因是访问的数据太多。大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。
2023-11-01 12:37:55
165
原创 MySQL中的锁
IS、IX锁是表级锁,它们的提出仅仅为了在之后加表级别的S锁和X锁时可以快速判断表中的记录是否被上锁,以避免用遍历的方式来查看表中有没有上锁的记录。
2023-11-01 12:31:00
41
原创 事务和事务的隔离级别
1、如果被访问版本的trx_id属性值与ReadView中的creator_trx_id值相同,意味着当前事务在访问它自己修改过的记录,所以该版本可以被当前事务访问。2、如果被访问版本的trx_id属性值小于ReadView中的min_trx_id值,表明生成该版本的事务在当前事务生成ReadView前已经提交,所以该版本可以被当前事务访问。
2023-11-01 12:29:26
46
原创 数据库基础知识
在磁盘设备上,通过B+树可以有效的存储数据;所有记录都存储在叶子节点上,非叶子(non-leaf)存储索引(keys)信息;而且记录按照索引列的值由小到大排好了序。B+树含有非常高的扇出(fanout),通常超过100,在查找一个记录时,可以有效的减少IO操作;*扇出:是每个索引节点(Non-LeafPage)指向每个叶子节点(LeafPage)的指针;*扇出数 = 索引节点(Non-LeafPage)可存储的最大关键字个数 + 1。
2023-11-01 12:28:00
50
原创 计算机网络梳理
OSI模型指的是Open System Interconnection Reference Model,即开放式系统互联模型。它是世界上第一个试图在世界范围内规范网络标准的框架OSI无实际可行方案罗伯特.卡恩和文顿.顿瑟夫提出的TCP协议全称:*,用户数据报协议**定义:在传输层提供直接发送报文(Datagram)的能力。Datagram是数据传输的最小单位。发送报文,无法拆分数据为什么不直接调用IP协议?IP协议只能把数据从一个网络接口发送到另一个网络接口,无法寻址到应用。
2023-07-15 11:38:48
128
原创 深入理解Ribbon
ribbon支持非常灵活的配置,用的最多的就是配置他的负载均衡规则,比如:默认ZoneAvoidanceRule 满足不了我们的要求,我们想把这个规则改为随机,ribbon支持细粒度的配置,加入内容中心同时调用两个微服务,那么调用第一个微服务的时候我们可以用随机方式,第二种我们用默认的配置,好这样我们围着这个场景来看一下怎样配置。先看Java代码的配置。
2023-07-15 11:23:11
115
原创 深入讲解Feign
Feign是Netflix开源的声明式HTTP客户端feign默认是不打印任何日志的,但是我们希望打印一些日志信息。比如调用的时间。级别打印日志内容NONE(默认值)不记录任何日志BASIC仅记录请求方法、URL、响应状态代码以及执行时间HEADERS记录BASIC级别的基础上,记录请求和响应的headerFULL记录请求和响应的header、body和元数据方式一:让父子上下文ComponentScan重叠(强烈不建议使用)/*** 日志级别。
2023-07-15 11:15:14
316
原创 seata使用和源码分析
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。Seata 是什么概念:Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT模式:提供无侵入自动补偿的事务模式XA模式:支持已实现XA接口的数据库的XA模式TCC模式:TCC则可以理解为在应用层面的2PC,是需要我们编写业务逻辑来实现。SAGA模式。
2023-07-15 11:11:44
330
原创 Nacos作为配置中心
配置文件的问题:配置文件的数量会随着服务的增加持续递增单个配置文件无法区分多个运行环境配置文件内容无法动态更新,需要重启服务引入配置文件:刚才架构就会成为这样。是由配置中心统一管理统一配置文件管理提供统一标准接口,服务根据标准接口自行拉取配置支持动态更新的到所有服务。
2023-07-15 11:03:48
260
原创 LoadBalance
// 服务列表@Override/*** 使用随机数获取服务* @return*/System.out.println("进来了");System.out.println("进行随机选取服务");// 随机算法// 设置全局负载均衡器// 指定具体服务用某个负载均衡//)@Bean。
2023-07-15 11:02:39
134
原创 分布式事务
是一个完整的逻辑处理工作单元Atomaticity:原子性Consistency:一致性Isolation:隔离性Durability:持久性(日志先行)执行业务逻辑涉及到多个服务、数据库的事务其实就是将对同一数据库事务的概念扩大到了对多个数据库的事务目的是为了保证分布式系统中的AP,TM,RM之间都有一些交互事情做了无法后悔往回去调太麻烦了,不去做进行彩排,关键是必须有一种提交或回滚事务的(全部提交或全部回滚)三阶段基本没有人用。
2023-07-15 10:47:42
60
原创 九大分布式ID生成策略
人为原因,把系统环境的时间改了。有时候不同的机器上需要同步时间,可能不同机器之间存在误差,那么可能会出现时间回拨问题。始终回拨可能会产生冲突,后面产生的和前面产生的重复了。当前时间小于上一次的时间戳直接抛出异常定义一个集合,维护最近这500ms的一组信息,想去生成的话就找到最大的指针就行别让所有服务器都出问题就可以没有绝对的标准,不一定就是100ms,500ms,自己随机应变,知道方案就行。
2023-07-14 22:09:53
282
原创 并发编程(三)
CountDownLatch就是JUC包下的一个工具,整个工具最核心的功能就是计数器。如果有三个业务需要并行处理,并且需要知道三个业务全部都处理完毕了。需要一个并发安全的计数器来操作。CountDownLatch就可以实现。给CountDownLatch设置一个数值。可以设置3。每个业务处理完毕之后,执行一次countDown方法,指定的3每次在执行countDown方法时,对3进行-1。主线程可以在业务处理时,执行await,主线程会阻塞等待任务处理完毕。
2023-07-14 21:35:33
95
原创 并发编程(二)
首先ThreadPoolExecutor中,一共提供了7个参数,每个参数都是非常核心的属性,在线程池去执行任务时,每个参数都有决定性的作用。但是如果直接采用JDK提供的方式去构建,可以设置的核心参数最多就两个,这样就会导致对线程池的控制粒度很粗。所以在阿里规范中也推荐自己去自定义线程池。手动的去new ThreadPoolExecutor设置他的一些核心属性。自定义构建线程池,可以细粒度的控制线程池,去管理内存的属性,并且针对一些参数的设置可能更好的在后期排查问题。
2023-07-14 21:31:33
147
原创 并发编程(一)
不同的硬件和不同的操作系统在内存上的操作有一定差异的。Java为了解决相同代码在不同操作系统上出现的各种问题,用JMM屏蔽掉各种硬件和操作系统带来的差异。让Java的并发编程可以做到跨平台。JMM规定所有变量都会存储在主内存中,在操作的时候,需要从主内存中复制一份到线程内存(CPU内存),在线程内部做计算。然后再写回主内存中(不一定!原子性的定义:原子性指一个操作是不可分割的,不可中断的,一个线程在执行时,另一个线程不会影响到他。也就是说让这个操作只能一步到位,不给出现线程安全的机会。
2023-07-14 21:29:40
172
原创 Java对象内存模型
新生代中的可用内存:复制算法用来担保的内存为9:1可用内存中Eden:S1区为8:1即新生代中Eden:S1:S2 = 8:1:1现代的商业虚拟机都采用这种收集算法来回收新生代,IBM公司的专门研究表明,新生代中的对象大概98%是“朝生夕死”的。
2023-07-14 21:26:36
106
原创 JVM走进类加载
else {//此方法负责将二进制的字节码转换为Class对象// 读取class文件try {= -1) {Class<?try {自定义类加载器的核心在于对字节码文件的获取,如果是加密的字节码则需要在该类中对文件进行解密。由于这里只是演示,我并未对class文件进行加密,因此没有解密的过程。
2023-07-14 21:25:32
45
原创 垃圾收集器浅析
-version-help-server-cp(classpath)-Xint 解释执行-Xcomp 第一次使用就编译成本地代码-Xmixed 混合模式,JVM自己来决定a.Boolean类型格式:-XX:[+-]<name> +或-表示启用或者禁用name属性比如:-XX:+UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器 -XX:+UseG1GC 表示启用G1类型的垃
2023-07-14 21:10:37
44
原创 深入运行时数据区
String中的intern方法是一个 native 的方法,当调用 intern方法时,如果常量池已经包含一个等于此String对象的字符串(用equals(object)方法确定),则返回池中的字符串。说白了就是类文件被类装载器装载进来之后,类中的内容(比如变量,常量,方法,对象等这些数据得要有个去处,也就是要存储起来,存储的位置肯定是在JVM中有对应的空间)字符串作为最常用的数据类型,为减小内存的开销,专门为其开辟了一块内存区域(字符串常量池)用以存放。*那一个线程执行的状态如何维护?
2023-07-14 20:52:39
49
原创 JVM垃圾回收算法
所有现代的标记-整理回收器均使用滑动整理,它不会改变对象的相对顺序,也就不会影响赋值器的空间局部性。复制式回收器甚至可以通过改变对象布局的方式,将对象与其父节点或者兄弟节点排列的更近以提高赋值器的空间局部性。
2023-07-14 20:46:08
169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人