![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
NicolasYan
这个作者很懒,什么都没留下…
展开
-
Java volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们转载 2016-01-13 13:10:12 · 415 阅读 · 0 评论 -
Java容器类简单总结
1.java容器分类图 说明:左图为简化图(其中粗线部分是重点的容器),右图为完整容器分类图 2.容器类接口和抽象容器类 2.1 说明 容器接口是容器的基础。使用接口可以将容器的实现与容器接口分开,因而可以使用相同的方法访问容器而不需关心容器具体的数据结构。 同理,Iterato原创 2016-02-29 17:40:51 · 823 阅读 · 0 评论 -
equals和hashCode的重写方法
1.何时需要重写equals()当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。2.设计equals()[1]使用instanceof操作符检查“实参是否为正确的类型”。[2]对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。[2.1]对于非float和double类型的原语类型域,使用==比较;[2.2]对于对象引用域,递归调用equals方原创 2016-02-29 17:38:02 · 426 阅读 · 0 评论 -
java序列化
一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服原创 2016-03-10 00:34:23 · 387 阅读 · 0 评论 -
多线程断点续传实现
设计的几个要点: 1. 把每个下载文件切成若干个块(Block),然后得到一个位图,用来标记每个块的下载情况,并保存到文件里,用于实现断点续传。2. HTTP Header里增加Range,如果服务器返回Cotent-Range 说明服务器支持文件定位,可以实现多线程下载。[c-sharp] view plain copy原创 2016-03-10 00:30:43 · 1370 阅读 · 1 评论 -
Java四种引用详解
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异转载 2016-03-10 00:20:25 · 2293 阅读 · 0 评论 -
单例模式的七种写法
第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == nu原创 2016-03-16 11:01:05 · 384 阅读 · 0 评论 -
Java多线程八
1 Lock与ReadWriteLock1.1 Lockpublic interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit转载 2016-03-02 13:46:17 · 513 阅读 · 0 评论 -
Java多线程七
1 synchronized的缺陷参考:Java并发编程:Lock synchronized是java中的一个关键字,也就是说是Java语言内置同步的特性。那么为什么会出现Lock呢? 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1.转载 2016-03-02 13:44:39 · 402 阅读 · 0 评论 -
Java多线程六
1 线程池的实现原理及基本类结构 合理利用线程池能够带来三个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 Executor线程池框架的最转载 2016-03-02 13:43:15 · 454 阅读 · 0 评论 -
Java多线程五
1 原子性、可见性和有序性的基本概念 1.原子性(Atomicity) 由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock和unlock操作来满足这种需求,尽管虚拟机未把lock与unl转载 2016-03-02 13:41:01 · 401 阅读 · 0 评论 -
Java多线程四
1. Java内存模型 在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,转载 2016-03-02 13:39:39 · 340 阅读 · 0 评论 -
Java多线程三
1. 基本概念 java.util.Timer:是一个实用工具类,该类用来调度一个线程(schedule a thread),使它可以在将来某一时刻执行。 Java的Timer类可以调度一个任务运行一次,或定期循环运行。 Timer tasks should complete quickly. 即定时器中的操作要尽可能花费短的时间。 java.util.TimerTask:是一转载 2016-03-02 13:38:31 · 352 阅读 · 0 评论 -
Java多线程二
1. 线程的状态回顾 线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:(原文更好理解,就不翻译了)New When we create a new Thread object using new operator, thread state is New Thread. At this point, thread is not alive and转载 2016-03-02 13:37:05 · 357 阅读 · 0 评论 -
Java多线程一
1. 基本概念1.1 ProcessA process is a self contained execution environment and it can be seen as a program or application. However a program itself contains multiple processes inside it. Java runti转载 2016-03-02 13:28:00 · 356 阅读 · 0 评论 -
Android Framework概述
Framework是什么 Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。Android Framework Android Framew转载 2016-03-02 13:16:49 · 1275 阅读 · 0 评论 -
Java深拷贝与浅拷贝详解
深拷贝(deep clone)与浅拷贝(shallow clone) 浅拷贝(浅复制、浅克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。 换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。 深拷贝(深复制、深克隆):被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。 那些原创 2016-01-13 13:17:54 · 362 阅读 · 0 评论 -
Java线程同步简单总结
1、synchronized把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。1.1 原子性原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。1.2 可见性可见原创 2016-02-29 17:43:32 · 474 阅读 · 0 评论