- 博客(16)
- 收藏
- 关注
原创 CoderArchiveDay23 (2025.6.25) MySQL八股相关补充(2)
MySQL日志机制深度解析 MySQL提供了多种日志机制保障数据安全与性能优化: 慢查询日志:记录执行时间超过阈值的SQL,用于性能调优,可通过mysqldumpslow等工具分析 binlog:Server层二进制日志,记录所有数据变更操作,支持主从复制和数据恢复 redo log:InnoDB物理日志,采用WAL机制确保事务持久性,实现崩溃恢复 undo log:记录数据变更前的状态,支持事务回滚和MVCC多版本并发控制 这些日志各司其职: redo log保证"已提交事务不丢失"
2025-06-25 18:01:09
1109
原创 CoderArchiveDay22 (2025.6.23) MySQL八股相关补充(1)
在 InnoDB 的 B+树中,每个节点都是一个页(Page),也称为“节点页”,是磁盘上最小的数据单位。你可以把节点页类比为一个“储物柜抽屉”,每个抽屉里放着一组按顺序排列的 key 值和指针。页级别缓存。每次查询时,InnoDB 并不是直接读一行数据,而是读整个页(Page);这些页会被缓存在内存中,避免频繁访问慢速磁盘;Buffer Pool 是 InnoDB 的核心内存组件,类似于操作系统的 Page Cache。磁盘是按块(page)读取的,读取一页不比读取一行慢;
2025-06-24 16:07:14
595
原创 CoderArchiveDay20 (2025.6.9) IO流进阶
接下来重点聚焦于:字节缓冲流,字符缓冲流,转换流,正反序列化流,以及properties和流的合并使用.使用之前需要将基本流包装成缓冲流,其实就new对象时,传递基本流有字节缓冲流就有字符缓冲流。
2025-06-12 11:39:37
769
原创 CoderArchiveDay19 (2025.6.8) IO流初步
一个流对象,读完之后,就不要再读了;除非重新new一个新的对象/*int read(byte[] b) 一次读取一个字节数组,返回的是读取的字节个数*//*创建一个数组:byte[]1.创建的数组相当于一个临时存储区域,我们要读取的内容会临时保存到数组中然后我们再从数组中将数据获取2.数组长度定为多少,每次读取多少个,一般情况下数组长度定为1024或者1024的倍数如果剩下的字节不够数组长度了,那么就最后有多少读多少*///2//2//1*/
2025-06-09 16:32:58
356
原创 CoderArchiveDay18 (2025.6.6) 双列集合
正式介绍双列集合,Map接下来介绍一下LinkedHashMap还是一图流单列集合的遍历可以无脑用迭代器和增强for,那么双列集合的遍历呢?例如,HashMap就有两种遍历方式方式1:获取key,根据key再获取value。
2025-06-08 09:47:54
463
原创 CoderArchiveDay17 (2025.6.5) 集合-Set,泛型与Collections常见工具类
注意,HashSet的"无序性"并非是指遍历时每次遍历的顺序都不一样,仅仅指存入和取出的遍历顺序不同,多次遍历取出时,实际上顺序是一样的.定义带泛型的类,方法等,将来使用的时候给泛型确定什么类型,泛型就会变成什么类型,凡是涉及到泛型的都会变成确定的类型,代码更灵活。如上,Person自定义类重写了HashCode方法,使之比较对象内容的HashCode而非对象本身的HashCode.1.如果我们在定义类,方法,接口的时候,如果类型不确定,我们可以考虑定义含有泛型的类,方法,接口。
2025-06-06 15:12:55
1014
原创 CoderArchiveDay16 (2025.6.4) 集合-List
它就像是一个“游标”或者“指针”,允许你逐个访问集合中的元素,而不需要关心这个集合到底是一个数组、链表、哈希表还是其他结构。注意,addAll方法将两个集合合并时并不会改动被合并的集合的内容,比如coll1.addAll(coll2)只会把coll2中的元素添加到coll1中而不会改变coll2的内容.但是将来开发不会想使用就new集合,都是调用一个方法,查询出很多数据来,此方法返回一个集合,自动将查询出来的数据放到集合中,我们想在页面上展示数据,遍历集合。Java提供了并发安全的集合,比如。
2025-06-05 16:15:00
970
原创 CoderArchiveDay15 (2025.6.1) 多线程
实现Runnable接口既然Runnable是接口,那么自然可以使用匿名内部类:既然是多线程,那么就一定会涉及到线程安全问题,当多个线程同时访问同一资源时,就可能出现非预期的结果://定义100张票//任意new一个对象@Overridetry {System.out.println(Thread.currentThread().getName()+"买了第"+ticket+"张票");ticket--;Thread t1 = new Thread(myTicket, "赵四")
2025-06-04 17:22:50
685
原创 CoderArchiveDay14 (2025.6.1) 常用API
可以看到装箱时如果传递的数据在一个区间内,底层会直接将一个cache数组内准备好的Integer对象返回,这就是包装类的缓存池,超出该范围的话,就重新创建一个Integer对象.基本数据类型要转化为String型,除了直接用加号拼接外,还可以用String的valueOf方法.注意,使用CopyOf复制数组后要把原数组的引用指向新创建的数组,才算扩容完毕.System.exit()方法一般返回值都是0。Parsexxx的用法,反向转换.接下来讲一下重点的包装类。getset方法要牢记。
2025-06-01 14:45:35
238
原创 CoderArchiveDay13 (2025.5.26) String类精研
这里还是涉及到字符串常量池的概念,形如"abc"这样的字符串常量会先在字符串常量池中创建,赋值时再被变量指向,所以可以共享.可以看到,当字符串拼接涉及到已有引用字符串时,底层会新建一个new StringBuilder来拼接,故而地址一定会改变.3.比较,如果输入的用户名和密码跟已经注册过的用户名和密码内容一样,就登录成功,否则就登录失败。1.字符串拼接,如果等号右边是字符串字面值拼接,不会产生新对象。2.字符串拼接,如果等号右边有变量参数拼接,会产生新字符串对象。还是先对模块十三做个总结。
2025-05-30 18:08:35
236
原创 CoderArchiveDay12 (2025.5.18) 权限修饰符与内部类
1.问题描述:我们如果想实现接口,简单使用一次抽象方法,我们就需要创建一个实现类,实现这个接口,重写抽象方法,还要new实现类对象,所以我们在想如果就单纯的想使用一次接口中的方法,我们能不能不这么麻烦呢?这里的主方法中method01的参数部分直接使用了匿名内部类代码块的格式,代表创建了一个USB的实现类,大大简化了使用流程,无需再单独手动创建一个正式实现类,就可以调用方法.注意,这里虽然说接口和抽象类不能直接被new,但是这里的格式是一种特殊格式,就专指接口/抽象类的内部实现类,只是简写了而已.
2025-05-25 08:49:58
475
原创 CoderArchiveDay4 (2025.3.28)
同时,http3有更高效和廉价的连接建立方式,在前代中,TCP和TLS是分层的,一个是传输层一个是表示层,需要分别握手后连接才能建立,而QUIC模式下握手只需要双方确认一个“连接ID”即可,而且QUIC实际上包含了TLS1.3,因此其握手的过程中也会包含TLS的确认头,这样就只需要1RTT就足以建立连接和密钥协商了,在复用通道时,更是可以省略确认步骤,将握手信息和要传输的数据包一起发送,实现0RTT传输。而前代都需要2-3RTT才能做到。TCP的可靠性是一把双刃剑,怎么解决呢?
2025-03-28 18:17:11
500
原创 CoderArchiveDay3 (2025.3.22)
和上面一套差不多,Last-Modified指文件的最后修改时间,当一段时间内浏览器第一次请求资源时,服务器返回的资源中就会携带该资源的Last-Modified时间来标识此时资源的最新修改时间,该资源在强制缓存期过期后,要走协商缓存,就会把If-Modified-Since标签改成Last-Modified时间重新请求,服务器收到这请求头后会把当前的资源的Last-Modified时间比较,如果当前这个时间比较新,说明修改过,返回新资源和200状态码;然后就是协商缓存,它可以看作强制缓存的延展和补充。
2025-03-23 22:02:53
1669
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1