- 博客(34)
- 资源 (9)
- 收藏
- 关注
原创 java.lang.String类的equals和hashCode方法
String 类代表字符串,也是 Java 中一个封装好的类。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。String 类的底层封装了一个 final 的字符数组。基于这个数组,说明字符串是常量,它们的值在创建之后不能更改。 String 的方法基本都是基于对这个字符数组来进行处理和实现的。属性 // 字符数组 private final char v
2018-02-28 15:36:11 731
原创 Java.lang.Object类方法分析
Object类是所有类的最终父类。 其中的一些方法都非常关键,下面仔细来说明。方法hashCode()Java 中的 hashCode 方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。在 Java 中,hashCode 主要是为了配合基于散列的集合一起正常运行,包括 HashTable, HashMap ,HashSet 。 这
2018-02-28 14:32:02 563
原创 Java中IO框架——InputStreamReader/OutputStreamWriter源码解析
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。 InputSt
2018-02-27 14:26:11 244
原创 Java中IO框架——Reader/Writer源码解析
属性 // 用于同步针对此流的操作的对象。 protected Object lock;构造函数两个构造函数,使用不同的对象锁。 // 创建一个新的字符流 reader,其重要部分将同步其自身的 reader。 protected Reader() { this.lock = this; } // 创建一个新的字符
2018-02-27 13:51:31 357
原创 Java中IO框架——DataOutputStream源码解析
DataOutputStream 继承自 FilterOutputStream 。 FilterOutputStream 的源码分析见:http://blog.csdn.net/yx0628/article/details/79377605 同样可以参考 DataInputStream 的源码:http://blog.csdn.net/yx0628/article/details/79370
2018-02-26 16:50:37 563
原创 Java中IO框架——BufferedOutputStream源码解析
BufferedOutputStream 继承自 FilterOutputStream 。 FilterOutputStream 的源码分析见:http://blog.csdn.net/yx0628/article/details/79377605 同样可以参考 BufferedInputStream 的源码:http://blog.csdn.net/yx0628/article/details
2018-02-26 15:47:59 250
原创 Java中IO框架——FilterOutputStream源码解析
FilterOutputStream 继承自 OutputStream 。 OutputStream 的源码解析见:http://blog.csdn.net/yx0628/article/details/79370689 FilterInputStream 的源码解析见:http://blog.csdn.net/yx0628/article/details/79366049 这里的源码结构使
2018-02-26 15:20:57 689
原创 Java中IO框架——FileOutputStream源码解析
FileOutputStream 继承自 OutputStream 。 OutputStream 的源码分析见:http://blog.csdn.net/yx0628/article/details/79370689 同时可以参考 FileInputStream 的源码:http://blog.csdn.net/yx0628/article/details/79344859FileOutpu
2018-02-26 15:05:32 575
原创 Java中IO框架——ByteArrayOutputStream源码解析
ByteArrayOutputStream 继承自 OutputStream 。 OutputStream 的源码分析见:http://blog.csdn.net/yx0628/article/details/79370689 同时可以参考 ByteArrayInputStream 的源码:http://blog.csdn.net/yx0628/article/details/79346595此
2018-02-26 14:10:40 612
原创 Java中IO框架——OutputStream源码解析
抽象类 OutputStream 实现了 Closeable 和 Flushable 接口。所以 OutputStream 中有对应 close 和 flush 方法的实现。 OutputStream 和 InputStream 相对应。 InputStream 的源码分析见:http://blog.csdn.net/yx0628/article/details/79343633方法write(
2018-02-25 18:45:24 620
原创 Java中IO框架——DataInputStream源码解析
DataInputStream 继承了 FilterInputStream 类,同时实现了 DataInput 接口。 DataInput 接口提供了一些方法,而在 DataInputStream 中对这些方法进行了实现。直接来看 DataInputStream 的源码即可。属性从父类 FilterInputStream 继承的流对象 in 。构造函数使用指定的底层 Inpu...
2018-02-25 18:25:46 1286
原创 Java中IO框架——BufferedInputStream源码解析
BufferedInputStream 继承自 FilterInputStream 。 InputSteam 的源码分析见博客:http://blog.csdn.net/yx0628/article/details/79343633 FilterInputStream 的源码分析见博客:http://blog.csdn.net/yx0628/article/details/79366049 ...
2018-02-25 02:08:25 446
原创 Java中IO框架——FilterInputStream源码解析
FilterInputStream 继承自 InputStream 。 InputStream 的源码解析见:http://blog.csdn.net/yx0628/article/details/79343633 这里的源码结构使用了装饰者模式。从源码可以看出, FilterInputStream 类引用了一个输入流,而其各个方法,只是对所引用的流对象相应方法的调用,没有做其他处理,所以需要其
2018-02-24 23:01:10 964
原创 Java中IO框架——PipedInputStream/PipedOutputStream源码解析
PipedInputStream 继承自 InputStream 类。 PipedOutputSteam 继承自 OutputStream 类。 在使用管道通信时,必须将 PipedOutputStream 和 PipedInputStream 配套使用。它们的作用是让多线程可以通过管道进行线程间的通讯。 使用管道通信时,大致的流程是:在线程A中向 PipedOutputStream 中写入数
2018-02-24 14:50:04 341
原创 Java中IO框架——ByteArrayInputStream源码解析
ByteArrayInputStream 也继承自 InputStream 父类。 字节数组输入流在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中。属性 // 由该流的创建者提供的字节数组 protected byte buf[]; // 读取的下一字节存放于buf[pos]位置 protected int pos; /
2018-02-23 13:28:16 782
原创 Java中IO框架——FileInputStream源码解析
FileInputStream 继承于 InputStream 类。 可以参考 InputStream 的源码:http://blog.csdn.net/yx0628/article/details/79343633属性 // 文件描述类,处理打开的文件 private final FileDescriptor fd; // 文件的路径,如果该流是通过文件描...
2018-02-22 11:22:49 884
原创 Java中IO框架——InputStream源码解析
InputStream 是所有字节输入流的父类。 它实现了 Closeable 接口:public interface Closeable extends AutoCloseable { // 关闭此流并释放与此流关联的所有系统资源。如果已经关闭该流,则调用此方法无效。 public void close() throws IOException;}Closeabl...
2018-02-21 22:13:00 875
原创 Java集合框架——LinkedHashSet源码分析
LinkedHashSet 是基于 LinkedHashMap 来实现的,所以其迭代时可以采用插入顺序或者访问顺序。 LinkedHashSet 的源码很简单,但需要搞清楚 HashMap,LinkedHashMap,HashSet 三者的源码。 HashMap 的源码分析:http://blog.csdn.net/yx0628/article/details/79323985 Linked...
2018-02-18 00:56:52 292
原创 Java集合框架——HashSet源码分析
HashSet 是基于 HashMap 来实现的,HashMap 存放键值对,而 HashMap 只存放对象。 HashSet 的源码很简单,其实只需要弄懂 HashSet 的源码即可,可以参考:HashMap源码分析属性其属性很简单,一个 HashMap 对象,一个静态的空对象。 // HashSet基于HashMap来实现的 private transien...
2018-02-18 00:40:35 250
原创 Java集合框架——LinkedHashMap源码分析
LinkedHashMap 继承了 HashMap 类。 HashMap 类的源码详细分析参考博客:HashMap源码分析 LinkedHashMap底层仍是数组和链表实现的。但是为什么可以在迭代时,返回和插入顺序相同的顺序呢。 因为它不是用的 HashMap 的单向链表,而是双向链表。通过维护这个双向链表来保证对哈希表迭代时的有序性,即LinkedHashMap 采用的 hash 算法和 H
2018-02-17 01:59:09 337
原创 Java集合框架——HashMap源码分析
HashMap基于哈希表实现的,每一个元素都是一个 key-value 对,内部通过单链表解决冲突的问题。 HashMap不是线程安全的,ConcurrentHashMap 是线程安全的。public class HashMapK,V> extends AbstractMapK,V> implements MapK,V>, Cloneable, SerializableHas
2018-02-16 01:16:38 392
原创 Java集合框架——Stack源码分析
Stack 类表示后进先出(LIFO)的对象堆栈。Stack 类继承了 Vector 类,并且对其进行了 5 个同步方法的扩展。 由于 Vector 基于数组实现,Stack 底层也是数组,其下标 0 的位置是栈底,数组最末端的位置是栈顶。 Vector 类源码见:Java集合框架源码——Vector解析push(E item)入栈操作,在堆栈尾部加入一个新元素。调用了父类 Vector 的 a
2018-02-12 22:09:28 245
原创 Java中Calendar类的常用方法
Calendar 类常用方法的记录:获取时间 // 使用默认时区和语言环境获得一个日历 Calendar cal = Calendar.getInstance(); // 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1 System.out.println("年:" + cal.get(Calendar.YEAR)); System.ou
2018-02-12 16:23:45 126482 8
原创 Java集合框架源码——Vector解析
Vector 和 ArrayList 类似,都是基于数组来实现的。但是 Vector 是线程同步(Synchronized)的,所以它也是线程安全的,而 Arraylist 是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用 ArrayList 效率比较高。 ArrayList 可以参考: Java集合框架源码——ArrayList解析public class Vector<...
2018-02-12 10:59:53 267
原创 Java集合框架源码——LinkedList解析
LinkedList 是一个链表,而 ArrayList 是基于数组来实现的。对于 LinkedList 来说,其插入和删除效率极高,因为不需要像 ArrayList 对数组进行拷贝等操作;但是其查找效率低,需要遍历来查找,而 ArrayList 使用数组来实现,直接通过下标来定位到元素。public class LinkedList<E> extends AbstractSequentia
2018-02-11 17:12:47 188
原创 Java集合框架源码——ArrayList解析
ArrayList 是 Java 中很常用的集合之一。它基于数组实现了一个可变长度的集合。public class ArrayListE> extends AbstractListE> implements ListE>, RandomAccess, Cloneable, java.io.Serializable此实现不是同步的。如果多个线程同时访问一个 ArrayLi
2018-02-11 12:20:15 194
原创 Java中的序列化和反序列化
Java中的序列化和反序列化,在将对象进行流传输或本地化保存时,能够很好的进行保存和还原。 一个类实现了 java.io.Serializable 接口后,可以生成这个类的版本号 serialVersionUID ,可以自动生成也可以自己定义一个值,例如private static final long serialVersionUID = 12345L;如果一个类没有指定版本号,编...
2018-02-09 18:00:00 182
原创 ElasticSearch基本查询
请求均为 POST 请求,Content-Type 为 application/jsoncurl -XPOST http://localhost:9200/books/_search词条查询仅匹配在给定字段中含有该词条的文档,而且是确切的未经分析的词条:{ "query":{ "term":{ "title":"ElasticSearch"
2018-02-08 15:43:58 295
原创 ElasticSearch搜索类型及首选项
ElasticSearch查询,在大多数情况下,查询将被分散到多个节点中,得到结果,合并,再获取有关文档返回结果。 ES 定义查询行为的还有:查询重写、搜索类型和查询执行偏好。默认查询逻辑在默认情况下,查询发送到 ES 的一个节点上,这个节点要将查询分散到所有的节点的分片和副本上,假如有 5 个分片和 1 个副本,那么这 5 个分片都会被查询到(分片和对应的副本因为一样,只会有一个被
2018-02-07 15:47:57 240
原创 设计模式——中介者模式
中介者模式,用一个中介对象来封装一系列的对象交互。中介者使得各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。 示例代码:// 抽象中介者public abstract class Mediator { // 抽象调度方法,在具体实现类中实现调度逻辑 public abstract void contact(String content, Colle
2018-02-02 14:31:15 134
原创 设计模式——桥接模式
桥接模式,将抽象和实现解耦, 使得两者可以独立地变化。桥接模式能够保证各个承担不同业务的行为类的独立性,同时也能对行为类的方法进行扩展。 示例代码:// 业务类的接口public interface Implementor { // 业务方法 public void operation();}// 具体业务类Apublic class ConcreteImp
2018-02-02 10:58:52 231
原创 设计模式——状态模式
状态模式,通过状态变更促使行为的变化。// 环境类public class Context { // 两种状态会互相切换 public static final State STATE1 = new ConcreteState1(); public static final State STATE2 = new ConcreteState2(); // 当前
2018-02-01 15:51:15 174
原创 设计模式——访问者模式
访问者模式,封装一些作用于某种数据结构中的各元素的操作, 它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 是一种分离对象数据结构与行为的方法,通过这种分离,可为一个被访问者动态添加新的操作而无需对数据结构本身进行修改。 示例代码:// 访问目标public interface ISubject { // 接受访问者访问 public void acc
2018-02-01 13:42:48 266
原创 设计模式——备忘录模式
备忘录模式, 在不破坏封装性的前提下, 捕获一个对象的内部状态, 并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。 两种角色: - Originator 待备份的对象,负责创建和恢复备份数据 - Memento 备忘录对象,记录并储存对象中的属性等 示例代码:// 备忘录角色public class Memento { // 属性
2018-02-01 13:15:14 248
Spring定时任务@Scheduled例子
2018-07-01
android带百分比进度条的文件上传,使用AsyncTask异步上传
2013-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人