会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
towboat
博客园
首页
新随笔
联系
管理
订阅
1
2
3
4
5
···
54
下一页
2025年5月25日
netty内存池记录
摘要: 在 Netty 的 PoolChunk 中,分配内存的核心逻辑是通过 allocateNode(int d) 方法实现的,其中 d 表示所需内存块在二叉树中的深度(层级)。以下是针对请求分配大小为 p 的内存块的完整流程和代码解析: 1. 确定所需内存的深度 d 首先需要将请求的内存大小 p 转换为
阅读全文
posted @ 2025-05-25 12:17 towboat
阅读(10)
评论(0)
推荐(0)
2025年5月15日
Kafka 可变长度编码
摘要: Kafka 协议中使用了可变长度(Varints)和可变长度字节数组(VarBytes)的编码方式,这是一种高效的数据表示方法。 可变长度整数(Varints) Kafka 使用可变长度编码来表示整数,这种编码的特点是: 较小的数字占用较少的字节 每个字节的最高位用作标志位,表示是否还有后续字节 实
阅读全文
posted @ 2025-05-15 21:54 towboat
阅读(23)
评论(0)
推荐(0)
2025年4月28日
reactor 与 proactor
摘要: reactor ①主线程往epoll内核事件表中注册socket上有数据可读 ②主线程调用epoll_wait等待socket上有数据可读 ③当socket上有数据可读时,epoll_wait通知主线程。主线程则将socket可读事件放入请求队列 ④睡眠在请求请求队列上的某个工作线程被唤醒,它从so
阅读全文
posted @ 2025-04-28 11:12 towboat
阅读(12)
评论(0)
推荐(0)
2025年3月8日
dockerfile load
摘要: 切换当前目录时 使用 workdir CMD CMD 指令就是用于指定默认的容器主进程的启动命令,注意启动的是守护线程,应该注意其特性
阅读全文
posted @ 2025-03-08 00:40 towboat
阅读(15)
评论(0)
推荐(0)
2025年3月3日
VariableLinkedBlockingQueue 是一个支持动态调整容量的线程安全阻塞队列,适用于需要灵活扩展或收缩队列大小的并发场景。
摘要: VariableLinkedBlockingQueue 实现动态扩展的核心是通过 setCapacity(int) 方法动态调整队列的容量,并在调整容量时确保线程安全和数据一致性。以下是其实现动态扩展的关键机制: 1. 动态调整容量的实现 setCapacity(int capacity) 方法是实
阅读全文
posted @ 2025-03-03 00:31 towboat
阅读(105)
评论(0)
推荐(0)
2025年1月15日
并发编程记录
摘要: 原子性,可见性,有序性 happens-before 原则6条 管程: 互斥:临界区,共享资源 同步 条件变量,等待队列 关于活锁中的"谦让":比如释放锁 CopyOnWriteList ,所谓写时复制: 1. 读的时候读原数据 2. 写(全程加锁):原来的数据可能被读,考虑开一个副本再写,然后替换
阅读全文
posted @ 2025-01-15 22:54 towboat
阅读(7)
评论(0)
推荐(0)
2025年1月2日
threadpool execute( )
摘要: 线程池的execute实现逻辑: 向线程池提交一个任务,如果线程数不超过核心线程数,就创建线程,否则加入阻塞队列。这里创建的"线程"是一个包装thread类(通过继承)的类,其中run( ) 是一个循环,不断从阻塞队列中取任务执行 final void runWorker(Worker w) { R
阅读全文
posted @ 2025-01-02 22:05 towboat
阅读(10)
评论(0)
推荐(0)
如何批量执行异步任务?
摘要: 现在有多个异步任务需要处理,考虑用阻塞队列 给线程池提交任务: 将future结果加入阻塞队列 这样先执行完成的可以先消费 BlockingQueue<Integer> bq = new LinkedBlockingQueue<>(); //电商S1报价异步进入阻塞队列 executor.execu
阅读全文
posted @ 2025-01-02 21:40 towboat
阅读(12)
评论(0)
推荐(0)
Future 与 FutureTask与线程池
摘要: FutureTask 有future与Runnable的特征 (实现interface) 线程池execute(Runnable) 返回 Future<> future , 可以通过 future.get( ) 获取结果 也可以把FutureTask 提交到线程池执行,然后直接task.get( )
阅读全文
posted @ 2025-01-02 15:24 towboat
阅读(26)
评论(0)
推荐(0)
2024年12月29日
关于异步任务
摘要: 以下是一些常见的异步技术及其底层机制: 基于事件循环 机制:通过事件驱动模型(如观察者模式)管理任务,任务会被挂起并在有事件通知时重新调度。 特点:通常在单线程中执行,避免了线程间的切换开销。 例子: Node.js 的事件循环 Python 的 asyncio 库 基于回调 机制:任务完成后通过回
阅读全文
posted @ 2024-12-29 21:28 towboat
阅读(30)
评论(0)
推荐(0)
1
2
3
4
5
···
54
下一页
公告