- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 Kafka的底层高性能实现解读
该篇主要模拟推演kafka从0到1的演变过程,看看一台消息中间件是怎么一点点搭建起来的,其中也会讲述到怎么预防消息丢失,重复消费等问题。
2023-02-12 01:48:40 318
原创 Mysql探索(五)之log文件与事务的实现
redo log是mysql用来记录DML语句(写操作)的文件机制,对应的是上边的ib_logfile+序号文件,主要是用来恢复数据的,当我们的服务器宕机了,那些已经执行了语句但是还没提交的数据,或者已经提交了事务但是还没持久化的数据就有可能丢失了,当我们重启的时候就需要恢复这小部分数据,这时候就需要redo log中记录的写操作信息,然后重新执行一遍,这也是重来日志的名称由来,但是未提交事务那部分数据的就需要回滚了,这时候就需要undo log的登场了,这里记录着对应的回滚sql语句。
2022-10-25 01:08:35 1480
原创 JVM之垃圾收集器
没有垃圾收集器,JVM就没有灵魂,java也就没那么好相处了。今天来了解下JVM如何一步步辩识出哪些是垃圾对象,哪些是好对象,又是怎么做清理的,如何整理被清理后的空间碎片?
2022-09-19 23:02:04 196
原创 Mysql探索(四)之InnoDB的内存buffer和I/O线程
mysql执行sql都是先数据到内存中,然后再将内存中的修改过的数据刷到磁盘中,Innodb的内存结构是映射磁盘的页结构的,那都会有哪些划分呢?有内存数据,则需要保证缓存一致性问题,Innodb是怎么做到的呢?mysql的IO线程,Innodb的三大特性啊这些等等,都来探究下。...
2022-08-28 23:43:19 948
原创 Mysql探索(三)之InnoDB的索引与事务
Innodb的索引是核心成员,掌握了索引才能知道mysql在执行sql后,mysql是如何检索数据的,也就知道了这条sql的优劣之处,对于我们调优sql有很大的帮助。事务的存在是mysql保证数据原子一致性的重要手段,也是认知mysql必须要懂的知识点。...
2022-08-07 19:30:17 186
原创 Mysql探索(二)之InnoDB底层存储结构
了解mysql底层存储结构,知道db数据是怎么存储的,这对于深入了解mysql底层运行原理尤为关键,一看到crud操作时,脑海若能浮现底层数据运作情况,则为绝佳。如果懂得索引,buffer,log等InnoDB底层技术,再看这篇,相信也会有意想不到的收获。...
2022-07-24 23:35:20 926
原创 Mysql探索(一)之sql语句被mysql数据库流水线加工
当我们执行一条sql语句时,是怎么流经mysql数据库的,又会怎么一步步被加工处理的,探索下以便对myqsl数据库有个宏观的认知。我觉得这个步骤是初识Mysql中很基层重要的一步,如同房子中的地基,是学好mysql的前提。...
2022-07-21 00:52:56 481
原创 网络编程之BIO、NIO
今来聊聊BIO、NIO编程的原理,还有IO多路复用器selector的底层原理与零拷贝技术,算是回顾下socket这些网络编程。
2022-07-04 00:06:37 320
原创 网络通信原理之TCP,UDP,QUIC
此篇讲述下计算机网络体系结构及网络通信模型、TPC/IP协议、UDP 和 QUIC。我们所有的工作生活都离不开网络,那么什么是网络呢?看了定义之后应该就能理解,就是通过网线,卫星基站等将各个电脑等设备连接起来,构成互联网,实现文件共享和信息传递的功能的系统。OSI:open system interconnection(开放互连系统参考模型),是对各种协议提供标准化的一种框架模型,它给出了7层的理论模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。根据该模型演绎出TCP/IP模型,这是我
2022-06-16 23:49:47 805
原创 Redis的数据类型结构与Redis特性
来聊聊redis的数据类型和底层的数据结构实现,随便看看在redis6和redis7出现的数据结构,主从复制机制的优化,Stream队列,IO多路复用等特性。redis是基于内存k-v的数据库,那它都提供了哪些数据类型和应用场景呢?如果我们要选用redis加入自己的系统架构,那我们需要redis为我们做什么呢?或者说为什么要选用redis?redis主要提供了5种数据类型:string,hash,list,set,sorted set类型,当然还有一些其他的如bitmap,hyperLogLog类型等等,
2022-06-11 21:33:24 600
原创 java进程到底是怎么运行起来的
平时运行java程序都是java -c xxx.java, java xxx.class, java -jar xxx.jar等命令,然后我们的类或者jar包项目就能跑起来了,那么java里面到底做了什么操作呢?现在就来解读一下:
2022-05-10 00:32:26 338
原创 Redis实现分布式锁
已经有了实现redis分布式锁的第三方包,比如redisson就有各种锁,这篇主要研究下实现redis分布式锁的思路。当我们的系统是单机时,可以使用synchronized/CAS来控制数据共享问题,但是当系统做大做强了,单机顶不住了,则需要加机器,这时候还用synchronized/CAS来处理数据共享问题就不行了,这时候就可以借助redis来实现。我们知道redis有个setnx命令:set一个值,如果存在则返回false,并且不set进去,如果不存在则set进去,并且返回true;根据这特性我们
2022-05-05 22:04:06 165
原创 redis持久化与架构搭建
记录一下学习笔记。redis作为一个内存数据库,读写数据非常高效,能够搭建非常好的高可用架构,虽然是内存数据库,但是也提供了不错的持久化方式。redis支持的持久化方式:RDB快照方式(二进制的方式存储)AOF方式(命令的方式存储,resp协议)混合方式(rdb+aof的方式)RDB持久化方式在redis目录下,有个dump.rdb文件,redis在持久化过程中,会将数据以二进制的方式写进dump.rdb文件。redis.conf是redis最重要的配置文件,所有配置信息包括集群都在该配
2022-04-17 22:42:39 541
转载 springboot项目因项目间的依赖在打包时提示“程序包xxx不存在,找不到符号”
springboot多包工程,在使用maven进行打包的时候,一直提示“程序包xxx不存在,找不到符号”,但项目是可以正常启动运行的,开始一直以为是maven哪里没有配置好导致的,后来才发现原来是springboot的maven插件导致的。 项目结构: xxx-p...
2020-09-12 21:58:24 1122
原创 谈谈synchronized和Lock
今天想来聊聊同步线程的问题,这是个老生常谈的话题,而且这个也是我面试经常遇到的高频问题,我觉得是时候跟两位老兄聊聊人生了。首先来单独找它们聊聊,再做个总结看看两者的区别。先和synchronized老一哥促膝长谈小草:synchronized哥,作为java王朝的元老级人物,您一直致力于‘线程安全’这块领域,且躬身于底层操作系统中工作,还提出了三个有效线程同步的治理方针。众所周知您有以下三政策:// 1. 同步代码块(对象锁)public void test(){ synchronized(t
2020-08-25 02:32:48 380
原创 由leetcode的整数反转引发的Integer.reverse源码解读
在看leetcode题时有个整数反转的题,比如将123变为321之类的,溢出返回0,这让我想起了java里的Integer整数类里有个反转方法reverse,就想看看两者是不是一样的?如果不一样,能否将Integer这种反转方式应用到题目上?是否只有数学方式一个个位数倒置?Integer.reverse的源码如下:public static int reverse(int i) { // HD, Figure 7-1 i = (i & 0x55555555) << 1 | (i
2020-08-17 01:53:35 244
原创 idea工具扩展javap工具执行报类不存在错误
我本着想添加javap -c工具来查看下代码的字节码,步骤如下:打开settings:在tools里面配置javap工具,参数如下:配置完后在相应的类中右键->extend tools执行命令,结果发现会报找不到类找不到类错误:"C:\Program Files\Java\jdk1.8.0_241\bin\javap.exe" -c com.ryoma.test.JavapTest然后我查看了下自己JavapTest类里对应的文件夹位置,看到确实没有JavapTest.
2020-08-10 00:43:41 600
原创 JMH性能测试:JSON工具测试
JMH性能测试:JSON工具测试JMH(Java Microbenchmark Harness): 是专门用于微基准测试的api工具,我们可以通过JMH来对热点函数进行定量的分析,然后进行优化。比较典型的应用就是:* 精准知道某方法的执行时长,以及执行时间t和输入p之间的相关性;* 比较不同接口实现,查找最佳性能方法官方地址先用maven将依赖引入: <!--JMH性能测试的--> <dependency> <groupId>org.openjdk.j
2020-07-29 00:50:32 525
原创 web端读取本地excel表数据
听说发文有积分,我就来试试了,请大家不要喷我,我只是个孩子。使用的js插件是js-xlsx,下载地址:https://github.com/SheetJS/js-xlsx,大家可以自行下载。var len = 2;//这值是随便定义的,下面会被覆盖掉 /** * 加载表格数据 * @param {[type]} urlArr 数组:需要加载的excel表路径 ...
2019-03-28 09:46:51 3037
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人