- 博客(33)
- 收藏
- 关注
原创 IO(Reader/Writer)
i.带编码转换器的OutputStream,把char转换成byte并输出。ii.java.io.Writer是所有字符输出流的超类。
2024-09-28 17:48:25
843
原创 IO相关知识(Filter/序列化)
i.Java的IO标准库使用Filter模式为InputStream和OutputStream增加功能:1.可以把一个InputStream和任意个FilterInputStream组合。2.可以把一个OutputStream和任意个FilterOutputStream组合。ii.Filter模式可以在运行期动态增加功能(又称Decoartor模式)。i.序列化是把一个Java对象变成二进制内容(byte[]数组);反序列化是把一个二进制内容(byte[]数组)变回Java对象。
2024-09-28 17:41:52
754
原创 IO(输入输出流)
i.Java库提供的最基本的输入流。ii.不是接口,是抽象类,是所有输入流的超类。iii.int read()方法:会读取输入流的下一个字节,并返回字节的int值,如果读到末尾,返回-1表示不能继续了。iv.在计算机中,类似文件、网络端口这些资源,都是由操作系统统一管理的。应用程序在运行过程中,打开文件需要及时关闭,以便让操作系统及时释放资源。v.InputStream和OutputStream都是通过close()方法关闭流,关闭流就会释放对应的底层资源。
2024-09-25 17:16:38
1419
原创 常用集合(Set等)
ii.PriorityQueue的优先级通过实现Comparable接口的排序实现,放入PriorityQueue的元素要么实现Comparable接口,要么在创建PriorityQueue对象时传入Comparator对象。d.因为放入Set的元素和Map的key类似,都要正确重写equals()和hashCode()方法,否则该元素无法正确放入Set。i.它的出队顺序与元素的优先级相关,对PriorityQueue调用remove()或poll()方法,返回的总是优先级最高的元素。
2024-09-24 08:22:54
638
原创 使用Properties
iii.读写Properties时,使用getProperty()和setProperty()方法,不要调用继承自HashTabled的get()和put()方法(历史遗留问题)。i.它的Key-Value一般都是String-String类型的,可以用Map<String, String>表示。iii.调用getProperty()获取配置。i.调用setProperty()设置配置内容。ii.调用store()写入配置文件。i.创建Properties实例。ii.调用load()读取文件。
2024-09-22 17:16:32
284
原创 Java集合(Map篇)
i.Map是无序集合,遍历Map时,不可假设输出的key是有序的。ii.Map是一种映射表,可以根据key快速查找value。iii.最常用的一种Map实现时HashMap。i.不需要重写equals()和hashCode(),因为TreeMap不使用equals()和hashCode()。ii.作为SortedMap的key必须实现Comparable接口,或者传入Comparator。iii.使用TreeMap时,对key的比较需要正确实现相等,小于,大于逻辑。
2024-09-22 14:25:22
984
原创 Java集合(List篇)
i.最基础的一种集合,是一种有序列表,内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置。ii.数组的删除和新增iii.ArrayList集合的新增和删除。iv.LinkedList(链表式集合)1.内部的每个元素都指向下一个元素。2.比较一下ArrayList和LinkedList,优先使用ArrayList。
2024-09-20 10:11:22
1519
原创 Java泛型(“代码模板”,一套代码套用各种类型)
i.如果不用泛型定义,在使用ArrayList时需要为每个class编写特定类型代码。ii.泛型就是定义一种模板,既实现了编写一次,万能匹配,又通过编译器保证了类型安全。iii.编写模板代码来适应任意类型。i.使用
2024-09-18 15:56:56
1095
原创 注解(Java程序的一种特殊“注释”,用于工具处理的标注)
用@interface来定义注解。注解的参数类似无参方法,用default设定一个默认值(强烈推荐),最常用的参数应命名为value(有且只有它时可以省略参数名称)。i.使用@interface定义注解类。ii.添加参数、默认值;把最常用的参数定义为value(),所有参数都尽量设置默认值。iii.添加元注解;必须设置@Targer和@Retention,@Retention一般设置为RUNTIME。
2024-09-14 20:50:06
990
原创 日志相关知识
b.可以挂接不同的日志系统,通过配置文件指定,默认情况下,自动检测并使用其他日志模块,自动搜索并使用Log4j,没有则使用JDK Logging。e.注意:日志的配置文件必须放在resources文件下,并且名字必须是logback-spring.xml,否则需在配置文件中配置文件路径。c.Commons Logging可以作为“日志接口”来使用,而真正的“日志实现”可以使用Log4j。第二步,使用Log实例的方法打日志。a.为了代替System.out.println(),可以定义格式,重定向文件等。
2024-09-11 20:52:41
322
原创 异常相关知识
1.抛出异常时,尽量使用JDK已定义的异常类型。2.尽量从RuntimeException派生根异常(BaseException),再从根异常派生业务异常。3.自定义异常时,应提供多种构造方法,照抄父类的构造方法即可。
2024-09-11 16:24:34
887
原创 常用工具类
2.在创建Random实例时,如果不给定种子,就使用系统当前时间戳作为种子,由于种子不同,所以每次运行得到的伪随机数序列不同。2.Math.random() 内部调用了Random的方法,所以也是伪随机数,只是我们无法指定种子。1.真随机数,无法指定种子,安全性是通过操作系统提供的安全的随机种子来生成随机数。只要给定一个初始种子,产生的随机数序列就是完全一样的。3.如果在创建Random实例时指定种子,就会得到完全确定的随机数序列。2.在密码学中很重要,使用SecureRandom来产生安全的随机数。
2024-09-10 17:14:59
316
原创 记录类(record(java14开始))
重写toString()、equals()、hashCode()方法。c.使用record关键字,一行代码写出一个不变类。a.使用final修饰class类,e.是一种class,可以添加。a.java14后用此关键字。b.编译器自动编译为使用。,只能通过record关键字定义由。创建构造方法和跟字段同名的方法。final修饰的类和每个字段。2.record关键字。
2024-09-10 17:10:56
301
原创 枚举相关知识点
a.定义的enum类型总是继承自java.lang.Enum,且不能被继承,因为enum被编译器编译为final修饰的类。2.enum常量本身带有类型信息,即Weekday.SUN类型是Weekday,编译器会自动检查出类型错误,在编译期间可检查错误。5.注意:判断枚举常量的名字,始终使用name()不能被重写,final修饰,绝不能调用toString(),可以被重写。c.每个属性都是枚举类型的对象,类似于全局常量,定义的每个实例都是引用类型的唯一实例。3.enum定义的枚举类有什么特点。
2024-09-08 12:12:48
257
原创 内部类(定义在类的内部)
1.成员内部类和匿名内部类本质是相同的,都必须依附于外部类,隐含的持有Outer.this实例,并且拥有外部类的private访问权限。2.静态内部类是独立类,但拥有外部类的private访问权限。
2024-09-05 13:16:14
380
原创 包的相关知识
2.如果两个class名称相同,例如mr.jun.Arrays和java.util.Arrays,则只能import其中一个,另一个必须写完整类名。1.自动导入的是java.lang包的class,如果是java.lang下的子包(类似java.lang.reflect)仍需要手动导入。3. 注意:包没有父子关系,java.util和java.util.zip是完全不同的包,两者没有任何继承关系。b.默认自动import java.lang.*,*代表class,不代表包。a. 直接写出完整的类名。
2024-09-04 21:18:46
414
原创 静态字段和静态方法
1. 静态代码块,程序一加载就运行,最早执行,只执行一次。2. 静态方法区的属性和方法在类中是共享的唯一的(不允许被重写),不属于某个实例;创建多个实例,只要修改了一个实例,所有的实例都会被修改。3. 因为静态属性和方法是共享的,属于类,所以用“类名.属性”或“类名.方法名”直接调用。4. static和final同时修饰叫做全局常量。
2024-09-04 11:14:13
661
原创 抽象和接口
1. 定义a. 抽象类:在普通类里增加了抽象方法。b. 抽象方法:没有具体的执行方法,没有方法体的方法。a. 因为抽象方法没有方法体,无法执行,所以不能new这个抽象类,类不能被实例化,编译器会告诉我们无法编译此类,因为包含抽象方法,所有抽象方法必须在抽象类里。b. 抽象类本身被设计成只能用于被继承,所以抽象类可强迫子类来具体实现其抽象方法。c. 抽象类里可以有普通方法。d. 如果子类也是抽象类,可以不用重写父类的方法。
2024-09-03 21:32:29
450
原创 流程控制(多重选择)
a. switch做多重选择,执行匹配的case语句内容。b. 只能是整形,字符串或者枚举类型。c. java14开始,switch语句正式升级为表达式,不再需要break,并且允许使用yield返回返回值。
2024-08-30 12:43:23
209
原创 GitHub使用教程
创建远程仓库后,在电脑创建本地仓库,下载git并安装,使用git bash(windows命令行工具)和github建立连接,完成代码的上传下载。1) 在本地生成连接的密钥对,生成命令:ssh-keygen -t rsa -C “git账号”, 按路径找到密钥对。去本地打开bash命令行,执行clone命令,就可以执行相关的推拉等git命令了。输入命令,在选择yes后显示成功就说明绑定成功了。3) 通过git bash验证是否绑定成功。2) 绑定ssh密钥。2. Git和GitHub绑定。
2024-08-27 12:44:52
2072
原创 JRE和JDK概念区分
JRE就是运行Java字节码的虚拟机,而Java字节码需要编译就需要JDK,JDK除了包含JRE还包含编译器、调试器等开发工具关系图。
2024-08-23 11:44:51
270
1
原创 AOP切入点表达式
cn.qianfeng.com.*.service..:com任意子包,service任意子包。注意:除了返回值、方法、参数不可省略,其余的都可省略。3. 包:可省略,中间任意*,最后任意..User*:以User开头。public:公共方法。7. throws,可省略,一般不写。execution():表达式的主体。void:没有返回值。6. (参数):不能省略。1. 修饰符:一般省略。2. 返回值:不能省略。5. 方法:不能省略。
2024-01-26 18:32:32
326
1
原创 MyBatis相关内容(自学简记)
c. otherwise标签:内嵌于choose标签,当不满足所有when条件时,执行otherwise标签,choose标签中至多存在一个otherwise标签,可以不存在。b. when标签:内嵌于choose标签,当满足某个when条件时,执行对应代码块,并终止跳出choose标签,choose标签中至少存在一个when标签,否则无意义。c. prefixesToOverride属性:前缀去除,支持多个,当trim元素中存在内容时,把内容的前缀字符串去除。b. 表示占位符,即sql中的?
2024-01-25 18:17:57
1082
原创 Spring-AOP相关知识(简述)
1)在不改变原程序的基础上增加新的代码满足新需求,应用在:权限认证、日志、事务。2)面向切面编程,分离系统中的各种关注点,把核心关注点和横切关注点分离开来。
2024-01-24 18:16:21
612
1
原创 事务重点内容
脏读:读取了另一事务未提交的数据。不可重复读:读取了另一事务提交了的更改数据,针对update。幻读:读取了另一事务提交了的新增或删除数据,针对insert或delete。
2024-01-23 17:55:58
1579
1
原创 框架(浅谈)
2. 框架是为解决一个(一类)问题而开发的产品,框架用户只需要使用框架提供的类或函数,即可实现想要的功能,框架是库的升级版。b. 在软件工程中,是实现某种功能的半成品,提供了一些常用工具类和一些基础通用化的组件。a. 最早源于建筑行业,是一个框子:指其约束性,也是一个架子:指其支撑性。b. 重用性、通用性:不需关注行业、业务,只要功能相似稍加修改即可使用。1. 库是将代码集合成一个产品,供程序员调用。c. 封装性:无需关注底层实现,基础功能都封装好了,直接调用。a. 代码模块化:使用规范。
2024-01-20 09:46:32
591
原创 Maven(项目管理工具)
基于项目对象模型(POM)的概念纯java开发的开源项目管理工具,对java项目进行项目构建和依赖管理架设在局域网的特殊的远程仓库。
2024-01-16 09:09:06
1485
1
原创 网络传输协议-SSH(自学简记)
b. 客户端和服务器通过协商一致的算法生成密钥,并通过可信通道进行“密钥交换”,然后共享某些公共数据和结合自己的隐秘数据通过算法生成“共享密钥”。1) 安全管理远程服务器的协议和工具集,使用加密技术保证用户终端和远程服务器建立加密安全连接,双方通过握手验证并通过加密通道传递管理命令和执行结果。3) 客户端负责与服务器的初次TCP握手,协商安全连接,验证服务器,并提供身份验证密码(密钥)。2) 服务器负责协商安全连接,验证客户端,并在完成认证后,初始化shell环境。a. 使用同一个密钥加密、解密。
2024-01-15 09:00:00
498
1
原创 jar包、war包相关
a. jar文件就是Java ARchive File,是java的一种文件格式,jar文件就是zip文件,但是会比zip文件多了一个META-INF/MANIFEST.MF文件(详情单),是在生成jar文件时自动创建的。b. jar包是对写好的类进行了打包。c. 代码通用部分抽离出来积累成util类,逐渐模块化打成jar包使用,并不断优化更新。
2024-01-14 09:15:45
462
1
原创 如何创建一个新的 git 本地仓库?(简洁版)
2. 直接使用git init 命令就可以看到有一个.git隐藏文件,一个git本地仓库就创建好了。1.在指定目录下(可以省略跳转目录的步骤)打开git命令行界面。
2024-01-13 17:11:43
545
1
原创 git简单介绍和操作
c. 手动在文件夹创建文件readme.txt(内容aaa...),add命令添加到暂存区,commit命令提交到仓库。2) 添加内容(fff...)提交至暂存区后未提交到仓库,添加内容(ggg...)未提交到暂存区。d. 提交完成后查看是否还有文件未提交,没有了修改文件内容,添加(bbb...),查看当前状态。e. 有了新的未提交内容,重新提交(1.添加到暂存区,2.提交文件到仓库)。f. 查看提交记录,并回退到想要的版本,回退了以后在回到删掉的版本。是基于git实现的在线代码仓库,开源项目托管的首选。
2024-01-12 15:54:29
1256
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人