01-properties读写 1. “.properties”配置文件介绍后缀名为.properties是一种属性配置文件。这种文件以key=value格式存储内容,Java中可以使用Properties类来读取这个文件String value=p.getProperty(key);就能得到对应的数据,一般这个文件作为一些参数的存储,代码就可以灵活一点。 用于适应多语言环境,随着系统的语言环境的变化,读取 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 06_文件和流 #JavaSE #File
02-字节流读写 1. 字节输入输出类 2. 抽象父类:InputStream & OutputStreamInputStream字节输入流: 123public abstract class InputStream extends Object implements Closeable 这个抽象类是表示输入字节流的所有类的超类。需要定义InputStream子类的应用InputStream必 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 06_文件和流 #JavaSE #字节流
04-File文件读写 1. File类文件和目录路径名的抽象表示形式,主要用于获取文件的相关属性以及创建文件或目录。 123public class File extends Object implements Serializable, Comparable<File> 构造方法:没有无参构造。 12345678File(File parent, String child)从父抽象路径名和子路 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 06_文件和流 #JavaSE #File
03-字符流读写 1. 基本字符输入输出类结构 2. 抽象父类:Writer & ReaderWriter类 123public abstract class Writer extends Object implements Appendable, Closeable, Flushable 构造方法: 1234protected Writer()创建一个新的字符流的作者,其关键部分将同步在“作 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 06_文件和流 #JavaSE #字符流
01-线程 1. 线程创建进程:程序静止的,真正运行时的程序,才被称为进程。线程:轻量级进程(Light Weight Process),程序中的一个顺序控制流程,同时也是CPU的基本调度单位,进程由1个或多个线程组成,彼此间完成不同的工作,交替执行,称为多线程。 JVM,**Java虚拟机是一个进程(单进程)**,当中默认包含主线程(main),可通过代码创建多个独立线程,与main并发执行。 线程组 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 05_并发和锁 #线程 #JavaSE
02-线程池 1. 线程池概念现有问题: 线程是宝贵的内存资源、单个线程约占1MB的空间,过多分配易造成内存溢出; 频繁的创建及销毁会增加虚拟机回收频率、资源开销,造成程序性能下降。 线程池: 线程容器,可设定线程分配的数量上限; 将预先创建的线程对象存入池中,并重用线程池中的线程对象; 避免频繁的创建和销毁。 2. 线程池原理将任务提交给线程池,由线程池分配线程、运行任务,并在当前任务结束后复用线程。 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 05_并发和锁 #JavaSE #线程池
03-锁种类 1.1 乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低。每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出,然后加锁操作(比较跟上一次的修改版本,如果一样则更新),如果失败则要重复读-比较-写的操作。Java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 05_并发和锁 #JavaSE #锁
04-synchronized同步锁 1. synchronized同步锁(悲观锁)synchronized 它可以把任意一个非 NULL 的对象当作锁。他属于独占式的悲观锁,同时属于可重入锁。 1.1 synchronized 作用范围 作用于方法时,锁住的是**对象的实例(this)**; 作用于静态方法时,锁住的是Class实例,又因为Class的相关数据存储在永久带PermGen(jdk1.8 则是 metaspace),永久 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 05_并发和锁 #JavaSE #锁 #synchronized
05-ReentrantLock重入锁 1. Lock接口1public interface Lock {} 提供更多实用性方法,功能更强大、性能更优越。 常用方法: void lock() // 获取锁,如锁被占用,则等待 boolean trylock() // 尝试获取锁(成功true,失败false,不阻塞) void unlock() // 释放 2016-04-28 02_编程语言 > 01_Java > 01_JavaSE > 05_并发和锁 #JavaSE #锁 #ReentrantLock
01-日志方案×2 基于 Maven,pom.xml 导包方便。 1. 日志用于记录系统中发生的各种事件。记录位置常见的有:控制台、磁盘文件等… 日志级别(从低到高):TRACE(堆栈), DEBUG(调试), INFO(普通), WARN(警告), ERROR(错误), FATAL(致命) 日志作用: 通过日志观察、分析项目的运行情况——项目维护; 通过日志分析用户的使用情况——大数据分析; … 2. 方案 2016-04-28 09_调试测试 > 01_日志记录 #日志 #log4j #logback #SLF4j