摘要:
1. IO是什么? Input Output Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。 2. 为什么使用Java IO? 3. JAVA IO与JAVA NIO有什么不 阅读全文
摘要:
同步容器: 1. ArrayList、LinkedList、HashMap这些容器都是非线程安全的。如果有多个线程并发地访问这些容器时,就会出现问题。 2. 在Java中,同步容器主要包括2类: 1).Vector、Stack、HashTable 2).Collections类中提供的静 阅读全文
摘要:
ThreadLocal 1. ThreadLocal是如何为每个线程创建变量的副本的: 1). 首先,在每个线程Thread内部有一个ThreadLocal.ThreadLocalMap类型的成员变量threadLocals,这个threadLocals就是用来存储实际的变量副本的,键值为当前Thr 阅读全文
摘要:
1. 线程池是什么? 线程池是预先创建线程的一种技术。线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中。这些线程都是处于睡眠状态,即均未启动,不消耗CPU,而只是占用较小的内存空间。当请求到来之后, 缓冲池给这次请求分配一个空闲线程,把请求传入此线程中运行,进行处理。当预先创建的线程都 阅读全文
摘要:
1. 多线程是什么? 线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。 2. 为什么使用多线程? 多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU,而只 阅读全文
摘要:
1. 集合是什么? 当我们需要保持一组一样(类型相同)的元素的时候,我们应该使用一个容器来保存,数组就是这样一个容器。那么,数组的缺点是什么呢? 数组一旦定义,长度将不能再变化。 然而在我们的开发实践中,经常需要保存一些变长的数据集合,于是,我们需要一些能够动态增长长度的容器来保存我们的数据。而我们 阅读全文
摘要:
1. 工具类: 1). 时间 2). 字符串 2. 日志文件 3. 克隆类 4. 积累命名规则:TimeUnit unit 阅读全文
摘要:
学习方法: 1. 系统学习看书,快速学习看博客 2. 少看,坚持看:搞明白,避免浮躁 3. 实战 4. 思考 5. 说出来 学习问题 1. 是什么? 2. 为什么使用*? 3. 与**有什么不同? 4. 骨架 5. 怎么用? 6. 使用注意事项 7. 优化 8. 监控 学习注意事项 1. 不在中途干 阅读全文
摘要:
设计原则 1. 封装变化: 1). 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 2). 这个原则的另一种思考方式:把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分。 3). 这样的概念很简单,几乎是每个设计模式背后的 阅读全文
摘要:
优化服务器设置 1. MySQL有大量可以修改的参数--但不应该随便去修改。通常只需要把基本的项配置正确(大部分情况下只有很少一些参数时真正重要的),应将更多时间花在schema的优化、索引,以及查询设计上。 在正确配置了MySQL的基本配置项之后,再花力气去修改其他配置项的收益通常就比较小。 从另 阅读全文