自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RenTouZhuNao的博客

记录学习过程中的笔记以及一些知识点

  • 博客(13)
  • 收藏
  • 关注

原创 部分设计模式

具体来说就是当一个线程要获取实例化对象时,会检查实例是否已经被创建,未被创建的话就会获取到锁并实例化对象,与此同时其他线程判断没有实例之后就会被阻塞,当实例创建完成之后,锁打开,再次判断,实例已经存在。还有一个很重要的原因,就是对象的创建过程比较复杂,使用工厂模式进行封装,同时可以屏蔽掉对象的复杂的创建过程。使用静态内部类创建单例的时候,当我们调用getInstance()方法的时候,会调用内部类SingletonHolder,然后实例会被创建,而且SingletonHolder只会被调用一次。

2024-01-27 17:01:34 1572

原创 解决IDE中Java compiler JDK的版本总是被修改

我遇到的这个问题是涉及maven的profiles多环境配置方面的,如图1所示,在maven中profiles里面可以指定环境,在maven的settings.xml文件中可以配置,如图2所示,我们在运行程序的时候,jdk编译的版本就是从这个地方选取的,由于我一开始选的都是1.8,所以我的Java compiler 中的版本在我每次刷新maven后都会被修改成1.8,把这里修改之后问题得到解决。默认情况下选择的环境是灰色的钩子,点击一下取消 勾选。

2024-01-24 23:34:54 1075 1

原创 JAVA IO模型

JAVA IO模型常见的IO模型有:阻塞IO模型、非阻塞IO模型、多路复用IO模型、信号驱动IO模型、异步IO模型。

2024-01-23 21:11:58 1997 1

原创 MySQL进阶第九章

MVCC,全称是Multi-Version Concurrency Control(多版本并发控制),MVCC在MySQL InnoDB中的实现主要是为了提高数据库的并发性能,用更好的方式去处理【读-写冲突】,做到即使有【读写冲突】时,也能做到不加锁,非阻塞并发读,学习mvcc之前需要知道一些概念。【快照】不是说将数据库复制一份,【Read View】的主要作用是做【可见性判断】, 快照的实现逻辑是通过undo log的【版本链】,配合一些【参数】,比如事务id,来确定当前事务可以读取的版本。

2023-12-24 15:34:02 44 1

原创 MySQL进阶第八章

binlog日志是二进制日志(binnary log),以时间形式记录了对MySQL数据库修改的所有操作。binlog只记录数据库的增删改的操作,查看数据的操作不记录,因为这类操作没有对数据库进行修改的操作。binlog是mysql server层维护的,跟使用什么引擎没有关系,binlog实在事务最终commit之前写入的。主从复制:我们会专门有一个章节代领大家搭建一个主从同步的两台mysql服务。数据恢复:通过mysqlbinlog工具来恢复数据。

2023-12-24 11:42:21 219 1

原创 MySQL进阶第七章

读锁(共享锁, shared lock)简称s锁,一个事务获取了一个数据行的读锁,其他的事务也能获取这个数据行的读锁,但是不能获取该数据行的写锁,也就是说当一个事务在读取一个数据行的时候,其他的事务也可以读取这个数据行,但是不能进行增删改的操作。简单举例子来说就是:假如有两个人A,B各有一个箱子,A的箱子的钥匙在B的箱子里面,A想要打开箱子就需要B打开箱子,而B的箱子的钥匙在A的箱子里面,如此就发生了死循环,谁也打不开自己的箱子,换到数据库里的场景就是死锁。锁粒度大,发生锁冲突的概率小,并发度相对低。

2023-12-20 15:59:55 205 1

原创 MySQL进阶第六章

(1)最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4 ,如果建立(a,b,c,d)顺序的联合索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。主键和数据共存的索引叫聚簇索引,其他的叫做非聚簇索引,或辅助索引,或二级索引,例如我们上面使用姓名列+主键建立的索引。(如果or连接了一个无索引列时索引会直接失效)。

2023-12-19 15:52:08 471 1

原创 MySQL进阶第五章

我们系统中的一个业务,可能会包含很多个sql操作,例如销售业务,可能会有下订单,减库存,减余额等很多步对数据库的操作,这些操作每一步都是不可分割的因此就要用事务管理。(1).在MySQL中只有使用InnoDB数据库引擎的数据库或表才支持事务。(2).事务处理可以保证数据库的完整性,保证成批的sql语句执行一致,要么全部成功,要么全部失败。

2023-12-15 15:48:42 239

原创 MySQL进阶第三章

我们的内存是有限的,buffer pool的大小也是有限的,缓存只是作为数据的中转站,当数据量足够大时buffer pool的容量就会被占满,此时我们需要新的缓存页时该怎么办,最合理的解决办法就是,在需要新的缓存页时,把旧的,使用频率低的缓存页给干掉,加入新的缓存页。这就是典型的LRU(Least Recently Used)算法。当客户端访问一条数据时,会加载对应的数据页到buffer pool,并会将缓冲页对应的控制块放置到【LRU链表的首位】。

2023-12-13 15:51:56 42 1

原创 力扣刷题记录

我的代码实现为:写完之后虽然能够实现需求,但是看了大佬的做法实在牛,感觉还是做的太少了,思维不够打开大佬的代码:

2023-12-12 23:45:08 35

原创 MySQL进阶第二章

compressed行格式采用dynamic相同的页外存储细节,同时,存储在其中的行数据会以zlib的算法进行压缩,因此对于BLOB、TEXT、VARCHAR这类大长度类型的数据能进行非常有效的存储。新的两种格式对于存放BLOB的数据采用了完全的行溢出的方式,在数据页中只存放20个字节的指针,实际的数据都存放在BLOB Page中,而之前的Compact和Redundant两种格式会存放768个前缀字节。【表空间】:表空间的存储单位是页,不同类型的页剋以存放不同的数据类型,每一页大概占16k的空间;

2023-12-12 15:40:19 38

原创 Mysql进阶第一章

【mysql的缓存机制】简单来说mysql的缓存就是一个HashMap,如果有完全相同的sql语句,服务器会直接从缓存中取到结果,而不用在解析和执行sql。首先客户端会向mysql服务器发送查询sql语句,之后会进入查询缓存,如果缓存里有就直接返回数据(MySQL在8.0之后取消了查询缓存),如果没有sql语句会进入解析器,进入语法解析,之后进入查询优化器,查询优化器会把我们的sql语句优化成最优的语句,进入执行计划,然后就是查询执行引擎,查询执行引擎通过API接口到存储引擎中查询数据并返回。

2023-12-12 10:49:07 33

原创 力扣算法题记录

在遍历过程中如果出现数字与需要移除的值不相同时,则进行拷贝覆盖 nums[tag] = num,tag自增 1。如果相同的时候,则跳过该数字不进行拷贝覆盖,最后 tag即为新的数组长度。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。元素的顺序可以改变。主要思路是遍历数组 nums,每次取出的数字变量为 num,同时设置一个下标 tag。的元素,并返回移除后数组的新长度。

2023-12-11 21:34:31 34

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除