自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Joel.Wang老王的专栏

Record Technology Life

  • 博客(17)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

转载 HBase是列式存储数据库吗

Cassandra and HBase have a concept of column families, which they inherited from Bigtable. However, it is very misleading to call them column-oriented: within each column family, they store all columns from a row together, along with a row key, and they do

2020-11-30 11:07:31 2875

原创 三大步完成A-Tour-of-Go安装

发现运行官方给的命令:$go get golang.org/x/tour1连续几次,一直报连接超时,无法下载包。不过因为 golang.org/x/xxx 这类包托管在 github.com/golang,所以我们可以从github安装,只是要注意几个包的依赖关系。

2019-08-06 23:37:11 643 1

原创 java并发学习总结

这是一篇学习总结,不会深入到细节,不过好处是:可以快速获得对java并发编程的整体认识,并且会了解到一些核心的原理。一、JAVA并发的主要组件1 线程池2 Future3 锁:ReentrantLock、AbstractQueuedSynchronizer和LockSupport工具类4 队列(阻塞、非阻塞,优先队列、延迟队列)5 并发容器类:ConcurrentHashMap/C...

2019-07-31 07:56:46 307 1

原创 (七) 提高内存分配性能,从线程缓冲分配---PoolThreadCache

从上篇文章(六) 图解netty内存池的核心分配算法—PoolArena/PoolChunk/PoolSubpage中可以知道,netty内存池在分配粒度为tiny/small/normal的内存块时,都首先尝试从线程缓冲池PoolThreadCache分配,线程缓冲分配不成功,才分配新的内存。这么做可以明显地提高内存分配的性能。那么现在来分析,线程缓冲池中存的是什么?怎么存进去?又怎么取出来?...

2019-07-21 23:36:03 566

原创 (六) 图解netty内存池的核心分配算法—PoolArena/PoolChunk/PoolSubpage

在前两篇文章:(四) netty内存池:技术概要和(五) netty内存池:分配器PooledByteBufAllocator和内存池字节缓冲的表示做了netty内存池方面的不少铺垫,这篇打算来把核心的分配算法都讲完,本文的结构是,先讲内存分配涉及到的各个数据结构,再分别讲各个内存粒度的分配算法,主要是huge粒度的直接分配方式,normal粒度的buddy分配算法,small和tiny粒度的s...

2019-07-15 07:52:15 1479

转载 java中String类型的最大长度

转载自:https://blog.csdn.net/lishushan/article/details/83761036在cpp中为了可移植性,string的长度是string::size_type,突然就想知道java允许的最大字符串长度为多少。看String的源码:public final class String implements java.io.Serializable, ...

2019-07-13 07:31:47 12164 6

转载 为什么在Java中object.wait()/notify()方法必须在持有锁的情况下才能执行?

