- 博客(80)
- 收藏
- 关注

原创 分布式事务常见解决方案(2024.4.18)
二阶段提交(Two-Phase Commit, 2PC)是一种用于分布式系统的协调算法,确保所有参与节点对事务的一致性处理。准备阶段- 协调者向所有参与者发送提案,询问是否准备好提交事务。参与者检查自身情况,如果可以接受则返回同意,否则返回拒绝。提交阶段- 根据准备阶段的结果,协调者决定是否正式提交事务。若所有参与者都同意,则发送提交命令;若有任何一个参与者拒绝,则发送回滚命令。预提交阶段- 和2PC类似,协调者询问参与者是否可以提交,但此时不直接进行提交,而是等待反馈。预提交确认阶段。
2024-04-18 11:41:00
224

原创 java小知识点积累(一)
if()只执行一次,成立进入,运行完后直接执行if之后的代码,不会再进入if代码的范围;这是描述一个从输入URL到页面加载完成的过程,其主要包括DNS解析、建立连接、发送请求、接收响应、渲染页面等环节。如果是普通字段(没有索引/主键),那么select ..... for update就会进行锁表。while()是一个循环,直到条件不满足,才退出while代码块的范围;while()与if()都是判断某一条件是否成立,成立的话进入代码块;
2023-06-30 20:24:10
401

原创 Linux问题汇总
1. 虚拟机连不上我将虚拟机内存改为4G,用工具连接虚拟机多次不成功,然后打开虚拟机执行 ifconfig 命令,发现没有了ifcfg-ens33网卡配置文件对应的端口,执行命令sudo dhclient后,重新执行ifconfig命令后,发现ens33又有了:参考文章:centOS7 重启后,连不上网(网卡不见了,ifcfg-ens33文件不存在)_u014089832的博客-优快云博客_ens33配置文件不存在...
2022-02-11 21:16:57
651

