摘要: 背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为unicode,而我们的计算机系统编码常常是GBK等编码,需要将系统的编码转换为ja 阅读全文
posted @ 2017-01-24 15:48 又是火星人 阅读(911) 评论(0) 推荐(0)
摘要: * 第19天-11-IO流(字节流File读写操作) * 第19天-12-IO流(拷贝图片) * 第19天-13-IO流(字节流的缓冲区) * 第19天-14-IO流(自定义字节流的缓冲区-read和write的特点) 阅读全文
posted @ 2017-01-09 22:34 又是火星人 阅读(431) 评论(0) 推荐(0)
摘要: * 第19天-06-IO流(装饰设计模式) * 第19天-07-IO流(装饰和继承的区别) * 第19天-08-IO流(自定义装饰类) * 第19天-09-IO流(LineNumberReader) * 第19天-10-IO流(MyLineNumberReader) 阅读全文
posted @ 2017-01-08 18:32 又是火星人 阅读(285) 评论(0) 推荐(0)
摘要: * 第19天-01-IO流(BufferedWriter) * 第19天-02-IO流(BufferedReader) * 第19天-03-IO流(通过缓冲区复制文本文件) * 第19天-04-IO流(readLine的原理图例) * 第19天-05-IO流(MyBufferedReader) 阅读全文
posted @ 2017-01-08 11:32 又是火星人 阅读(214) 评论(0) 推荐(0)
摘要: Picture -- “The Linux Storage Stack Diagram” 阅读全文
posted @ 2017-01-08 07:22 又是火星人 阅读(547) 评论(0) 推荐(0)
摘要: 在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码: 在UnsafeLazyInitializatio 阅读全文
posted @ 2017-01-07 18:06 又是火星人 阅读(330) 评论(0) 推荐(0)
摘要: 系统调用(Syscall):Linux2.6之前是使用int0x80(中断)来实现系统调用的,在2.6之后的内核是使用sysentry/sysexit(32位机器)指令来实现的系统调用,这两条指令是CPU原生支持的是内核向上层库(是应用提供的接口)API的一个特例,也是从ring3到ring0的一种 阅读全文
posted @ 2017-01-07 15:12 又是火星人 阅读(632) 评论(0) 推荐(0)
摘要: 一般单例都是五种写法:懒汉、饿汉、双重校验锁、静态内部类和枚举。为了记录学习的过程,这里整理了几种常见的单例写法。 青铜5:(Lazy-loaded,但线程不安全) 这段代码简单明了,而且实现了延迟加载,但是在多线程环境下,如果多个线程同时调用 getInstance() 方法,可能会发生多个线程同 阅读全文
posted @ 2017-01-04 00:45 又是火星人 阅读(685) 评论(0) 推荐(1)
摘要: 让我们先来看两个类:Base和Derived类。注意其中的whenAmISet成员变量,和方法preProcess()。 情景1:(子类无构造方法) 当.java源代码转换成一个.class文件后,其转换成类似下面的等价代码: 输出结果是: set when declared 情景2:(子类添加了构 阅读全文
posted @ 2017-01-02 21:41 又是火星人 阅读(308) 评论(0) 推荐(0)
摘要: 一、阿里巴巴笔试题: 当.java源代码转换成一个.class文件后,其转换成类似下面的等价代码: 二、运行结果 三、加载过程分析 一、执行main()时,由于使用new语句创建实例,属于首次主动使用类T,JVM加载类T, 声明静态变量k、t1、t2、i、n(为静态变量分配内存),并设置变量初始化的 阅读全文
posted @ 2017-01-02 15:56 又是火星人 阅读(788) 评论(1) 推荐(0)