首先,如果在未持有对象锁的情况下调用object.wait()/notify(),直接会报错,JDK已经做好保护。其次,为什么要这么设计?其实这是一种安全设计,为了防止wait错过notify。请看下面代码: boolean wakeuped = false; void dowait() { if(wakeuped) return; wait(); ...

2019-07-11 21:30:52 3412 3

原创 (五) netty内存池:分配器PooledByteBufAllocator和内存池字节缓冲的表示

说明类图

2019-07-10 21:18:58 1754

原创 (四) netty内存池:技术概要

文章目录1 netty内存池概述2 netty内存池内存分配算法概述2.1 netty内存池的主要数据结构2.2 netty内存池分配粒度的分级1 netty内存池概述内存管理,按使用的范围,分为操作系统的内存管理和用户应用自己的内存管理。操作系统的内存管理是指,进程在需要时向操作系统申请分配一定量的内存资源,并在使用结束后释放和回收内存资源。常见的操作系统内存管理算法有:slab、buddy...

2019-07-08 00:07:29 594

原创 (三) netty非池化内存的分配与回收:UnpooledByteBufAllocator

1. 引子在上一篇文章(二) netty非池化内存的表示:UnpooledHeapByteBuf和UnpooledDirectByteBuf,介绍了各种非池化字节缓冲的分配、使用和回收。但在实践中一般不是直接调用他们的构造器来创建一个字节缓存的,而是通过分配器来分配,比如:public static void main(String[] args) throws Exception {...

2019-07-06 09:42:36 2661

原创 (二) netty非池化内存的表示:UnpooledHeapByteBuf和UnpooledDirectByteBuf

1 概述从最基础的ByteBuf开始讲解netty的内存分配,是为了后续更清楚地了解netty内存池的分配技术。目标是,了解各种ByteBuf本质上是什么?netty提供了众多的ByteBuf实现,而在我们该系列文章中,我们按内存分配的算法来分类,分为非池化ByteBuf和池化的ByteBuf。而两个主力的非池化字节缓冲UnpooledHeapByteBuf和UnpooledDirectByt...

2019-07-03 22:22:58 3049 1

原创 (一) netty ByteBuf的分配与使用基础

本文作为netty内存管理专题的第一篇。在深究netty内存分配的底层原理之前,先来从外部了解它的基本用法。1 非池化内存的分配和使用示例代码如下,以下代码展示了直接内存缓冲的分配、读写和回收:public static void main(String[] args) throws Exception { // 获取非池化ByteBuf分配器 ByteBufAllocator al...

2019-07-02 07:32:33 659

翻译 数据对齐:整理并向右对齐--为速度和正确性对齐你的数据

原文:https://developer.ibm.com/articles/pa-dalign/,不恰当和蹩脚之处,请指正。内存访问粒度程序员习惯于把内存认为是简单的字节数组。在C和它的衍生语言中,char*普遍被看成是“一块内存”,甚至Java也有byte[]数组来表示物理内存。图1 程序员是这样看待内存的然而,计算机处理器可不是按一个字节大小为单位来读写内存的。相反,它以2字节、...

2019-06-27 07:59:57 1945

原创 java.nio.DirectByteBuffer的分配与回收源码剖析

直接内存简介java NIO使用直接内存时,可以减少一次堆内内存到对外内存的转换,从而提高效率。在java中,语义上使用DirectByteBuffer对象表示一段直接内存,而本质上DirectByteBuffer对象是位于堆内的,它指向了堆外的直接内存。直接内存不归jvm管理,所以使用时,需要小心。具体如何本文将详细分析。DirectByteBuffer的基本使用如下:public sta...

2019-06-24 19:13:31 1550

原创 netty-Future、Promise和Listener源码分析

1 netty Future的基本使用编程语言中的future,顾名思义就是一个操作在将来才会完成,但是调用方不必同步等待结果,只要持有对应操作的future对象即可,等操作完成了,从future中获取结果。netty Future是实现其异步非阻塞IO机制的重要对象。本文从演示netty Future的基本使用开始,再到源码角度分析其实现原理,最后剖析其在netty的异步非阻塞IO中如何使用...

2019-06-09 22:45:53 1752 1

原创 图解netty:FastThreadLocal实现原理分析

1 FastThreadLocal的引入背景和原理简介既然jdk已经有ThreadLocal,为何netty还要自己造个FastThreadLocal?FastThreadLocal快在哪里?这需要从jdk ThreadLocal的本身说起。如下图:在java线程中,每个线程都有一个ThreadLocalMap实例变量(如果不使用ThreadLocal,不会创建这个Map,一个线程第一次访...

2019-06-05 10:31:06 5761

原创 我来了

博客开篇致辞工作以来一直coding,工作久了,就想写些东西,总结也好,记录也好,证明自己自己干过。最近在看netty源码,就从netty源码分析开始吧。网上已经有很多netty源码的分析,有些还是一个完整的教程。因此,我就不打算再写完整的教程了,这些完整的教程到时专门写一篇博客做资料汇总。我就针对网上还没写的部分,或者写得不够详细的部分,查缺补漏。...

2019-06-02 18:16:57 119

设计模式-可复用面向对象软件的基础(所有Pdf整合到一起)

网上流传的设计模式版本,很多地方都是分开的pdf文件,故在此分享一本合成到一起的。

2013-11-21

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除