首页
学习
活动
专区
工具
TVP
发布

涓流

专栏作者
94
文章
54990
阅读量
16
订阅数
文件操作之 FileChannel 与 mmap
Java 中原生读写方式大概可以被分为三种:普通 IO,FileChannel(文件通道),mmap(内存映射)。
leobhao
2023-03-11
1.1K0
Java线程池异常处理
ThreadPoolExecutor 的 execute 方法不用过多分析, 就是线程池的执行流程, 这里看看 submit:
leobhao
2023-03-11
3370
定时器算法
在日常开发中, 定时任务是一个比较关键的功能。 Java 中一般使用 JDK 中 Timer、ScheduledExecutorService 和调度框架 Quartz等。 通常用于实现延时任务, 周期性任务等, 一般会有两种需求:
leobhao
2023-03-11
4930
transmittable-thread-local
在 TTL 之前, 先谈谈 JDK 自带的 InheritableThreadLocal
leobhao
2023-03-08
8720
异步编程CompletableFuture使用
CompletableFuture 是对 Future 的扩展, 提供了函数式编程的能力,简化了异步编程的复杂性。
leobhao
2023-03-08
4000
synchronize和volatile
并发问题使得我们的代码有可能会产生各种各样的执行结果,显然这是我们不能接受的,所以 Java 编程语言规范需要规定一些基本规则,JVM 实现者会在这些规则的约束下来实现 JVM,然后开发者也要按照规则来写代码,这样写出来的并发代码我们才能准确预测执行结果
leobhao
2023-03-06
2370
分布式共识算法(Paxos、Raft)
多个参与者针对某一件事达成完全一致:一件事,一个结论。 已达成一致的结论,不可推翻。
leobhao
2022-06-28
2.4K0
定时器算法
在日常开发中, 定时任务是一个比较关键的功能。 Java 中一般使用 JDK 中 Timer、ScheduledExecutorService 和调度框架 Quartz等。 通常用于实现延时任务, 周期性任务等, 一般会有两种需求:
leobhao
2022-06-28
8740
限流算法(Guava RateLimiter)
这种算法很好实现, 但是会出现限流不准确问题。比如每秒通过 5 个请求,时间窗口的大小为 1 秒,当前时间窗口周期内的后半秒正常通过了 5 个请求,下一个时间窗口周期内的前半秒正常通过了 5 个请求,在这两个窗口内都没有超过限制。 但是在这两个窗口的中间那一秒实际上通过了 10 个请求,显然不满足每秒 5 个请求的限制。
leobhao
2022-06-28
7100
LongAdder源码分析
并发环境重计数 AtomicLong 的 Add 操作是依赖自旋不断的 CAS 去累加一个 Long 值。如果在竞争激烈的情况下,CAS 操作不断的失败,就会有大量的线程不断的自旋尝试 CAS 会造成 CPU 的极大的消耗。
leobhao
2022-06-28
2370
MySQL与缓存一致性问题
“数据一致”一般指的是:缓存中有数据,缓存的数据值 = 数据库中的值。一致性又分为几种程度:
leobhao
2022-06-28
6380
jvm参数调优
jstat 用于监视虚拟机运行时状态信息,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。
leobhao
2022-06-28
8430
异步编程CompletableFuture使用
CompletableFuture 是对 Future 的扩展, 提供了函数式编程的能力,简化了异步编程的复杂性。
leobhao
2022-06-28
3130
mysql事务-redo/undo log
我们操作 Mysql 数据的时候,都是把数据页加载到 Buffer Pool 中才可以访问,但是事务是需要具有持久性的,如果我们只再内存的Buffer Pool中修改了页面,假设在事务提交后突然发生了某个故障,导致内存中的数据都失效了,那么这个已经提交了的事务对数据库中所做的更改也就跟着丢失了。为了保证事务的持久性,我们需要在事务提交完成之前把该事务所修改的所有页面都刷新到磁盘。
leobhao
2022-06-28
6080
spring解决循环依赖
spring 单例对象的实例化、初始化过程是在doCreateBean中(之前仅仅是注册好了BeanDefenition), 大概分为三步:
leobhao
2022-06-28
4660
Class文件格式与Jvm常量池
class文件中的信息是一项一项排列的, 每项数据都有它的固定长度, 有的占一个字节, 有的占两个字节, 还有的占四个字节或8个字节, 数据项的不同长度分别用u1, u2, u4, u8表示, 分别表示一种数据项在class文件中占据一个字节, 两个字节, 4个字节和8个字节。 可以把u1, u2, u3, u4看做class文件数据项的类型 。
leobhao
2022-06-28
2040
activeMQ的producer发送和consumer消费
producerWindow主要是针对异步发送消息时,控制允许能够积压的消息累计大小,这些消息没有得到broker的ack,在得到ack之后会减去相应的消息size,释放producerWindow
leobhao
2022-06-28
4110
elastic-job分片流程
从选主的流程中可以看到,ListenManager#startAllListeners会开启所有的监听器,分片的监听器是shardingListenManager
leobhao
2022-06-28
3980
redis基本应用
list/set/hash/zset 这四种数据结构是容器型数据结构,它们共享下面两条通用规则:
leobhao
2022-06-28
2500
MMAP 与 FileChannel
在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来获取一个FileChannel实例。下面是通过RandomAccessFile打开FileChannel的示例:
leobhao
2022-06-28
4900
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档