摘要:
线程局部变量 ThreadLocal,线程局部变量,不提供锁,不做线程共享,而是为每个线程提供变量的独立副本。 java import java.util.concurrent. ; public class TestThreadLocal { public static void main(Str 阅读全文
摘要:
线程同步 synchronized:同步的 例:取钱 不做线程同步的场合,假设骗子和户主同时取钱,可能出现这种情况: 【骗子】取款2000:账户余额1000 【户主】取款2000:账户余额1000 结果是社会财富增加1000,银行不开心。 代码如下所示: 想要银行开心,就需要对线程进行同步处理,避免 阅读全文
摘要:
启动新线程,需要和操作系统进行交互,成本比较高。 使用线程池可以提高性能—— 线程池会提前创建大量的空闲线程,随时待命执行线程任务。在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务。(这个任务,就是Runnable的run()方法,或Callable的call()方法)。 Java 5 阅读全文
摘要:
线程状态 JAVA定义了6种线程状态: 分别是: 新建状态·NEW 运行状态·RUNNABLE 阻塞状态·BLOCKED 无限等待状态·WAITING 休眠状态·TIMED_WAITING 死亡状态·TERMINATED 线程不可能一直运行,除非瞬间执行结束。 为了给其他线程执行的机会,正在执行的线 阅读全文
摘要:
多线程 进程 每一个应用程序在运行时,都会产生至少一个进程(process)。 进程是操作系统进行“资源分配和调度”的独立单位。 Windows系统的“任务管理器”可以查看系统的进程,通过Ctrl+Shift+Esc组合键可以调出“任务管理器”。 进程具有三个特征: 独立性:进程拥有自己独立的资源, 阅读全文
摘要:
序列化 序列化:Serialize,将Java对象写入IO流(可以保存在数据库,文件等) 反序列化:Deserialize,从IO流中读取并恢复Java对象。 这么理解:序列化就是把对象封印起来,反序列化就是解封。 对象中包含的不仅仅是字符,更多的是非字符,因此需要使用字节流。 所有能在网上传输的对 阅读全文
摘要:
打印流 打印流可以把原本输出到控制台的信息输出到文件中。PrintStream是字节打印流(还有个对应的字符打印流是PrintWriter,这里不涉及) System类中有个变量: 赋值处: 打印流: 能够方便的打印各种数据值的表示形式。 不会抛出IOException异常。 阅读全文
摘要:
转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF 8编码。这时候读取文件可能出现乱码。事实上实际应用中编码格式不匹配的场景非常多。 转换流可以指定编码方式,用于解决乱码问题。 字符编码:Character Encoding:自然语言的字符,与二进制数之间的对应规则。 阅读全文
摘要:
缓冲流 “缓冲流”也叫“包装流”,是对基本输入输出流的增强: 缓冲流的基本原理: 创建流对象时,会创建一个缓冲区数组,通过缓冲区读写,减少系统IO次数,以提高读写效率。 就像送快递,快递小哥一次带一件当然慢,所以用车来运输,跑一趟可以带很多件。 以字符流为例: | 读文件:FileReader + 阅读全文
摘要:
字符流 字节流服务文本文件时,可能出现中文乱码。因为一个中文字符可能占用多个字节。 针对于非英语系的国家和地区,提供了一套方便读写方式——字符流。 java.io.Reader java.io.Writer 文件字符流 | 读文件:FileReader | 写文件: FileWriter 前面字节流 阅读全文
摘要:
IO流 | 水流 | 特点 | | | | | 连续性 | 逝者如斯夫,不舍昼夜; | | 方向性 | 一江春水向东流。水往低处流。百川东到海,何时复西归?少壮不努力,老大徒伤悲! | | 源头尽头 | 唯有源头活水来;覆水难收 | Java里的IO也有这样的特点。 IO:数据从硬盘流向内存(Inp 阅读全文
摘要:
File类 File类在java.io包中。io代表input和output,输入和输出。 代表与平台无关的文件和目录。 可以新建、删除、重命名,但不能访问文件内容。 File类里的常量: File的构造方法里的参数——路径: | 可以是文件,也可以是文件夹 | 可以是相对路径,也可以是绝对路径 | 阅读全文
摘要:
异常处理 好程序的特性 可重用性 可维护性 可扩展性 鲁棒性 | | Robust的音译 | | 健壮、强壮之意 | | 指在异常和危险情况下系统依然能运行,不崩溃 Java中,写下如下代码: 代码运行到“10 / 0”时出错,整个程序会中断,表现为最后的" END "没有输出。 很显然这不算好的程 阅读全文
摘要:
泛型 Generics:泛型,愿意指“无商标的”。 泛型,可以理解为“宽泛的数据类型”,就是将类型由原来的具体的类型泛化。 泛型在建立对象时不指定类中属性的具体类型,而是在声明及实例化对象时由外部指定。泛型可以提高数据安全性。 List中应用了泛型,在编译期对数据类型进行严格 检查,如果类型不匹配, 阅读全文
摘要:
Map | 返回类型 | 方法 | 描述 | | | | | | V | get(Object key) | 根据key取得value | | V | put(Obejct k,Object v) | 向Map中加入(替换)元素,返回之前的Value;之前没有元素就返回null | | V | re 阅读全文
摘要:
Set·无序,不重复 HashSet 特点:没有重复数据,数据不按存入的顺序输出。 HashSet由Hash表结构支持。不支持set的迭代顺序,不保证顺序。 但是Hash表结构查询速度很快。 创建集合使用代码: 代码演示:常用方法和遍历输出 Hash和Hash表 Hash HashCode,是一个十 阅读全文
摘要:
集合概述 Java中的集合,指一系列存储数据的接口和类,可以解决复杂的数据存储问题. 导包:import java.util. ; 简化的集合框架图如下: List·列表 ArrayList List是一个接口: ArrayList是最常用的一种List的子类(当然也实现了其他接口,也继承了父类)。 阅读全文
摘要:
BigDecimal类 float、double类型的数字在计算的时候,容易发生精度丢失。 使用java.math.BigDecimal类可以解决此类问题。 前面讲过Math类,现在的BigDecimal类所在的包是math包。 注意Math类不在math包中,而是在lang包中。 形如:BigDe 阅读全文
摘要:
正则表达式·Regular Expression 正则表达式就是一个用于匹配字符串的模板,正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 主要用到的对象: java.util.regex.Pattern:正则表达式经编译后的表现模式 java.util.regex.Matcher:根 阅读全文
摘要:
Date类和Calendar类都是关于日期的类,都在java.util包中,使用时需要import。 Date java.util.Date类的对象用来表示时间和日期,用得最多的是获取系统当前日期和时间,精确到毫秒。 Java中有两个Date类,还有一个是java.sql.Date,这个类一般不用, 阅读全文