随笔分类 -  Java基础

摘要:最近关注OpenMessaging项目,它尝试去定义一套MQ领域的行业标准。MQ目前确实没有一套标准的接口,如果我们尝试从更高的层次看自己的项目,即我们希望它成为行业标准,那么现在项目中接口的定义合适吗?是否够通用、简洁、易用、合理? 带着这样的疑问,最近把Kafka Consumer部分的源码读了一遍,因为: 1. Kafka应该是业界最著名的一个开源MQ了(RocketMQ最初也是参考了Kafka去实现的) 2. 希望通过读Kafka源码能找到一些定义MQ接口的想法 但是在读完Kafka Consumer部分的源码后稍稍有一些失望,因为它并没有给我代码我想要的,反而在读完后觉得接口设计和源码实现上相对于Kafka的盛名有一些名不副实的感觉。 阅读全文
posted @ 2017-12-04 09:25 杭州.Mark 阅读(2474) 评论(3) 推荐(0) 编辑
摘要:介绍ByteBuffer的源码 阅读全文
posted @ 2017-06-27 15:42 杭州.Mark 阅读(2234) 评论(0) 推荐(0) 编辑
摘要:本文描述通过一种叫做Zore Copy的技术来提升运行在Linux和UNIX上的Java程序的IO性能。 Zero copy避免冗余的数据拷贝并减少用户态和内核态之间的上下文切换。 阅读全文
posted @ 2017-02-19 15:05 杭州.Mark 阅读(1120) 评论(0) 推荐(2) 编辑
摘要:继上次排查CPU问题后继续查内存问题并解决。 阅读全文
posted @ 2014-06-16 22:47 杭州.Mark 阅读(1841) 评论(2) 推荐(3) 编辑
摘要:记录一次JVM CPU飚高的问题查找 阅读全文
posted @ 2014-06-05 16:07 杭州.Mark 阅读(3010) 评论(2) 推荐(2) 编辑
摘要:分页 阅读全文
posted @ 2013-07-22 13:17 杭州.Mark 阅读(3824) 评论(6) 推荐(1) 编辑
摘要:一个工具类 阅读全文
posted @ 2013-07-09 18:55 杭州.Mark 阅读(2082) 评论(9) 推荐(1) 编辑
摘要:总结自己遇到过的和序列化相关的所有内容。 阅读全文
posted @ 2013-01-30 12:38 杭州.Mark 阅读(2547) 评论(5) 推荐(0) 编辑
摘要:介绍并发相关的基础知识和并发编程中常用到的几个接口和类。 阅读全文
posted @ 2013-01-21 15:06 杭州.Mark 阅读(4329) 评论(2) 推荐(3) 编辑
摘要:介绍Java Executor框架 阅读全文
posted @ 2013-01-21 10:39 杭州.Mark 阅读(5826) 评论(0) 推荐(8) 编辑
摘要:注解简单使用和使用注解的想法。 阅读全文
posted @ 2013-01-14 15:03 杭州.Mark 阅读(1570) 评论(0) 推荐(0) 编辑
摘要:介绍Java枚举类型、提供枚举类型的随机选择器、介绍如何使用接口组织枚举及枚举的枚举。 阅读全文
posted @ 2013-01-11 20:18 杭州.Mark 阅读(4336) 评论(0) 推荐(2) 编辑
摘要:Java集合类源码分析汇总贴 阅读全文
posted @ 2013-01-05 19:53 杭州.Mark 阅读(5706) 评论(2) 推荐(3) 编辑
摘要:TreeMap有Values、EntrySet、KeySet、PrivateEntryIterator、EntryIterator、ValueIterator、KeyIterator、DescendingKeyIterator、NavigableSubMap、AscendingSubMap、DescendingSubMap、SubMap、Entry共十三个内部类。Entry是在TreeMap中用于表示树的节点的内部类,已经在《TreeMap源码分析——基础分析》中分析过。下面逐一介绍上面的内部类以及TreeMap中提供的和内部类相关的方法。 阅读全文
posted @ 2013-01-05 07:58 杭州.Mark 阅读(2066) 评论(1) 推荐(1) 编辑
摘要:常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的TreeMap。 TreeMap基于红黑树(点击查看树、红黑树相关内容)实现。查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。 阅读全文
posted @ 2013-01-02 18:23 杭州.Mark 阅读(4254) 评论(1) 推荐(4) 编辑
摘要:Java容器类的用途是“保存对象”,分为两类:Map——存储“键值对”组成的对象;Collection——存储独立元素。Collection又可以分为List和Set两大块。List保持元素的顺序,而Set不能有重复的元素。 本文分析Set中最常用的HashSet类,并简单介绍和对比LinkedHashSet。 首先对Set接口进行简要的说明。 存入Set的每个元素必须是惟一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set不保证维护元素的次序。Set与Collection有完全一样的接口。 在没有其他限制的情况下需要Set时应尽量使用HashSet,因为它对速度进行了优化。 阅读全文
posted @ 2012-12-27 20:50 杭州.Mark 阅读(3013) 评论(0) 推荐(2) 编辑
摘要:LinkedHashMap类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它使用链表维护内部次序(HashMap是基于散列表实现的,相关HashMap的内容可以看《Java集合类》和《HashMap源码分析》)。 阅读全文
posted @ 2012-12-26 20:52 杭州.Mark 阅读(4000) 评论(0) 推荐(5) 编辑
摘要:《Java集合类》一文中已经最List的基本操作进行说明,并且比较了ArrayList和LinkedList的效率。本文将进一步解析LinkedList。 LinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的。基于链表也决定了它在随机访问方面要比ArrayList逊色一点。 初次之外,LinkedList还提供了一些可以使其作为栈、队列、双端队列的方法。这些方法中有些彼此之间只是名称的区别,以使得这些名字在特定的上下文中显得更加的合适。 阅读全文
posted @ 2012-12-25 21:47 杭州.Mark 阅读(3814) 评论(5) 推荐(5) 编辑
摘要:在Java集合类中最常用的除了ArrayList外,就是HashMap了。本文尽自己所能,尽量详细的解释HashMap的源码。一山还有一山高,有不足之处请之处,定感谢指定并及时修正。 阅读全文
posted @ 2012-12-24 22:07 杭州.Mark 阅读(16149) 评论(17) 推荐(17) 编辑
摘要:不积跬步,无以至千里;不积小流,无以成江海。从基础做起,一点点积累,加油! 《Java集合类》中讲述了ArrayList的基础使用,本文将深入剖析ArrayList的内部结构及实现原理,以便更好的、更高效的使用它。 ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小...... 认真阅读本文,我相信一定会对你有帮助。比如为什么ArrayList里面提供了一个受保护的removeRange方法?提供了其他没有被调用过的私有方法? 阅读全文
posted @ 2012-12-20 07:53 杭州.Mark 阅读(13491) 评论(11) 推荐(11) 编辑