- 博客(118)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 【学习笔记】进程、线程、协程及进程间通信
线程是进程的一个实体,是cpu调度的基本单位,比进程更小,且可独立运行,它自己只拥有一点系统资源,与线程通过共享内存通信,上下文切换资源消耗少,但容易丢失数据,与其他线程共享进程拥有的全部资源。一个进程可以拥有多个协程,一个线程也可以拥有多个协程,使用协程可以减少线程切换消耗,在一个线程中可以有多个协程,协程可以决定自己的执行情况以及是否切换。【套接字是网络通信的端点,上接应用程序,下接通信协议,套接字表示为(127.0.0.1:2312)】接通流程:服务端监听->客户端请求->建立连接。
2025-08-15 16:42:36
67
原创 【学习笔记】JVM内存模型
JVM中,多线程切换使用cpu执行时,会使线程进入阻塞状态,此时程序计数器记录了该线程之前的执行位置,可以让线程恢复时找到运行位置。Java栈中存储的是栈帧,一个栈帧代表一个摇执行的方法;存储了类的信息:名称、方法信息、字段信息,静态变量、常量以及编译器编译后的代码,运行时常量池。存储栈中引用指向的具体对象本身,由全部线程共享。与java栈相同,不过处理native方法。线程中存储的值出栈运算后压栈入操作数栈。③运行时常量池的引用。
2025-08-15 16:34:49
66
原创 【学习笔记】JVM GC回收机制
新创建的对象会先入eden,一段时间后进行gc,gc时先将可达的标记,并复制到s1中,然后删除eden中的对象(全部),之后在gc时标记s1与eden中的的可达对象,复制到s2中,删除eden与s1中的全部对象…①先将从树根开始,可以到达的对象标记为可达(JVM中的对象们存储为一颗树)①先将a区域中的可达对象标记,然后复制到b区,再删除a区全部对象。首先新生代分为三个区:eden、s1、s2(8:1:1)将可达对象标记,清除不可达对象,向左压缩。缺点:浪费大量空间(50%)优点:没有碎片空间,速度快。
2025-08-15 16:17:18
129
原创 【学习笔记】Java并发编程的艺术——第10章 Executor框架
用户控制将任务交给线程,而操作系统调度线程的执行,Java线程一对一映射为操作系统线程。
2025-08-15 15:43:32
47
原创 【学习笔记】Java并发编程的艺术——第7章 Java中的13个原子操作类
【原子更新带有版本号的引用类型(解决ABA问题)】可以原子的更新一个类中的某些volatile字段。Int,Long,引用数组。
2025-08-15 15:09:59
80
原创 【学习笔记】Java并发编程的艺术——第6章 Java并发容器和框架
BlockingQueue支持插入/移除时阻塞在插入/移除时可选方法:①抛异常②返回特殊值③阻塞④超时退出把大任务fork成小任务(可多次fork)再join结果。
2025-08-15 14:54:42
571
原创 【学习笔记】Java并发编程的艺术——第5章 Java中的锁
1>锁在编写时面向使用者,定义了锁与用户的交互2>同步器面向锁的实现,并屏蔽了同步状态管理、线程的排队】等待与唤醒等底层操作3>锁与同步器将锁的使用与实现进行了解耦。
2025-08-15 14:10:42
209
原创 【学习笔记】Java并发编程的艺术——第3章 Java内存模型
该规则保证了前一个操作对后一个操作是可见的1>程序顺序规则一个线程中的每个操作h-b于之后任意操作2>监视器锁规则解锁h-b于加锁3>volatile对于volatile写h-b于读4>传递性。
2025-08-13 13:58:07
918
原创 【学习笔记】Java并发编程的艺术——第2章 Java并发机制的底层实现原理
1>volatiole的定义与实现原理–可见性:当处理器处理时,会将系统内存中的操作数读入缓存,而在修改时,若命中了缓存,则直接修改缓存中的值,但不会立马写回内存中。volatile的变量在修改时会做两件事:①将当前缓存行数据写回系统内存②这个写回内存的举动会使其他cpu里缓存了该内存池地址的数据无效【L1与L2缓存每个核独立;L3缓存核共享,cpu独立】原则:①操作写回系统时会加内存独占锁,或更复杂的缓存锁②cpu会嗅探其他处理器是否修改了自己缓存的行。
2025-08-11 13:45:56
406
原创 【学习笔记】Java并发编程的艺术——第1章 并发编程的挑战
即使是单核处理器也支持多线程执行代码,CPU给每个线程分配CPU时间片实现多线程,而每个时间片一般是几十毫秒,所以多个线程感觉是同时执行的但同一个核切换线程执行时会保存运行状态,以便下次切回来后读取运行,所以有上下文切换。
2025-08-02 19:08:18
215
原创 【学习笔记】MySQL技术内幕InnoDB存储引擎——第9章 性能调优
InnoDB数据库一般应用于OLTP应用:OLTO特点:①用户操作的并发量很大②事务处理的时间一般比较短③查询的语句较为简单,一般走索引④复杂的查询较少1>OLAP一般为CPU密集型(可换CPU好的机器)2>OLTP一般为IO密集型(可换IO性能好的机器)CPU核数多可优化IO线程数与大并发请求。
2025-08-02 18:58:55
231
原创 【学习笔记】MySQL技术内幕InnoDB存储引擎——第8章 备份与恢复
分类:1>备份方法分类:①热备:运行时备份②冷备:停止运行时备份③温备:加全局读锁备份2>备份文件分类①逻辑备份②裸文件物理备份3>备份数据库内容分类①完全备份②增量备份③日志备份【MySQL数据库复制原理(主从)就是异步实时的将二进制日志重做传送到(salve/stard by数据库)】【因为InnoDB支持非锁定读,所以实现一致备份只需在REPEATABLE READ可重复度下到处一组关键表即可】
2025-08-02 18:47:08
220
原创 【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
不重复的估计值,是预估值,而不是一个准确值,这个值除以数据行数,如果太小的话,不建议使用索引,因为即使在索引中查到了,也需要在相同值中扫描相关数据,从而使索引失去意义。InnoDB1.2.x版本开始,InnoDB支持索引。
2025-07-06 00:02:43
582
原创 【学习笔记】MySQL技术内幕InnoDB存储引擎——第4章 表
数据库的分区是指将一个表或索引分解为更多个更小,更可管理的部分。但逻辑上讲,只有一个表或一个索引,但在物理可能有多个物理分区组成。分区不是引擎层完成的,但部分引擎支持分区,部分不支持。MySQL是水平分区(按行分区)加局部分区(索引与数据一起做分区)分区时应指定唯一索引的一部分为分区列,没有唯一索引时可任意指定。
2025-07-05 16:23:02
528
原创 【学习笔记】MySQL技术内幕InnoDB存储引擎——第2章 InnoDB存储引擎
1>InnoDB是基于磁盘存储的数据库引擎,一般使用缓冲池技术来提高整体性能在数据库中进行读取页的操作,首先将页存放在缓冲池中,如果读取时在缓冲池中命中了,则直接读取。在修改数据库页时,先在缓冲池修改,再以一定的频率刷新到磁盘上各种页的含义 P232>缓冲池如何管理①一般情况下,通过LRU算法,频繁使用的在前端,缓冲池不能存放新页时,会释放LRU列表尾端的页②页修改后为脏页,保存在Flush列表中。
2025-06-28 19:07:57
838
原创 【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化
1>前端编译器:Javac命令。【.java文件->.class文件】2>即时编译器:Hotspot.C1.C2 【.class文件->机器码】3>提前编译器:JDK的Jaotc等【.java->机器码】
2025-06-22 18:38:32
231
原创 【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java
Java成功的原因1>一次编写到处运行2>内存管理安全,自动回收3>运行时编译4>强大成熟的第三方库。
2025-05-02 18:03:11
331
关于tidb查询无索引字段的问题
2022-06-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人