代码改变世界

从rocketmq入手,解析各种零拷贝的jvm层原理

2022-05-14 18:33 by tera, 504 阅读, 2 推荐, 收藏, 编辑
摘要:在上一篇文章中,主要介绍了rocketmq消息的存储流程。其主要使用了mmap的零拷贝技术实现了硬盘和内存的映射,从而提高了读写性能。在流程中有一个非常有意思的预热方法并没有详细分析,因为其中涉及到了一些系统方法的调用。而本文就从该方法入手,进而分享除了mmap之外,还有哪些零拷贝方法,以及他们的系 阅读全文

从源码分析RocketMq消息的存储原理

2022-03-21 16:33 by tera, 496 阅读, 1 推荐, 收藏, 编辑
摘要:rocketmq在存储消息的时候,最终是通过mmap映射成磁盘文件进行存储的,本文就消息的存储流程作一个整理。源码版本是4.9.2 主要的存储组件有如下4个: CommitLog:存储的业务层,接收“保存消息”的请求 MappedFile:存储的最底层对象,一个MappedFile对象就对应了一个实 阅读全文

从0到1,用张三的故事讲述一张中学生也能看懂的财务报表

2022-01-30 10:34 by tera, 773 阅读, 3 推荐, 收藏, 编辑
摘要:在日常投资活动中,要确定一家公司是否有价值是一件非常复杂的事情。上到地区、行业,下到经营状况,无不影响着最终的判断。当我们确定了某个行业后,要从众多公司中选择真正值得长期投资的标的时,公司发布的财务报表就会成为非常重要的判断依据。然而实务中的财务报表都是非常复杂的,其中包含了大量的专业知识和术语,让 阅读全文

Redis Hyperloglog的原理及数学理论的通俗理解

2022-01-24 17:06 by tera, 1208 阅读, 2 推荐, 收藏, 编辑
摘要:redis中有一种数据格式,hyperloglog,本文就此数据结构的作用、redis的实现及其背后的数学原理作一个整理。当然本文不包含任何数学公式,而是希望用直观的例子帮大家理解。 主要内容如下: 1.业务场景 2.使用效果 3.数学原理 4.redis的实现原理 1.业务场景 现在有这样一个业务 阅读全文

google protobuf的原理和思路提炼

2021-06-27 20:37 by tera, 2731 阅读, 1 推荐, 收藏, 编辑
摘要:之前其实已经用了5篇文章完整地分析了protobuf的原理。回过头去看,感觉一方面篇幅过大,另一方面过于追求细节和源码,对protobuf的初学者并不十分友好,因此这篇文章将会站在“了解、使用、特性、原理、改进”的角度重新整理protobuf的相关知识,希望对大家有所帮助。 1.什么是protobu 阅读全文

java命令的本质逻辑揭秘

2021-05-30 10:59 by tera, 576 阅读, 0 推荐, 收藏, 编辑
摘要:前言 在日常编码中,有了ide的支持,我们已经很少直接在命令行中直接执行java XXX命令去启动一个项目了。然而我们有没有想过,一个简单的java命令背后究竟做了些什么事情?让我们看下下面几个简单的问题 **1.java命令之后可以跟很多参数,那么这些参数是如何被解析的?**为何-version会 阅读全文

让面试官心服口服:Thread.sleep、synchronized、LockSupport.park的线程阻塞有何区别?

2020-11-22 18:19 by tera, 2655 阅读, 4 推荐, 收藏, 编辑
摘要:前言 在日常编码的过程中,我们经常会使用Thread.sleep、LockSupport.park()主动阻塞线程,或者使用synchronized和Object.wait来阻塞线程保证并发安全。此时我们会发现,对于Thread.sleep和Object.wait方法是会抛出InterruptedE 阅读全文

JNI-从jvm源码分析Thread.interrupt的系统级别线程打断原理

2020-11-15 14:50 by tera, 1233 阅读, 3 推荐, 收藏, 编辑
摘要:前言 在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程。那么线程挂起和打断的本质究竟是什么,本文就此问题作一个探究。 本文主要分为以下几个部分 1.interrupt的使用特点 2.jv 阅读全文

JNI-从jvm源码分析Thread.start的调用与Thread.run的回调

2020-11-06 17:23 by tera, 1961 阅读, 2 推荐, 收藏, 编辑
摘要:前言 在java编程中,线程Thread是我们经常使用的类。那么创建一个Thread的本质究竟是什么,本文就此问题作一个探索。 内容主要分为以下几个部分 1.JNI机制的使用 2.Thread创建线程的底层调用分析 3.系统线程的使用 4.Thread中run方法的回调分析 5.实现一个jni的回调 阅读全文

Java动态代理——框架中的应用场景和基本原理

2020-11-01 21:40 by tera, 7197 阅读, 3 推荐, 收藏, 编辑
摘要:前言 之前已经用了5篇文章完整解释了java动态代理的原理,本文将会为这个系列补上最后一块拼图,展示java动态代理的使用方式和应用场景 主要分为以下4个部分 1.为什么要使用java动态代理 2.如何使用java动态代理 3.框架中java动态代理的应用 4.java动态代理的基本原理 1.为何要 阅读全文