- 博客(82)
- 收藏
- 关注
原创 多线程扩展:乐观锁、多线程练习
悲观锁:一上来就加锁,没有安全感,每次只能一个线程进入访问完毕后,再解锁。线程安全,性能较差。乐观锁:一开始不上锁,认为是没有问题的,等要出现线程安全问题的时候才开始控制。线程安全,性能较好。
2024-03-10 15:09:22
246
原创 多线程:线程池
线程状态说明NEW(新建)线程刚被创建,但是并未启动Runnable(可运行)线程已经调用了start(),等待CPU调度Blocked(锁阻塞)线程在执行的时候未竞争到锁对象,则该线程进入Blocked状态Waiting(无限等待)一个线程进入Waiting状态,另一个线程调用notify或者notifyAll方法才能够唤醒Timed Waiting(计时等待)同waiting状态,有几个方法(sleep,wait)有超时参数,调用他们将进入Timed Waiting状态。
2024-03-07 17:03:02
708
原创 多线程:线程通信
3个生产者线程,负责生产包子,每个线程每次只能生产一个包子放在桌子上,2个消费者线程负责吃包子,没人每次只能从桌子上拿一个包子吃。注意:生产者生产完数据应该等待自己,通知消费者消费;消费者消费完数据也应该等待自己,再通知生产者生产。ThreadTest类。
2024-03-03 16:43:56
355
原创 多线程:线程安全、线程同步
用上述小明、小红取钱的代码为例。建议使用共享资源作为锁对象。ThreadTest类。DrawThread类。ThreadTest类。
2024-03-01 17:55:05
502
原创 Java多线程的创建
ThreadTest1类。ThreadTest2类。ThreadTest3类。MyRunnable类。MyCallable类。
2024-02-27 15:06:34
2049
1
原创 Java日志技术
好比生活中的日记,可以记录你生活中的点点滴滴程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息日志框架:牛人或者第三方公司一级做好的实现代码,后来者直接可以拿去使用日志接口:设计日志框架的一套标准,日志框架需要实现这些接口注意1:因为对Commons Logging接口不满意,有人就搞了SLF4J;因为对Log4j的性能不满意,有人就搞了Logback注意2Logback是基于slf4j的日志规范实现的框架。
2024-02-24 16:09:34
607
原创 IO流-其他流
解决某类问题,编写的一套类、接口等,可以理解成一个半成品,大多框架都是第三方研发的好处:在框架的基础上开发,可以得到优秀的软件架构,并提高开发效率框架的形式:一般是把类、接口等编译成class形式,再压缩成一个.jar结尾的文件发行出去封装了Java提高的对文件、数据进行操作的代码,对外提高了更简单的方式来对文件进行操作,对数据进行读写等。
2024-02-20 17:01:40
800
原创 IO流-转换流
如果代码编码和被读取的文本文件的编码是一致的,使用字符流读取文本文件时不会出现乱码如果代码编码和被读取的文本文件的编码是不一致的,使用字符流读取文本文件时就会出现乱码。
2024-02-17 15:03:15
446
原创 File、IO流(二)
字节输入流:内容存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流字节输出流:以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流字符输入流:以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流字符输出流:以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络介质中去的流。
2024-02-04 16:51:25
854
原创 集合框架(三)
TreeSet集合存储自定义类型的对象时,必须指定排序规则,支持如下两种方法来指定比较规则。1、如果希望记住元素的添加顺序,需要存储重复的元素,又要频繁的根据索引查询数据?用ArrayList集合(有序、可重复、有索引),底层基于数值的(常用)2、如果希望记住元素的添加顺序,且增删首尾数据的情况较多?用LinkedList集合(有序、可重复、有索引),底层基于双链表实现的3、如果不在意元素顺序,也没有重复元素需要存储,只希望增删改查都快?
2024-01-19 17:19:40
853
原创 集合框架(二)
链表中的结点是独立的对象,再内存中是不连续的,没个结点包含数据值和下一个结点的地址。链表的特点1:查询慢,无论查询哪个数据都要从头开始找。链表的特点2:链表增删相对快特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的。
2024-01-17 17:28:39
974
原创 集合框架(一)
Movie类Test类movies.add(new Movie("阿甘正传",9.5,"汤姆·汉克斯"));movies.add(new Movie("霸王别姬",9.6,"张国荣、张丰毅"));movies.add(new Movie("肖申克的救赎",9.7,"罗宾斯"));System.out.println("电影名:" + movie.getName());System.out.println("评分:" + movie.getScore());
2024-01-16 16:18:47
894
原创 Java异常
Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。定义一个异常类继承RuntimeException重新构造器通过throw new 异常类(xxx)来创建异常对象并抛出编译阶段不报错,提醒不强烈,运行时才可能出现Test类try {System.out.println("底层执行成功");System.out.println("底层出现了bug");
2024-01-14 16:58:44
408
原创 Java正则表达式
作用一:用来校验数据格式是否合法作用二:在一段文本中查找满足要求的内容例如:用于判断一个QQ号是否格式合法正常写法用正则表达式。
2024-01-13 17:01:34
486
原创 Java:常见算法
注意:在数据量特别大的时候,基本查找这种从前往后挨个查找的形式,性能是很差的。结论:二分查找正常的折半条件应该是开始位置left
2024-01-11 20:29:26
460
原创 医院挂号系统
frame.HospitManager类。bean.Department类。bean.Schedule类。bean.Doctor类。
2024-01-10 19:23:17
1553
原创 Lambda表达式
有且仅有一个抽象方法的接口。注意:将来我们见到的大部分函数式接口,上面都可能会又一个@FunctionalInterface的注解,有该注解的接口就必定是函数式接口。// 目标:认识Lambda表达式// System.out.println("游泳~~~");// }// };System.out.println("游泳~~~");s.swim();
2024-01-02 17:50:15
406
原创 Java日期和时间(二)
新增的Instant类,可以精确到纳秒,并且是不可变对象,推荐用Instant代替Date。LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)LocalDateTime:年、月、日、时、分、秒。Duration:时间间隔(时、分、秒,纳秒)LocalDate:代表本地日期(年、月、日、星期)LocalTime:代表本地时间(时、分、秒、纳秒)LocalDate:年、月、日。LocalTime:时、分、秒。Period:时间间隔(年、月、日)Instant:时间戳/时间线。
2024-01-01 17:12:35
881
原创 StringBuilder、StringBuffer
构造器为什么操作字符串建议使用StringBuilder,而不用String如果使用String来完成这个任务的话,要等到结果需要较长的时间,因为String类型的每次添加abc的时候都会创建一个新的对象导致效率非常的慢。使用StringBuilder时就可以避免这个问题,差不多1~2秒的时间就可以得出结果。对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder,效率更高。注意:如果存在字符较少,或者不需要存在,以及定义字符串变量,还是建议使用String。
2023-12-28 16:56:43
405
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人