
java进阶
文章平均质量分 88
edride
わたし、気になります!
展开
-
java 集合框架(一)概述
Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。 在面向对象思想里,一种数据结构也被认为是一个容器。Java集合框架支持以下两种类型的容器 1、为了粗存一个元素的集合,简称为集合(collection) 2、是为了存储键/值对,称为图(Map)一、迭代器 迭代器是一个对象,它的工作是遍历并悬着序列中的对象,而客原创 2016-11-02 23:12:56 · 377 阅读 · 0 评论 -
java-Serializable 序列化
java的对象序列化将那些实现了Serializable接口的对象装换成一个字节序列,并能够在以后将这个字节序列完全恢复成原来的对象。这意味着序列化机制能自动弥补不同操作系统之间的差异public interface Serializable {}可以看到该接口仅是一个标记接口,不包括任何方法。使用对象流实现序列化创建一个可序列化的bean,Data类public class Data implem原创 2016-12-08 15:05:33 · 724 阅读 · 0 评论 -
Thinking in java学习笔记-并发(二)
线程的状态进入阻塞状态 1、调用sleep()是任务进入休眠状态 2、通过wait()是线程挂起,直到被notify()或notifyAll()唤醒后进入就绪状态。 3、任务在等待输入/输出完成 4、任务试图在某个对象上调用其同步控制方法,但是对象锁不可用,因为另一个任务已经获取了这个锁。2、中断Thread类包含interrupt原创 2016-11-24 23:40:59 · 619 阅读 · 0 评论 -
java-Semaphore
Semaphore是一个计数器,在计数器不为0的时候对线程就放行,一旦达到0,那么所有请求资源的新线程都会被阻塞,包括增加请求到许可的线程,也就是说Semaphore不是可重入的。每一次请求一个许可都会导致计数器减少1,同样每次释放一个许可都会导致计数器增加1,一旦达到了0,新的许可请求线程将被挂起。简单例子public class SemaphoreTest { public static原创 2016-12-06 21:27:22 · 782 阅读 · 0 评论 -
Thinking in java学习笔记-并发(一)
一、线程和进程进程:进程是运行在它自己的地址空间内的自包容的程序线程:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。一个程序至少有一个进程,一个进程至少有一个线程.原创 2016-11-20 18:30:40 · 714 阅读 · 0 评论 -
java-生产者消费者问题
生产消费问题是线程之间协作的例子synchronized关键字 当在对象上调用其任意synchronized方法的时候,此对象都被加锁,这时该对象上的其他synchronized方法只有等前一个方法调用完毕并释放了锁之后才能被调用 1、同步方法public synchronized int next(){ //...}2、同步块synchronized(同步对象){ //需要同原创 2016-11-22 19:21:46 · 491 阅读 · 0 评论 -
Thinking in java学习笔记-类型信息
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。在《Thinking in java》中提出了RTTI和反射机制的概念 RTTI假定我们在编译时已经知道了所有的类型,反射允许我们在允许是发现和使用类信息。纠结着看完了一整章也没看懂原创 2016-11-16 14:06:13 · 719 阅读 · 0 评论 -
java-mvp模式简单实现
Presenter负责逻辑的处理,Model提供数据,View负责显示。在MVP中View并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部. 分离显示层和逻辑层,他们之间通过接口进行通信,降低耦合而在MVC中View会直接从Model中读取数据而不是通过Control原创 2016-11-15 23:01:35 · 7934 阅读 · 2 评论 -
java-泛型
泛型是使用一种称为类型擦除的方法实现的,编译器使用泛型类型信息来编译代码,但是随后消除它,因此泛型信息在运行时是不可用的,这种方法使泛型代码向后兼容使用原始类型的遗留代码原创 2016-10-28 16:30:27 · 773 阅读 · 1 评论 -
理解HashMap
HashMap实现了Map接口,继承AbstractMap。其中Map接口定义了键映射到值的规则,而AbstractMap类提供 Map 接口的骨干实现。HashMap 的实现不是同步的,这意味着它不是线程安全的。JDK8中如果某个桶中的链表记录过大的话(当前是TREEIFY_THRESHOLD = 8),就会把这个链动态变成红黑二叉树,使查询最差复杂度由O(N)变成了O(logN)。原创 2016-11-06 20:04:54 · 562 阅读 · 0 评论 -
java-散列和散列码
散列将键保存在某处,以便能够很快找到。存储一组元素最快的数据结构是数组,所以使用它来表示键的信息。数组并不保存键本身,而是通过键对象生成一个数字,将其作为数组的下标,这个数字就是散列码。冲突有外部链接处理,数组并不直接保存值,而是保存值得list。然后对list中的值使用equals()方法进行线性的查询。(这部分的查询会比较慢)原创 2016-11-04 16:41:51 · 4324 阅读 · 0 评论 -
java-内存泄漏
内存泄露是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄露。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory。内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。转载 2017-02-13 15:16:07 · 475 阅读 · 0 评论