原创 .tar.gz 跟.tgz
.tar.gz 跟.tgz 是一种格式吗?tar.gz_百度百科以.tar.gz为后缀的文件是一种压缩文件,在Linux和macOS下常见,Linux和macOS都可以直接解压使用这种压缩文件。
2022-02-10 15:12:10
2982
原创 MySQL(2024.4.17)
MVCC 是一种并发控制机制,用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。它是通过在每个数据行上维护多个版本的数据来实现的。当一个事务要对数据库中的数据进行修改时,MVCC 会为该事务创建一个数据快照,而不是直接修改实际的数据行。1、读操作(SELECT):当一个事务执行读操作时,它会使用快照读取。快照读取是基于事务开始时数据库中的状态创建的,因此事务不会读取其他事务尚未提交的修改。
2024-04-17 10:46:30
948
原创 异常、堆内存溢出、OOM的几种情况【转载】
【情况一】:java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环;如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:【情况二】【解释】:JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小,导致异常的原因,没有足够的内存。【解决方案】:1、查看系统是否有使用大内存的代码或死循环;
2023-11-13 22:11:27
470
原创 JVM学习笔记(三)垃圾回收
存储基本数据类型、引用对象的变量、局部变量表等,这是线程私有的,每个线上线程的大小默认为1Mb。存储字节指令的地地址,如果是本地方法栈,则存储undefined。由于java是表层语言,无法直接访问硬件,需要调用第三方语言,比如C、C++来操作硬件,比如创建内核线程,操作文件等。存储jvm编译后地字节码文件,静态变量,常量,类信息等。因而,
2023-07-14 08:16:26
689
原创 永久区和元空间的区别
永久区,是Hotspot虚拟机内的概念,它是Hotspot虚拟机对方法区的一个具体的实现,在1.8之后,Hotspot将永久区移除。元空间,上面说到,Hotspot在1.8之后移除了永久区,新的方法区实现就由。
2023-07-13 09:02:03
246
原创 堆和栈的区别
首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。因此,能从栈获得的空间较小。
2023-07-13 08:27:17
154
原创 JVM学习笔记(二)内存结构
每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法问题辨析1. 垃圾回收是否涉及栈内存?不会。栈内存是方法调用产生的,方法调用结束后会弹出栈。2. 栈内存分配越大越好吗?不是。因为物理内存是一定的,栈内存越大,可以支持更多的递归调用,但是可执行的线程数就会越少。3. 方法内的局部变量是否线程安全如果方法内部的变量没有逃离方法的作用访问,它是线程安全的;
2023-07-12 19:55:28
1103
原创 String format()用法
格式化字符串由4部分组成,特殊的格式常以%index$开头,index从1开始取值,表示将第index个参数拿进来进行格式化,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字。本文带你快速过一遍这个方法的功能,将来你要用到格式化文本的时候,可能就不需要再借用第三方类库或自己去实现了。上面的说明过于枯燥,我们来看几个具体的例子。对字符进行格式化是非常简单的,c表示字符,标识中'-'表示左对齐,其他就没什么了。我们可以看到,浮点数的转换多了一个"精度"选项,可以控制小数点后面的位数。
2023-07-11 23:51:32
366
转载 volatile到底是什么?
这就导致,线程1和线程2其实都是在操作一个变量data,但是线程1修改了data变量的值之后,线程2是看不到的,一直都是看到自己本地工作内存中的一个旧的副本的值!举个例子,比如说有两个线程,他们的代码里都需要读取data这个变量的值,那么他们都会从主内存里加载data变量的值到自己的工作内存,然后才可以使用那个值。这可尴尬了,那接下来,在线程1的代码运行过程中,他可以直接读到data最新的值是1,但是线程2的代码运行过程中读到的data的值还是0!因为线程运行的代码对应的是一些指令,是由CPU执行的!
2023-07-07 07:59:02
100
原创 RabbitMQ学习
RabbitMQ 2023面试5题(一)_51CTO博客_rabbitmq面试题RabbitMQ 2023面试5题(二)_51CTO博客_rabbitmq 面试题RabbitMQ 2023面试5题(三)_51CTO博客_rabbitmq 面试题RabbitMQ 2023面试5题(四)_51CTO博客_rabbitmq面试题Java面试——RabbitMQ系列总结_51CTO博客_java rabbitmq面试题 JAVA面试题(八):RabbitMQ_51CTO博客_rabbitmq面试题RabbitMQ面
2023-07-07 07:34:27
569
原创 Redis学习笔记
第三章,其中,3.1——3.8是基础,掌握,3.15事务也掌握;3.9和3.10是高阶,面试;3.11——3.14了解。动力哥Redis7视频学习。
2023-07-05 13:15:50
342
原创 MySQL更改表结构语句
语法:(1)在末尾添加字段ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];(2)在开头添加字段ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;(3)在中间位置添加字段ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;语法:ALTER TABLE <表名> DROP <字段名>;
2023-07-03 13:12:08
2216
原创 Spring对事务的支持
在service类中有a()方法和b()方法,a()方法上有事务,b()方法上也有事务,当a()方法执行过程中调用了b()方法,事务是如何传递的?合并到一个事务里?还是开启一个新的事务?这就是事务传播行为。注意:以下事务传播属性都是打在内部方法b()方法上的事务注解最为简单,不管当前有无事务,它都会开启一个全新事务,既不影响外部事务,也不会影响其他内部事务,真正的井水不犯河水,坚定而独立。REQUIRED在没有外部事务的情况下,会开启一个独立的新事务,且不会对其他同级事务造成影响;
2023-07-03 09:27:48
2124
原创 Typora文本的使用
输入几个#,再加空格,写入文字回车后就是几级标题;英文状态下,输入三个反引号```,然后回车即可;→编辑器→设置全局拼写不检查,设置使用成对的符号;→外观→侧边栏→大纲视图允许折叠和打开;见我的另外一篇文章中。→MarkDown→代码块→显示行号,进入菜单栏,选择下拉菜单。
2023-07-03 01:29:44
284
原创 图灵第4期MySQL调优专题学习笔记
MySQL的默认隔离级别是可重复读,可重复读的隔离级别下使用了MVCC(multi-version concurrency control)机制,select操作不会更新版本号,是快照读(历史版本),insert、update、delete会更新版本号,是当前读(当前版本)。
2023-07-02 17:43:40
954
原创 MySQL阶段性知识学习总结(二)
如果是GBK编码,则一个中文汉字占2个字节,英文占1个字节如果是UTF8编码,则一个中文汉字占3个字节,而英文字母占1字节。比如定义某个字段数据类型为:varchar(32),表示这个可以存储 32 个字符,此时表示的是字符,所以跟中英文无关,也就是该字段可以存储 32 个中文,或者是 32 个英文,或者是 32 个中文和英文的混搭都行。但如果字符数超过 32 个的话就会报错。varchar(n)类型最大能存的数据量是0~65535个字节,
2023-06-30 12:20:48
341
原创 MySQL阶段性知识学习总结(一)
BLOB 是二进制字符串,TEXT 是非二进制字符串,两者均可存放大容量的信息。字符串类型用来存储字符串数据,还可以存储图片和声音的二进制数据。字符串可以区分或者不区分大小写的串比较,还可以进行正则表达式的匹配查找。-- lcase同lower,都是将字符串转为小写;str_to_date函数将str转化为日期型的数据,format表示转化后的格式。年月日的位置可以调动,但是一定要注意format格式的大小写!可见,定义ID主键时,int类型足够了,最大取到了21亿。str:要处理的字符串。
2023-06-25 20:25:08
422
原创 Typora改变字体颜色
第一步:在官网(https://www.autohotkey.com/)下载 AutoHotkey并傻瓜式安装,安装在任意盘符下均可;第二步:在安装目录下创建AutoHotKey.ahk文件,并用记事本打开,将下面文本粘贴到该文件中保存并关闭;第四步:在Typora中选中需要改变颜色的文本,直接按刚刚设置的热键(如Ctrl+Alt+R)便可将颜色改为想要的颜色。注意将热键不要设置成与Typora内置的冲突的热键(例如Ctrl + B是加粗),第二行可以根据自己想要的颜色进行设置。
2023-05-27 15:31:11
3153
原创 idea的使用(三)
在setting->maven->Runner->VM Options一栏中填入 -Dfile.encoding=gb2312。
2023-05-05 01:58:31
2860
原创 mybatis配置参数
1. 实际开发中,mapper文件和mapper接口分开管理,即mapper.xml文件要放在resources项目下,同时不要忘记在配置文件中指定mapper.xml文件位置;添加以上配置后,SLF4J(Logback) 就会记录 com...dao.ThemeMapper 的详细执行操作,且仅记录应用中其它类的错误信息(若有)。原文链接:https://blog.youkuaiyun.com/m0_67402341/article/details/126596454。
2023-05-04 12:24:07
982
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人