摘要: 线程局部变量 ThreadLocal,线程局部变量,不提供锁,不做线程共享,而是为每个线程提供变量的独立副本。 java import java.util.concurrent. ; public class TestThreadLocal { public static void main(Str 阅读全文
posted @ 2019-07-13 14:17 虎老狮 阅读(375) 评论(0) 推荐(0)
摘要: 线程同步 synchronized:同步的 例:取钱 不做线程同步的场合,假设骗子和户主同时取钱,可能出现这种情况: 【骗子】取款2000:账户余额1000 【户主】取款2000:账户余额1000 结果是社会财富增加1000,银行不开心。 代码如下所示: 想要银行开心,就需要对线程进行同步处理,避免 阅读全文
posted @ 2019-07-13 08:48 虎老狮 阅读(220) 评论(0) 推荐(0)
摘要: 启动新线程,需要和操作系统进行交互,成本比较高。 使用线程池可以提高性能—— 线程池会提前创建大量的空闲线程,随时待命执行线程任务。在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务。(这个任务,就是Runnable的run()方法,或Callable的call()方法)。 Java 5 阅读全文
posted @ 2019-07-13 08:21 虎老狮 阅读(519) 评论(0) 推荐(0)
摘要: 线程状态 JAVA定义了6种线程状态: 分别是: 新建状态·NEW 运行状态·RUNNABLE 阻塞状态·BLOCKED 无限等待状态·WAITING 休眠状态·TIMED_WAITING 死亡状态·TERMINATED 线程不可能一直运行,除非瞬间执行结束。 为了给其他线程执行的机会,正在执行的线 阅读全文
posted @ 2019-07-13 02:48 虎老狮 阅读(216) 评论(0) 推荐(0)
摘要: 多线程 进程 每一个应用程序在运行时,都会产生至少一个进程(process)。 进程是操作系统进行“资源分配和调度”的独立单位。 Windows系统的“任务管理器”可以查看系统的进程,通过Ctrl+Shift+Esc组合键可以调出“任务管理器”。 进程具有三个特征: 独立性:进程拥有自己独立的资源, 阅读全文
posted @ 2019-07-13 02:43 虎老狮 阅读(262) 评论(0) 推荐(0)
摘要: 序列化 序列化:Serialize,将Java对象写入IO流(可以保存在数据库,文件等) 反序列化:Deserialize,从IO流中读取并恢复Java对象。 这么理解:序列化就是把对象封印起来,反序列化就是解封。 对象中包含的不仅仅是字符,更多的是非字符,因此需要使用字节流。 所有能在网上传输的对 阅读全文
posted @ 2019-07-13 02:40 虎老狮 阅读(246) 评论(0) 推荐(0)
摘要: 打印流 打印流可以把原本输出到控制台的信息输出到文件中。PrintStream是字节打印流(还有个对应的字符打印流是PrintWriter,这里不涉及) System类中有个变量: 赋值处: 打印流: 能够方便的打印各种数据值的表示形式。 不会抛出IOException异常。 阅读全文
posted @ 2019-07-13 02:38 虎老狮 阅读(243) 评论(0) 推荐(0)
摘要: 转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF 8编码。这时候读取文件可能出现乱码。事实上实际应用中编码格式不匹配的场景非常多。 转换流可以指定编码方式,用于解决乱码问题。 字符编码:Character Encoding:自然语言的字符,与二进制数之间的对应规则。 阅读全文
posted @ 2019-07-13 02:35 虎老狮 阅读(404) 评论(0) 推荐(0)
摘要: 缓冲流 “缓冲流”也叫“包装流”,是对基本输入输出流的增强: 缓冲流的基本原理: 创建流对象时,会创建一个缓冲区数组,通过缓冲区读写,减少系统IO次数,以提高读写效率。 就像送快递,快递小哥一次带一件当然慢,所以用车来运输,跑一趟可以带很多件。 以字符流为例: | 读文件:FileReader + 阅读全文
posted @ 2019-07-13 02:34 虎老狮 阅读(537) 评论(0) 推荐(0)
摘要: 字符流 字节流服务文本文件时,可能出现中文乱码。因为一个中文字符可能占用多个字节。 针对于非英语系的国家和地区,提供了一套方便读写方式——字符流。 java.io.Reader java.io.Writer 文件字符流 | 读文件:FileReader | 写文件: FileWriter 前面字节流 阅读全文
posted @ 2019-07-13 02:32 虎老狮 阅读(196) 评论(0) 推荐(0)
摘要: IO流 | 水流 | 特点 | | | | | 连续性 | 逝者如斯夫,不舍昼夜; | | 方向性 | 一江春水向东流。水往低处流。百川东到海,何时复西归?少壮不努力,老大徒伤悲! | | 源头尽头 | 唯有源头活水来;覆水难收 | Java里的IO也有这样的特点。 IO:数据从硬盘流向内存(Inp 阅读全文
posted @ 2019-07-13 02:30 虎老狮 阅读(3697) 评论(0) 推荐(0)
摘要: File类 File类在java.io包中。io代表input和output,输入和输出。 代表与平台无关的文件和目录。 可以新建、删除、重命名,但不能访问文件内容。 File类里的常量: File的构造方法里的参数——路径: | 可以是文件,也可以是文件夹 | 可以是相对路径,也可以是绝对路径 | 阅读全文
posted @ 2019-07-13 02:27 虎老狮 阅读(4095) 评论(1) 推荐(0)
摘要: 异常处理 好程序的特性 可重用性 可维护性 可扩展性 鲁棒性 | | Robust的音译 | | 健壮、强壮之意 | | 指在异常和危险情况下系统依然能运行,不崩溃 Java中,写下如下代码: 代码运行到“10 / 0”时出错,整个程序会中断,表现为最后的" END "没有输出。 很显然这不算好的程 阅读全文
posted @ 2019-07-13 02:22 虎老狮 阅读(407) 评论(0) 推荐(0)
摘要: 泛型 Generics:泛型,愿意指“无商标的”。 泛型,可以理解为“宽泛的数据类型”,就是将类型由原来的具体的类型泛化。 泛型在建立对象时不指定类中属性的具体类型,而是在声明及实例化对象时由外部指定。泛型可以提高数据安全性。 List中应用了泛型,在编译期对数据类型进行严格 检查,如果类型不匹配, 阅读全文
posted @ 2019-07-13 02:13 虎老狮 阅读(998) 评论(0) 推荐(0)
摘要: Map | 返回类型 | 方法 | 描述 | | | | | | V | get(Object key) | 根据key取得value | | V | put(Obejct k,Object v) | 向Map中加入(替换)元素,返回之前的Value;之前没有元素就返回null | | V | re 阅读全文
posted @ 2019-07-13 02:11 虎老狮 阅读(950) 评论(0) 推荐(0)
摘要: Set·无序,不重复 HashSet 特点:没有重复数据,数据不按存入的顺序输出。 HashSet由Hash表结构支持。不支持set的迭代顺序,不保证顺序。 但是Hash表结构查询速度很快。 创建集合使用代码: 代码演示:常用方法和遍历输出 Hash和Hash表 Hash HashCode,是一个十 阅读全文
posted @ 2019-07-13 02:08 虎老狮 阅读(1374) 评论(0) 推荐(0)
摘要: 集合概述 Java中的集合,指一系列存储数据的接口和类,可以解决复杂的数据存储问题. 导包:import java.util. ; 简化的集合框架图如下: List·列表 ArrayList List是一个接口: ArrayList是最常用的一种List的子类(当然也实现了其他接口,也继承了父类)。 阅读全文
posted @ 2019-07-13 02:00 虎老狮 阅读(32742) 评论(1) 推荐(2)
摘要: BigDecimal类 float、double类型的数字在计算的时候,容易发生精度丢失。 使用java.math.BigDecimal类可以解决此类问题。 前面讲过Math类,现在的BigDecimal类所在的包是math包。 注意Math类不在math包中,而是在lang包中。 形如:BigDe 阅读全文
posted @ 2019-07-13 01:55 虎老狮 阅读(508) 评论(0) 推荐(1)
摘要: 正则表达式·Regular Expression 正则表达式就是一个用于匹配字符串的模板,正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 主要用到的对象: java.util.regex.Pattern:正则表达式经编译后的表现模式 java.util.regex.Matcher:根 阅读全文
posted @ 2019-07-13 01:54 虎老狮 阅读(717) 评论(0) 推荐(0)
摘要: Date类和Calendar类都是关于日期的类,都在java.util包中,使用时需要import。 Date java.util.Date类的对象用来表示时间和日期,用得最多的是获取系统当前日期和时间,精确到毫秒。 Java中有两个Date类,还有一个是java.sql.Date,这个类一般不用, 阅读全文
posted @ 2019-07-13 01:53 虎老狮 阅读(890) 评论(0) 推荐(0)
摘要: Random类 java.util.Random类用于产生随机数。需要导入包: | 方法 | 解释 | | | | | Random() | 创建一个Random类对象 | | Random(long seed) | 使用seed作为随机种子创建一个Random类对象 | | int nextInt 阅读全文
posted @ 2019-07-13 01:44 虎老狮 阅读(7372) 评论(0) 推荐(0)
摘要: Scanner属于java.util包。 java.util包是Java内置的一个工具包,其中包含一系列常用的工具类,如处理日期、日历、集合类; 如果要使用到该包中的类,必须显式引入包名:import java.util. ; Scanner 参数:System.in,表示从标准输入获取数据,一般是 阅读全文
posted @ 2019-07-13 01:42 虎老狮 阅读(613) 评论(0) 推荐(0)
摘要: System类 java.lang.System类代表当前Java程序的运行平台。 | 可以做输入输出,垃圾回收;(此处不讲) | 可以获取时间; | 可以获取环境变量; | 可以获取系统信息; | 可以获取对象的原始HashCode。(比如String类就改写了hashCode方法,不能唯一地标识 阅读全文
posted @ 2019-07-13 01:39 虎老狮 阅读(268) 评论(0) 推荐(0)
摘要: RunTime类 java.lang.RunTime类代表Java程序的运行时环境。 可以进行垃圾回收(gc()),可以进行系统资源清理(runFinalization()); 可以加载文件(load)和动态链接库(loadLibrary()); 可以获得运行环境的相关信息(处理器、内存); 可以打 阅读全文
posted @ 2019-07-13 01:39 虎老狮 阅读(467) 评论(0) 推荐(0)
摘要: Object类 Object类是Java所有类类型的父类(或者说祖先类更合适) 《Thinking in Java(Java编程思想)》的第一章名字就叫“everything is Object”,一切皆为对象。 toString()方法:自我描述 任何类,都默认继承Object,所以都有toStr 阅读全文
posted @ 2019-07-13 01:36 虎老狮 阅读(235) 评论(0) 推荐(0)
摘要: Math Java这种级别的编程语言怎么可能没有数学相关的操作呢? java.lang.Math类提供了基本数学运算的方法。 该类是final的,说明不能被继承。 该类的构造方法是私有的(private),说明不让实例化; 该类中的所有方法都是静态的,均可以通过类名直接调用; Math类中有两个常量 阅读全文
posted @ 2019-07-13 01:34 虎老狮 阅读(437) 评论(0) 推荐(0)
摘要: String类 Java程序中的所有字符串字面值(如 "abc" )都是String的实例 字符串是常量(因为 String 对象是不可变的,所以可以共享) 字符串的本质是字符数组:private final char value[]; 创建字符串常用的方式 字符串的比较 解析: 采用字面值创建的字 阅读全文
posted @ 2019-07-13 01:31 虎老狮 阅读(399) 评论(0) 推荐(0)
摘要: Java出道之时,自诩为“纯面向对象的语言”,意思是之前的所谓“面向对象语言”不纯。 但是,有人指责Java也不纯——8种基本类型并非类类型。为此,Java为他们提供可对应的类类型,是为“包装类”。 包装类 Java的八种基本数据类型用起来很方便,但不支持面向对象的编程机制,不属于Object继承体 阅读全文
posted @ 2019-07-13 01:29 虎老狮 阅读(263) 评论(0) 推荐(0)
摘要: 抽象类 抽象类是介于普通类(class)和接口(interface)之间的一种特殊类。 接口的方法都不实现,类的方法都必须实现,抽象类里的方法可以实现,可以不实现。 Java 8之后接口中可以实现方法,抽象类的地位有点尴尬,不过因为历史代码中很多抽象类的应用,抽象类的概念也不会被淘汰。 抽象方法:只 阅读全文
posted @ 2019-07-13 01:26 虎老狮 阅读(282) 评论(0) 推荐(0)
摘要: 接口 接口只是一种约定。——Anders 接口定义了一种规范——多个类共同的公共行为规范。 对于接口的实现者——规定了必须向外提供哪些服务 对于接口的调用者——规定了可以调用哪些服务,如何调用这些服务 生活中经常见到“接口”—— 接口的意义: 体现了“规范和实现分离”的设计哲学; 降低了各模块之间的 阅读全文
posted @ 2019-07-13 01:24 虎老狮 阅读(243) 评论(0) 推荐(0)
摘要: 直观地说,多态就是“一个对象,多种形态 ”。比如观世音菩萨就有多种形态—— 每个人都有多种形态—— 具体地讲,多态是指“同一个对象、同一个方法(函数),表现出不同的行为”。 在代码层面表现为:父类对象指向子类实例;父类对象 调用(多种)子类方法。比如: 底层技术:后期绑定(动态绑定/运行时绑定),根 阅读全文
posted @ 2019-07-13 01:20 虎老狮 阅读(207) 评论(0) 推荐(0)
摘要: 继承 一个类 可以 继承自 另一个类; 派生的类(子类)继承父类的方法和数据成员; 关键字:子类 extends 父类。 设计示例 继承主要解决的问题是:共性抽取。 继承的特点: | 子类可以拥有父类的“内容” | 子类可以拥有自己的“内容” 卡车和巴士都是汽车,它们共有的特征来自汽车,他们也可以有 阅读全文
posted @ 2019-07-13 01:17 虎老狮 阅读(294) 评论(0) 推荐(0)
摘要: 面向对象的三大特征 封装:encapsulation 继承:inheritance 多态:polymorphism 封装 类是一个最基本的封装 封装的好处: 数据安全:保证数据安全 方便调用:提供清晰的对外接口,方便外界调用 降低耦合:类内部的实现可以修改,不影响其他类 电脑主机就是一个封装的例子, 阅读全文
posted @ 2019-07-13 01:12 虎老狮 阅读(386) 评论(0) 推荐(0)
摘要: 视屏讲解:https://www.bilibili.com/video/av48272174 面向过程 VS 面向对象 面向过程:强调步骤。 面向对象:强调对象。 面向对象的特点就是:隐藏具体实现的细节,将复杂的事情简单化。 代码中的面向对象 java public class 类和对象 { pub 阅读全文
posted @ 2019-07-13 00:00 虎老狮 阅读(370) 评论(0) 推荐(0)