- 博客(19)
- 收藏
- 关注
原创 对象的序列化和反序列化
概念对象的序列化指的是将对象存入文件的过程 ,存入的文件是二进制形式,打开会是乱码对象的反序列化指的是将对象从文件中取出到程序中的过程序列化流ObjectInputStream( FileInputStream fis ) 特有方法:.readObject( ); ObjectOutputStream( FileOutputStream fos ) 特有方法:.writeObject( );public class SerialiseDemo { publi...
2021-03-19 16:22:48
137
原创 随机数
方法一java.util.Random同一个种子,产生的随机数序列是固定的 Random random = new Random(10); System.out.println(random.nextInt(100)); System.out.println(random.nextInt(100)); System.out.println(random.nextInt(100));运行结果一直只会是138093
2021-03-19 15:31:39
163
原创 Properties和IO流那些事
java.util.Properties extends Hashtable< k , v> implements Map< k , v>作用:可以从流中加载或把数据保存到流中(流连接文件) 唯一一个可以和IO流相结合的双列集合...
2021-02-26 14:35:05
180
原创 IO字符流
字符流比字节流好的地方在于每次输入一个字符, 遇中文不会出现乱码FileReaderjava.io.FileReader extends InputStreamReader extends Reader共性的成员方法:int read() : 读取单个字符返回. int read(char[ ] chuf) : 一次读取多个字符, 将字符读入数组. void close() : 关闭该流和释放相关的资源构造方法:new FileReader(String fileName) ne
2021-02-25 18:55:34
93
原创 IO字节流
字节流会出现一个问题, 传输过程涉及中文时, 会出现乱码, 主要是因为不同编辑软件对文件的编码方式不同,Java.io.OutputStream字节输出流此抽象类表示: 所有输出字节流的类的超类(父类)子类共性的成员方法:public void close() : 关闭输出流并释放与此相关的系统资源 public void flush() : 刷新输出流并强制输出缓冲的输出字节 public void write(byte[ ] b) : 将b.length长度的字节从指定数组...
2021-02-25 15:33:32
125
原创 文件过滤器Filter
用处用于过滤掉不需要的文件将过滤规则和程序分开,提高过滤规则代码的复用性,增加了可移植性,提高效率、简化代码开发使用创建FileFilter接口的实现类,并实现其accept(File pathname)方法,此方法中写过滤规则;如果想保留该文件,则返回true,如果不需要,则返回false; 创建该实现类的对象1 调用file的listFIles方法,并传入对象1,返回file下符合过滤规则的file数组afile.listFiles()方法做了几件事:对构造方法中传递的目录
2021-02-22 16:05:30
311
原创 Recurrence递归
直接递归和间接递归直接:a(){ a();}间接:a(){ b();}b(){ a();}使用前提要有条件限定:保证递归可以停下,否则发生栈内存溢出错误StackOverFlowError 递归的次数不能太多次:发生栈内存溢出错误StackOverFlowErrora()方法会一直在栈内存中调用a方法,多了就会超出栈内存大小使用定义一个方法 在方法中:如果到达尽头(限定条件),则返回或输出;否则如果没有到达尽头,则再次调用本...
2021-02-05 16:37:09
293
原创 File
路径分隔符File.pathSeparatorWindows:; Linux::文件名称分隔符File.separatorWindows: \ Linux: /由于不同系统的分隔符不一致,所以在写路径时不能写死,就可以用这两个字段来获取各自的分隔符,而不直接使用;\ / :java.io.File类的三个构造方法public File(String pathName): 根据文件路径来创建File对象,文件路径和文件可以存在也可...
2021-02-05 10:22:43
112
原创 线程池和Lambda表达式
背景当要执行新的线程任务时,我们就去创造一个线程,这样使用起来很方便但存在的问题是,当频繁创建了很多线程,每个线程执行完就销毁了,开销很大,因为创建和销毁线程需要时间使用一种方法线程池,使线程得以复用:线程执行完任务后,不销毁,可以继续执行下一个任务。线程池线程池中存放多个新建的线程,需要执行线程任务时,就往线程池中添加线程任务。如果加入的线程任务数目超过线程池并发的线程数时,剩余的线程任务会先进入等待队列,直到线程池有线程空闲,再来执行这些剩余的任务。使用使用线程.
2021-02-04 15:00:03
133
原创 为什么wait()和notify()必须放到一个loop:synchronized中!!!
依靠对象(wait()要知道等下被谁唤醒,notify()要知道去唤醒谁;所以wait()和notify()需要依靠同一个对象来调用)需要监视器这就需要一个监视器: 包含一个对象锁、一个等待队列、一个同步队列对象锁:同一时间只能被一个线程获得,保证只有一个线程中的同步代码块被执行 等待队列:使用wait() 方法后被阻塞的线程会放到此队列中,这些线程待唤醒 同步队列:存放竞争同步资源的线程过程解释notify() 的过程其实就是:将等待队列的某个线程调到同步队列中的过程wait
2021-02-01 17:04:07
217
原创 数据结构_双列集合_Map
Map因为返回的值涉及到null值,所以返回的值需要使用基本数据类型的包装类来接收。如果使用基本数据类型会发生空指针异常主要方法:v put(K key ,V value):往map集合中添加元素,如果集合中已经有对应的key,那么代替value,旧的value作为返回值。如果集合中没有对应的key,那么直接添加,返回的value为空。v get(Object key):获取集合中对应key的value值,如果不存在该键值对,则返回空。v remove (Object key) :移除key的键值
2021-01-31 17:14:39
138
原创 自定义异常
自定义异常当Java提供的不适用需要自己再添加异常时格式:public class xxxException extends Exception | RuntimeException{ 添加一个空参数构造方法 添加一个含异常信息的构造方法}
2021-01-31 17:12:18
176
原创 线程状态
1、新建状态new Thread 或 new thread的子类2、运行状态RUNNABLE已获得cpu使用权,正在运行3、阻塞状态BLOCKED具有cpu执行资格,等待cpu空闲时间执行4、休眠状态TIMED_WAITING放弃cpu执行资格,就算cpu空闲也不执行5、无限等待状态WAITING只能被Object.notify()唤醒6、死亡状态TEMINATEDrun() 方法执行完成 使用了stop() 方法 出现了异常...
2021-01-31 16:44:05
122
原创 开启新线程的方法and解决线程安全问题的方法
并发与并行并发:两个或多个事件(线程)在同一时间段内发生(一个Cpu交替执行)并行:两个或多个事件(线程)在同一时刻发生线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。进入到内存的程序就是进程线程:能独立运行的基本单位,也是独立调度和分派的基本单位进程和线程的区别地址空间:进程是资源分配的基本单位,线.
2021-01-31 16:43:05
1540
4
原创 异常的分类及处理方法
java.lang.Throwable是所有错误、异常的父类其子类包含:Error:工程师无法处理,只能尽量避免。Exception:异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。1、Exception:编译期异常,即红线,需要在编译前处理好2、RunTimeException:运行期异常,Exception的子类,不处理系统会自动抛出:索引越界、空指针异常3、异常处理三种方式a.在方法声明处添加 “Throws 异常类型”,将异常交给虚拟机处理,如果出
2021-01-24 21:12:29
832
原创 数据结构_单列集合_java.util.Collections工具类、可变参数
可变参数作用在形参部分中,如果形参的个数不确定,但可以确定形参的类型,那么可以使用可变参数如:一个可以对参数求和的方法,但不要求是几个数相加,避免使用重载的方法。格式:public static int add(int...arr){ int sum = 0; for (int i : arr) { sum += i; } return sum; }//main方法中,几个实参都可以System.ou
2021-01-16 19:28:37
150
原创 数据结构_单列集合_List集合、Set集合
List集合1、数组特点:查询快:地址是连续的,通过首地址可以找到数组,通过索引 可以快速查找某个元素增删慢:数组的长度是固定的,要增删某个元素,必须重新创建一个数组,把数据复制过来2、ArrayList特点:底层也是使用数组实现,兼具数组的特点3、LinkedList特点:底层是链表结构增删快(因为如果要删除a和b之间的节点,只需用a提供的地 址,查找下一个next位置即可)查询慢 (因为各个元素地址不连续,要查询某个元素,需要重头遍历)4、Vector集合特点:底层是
2021-01-15 19:41:20
162
原创 Java基础_Calendar
Calendar类的常用成员方法:public int get(int field): 返回给定日历字段的值public void set(int field,int value):将给定的日历字段设置为给定值public abstract void add(int field,intamount):根据日历的规则,为给定的日历字段添加或减去指定的时间量public Date getTime():返回对应时间的Date对象 Calendar calendar = Calend
2020-12-31 10:43:53
144
原创 java基础_Date日期时间
java.util.Date:表示日期和时间的类表示特定的瞬间,精确到毫秒毫秒:千分之一秒 1000毫秒 = 1秒特定的瞬间:2020-08-08 09:30:30 瞬间2020-08-08 09:30:31 瞬间2020-08-08 09:30:32 瞬间。。。毫秒值的作用,可以对时间和日期进行计算2099-01-03 到 2099-03-30 ,中间一共有多少天可以日期转换为毫秒进行计算,最后再将毫秒转换为日期把日期转换为毫秒:当前日期:2088 - 01- 01
2020-12-31 09:39:43
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人