Java底层探索
文章平均质量分 86
熟悉Java的运行原理,把握该语言特性,更好的使用
刘兆贤
好好学习,天天向上
展开
-
HashMap是如何实现的?
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处!最近因XX需要,研究HashMap的内部实现,原因你懂的。经常三天时间,终于可以写下一些东西。数据结构:数组+链接。即每个数组中的单个元素,都是一个链表,该元素的下标由key的hash与数组长度决定,该链接的key的hash都相等。特点:它和HashTable大致相同(除了非线程安全和允许空键、空值),不保证排列顺序一直不变; 不要设置扩容因子过大......原创 2020-11-17 18:09:48 · 1144 阅读 · 0 评论 -
读书笔记-容器、泛型及反射
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处! 在Java中,对象的封装非常常见,今天我们可以聊下容器和泛型的问题,对对象进行更深入一点的研究。 常见窗口有Set、Queue、Map,也称为集合类,属于Collection。ArrayList属于一个“可以自动扩充自身尺寸的数组“,Linke原创 2014-01-20 11:54:56 · 1587 阅读 · 0 评论 -
读书笔记-容器深入理解
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处! ArrayList底层是由数组支持,而LinkedList是由双向链表实现,因此插入或删除,LinkedList比较合适,查询则用ArrayList,HashSet是查询速度最快的,LinkedH...原创 2014-01-20 19:40:30 · 1938 阅读 · 2 评论 -
读书笔记-并发
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处!并发产生的大环境:所有事情都是顺序执行的,但总有一些事情需要同时进行,这种现象就叫并发。一般情况下,多核处理器机器处理快,相当于几个人在同时做几件事,而单核相当于一个人在同时做几件事,通常情况下,我们要提高性能,都是在单核上进行操作的,毕竟单核提高,多核更快。单核程序,增加了事...原创 2014-02-01 11:57:25 · 2179 阅读 · 0 评论 -
Java生产者与消费者(上)
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处! 生产与消费者模式,是编程中最常用的模式之一,在多线程中应用比较明显。个人理解:在自助餐厅,厨师在不断做菜放桌子上,吃货不断从桌子上拿东西,这中间如果桌子上已经摆满那厨师要暂停工作 ,桌子上已没有食物则吃货要暂停拿东西吃。先决条件,食材充足,桌子一定。本程序设计原则:由于synchr原创 2014-03-27 21:45:06 · 2843 阅读 · 0 评论 -
Java生产者与消费者(下)
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!上一讲我们让消费者和生产者都各停1毫秒,实际上大多并不是这样的。第二讲,我们讲一个极端的例子和一个正常的例子,假设您已经看过上一讲,我们只改变Consumer和Producer,来看结果。Java生产者与消费者(上)名词解释wait:当前线程不运行,处理等待状态,等原创 2014-03-30 08:28:08 · 2421 阅读 · 0 评论 -
Java高级之线程同步
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处! 关于实现多线程的意义,“从业四年看并发”一文已经讲述,而本篇主要讲一下常用的设计模式和对象介绍,关于底层,请查看“Java高级之内存模型分析”。 通常情况下,狭义上来说,实现了变量或对象的原子性,即可以实现线程安全。什么叫线程的原子性,即执行read-load-assign-use-store-wr原创 2016-06-29 21:50:11 · 1889 阅读 · 0 评论 -
Java基础架构
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 人所共知,equals与==之间是有差别的,结果为true,equals代表引用相等,==代表值相等。什么是引用,什么是值,今天我给大家讲一讲。 举例说明:String str="abc";//str就是一个引用,abc...原创 2012-08-06 09:55:42 · 1977 阅读 · 0 评论 -
读书笔记-Java设计模式
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处! Java的封装性很好,拿访问控制符来讲,没有权限的类或方法是不能访问的。如public,都可访问;private,只有本类中方法可访问;protected位于两者之间,位于本包中对象可访问。 ...原创 2014-01-07 14:53:35 · 1613 阅读 · 0 评论 -
读书笔记-内存初始化和清理
在Java开发中,对象创建、数据关系、垃圾回收始终是不变的话题,今天我们来简单说一下初始化和清理的问题。 我们知道对象未被初始化即被使用,是要报错的,所以一般情况下在类构造方法里去赋初值,确保初始化工作的完成。关于构造方法,我们可以使用不同参数类型和数目的构造器。 this关键字代替了对象,以调用方法,在内部类里面十分有用,可以避免建造多余对象;另外一方面在一个构造器内调用另一个,可以避免重复代码。static方法内部不能调用非静态方法和变量,不能使用this关键字。原创 2014-01-06 16:07:03 · 2104 阅读 · 0 评论 -
读书笔记- 一切都是对象
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处!OO与PO:面向对象(Object Oriented)与面向过程(Procedure Oriented)前者面向对象,首先构造一个对象,然后设置对象方法,最后由对象来处理任务,只关注结果。后者面向过程,首先设置对象的方法,然后排序,最...原创 2014-01-06 14:08:07 · 1685 阅读 · 0 评论 -
Java中join和yield的作用
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处! 1、 A.join,在API中的解释是,堵塞当前线程B,直到A执行完毕并死掉,再执行B。用一个小例子来说明吧static class ThreadA extends Thread { @Override public void run() { /原创 2014-03-30 16:00:30 · 5675 阅读 · 8 评论 -
从业四年看并发
从业到现在,一直是看别人的博客,看别人的文章,一直在学习,总结的只是经验性东西,可以复用的,比较深的见解还从未写出来过。今天清英同学号召大家分享并发经验,抛开大家已经写的东西,看看一个从业四年的人是如何看待这个问题的吧! 一直写java程序,一开始从基础操作写起,再者功能,再者逻辑,现者算法,慢慢接触到大型项目,并发、多线程、IO操作就开始用的多了。 在刚开始,接触到用子线程+handler的方式处理任务,完成后给UI线程提供处理结果,稍后用runonuithead,asynctask比较多原创 2014-01-21 12:13:56 · 4042 阅读 · 8 评论 -
Java高级之类结构的认识
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处!Java体系包括,各种版本的虚拟机,可执行文件,各种第三方类库,Java API类库,Java语言发展史:91年James Gosling博士带领开发出Oak,95年互联网兴起来变成Java,并正式改名,并提出“一次编译到处执行”的口号。96年1.0正式发布,代表技术有Java虚拟...原创 2016-05-20 19:36:54 · 2638 阅读 · 4 评论 -
Java高级之内存模型分析
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !下文是博主感悟,请带着怀疑性的态度阅读!需要了解基本变量所占内存大小,请移步:读书笔记-类结构的认识Java存储空间有这么几块-来源于Java编程思想寄存器:位于处理器内部,不受外层代码控制,由处理器自行分配-C/C++可以建议分配方式,使用句柄(包含引用类型和引......原创 2016-05-26 22:02:44 · 2328 阅读 · 0 评论 -
Java高级之虚拟机垃圾回收机制
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !区别于C语言手动回收,Java自动执行垃圾回收,但为了执行高效,需要了解其策略,更好的去应用。以下用HotSpot虚拟机为例,选取几个有意思的参数讲一下1、默认GC时间为总时间的1%。也就是说GC线程设置有超时时间,防止卡死或过多妨碍主线程。2、最高最低内存空闲比原创 2016-05-27 19:07:59 · 2611 阅读 · 0 评论 -
Java高级之虚拟机加载机制
本文来自http://blog.csdn.net/liuxian13183/,引用必须注明出处!前两节我们探讨了Java类内存模块,文件结构,以及Jvm的回收机制,今天我们再来探讨一下它的文件加载机制,都知道Jvm要加载的是二进制流,可以是.class文件形式,也可以是其他形式,总之按照它加载的标准来设计就不会有太大问题,以下主要就机制和标准两个问题分析一番首先来说Java类文件的加载机制,跟变原创 2016-05-31 22:33:09 · 2579 阅读 · 0 评论