![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
学习记录
小萌新上大分
学习笔记
展开
-
IDEA快捷键
Ctrl + Shift+上下箭头 上下移动代码。Ctrl+shift+/ 文档注释 再用取消。Ctrl+/ 对代码行注释 再用取消。Ctrl +D 赋值数据到下一行。Ctrl+X 删除所在行。原创 2022-08-05 11:25:13 · 242 阅读 · 0 评论 -
工厂模式,装饰模式(新手)
之前我们创建类对象是,都是使用new对象的形式创建,在很多业务场景下也提供了不直接new的方式工厂模式(FactoryPattern)是java中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种获取对象的方式。创建一个新类,包装原始类,从而在新类中提升原来类的功能装饰设计模式的作用?...原创 2022-07-30 14:22:05 · 182 阅读 · 0 评论 -
XML概述
XML是可扩展标记语言(ExtensibleMarkupLanguage)的缩写,它是一种书记表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。原创 2022-07-30 07:57:05 · 1330 阅读 · 1 评论 -
动态代理(java模拟生活中的代理)
代理指某些场景下对象会找一个代理对象,来辅助自己完成一些工作如歌星(经纪人),买房的人(房产中介);代理主要是对对象的行为额外做一些辅助操作。原创 2022-07-29 08:54:57 · 96 阅读 · 0 评论 -
注解的应用:模拟Junit框架
定义若干个方法,只要有@MyTest注解的方法就能在启动时被触发,没有这个注解的方法不能执行。需求定义若干个方法,只有加了MyTest注解,就可以在启动时被执行。定义一个自定义注解MyTest,只能注解方法,存活范围是一直都在。...原创 2022-07-28 17:02:46 · 61 阅读 · 0 评论 -
注解的知识和应用案例
java注解(Annotation)又称java标注,是JDK5.0引入的一种注释机制java语言中的类,构造器,方法,成员变量,参数等都可以被注解进行标注自定义注解就是自己做一个注解来使用。原创 2022-07-28 09:52:41 · 129 阅读 · 0 评论 -
反射的作用
反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以为集合存入其他任意类型的元素的泛型只是编译阶段可以约束集合只能操作某种数据类型,在编译成Class文件进行运行阶段的时候,其真实类型都是ArrayListl了,泛型相当于被擦除了不用反射就这样写也可以突破泛型约束2:反射做通用框架需求:给你任意一个对象,在不清楚对象字段的情况下,可以把对象的字段名和对应值存储到文件中去分析:定义一个方法,可以接收任意类型的对象每次受到一个对象后,需要解析这个对象的全部成员变量名称这个对象可能原创 2022-07-27 21:27:18 · 223 阅读 · 0 评论 -
反射(获取成员变量,获取成员方法)
FieldgetField(Stringname)返回单个成员变量对象(只能拿Public修饰的)Method[]getMethods()返回所有成员方法对象的数组(只能返回为public修饰的)Field[]getFields()返回所有成员变量对象的数组(只能拿public修饰的)参数2调用方法的传递的参数(如果没有就不写)返回值方法的返回值(如果没有就不写)反射的第一步是先得到类对象,然后从类对象中获取类的成分对象。反射的第一步是先得到类对象,然后从类对象中后去类的成分对象。...原创 2022-07-27 15:13:30 · 2095 阅读 · 0 评论 -
反射第一部分,获取Class对象,获取Constructor对象
反射是指针对任何一个Class类,在运行的时候都可以直接得到这个类的全部成分。在运行时,可以直接得到这个类的构造器对象在运行时,可以直接得到这个类的成员变量对象Field在运行时,可以直接得到这个类的成员方法对象Method这种运行时动态获取类信息以及调用类中成分的能力称之为java语言的反射机制。...原创 2022-07-26 15:50:40 · 369 阅读 · 0 评论 -
TCP通信模拟BS
TCP通信如何实现BS请求网页信息回来?客户端使用浏览器发起请求(不需要开发客户端)服务端必须按照浏览器的协议规则相应数据浏览器使用说明协议规则呢?HTTP。原创 2022-07-26 09:24:15 · 141 阅读 · 0 评论 -
TCP通信线程池优化
服务端可以复用线程池处理多个客户端,可以避免系统瘫痪。客户端与服务端的线程模型是N-N的关系。客户端并发越多,系统瘫痪的越快。适合客户端通信时长较短的场景。原创 2022-07-25 21:33:39 · 247 阅读 · 0 评论 -
TCP通信多发多收,和接收多个客户端消息
需求使用TCP通信的方式实现多发多收消息具体要求可以使用死循环控制服务端收完消息继续等待接收下一个消息客户端也可以使用死循环等待用户不断的输入消息客户端一旦输入exit,则关闭客户端程序,并释放资源先启动接收端发送端。...原创 2022-07-25 16:51:45 · 1198 阅读 · 0 评论 -
TCP通信基础(一发一收)
publicSocket(Stringhost,intport)创建发送端打的Socket对象与服务端连接,参数为服务端程序的IP和端口。publicSocketaccept()等待接收客户端的Socket通信连接连接成功返回Socket对象与客户端建立端到端通信。调用ServerSocket对象的accept()方法,等待客户端的连接,并得到Socket管道对象。释放资源关闭Socket管道(用户离开了,你在关管道)创建客户端的Socket对象,请求与服务端的连接。...原创 2022-07-24 08:24:56 · 541 阅读 · 0 评论 -
UDP通信多发多收(案例)和广播组播
分析发送端可以一直发送消息接收端可以不断的接收多个发送端的消息展示发送端输入exit则结束发送端程序。接收端只负责接收数据包,无所谓是哪个发送端的数据包。服务端(接收端)先启动。...原创 2022-07-23 09:46:44 · 1499 阅读 · 1 评论 -
UDP入门(一发一收)
publicDatagramPacket(byte[]buf,intlength,InetAddress,intport)封装发送端数据包对象buf要发送的内容,字节数组length要发送内容的字节长度。publicDatagramPacket(byte[]buf,intlenght)创建接收端的数据包的对象。address接收端的ip地址对象port接收端的端口号。buf用来存储接收的内容length能够接收内容的长度。......原创 2022-07-23 08:39:20 · 237 阅读 · 0 评论 -
网络通信(InetAdress类)
publicstaticInetAddressgetByName(Stringhost)获取指定主机的IP地址对象,参数是域名或者IP地址。周知端口0到1023,被预先定义的知名应用占用(如http占用80,ftp占用21)表示正在计算机设备上运行的进程(程序),被规定为一个16位的二进制,范围是0到65535。注意我们自己开发的程序选择注册端口,且一个设备中不能出现两个程序的端口号一样,否则出错。定位网络上的设备的,有IPv4,IPv6。公网地址,和私有地址(局域网使用)...原创 2022-07-22 16:55:25 · 202 阅读 · 0 评论 -
并发与并行,生命周期
并发与并行正在运行的程序(软件)就是一个独立的进程,线程是属于进程的,多个线程其实就时并发与并行同时进行的。原创 2022-07-22 09:51:07 · 127 阅读 · 0 评论 -
定时器(Timer和线程池定时器)
定时器是一种控制任务延时调用,或者周期调用的技术作用闹钟,定时邮件发送。两种定时器的优缺点,和使用原创 2022-07-22 09:24:14 · 786 阅读 · 0 评论 -
Executors工具类
publicstaticExecutorservicenewFixedThreadPool(intnThread)创建固定线程数量的线程池,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程代替它。publicstaticExecutorServicenewsSingleThreadExecutor()创建只有一个线程的线程池对象,如果该线程出现异常而结束,那么线程池会补充一个线程。...原创 2022-07-22 08:33:07 · 236 阅读 · 0 评论 -
线程池基础
线程池就是一个可以复用线程的技术。原创 2022-07-21 15:38:02 · 279 阅读 · 0 评论 -
线程通信(案例)
所谓线程通信就是线程之间相互发送数据,线程通信通常通过共享一个数据的方式实现线程之间会根据共享数据的情况决定自己改怎么做,以及通知其他线程怎么做。原创 2022-07-21 09:23:42 · 170 阅读 · 0 评论 -
线程同步(解决线程安全问题)
不好,会影响其它无关线程的执行(比如说A和B用的是同一个账户,C和D用的是同意账户,使用任意对象进行加锁,在A对象取钱时候,不光会影响B,还会影响无关的C和D)为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁Lock,更加灵活,方便。把共享的资源进行上锁,每次只能一个线程进入访问完毕后解锁,然后其他线程才能进来。如果方法是实例方法,同步方法默认用this作为锁的对象。同步方法其实底层也是有隐式锁对象的,只是锁的范围是整个方法代码。多个线程同时执行,发现账户都是够钱的。......原创 2022-07-20 10:05:02 · 248 阅读 · 0 评论 -
线程安全问题(模拟取钱案例)
A和B是一对夫妻,他们有一个共同账户,余额为10万元,模拟两个人同时去去年。需要提供一个账户类,创建一个账户对象代表两人共享账户。需要定义一个线程类,线程类可以处理账户对象。启动两个线程,去同一个账户中取钱10万。创建2个线程对象,传入同一个账户对象。卡内还剩-100000.0。A取款100000.0。B取款100000.0。...原创 2022-07-20 09:05:49 · 268 阅读 · 0 评论 -
Thread常用API
publicThread(Runnabletarget,Stringname)把Runnable对象交给线程对象,并指定线程名称。publicThread(Runnabletarget)把Runnable对象交给线程对象。Stringgetname()获取当前线程的名称,默认线程名称是Thread-索引。publicThread(stringname)可以为当前线程指定名称。voidsetName(Stringname)设置线程名称。...原创 2022-07-19 21:38:59 · 129 阅读 · 0 评论 -
多线程的创建java
PublicThread(Runnabletarget,Stringname)封装Runnable对象成线程对象并指定线程名称。缺点存在单继承的局限性,线程类已经继承了Thread,无法继承其他类,不利于扩展。4线程执行完毕,通过FutureTask的get方法获取任务执行的结果。3调用线程对象的start方法启动线程(启动后还是执行run方法)优点线程任务类只实现了接口,可以继续继承类和实现接口扩展性强。优点线程任务类只是实现接口,可以继续继承和实现接口,扩展性强。...原创 2022-07-19 19:16:53 · 247 阅读 · 0 评论 -
Properties
voidstore(Writerw,stringcomments)写入到Properties属性文件,第二个参数为注释,可以为空""publicSetstringPropertyNames()所以键的名称的集合(keySet())属性文件后缀是.properties结尾的文件,里面的内容都是key=value后续做系统配置信息。ProPerties代表一个属性文件,可以把自己对象中的键值对信息存入到一个属性文件中去。Properties与IO流的结合。...原创 2022-07-18 15:05:58 · 105 阅读 · 0 评论 -
打印流java
作用打印流可以实现方便、高效的打印数据到文件中去。打印流的优势?两者在打印功能上都是使用方便,性能高效。原创 2022-07-18 14:13:19 · 400 阅读 · 0 评论 -
对象序列化,反序列化
补充一下(版本号要的作用是强制让别人重新序列化你的对象,也就是之前不是这个版本号的文件就作废了,如你要新增成员变量,就可以给版本号进行升级,别人就需要重新序列化,要不反序列化就会报错)publicObjectreadObject()把存储到磁盘文件中的对象数据恢复成内存中的对象返回。作用以内存为基准,把存储到磁盘中去的文件对象数据恢复成内存中的对象,称为对象反序列化。作用以内存为基准,把内存中的对象存储到磁盘文件中去,称为对象序列化。代码把我们刚才存到文件中的对象取回来。对象序列化的要求是什么?...原创 2022-07-18 09:02:10 · 124 阅读 · 0 评论 -
java转换流
先以字节流的方式读代码,然候把指定的原始字节流以指定的编码形式转化成字符流,就不会出现乱码。然后把字节流以指定的编码转换成字符输入流,这样字符输入流的字符就不会乱码了。可以提取文件的原始字节流,原始字节不会存在问题。如果需要控制写出去的字符使用的编码怎么办?如果文件和代码编码不一致,读取会出现乱码。必须文件和代码编码一致才不会报错。...原创 2022-07-17 17:08:25 · 862 阅读 · 0 评论 -
字符缓冲流(包含案例对文本内容进行排序)
字符缓冲流介绍,以及文本排序小案例应用原创 2022-07-17 16:05:50 · 205 阅读 · 0 评论 -
字节缓冲流java
publicBufferedOutputStream(OutputStreamos)把原始管道包装成高级缓冲字节输出流管道。建议使用字节缓冲输入流,字节缓冲输出流,结合字节数组的方式,目前看是性能最优的选择。缓冲流自带缓冲区,可以提高原始字节流,字符流读写数据的性能。缓冲流也称为高效流,或者高级流。之前的字节流称之为原始流。原始流我给它的桶加大了8倍,和缓冲流的速度基本就差不多了。性能好了,但是读写功能用法没有变,都是继承过来的。字节缓冲流自带8kb缓冲区。...原创 2022-07-17 09:16:39 · 202 阅读 · 0 评论 -
字符流的使用
publicintread(char[]buffer)每次读取一个字符数组,返回读取的字符数,如果字符已经没有可读的返回-1。publicintread()每次读取一个字符返回,如果字符已经没有可读的返回-1。(中文不会出现乱码(如果代码与文件编码一致),性能较差)字节流适合做一切文件数据的拷贝(音视频,文本)字符流更合适,最小单位是按照单个字符读取的。一定不能忘记刷新或关闭流要不内容都写不进去。字符流适合做文本文件的操作(读、写)使用循环一个字符一个字符的读。...原创 2022-07-16 10:49:53 · 194 阅读 · 0 评论 -
资源的释放方式try-catch-finally, try-catch-resource
资源都是实现了Closeable或者AutoCloseable接口的类对象例如{}原创 2022-07-16 09:30:42 · 1964 阅读 · 0 评论 -
文件拷贝(IO字节流的小应用)
任何文件的底层都是字节,拷贝是一字不漏的转移字节,只要前后文件格式,编码一致没有任何问题。如果拷贝的是字符,需要保证字符集是一样的否则回出现乱码。原创 2022-07-15 21:13:15 · 267 阅读 · 0 评论 -
文件字节输出流
publicvoidwrite(byte[]buffer,intpos,intlen)写一个字节数组送出去一部分。os.write("\r\n".getBytes())//getBytes的功能是转换成字节数组。close()关闭流,释放资源,但是在关闭之前先刷新流,一旦关闭,就不能再写数据。close()方法是关闭流,关闭包含刷新,关闭后流不可以继续使用了。flush()刷新流,还可以继续写数据。字节输出流如何实现写出的数据能换行。第二个参数填写true即可。...原创 2022-07-15 20:52:21 · 350 阅读 · 0 评论 -
文件字节输入流读取字节数据(包含如何避免乱码)
这个和前面学的stream流一样,一个流用完就没了。原创 2022-07-15 15:02:42 · 443 阅读 · 0 评论 -
字符集基础
计算机底层不可以直接存储字符的。计算机中底层只能存储二进制(0,1)二进制是可以转换成十进制的。原创 2022-07-15 09:02:20 · 169 阅读 · 0 评论 -
啤酒问题非规律化递归应用
啤酒2元一瓶,4个酒盖可以兑换1瓶啤酒,2个空瓶可以兑换1瓶酒,请问10元最终可以喝多少瓶酒,剩余多少个空瓶和盖子?原创 2022-07-14 16:28:53 · 129 阅读 · 0 评论 -
非规律化递归问题:文件搜索(含源码)
需求:从文件中搜索,从D:盘中,搜出某个文件名称并输出其绝对路径分析:先定位出一级文件对象遍历全部一级文件对象,判断是否是文件如果是文件,判断是否是自己想要的如果是文件夹,需要继续递归并重复上述过程...原创 2022-07-14 10:29:36 · 124 阅读 · 0 评论 -
猴子吃桃问题(数学公式推算过程和源码)
题目为:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。2 找终止条件是不是 天数等于10天的时候,我就剩了一个桃子就判断 测试一下,把x=1传进来...原创 2022-07-14 08:32:25 · 2937 阅读 · 0 评论