- 博客(39)
- 收藏
- 关注
原创 02| JVM堆中垃圾回收的大致过程
如果一直在创建对象,堆中年轻代中Eden区会逐渐放满,如果Eden放满,会触发minor GC回收,创建对象的时GC Roots,如果存在于里面的对象,则被视为非垃圾对象,不会被此次gc回收,就会被移入到survivor区中的s0中,然后给对象的分代年龄加1;不存在于gcroot中的视为垃圾对象,会被回收掉;当老年代中的空间放满后会触发Full GC操作。
2024-02-29 21:27:17
591
原创 02|JVM内存模型
并将其转换为可以执行的Java类。类加载器子系统包括三个主要的类加载器:Bootstrap ClassLoader(引导类加载器)、Extension ClassLoader(扩展类加载器)和 Application ClassLoader(应用程序类加载器)。它们负责从不同的位置加载类文件,
2024-02-29 21:07:24
765
原创 01|JVM类加载机制
自自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法,所以我们自定义类加载器主要是重写findClass方法实现步骤:● 继承ClassLoader(ClassLoader默认会设置父加载器为appClassLoader)● 重写findClass● 指定自定义加载器加载的目录。
2024-02-29 16:20:19
996
原创 06|Mysql内部组件结构
客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是由连接器完成的1、如果用户名或密码不对,你就会收到一个"Access denied for user"的错误,然后客户端程序结束执行。2、如果用户名密码认证通过,连接器会到权限表里面查出你拥有的权限。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。
2024-02-28 16:27:22
878
原创 05|MVCC原理
MVCC(Multi-Version Concurrency Control)机制来保证的,对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。
2024-02-28 16:19:52
388
原创 05|锁优化
● 尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁● 合理设计索引,尽量缩小锁的范围● 尽可能减少检索条件范围,避免间隙锁● 尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的sql尽量放在事务最后执行● 尽可能用低的事务隔离级别本质使用小粒度的锁。
2024-02-27 19:22:08
357
原创 04|事务性能优化
● 并发情况下,数据库连接池容易被撑爆● 锁定太多的数据,造成大量的阻塞和锁超时● 执行时间长,容易造成主从延迟● 回滚所需要的时间比较长● undo log膨胀● 容易导致死锁。
2024-02-26 23:57:56
532
原创 04|事务的持久性
MySQL 中的 Redo Log(重做日志)是一种事务日志,用于记录数据库引擎对数据的修改操作。Redo Log 的主要目的是提供数据恢复和持久性的支持,确保即使在发生系统崩溃等情况下,数据库也能够保持一致性。
2024-02-25 23:15:26
376
原创 04|事务的隔离级别
数据库的事务隔离越严格,并发副作用越小,但付出的代价也就越大,因为事务隔离实质上就是使事务在一定程度上“串行化”进行,这显然与“并发”是矛盾的。同时,不同的应用对读一致性和事务隔离程度的要求也是不同的,比如许多应用对“不可重复读"和“幻读”并不敏感,可能更关心数据并发访问的能力。查看当前数据库的事务隔离级别: show variables like ‘tx_isolation’;设置事务隔离级别:set tx_isolation=‘REPEATABLE-READ’;
2024-02-25 19:04:58
411
原创 03|count(*)查询优化
count(*)≈count(1)>count(字段)>count(主键 id)字段有索引,count(字段)统计走二级索引,二级索引存储数据比主键索引少,所以count(字段)>count(主键 id):count(*)≈count(1)>count(主键 id)>count(字段)字段没有索引count(字段)统计走不了索引, count(主键 id)还可以走主键索引,所以count(主键 id)>count(字段)
2024-02-25 13:16:45
414
原创 03|分页查询优化
主键连续且自增 & 结果按照主键排序理论上应该走主键索引, 为什么现在type是 all呢?● 查询第9w行数据开始的5条数据时属于深度分页。● limit 90000 5工作原理就是先读取前面90005行记录,舍弃前90000行记录,取5条想要的,● 查询行数越大,偏移量越大,性能越差。● 因此这条查询语句type 类型是all使用的全表扫描的方式没有单独的order by表示通过主键取排序, 并且我们可以看到主键是自增且连续。
2024-02-25 12:58:21
338
原创 03|Using filesort文件排序原理详解
用trace工具可以看到sort_mode信息里显示< sort_key, additional_fields >或者< sort_key, packed_additional_fields >对比两个排序模式,单路排序会把所有需要查询的字段都放到 sort buffer 中,而双路排序只会把主键 和需要排序的字段放到 sort buffer 中进行排序,然后再通过主键回到原表查询需要的字段。● 如果 字段的总长度小于max_length_for_sort_data ,那么使用 单路排序模式;
2024-02-25 01:09:56
518
原创 03|Order by与Group by优化
1、MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index效率高,filesort效率低。2、order by满足两种情况会使用Using index。- order by语句使用索引最左前列。- 使用where子句与order by子句条件列组合满足索引最左前列。3、尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。
2024-02-24 23:17:15
937
原创 01|Mysql联合索引&最左前缀原则
三个字段的排序:按照索引键的先后顺序维护;如果第一个字段就排好序了,后面的字段就不会再排序了,如果第一个字段都相等,那么就排第二个字段;只有第1行的sql走了索引,符合最左前缀原理。where语句中的查询。
2024-02-23 22:14:57
705
原创 ES报错:Invalid character in header content [“kbn-name“]
设置过服务名后重运行 bat文件,请求OK。
2023-11-15 09:54:22
325
转载 修改mysql数据库的用户名和密码
(适用于管理员或者有全局权限的用户重设其它用户的密码)进入命令行模式更改密码:mysql -u root -pEnter password:***mysql>use mysql; 选择数据库Database changedmysql> UPDATE user SET password=PASSWORD("新密码") WHERE user='你的用户名';mys...
2020-03-18 18:26:05
996
原创 1.9 计算机系统评价
性能评价指标:响应时间(用户角度)、吞吐率(管理员角度)MIPS = 指令条数 / 执行时间 X 10^6MFLOPS = 程序中的浮点操作上 / 执行时间 X 10^6成本售价成本部件成本直接成本毛利率功耗云端:电力成本终端:待机时间节能降耗 绿色计算、数据中心、存储解决功耗问题: 较小IT设备的功耗 ...
2020-03-15 22:58:41
202
原创 1.7局部性原理
两类型程序执行时间的90%都是在执行程序中的10%的代码时间局部性 如果一个信息项正在被访问,那么在近期它很有可能会被再次访问空间局部性 程序即将用到的信息很可能与目前正在使用的信息在空间是相邻或临近主要的三部分 处理,存储,时间 其中最能体现局部性原理的是存储器部分for (i = 0;i<n;i++){sum+=v[i] sum---...
2020-03-15 22:45:27
294
原创 1.6 CPU性能公式
CPU时间一个程序在CPU上运行的时间,不包括 I/O 时间时钟周期 系统的时间周期越短,相应的CPU性能就越好程序的时钟周期数 CPU时间 = 执行程序所需的时钟周期数 X 时钟周期时间时钟周期时间是时钟频率的倒数指令周期数 CPI 平均每条指令耗费的时钟周期数CPI = 执行程序所需的时钟周期数 / IC 其中 IC:所执行指令的条数程序执...
2020-03-15 22:34:29
5730
原创 1.5 Amdahl定理
Amdahl定理 Sn -- 系统加速比(Speed up)Tn -- 新执行的时间(Time new)Se -- 被改进部分的部件加速比(enhanced)Fe -- 被改进部分原执行时间占原来总时间的百分比(Fraction)To -- 原执行时间(Time old)改进前程序运行总时间可写为: To = To(1-Fe + F...
2020-03-15 22:24:21
320
原创 1.4 加快经常性事件
计算机追求的目标快 在规定的事件内完成对规律的表达如何加快? 加快经常性事件! 秘诀1:辨认经常性事件 秘诀2:找出加快的方法原理的应用CISC复杂指令系统 应用需要某类操作要加快,原来是由软件的子程序实现,后来就用新的指令来实现 例1 浮点计算子程序----->协处理器------>浮点指令 例2 MMX Comm...
2020-03-15 22:05:27
2131
原创 1.3.计算机系统结构设计的主要内容
发展历程1950s - 1960:计算机算术(Arithmetic)1970s - 1980中期:指令集(ISA)设计,特别是适用于编译器的ISA1990s:CPU 、内存系统、I/O系统、多处理器和网络的设计2000s:多核处理器设计、片上网络、并行编程模型、节能2010s:自适应系统/自组织结构/DNA计算/量子计算Yale Patt 计算机系统结构师的任务...
2020-03-15 21:50:22
533
原创 1.2.计算机系统结构的基础知识
三个概念物质、能量、信息三个人阿兰.图灵 奠定理论基础理论基础-图灵机处理(读写头)存储(无限长的带子)传输(带子的移动)只要对数据进行处理、存储、传输三种简单操作,就能解决一切可计算的数学问题冯.诺依曼 奠定结构基础五个部分S输入设备、输出设备、存储器、控制器、运算器戈登.摩尔 奠定物质基础芯片上晶体管数量每18-24个月翻一番...
2020-03-15 21:41:39
189
原创 1.1.计算机系统结构的定义
本课程的总图腾-------AIPSN金字塔"A"Accleration、Amdahl总目标:快!总原理:加快经常性事件量化原理: Amdahl定理 CPU性能公式 CPU时间 = IC X CPI X 时钟周期时间程序的局部性原理"I"指令系统: 用硬件实现的命令集 软硬件的界面 操作码 |操作数(寻址)"...
2020-03-15 21:30:45
1304
原创 Python
Python 变量、类型、字符串获取变量类型type() isiinstance()Python内置复数类型x.real #查看复数实部x.imag #查看复数虚部x.conjugegate() #返回共轭复数字符串格式化>>> a = 3.667...
2020-03-11 12:52:18
119
原创 C语言算术表示-e
C语言中数e(指数e)可以用exp( )函数表示。函数原型:double exp(double x);功 能:计算e^x的值返 回 值:计算结果举例:double x=1.5, y;y = exp(x); // y的值就是e^1.5注:使用exp函数时,需要将头文件#include<math.h>添加进源文件中。...
2020-03-08 23:52:47
2209
原创 debug.exe如何在64位操作系统上使用
第一步打开刚下载的DOSBox (这里一直按next就可以了)如下图所示(资源文件见篇尾)选择安装目录选择安装第二步将刚下载的debug.exe复制到非系统©盘,可放置如e盘里打开刚安装的DOSBox显示界面如下(Alt+Enter可放至全屏)之后使用mount命令将e盘挂载在C(系统)盘里,进入debug操作如下DOSBox与debug百度网盘下载链接:链接:http...
2019-03-08 20:28:16
1703
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人