String,String Builder,String Buffer-源码】的更多相关文章

利用反编译具体看看"+"的过程 1 public class Test 2 { 3 public static void main(String[] args) 4 { 5 int i=10; 6 String s="abc"; 7 System.out.println (s+i); 8 } 9 } 可以看到的确是创建了StringBuilder类,然后调用了两次append方法,并且调用了toString方法. 查看AbstractStringBuilder源码可…
序 好长时间没有认真写博客了,过去的一年挺忙的.负责过数据库.线上运维环境.写代码.Code review等等东西挺多. 学习了不少多方面的东西,不过还是需要回归实际.加强内功,方能扛鼎. 去年学习Mysql列举了大纲,书写了一部分.后来进入到工作状态,就没有继续书写.当然其实没有书写的内容部分已经总结到了公司内部的wiki中,或者在工作过程中大半也应用过,也懒得书写下来了.看什么时候又有心情,重新回顾总结一下吧. 下一步的学习计划 数据结构.算法.源代码解读.多线程(哎,学无止境) 为什么先说…
相同:底层均采用字符数组value来保存字符串 区别:String类的value数组有final 修饰,指向不可改,同时private 未提供修改value数组的方法.StringBuilder类的value数组没有final修饰,可以改变指向,且可以扩容,扩容通过新建字符数组完成. 首先分析String的源码: 可以看到String类有final修饰,所以String类不能被继承.这保证对String对象方法的调用确实运行的是String类的方法,而不是经其子类重写后的方法.往下看,是valu…
1.String 1.1类的定义 public final class String implements java.io.Serializable, Comparable<String>, CharSequence String类在定义时候使用final关键字进行修饰,限制了这个类无法被继承,里面的方法也无法被重写. 同时它还实现了Serializable接口.Comparable接口,以及CharSequence接口三个接口: Serializable:序列化接口,如果允许对象被序列化需要…
概述 文章主要介绍的是PoolArena,PoolChunk,PoolSubpage 三个类的源码 PoolArena PoolArena 是netty 的内存池实现类,通过预先申请一块大的空间,然后对空间进行分配和回收,这样就不用频繁进行系统调用,提高性能. PoolArena 由多个 chunk 组成,chunk 则由多个page 组成. PoolChunk Chunk 主要用来组织和管理多个Page的内存分配和释放,在netty中,Chunk 中的Page被构造成一棵二叉树. PoolSu…
问题 : netty的 ByteBuff 和传统的ByteBuff的区别是什么? HeapByteBuf 和 DirectByteBuf 的区别 ? HeapByteBuf : 使用堆内存,缺点 ,socket 传输的时候由于需要复制的原因,慢一点 DirectByteBuf : 堆外内存,可以使用零拷贝 概述 netty ByteBuf 存在两个指针,分成三个区域: 已读区(可丢弃),未读区(未读),可写区 .不像之前JDK 的 ByteBuffer 中只有一个position 指针.例如以下…
博客园对MarkDown显示的层次感不是很好,大家可以看这里:Buffeer. 本机环境: Linux 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Buffer Buffer的类图如下: 除了Boolean,其他基本数据类型都有对应的Buffer,但是只有ByteBuffer才能和Channel交互.只有ByteBuffer才能产生Direct的buffer…
问题 : compositeByteBuf 是干什么和其他 compositeByteBuf 有何区别 内部实现 概述 compositeByteBuf 就像数据库中的视图,把几个表的字段组合在一起,它的应用场景比如一个自定义协议有消息头和消息体,而两者是分开到两个 ByteBuf 的,那么这时候要怎么把两个ByteBuf 放到一起管理呢?compositeByteBuf就可以解决这个问题. 源码 compositeByteBuf 内部放着一个 Components 的数组,这个 Compone…
http://blog.csdn.net/zhangjg_blog/article/details/18319521…
Java 自从 JDK1.4 起,对各种 I/O 操作使用了 Buffer 和 Channel 技术.这种更接近于操作系统的的底层操作使得 I/O 操作速度得到大幅度提升,下面引用一段<Java 编程思想>对于 Buffer(缓冲器)和 Channel 的形象化解释. 我们可以将它想象成一个煤矿,Channel(通道)是一个包含煤层(数据)的矿藏,而 Buffer(缓冲器)则是派送到矿藏的卡车.卡车满载煤炭而归,我们再从卡车上获得煤炭.也就是说,我们并没有直接和 Channel 交互:我们只是…