java基础
文章平均质量分 67
Wanna926
未来不迎,当下不杂,既往不恋。
展开
-
多态--总结及举例
翻看了一些资料,对java中多态基本要点做一下总结,水平有限,欢迎指正!原创 2016-06-07 08:40:01 · 349 阅读 · 0 评论 -
equals()重写规则
为什么equals()方法要重写?判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存在已知对象,这样就必须重写equals方法。原创 2016-08-11 19:47:48 · 756 阅读 · 0 评论 -
Java IO讲解
Java 的 I/O 操作类在包 java.io 下,大概有将近 80 个类,但是这些类大概可以分成四组,分别是:基于字节操作的 I/O 接口:InputStream 和 OutputStream基于字符操作的 I/O 接口:Writer 和 Reader基于磁盘操作的 I/O 接口:File基于网络操作的 I/O 接口:Socket前两组主要是根据传输数据的数据格转载 2016-08-10 20:18:17 · 305 阅读 · 0 评论 -
ConcurrentHashMap深入分析
ConcurrentHashMap的锁分段技术 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先将数据转载 2016-07-19 15:03:59 · 440 阅读 · 0 评论 -
HashTable和HashMap分析
1、Map体系参考:http://java.chinaitlab.com/line/914247.htmlHashtable是JDK 5之前Map唯一线程安全的内置实现(Collections.synchronizedMap不算)。Hashtable继承的是Dictionary(Hashtable是其唯一公开的子类),并不继承AbstractMap或者HashMap.尽管Hashtable转载 2016-07-19 14:26:35 · 366 阅读 · 0 评论 -
【深入学习java集合框架】LinkedList源码学习
1、LinkedList底层通过双向链表实现,双向链表的每个节点用内部类Node表示。2、LinkedList通过first和last引用分别指向链表的第一个和最后一个元素,当链表为空的时候first和last都指向null。3、LinkedList的实现方式决定了所有跟下标相关的操作都是线性时间,而在首段或者末尾删除元素只需要常数时间。4、LinkedList没有实现同步(synch原创 2016-07-07 10:47:15 · 971 阅读 · 2 评论 -
【深入学习java集合框架】ArrayList源码学习
1、ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素。2、ArrayList基于数组实现,改善数组固定长度的弊端,ArrayList是一个动态数组,其容量能自动增长。3、ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以用Collections.synchronizedList(List l)返回一个线程安原创 2016-07-07 09:37:48 · 700 阅读 · 0 评论 -
【深入学习java集合框架】总篇章
Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。很多时候拆包装和解包装能够自动完成。Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。Java集合框架大致可以分为:List列表、Set集原创 2016-07-06 11:11:16 · 1255 阅读 · 0 评论 -
【深入理解java虚拟机 JVM】Java内存结构
方法区和堆是由所有线程共享的数据区。Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。(1).程序计数器:一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程序的分支、循环、跳转、异常处理以及线程恢复等基础功能都是依赖程序计数器来完成。Java虚拟机的多线程是通过线程轮流切换并分配处理器执原创 2016-06-20 13:21:47 · 391 阅读 · 0 评论 -
【深入理解Java虚拟机JVM】java如何实现跨平台
把CPU处理器与操作系统的整体叫平台,每种CPU都有其特定的指令集,不同的操作系统支持不同CPU的指令集。语言跨平台是编译后的文件跨平台,而不是源程序跨平台。.java经过编译器(与平台无关)编译为.class文件,再根据解释器(与平台相关)解释执行。Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是原创 2016-06-20 11:24:17 · 3749 阅读 · 0 评论 -
java 位运算常用技巧
(1) m数乘2n:相当于数左移n位;注意,除操作慎用右移,注意负数情况。(2) m>>n:右移—最右边n位丢弃,最左边0补位(无符号)/符号位补最左边。**利用右移对最右边的位进行与运算,判断数为0还是1://判断奇数、偶数** 0:(c&1)==0 c >>= 1;** 1: (c&1)==1) c >>= 1;(3) 常见原创 2016-07-14 15:23:52 · 1419 阅读 · 0 评论 -
java线程基础
(1) 创建:继承Thread类与实现Runnable接口(2) stop()不安全,会解除由线程获取的所有锁定(3) suspend()易发生死锁,目标线程会停止,却仍持有在这之前获得的锁定。不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢原创 2016-07-14 15:22:24 · 333 阅读 · 0 评论 -
String 及 StringBuffer常用方法总结
String类:(不可变类)创建:new String(); String(StringBuffer sb); “ ”;字符串长度:str.length();获取子串:str.substring(start,end);----[0,N)字符串包含:boolean = str.contains(s);不区分大小写判断:str.equalsIgnoreCase(“hello”);原创 2016-07-14 15:20:31 · 2059 阅读 · 0 评论 -
网络协议详解
1、详细介绍了分层基础及思想,看完后突然感觉思路条理了,内容清晰易懂,网络协议入门及梳理必看!http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html2、第1部分的续集,更加深入的介绍,大致反映了互联网协议的整个通信过程。http://www.ruanyifeng.com/blog/原创 2016-07-12 18:53:12 · 633 阅读 · 0 评论 -
进程间通信方式
进程间通信主要包括管道, 系统IPC(包括消息队列,信号量,共享存储), SOCKET. 管道包括三种: 1)普通管道PIPE, 一是半双工,只能单向传输;二是只能在父子进程间使用. 2)流管道s_pipe: 去除了第一种限制,可以双向传输. 3)命名管道:name_pipe, 去除了第二种限制,可以在许多并不相关的进程之间进行通讯. 系统IPC的三种方式类同,都是转载 2016-08-12 16:16:09 · 390 阅读 · 0 评论