- 博客(34)
- 收藏
- 关注
原创 Java的参数传递
Spring和Spring Boot都是Java领域中非常流行的开发框架,用于简化企业级应用程序的开发。确保你已经在Spring容器中配置了要注入的Bean对象。这可以通过在XML配置文件或Java配置类中定义Bean来完成。在目标类中使用@Autowired注解来标记需要注入的属性或构造函数参数。@Component // 声明这是一个Spring托管的Bean@Autowired // 使用@Autowired注解进行自动注入// 使用注入的repository对象执行操作。
2023-12-10 21:28:31
274
原创 字符集和File类
static listRoots() //返回File[] 所有磁盘分区大小。Unicode:汉字3个字节,英文字母数字占一个字节兼容(ASCII)mkdirs() //创建多级目录,只能创建文件夹,不能创建文件。listFiles() //获取目录的子文件,返回File[]getUsableSpace() //返回可用的内存。getAbsolutePath() //返回绝对路径。getFreeSpace() //返回磁盘剩余空间。getTotalSpace() //返回总共内存。
2023-12-10 21:20:23
55
原创 2023多益网络二面
给定一个集合s(没有重复元素),输出他的所有子集,输入1,2,3,输出1,2,12,3,13,23,123。为什么要用redis,redis为什么这么快?什么是docker容器,docker容器的数据持久化方式?非对称加密如何保证你的数据更安全?线程池的大小如何确定?docker的关闭和移除会不会导致数据的丢失?怎么保证redis与mysql的一致性?一个大的文件进行加密,数据过长怎么办?状态码301,302,304的区别?为什么签名算法可以保证数据的完整性?面向对象与面向过程的区别?
2023-12-10 21:18:23
79
原创 Session + Cookie
使用注解@MultipartConfig将⼀个 Servlet 标识为支持文件上传Servlet 将 multipart/form-data 的 POST请求封装成Part对象, 通过Part对上传的文件进行操作// 用于从该部分数据所包含的请求头中获取所有//用于从该部分数据所包含的请求头中获取指定字段名称对应的单个取值//用于从该部分数据所包含的请求头中获取指定字段名称对应的所有取值//用于获取该部分数据对应的表单组件的名称//用于获取用户所上传文件的原始名称。
2023-10-27 18:28:31
35
原创 学习JDBC
是Statement接口的子接口,表示预编译的sql语句的对象,用与执行预编译的sql语句并获取返回结果,sql语句被预编译并存储在PreparedStatement对象中。//在此PreparedStatement对象中执行sql语句,该语句必须是一个sql数据操作语言语句,比如insert,update,delete,或者返回无内容的sql语句,比如DDL语句。可用于获取关于ResultSet对象中列的类型和属性信息的对象,列的类型和属性信息被称为表的元数据。
2023-09-22 22:08:32
30
原创 学习网络编程
传输数据时,不需要建⽴连接,不管对⽅端服务是否启动,直接将数据、数据源和⽬的地都封装在数据包中,直接发送。TCP协议是⾯向连接的通信协议,即传输数据之前,在发送端和接收端建⽴逻辑连接,然后再传输数据,它提供了两台计算机之间可靠⽆差错的数据传输。CS架构的特点:CS架构需要用户在自己电脑或手机上安装客户端软件,然后由客户端软件通过网络连接服务器程序,由服务器把数据发送给客户端,客户端可以在页面上看到数据。三次握⼿:TCP协议中,在发送数据的准备阶段,客⼾端与服务器之间的三次交互,以保证连接的可靠。
2023-09-21 21:22:19
304
原创 学习线程池
handler: 线程池的饱和策略,当阻塞队列满了,且没有空闲的⼯作线程,如果继续提交任务,必须采取⼀种。,如果要执行的任务耗时比任务执行的间隔时间长,下次任务执行的时间是上一次任务执行后就执行。线程池中的核⼼线程数,当提交⼀个任务时,线程池创建⼀个新线程执⾏任务,直到当前线。创建线程的⼯⼚,通过⾃定义的线程⼯⼚可以给每个新建的线程设置⼀个具有识别度的线程。线程空闲时的存活时间,即当线程没有任务执⾏时,继续存活的时间;线程池中允许的最⼤线程数。带来风险:死锁,资源不足,并发错误,线程泄露,请求过载。
2023-09-20 22:43:06
33
原创 学习线程同步
wait()、notify()、notifyAll()都是Object中的final方法,被所有的类继承并不能重写,wait()、notify()与同步代码、同步方法一起出现(synchronized),否则会抛出异常。notify():调用任意对象的notify()方法会在因调用该对象的wait()方法而阻塞的线程中随机选择一个线程解除阻塞,但要等到获得锁后才可以真正执行。同步代码块:在同步代码块中,你可以选择精确控制哪部分代码需要同步,只有被包裹在同步块内的代码会受到同步锁的保护。
2023-09-19 21:11:48
28
原创 多线程学习
并行:同一时刻同时执行多个任务并发:同一时间处理多个任务,但不一定同时执行多个任务进程:正在运行的程序,独占内存空间(取决于内存)进程是系统运行程序的基本单位每一个进程都有自己独立的一块内存空间、一组系统资源每一个进程的内部数据和状态都是完全独立的当一个应用程序运行的时候会产生一个进程线程:线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程中执行(取决于CPU)多线程:在一个进程中运行多个线程一个进程中至少要有一个线程。
2023-09-19 20:21:32
26
原创 IO流总结
read() 读取一个字节 readAllBytes() 读取所有字节 read(byte[] bytes[, int offset, int len]) 读取多个字节 avaliable()获取流中有效字节数 close()关闭流 skip(long n)跳过n个字节 mark(int readlimit) reset() markSupported() transferTo(OutputStream out)将输入流中的内容通过输出流写出(in) (in, size) 默认是 8192。
2023-09-18 22:12:21
28
原创 字符流和缓存流
BufferWriter:字符缓存输出流,实现AutoCloseable接口。使用内部缓存区暂时存储数据,若数据写入前发生程序崩溃和异常,会数据丢失损坏。s.mark() //当前流的位置标记,与底层缓存数据比较,取最大值。字符缓存输入流,实现AutoCloneable接口,Read的子类。append与write一样,将字符序列拼接返回输出流。int read() //读取单个字符,返回char。继承AutoCloseable接口。s.set() //返回标记处。字符输出流写完必须刷新关闭。
2023-09-16 11:41:19
30
原创 转换流与JSON
*深拷贝:**创建一个新对象,并将原始对象的所有成员变量(包括引用类型)递归的复制到新对象中,默认情况下,clone()是浅拷贝,要是实现深拷贝,在对象的clone()方法中进行额外的处理,递归的复制引用类型的成员变量。引用数据类型1中包含引用数据类型2,复制引用数据类型1的属性,创建2的对象,并将2的属性赋值给2的对象,并返回。Writer的子类,字符输出流,继承AutoCloseable接口,不能单独使用,是一个包装流,将字节流转换为字符输出流,默认GBK加载输出。
2023-09-15 21:19:25
95
原创 Java字节流
int read(byte[] b,int offset, int len) //从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从offset开始。字节流是8位通⽤字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,它们是抽象类。字节流是8位通⽤字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,它们是。国际上⼤多数的字符集和语言。字符流的基类是Reader类和Writer类,它们也是抽象类。
2023-09-14 22:58:53
74
1
原创 leecode面试题 01.01. 判定字符是否唯一
示例 1: 输入: s = "leetcode" 输出: false。实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 2: 输入: s = "abc" 输出: true。如果你不使用额外的数据结构,会很加分。s[i]仅包含小写字母。
2023-09-12 22:26:42
38
原创 Hashtable + TreeMap + Property + LinkedHashSet + Stream流
ArrayListLinkedList和Vector都是用于存储和操作一组元素的数据结构,但它们在实现和性能上有一些区别。ArrayList使用数组作为底层数据结构。它通过动态扩展数组的大小来实现动态大小,当数组空间不足时,会重新分配更大的数组并将数据复制到新数组中。LinkedList使用双向链表作为底层数据结构。每个元素都包含一个指向前一个元素和下一个元素的引用。Vector也使用数组作为底层数据结构,类似于ArrayList,但Vector支持同步,即它是线程安全的。在访问元素方面,
2023-09-11 22:12:35
86
原创 泛型+HashMap
类型 对象 = new 类型 ();泛型类:具有一个或多个类型 参数的类访问修饰符 class classname{}创建泛型类实例:泛型限定:a<?extends E> 前面可以是E本身或其子类a<?super E> 前面可以是E本身或其父类a<?> 任意类型泛型擦除:泛型只能编译阶段有效,一旦编译成字节 码,字节码中是不包含泛型的。泛型工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。
2023-09-09 11:31:25
118
原创 集合Day02
ArrayList的空间浪费在数组末尾预留2一定容量的空间,LinkedList的浪费在每个节点都要消耗空间来存储prev,next等信息。是List接口的链接列表实现类,实现了Deque接口,即能将LinkedLidt当作双端队列使用。ArrayList不支持高效插入和删除操作,LinkedList不支持高效的随机访问元素。Iterator :使用Iterator中的remove()删除,无参数,删除当前元素。static of() :返回不可修改的List集合,对象的属性可以修改。
2023-09-06 22:32:32
26
原创 集合Day01
数组长度固定不变。可通过数组名.length获取数组长度,却无法直接获取数组中实际存储的元素个数。数组采用在内存中分配连续空间的存储方式存储,根据元素信息查找时效率比较低,需要多次进行比较。集合框架中的接口和类位于java.util包。单列集合:一个一个 Collection双列集合:一对一对 MapCollection:接口,是java集合框架中的根接口,继承了Iterable接口,因此可以用于遍历集合中的元素。存储的元素不唯一,无序。
2023-09-05 23:03:06
30
原创 枚举 + 单例模式 + 双链表
有构造函数,默认private修饰,不能实例化,不能继承,有成员。static values() : 将枚举的所有对象存到数组中。static valueOf() : 返回对象所在的下标。提供对外访问方法,static(外部不创建对象)用来定义一组命名的常量,存放的都是有关的常量。ordinal() : 返回实例声明的索引。在外类,构造私有,提供方法返回内部类属性。缺点:从未使用过这个实例,造成内存浪费。优点:避免线程不安全,延迟加载,效率高。创建对象直接赋值,对象私有,静态常量。私有构造,对外不能访问。
2023-09-04 22:43:42
37
原创 lambda表达式
Lambda可以简化匿名内部类的书写。Lambda表达式只能简化函数式接口的匿名内部类的写法。函数式接口:有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加上@FunctionalInterface注解。
2023-08-30 21:27:07
52
原创 接口day01
类只能有一个直接父类,但可以实现多个接口,一个类若要实现某个接口,必须重写接口中的所有方法,或者定义为抽象类,若在继承一个类的同时又实现了多个接口,extends必须位于implements之前。在实现抽象方法时,使用public,因为接口中默认public,不写时,会默认package-access,访问权限变小,编译错误。default可以在接口中修饰方法,修饰的方法可以有具体实现,也只能在接口中实现,修饰的方法可以被重写。static修饰的方法,使用接口名.方法名调用,不能被继承,但可以隐藏。
2023-08-29 23:04:39
28
原创 面向对象总结
在继承关系中,子类和父类存在方法名相同,参数列表相同,返回值类型一致,访问修饰符相同或变大,抛出异常相同或缩小的方法称为重写。局部变量:方法中定义的变量,所在方法体,或者离他外面最近的大括号内。构造方法,在创建对象的时候会调用,如果类的内部没有显式声明,会生成一个默认的无参构造。super(参数列表)表示调用父类的构造方法,必须方法在子类的构造方法的首行。this访问本类中的方法,包括继承父类的方法,super访问父类的方法。一个特定类型的变量可以引用不同类型的对象,能够自动调用引用的对象的方法。
2023-08-23 20:40:30
23
原创 面向对象day02
源文档的第一条非注释性语句,并且原文档只能有一个包声明语句,包名前缀通常是全部小写的ASCII字母,并且是一个顶级域名,通常使用域名的倒写,包名的后续根据不同的公司规定不同。5.实例方法中可以调用静态方法和实例方法,静态方法中只能调用静态方法,如果要调用实例方法,需要先创建对象,使用对象调用。static修饰的方法为类方法或静态方法,不使用static修饰的方法为实例方法,类方法不属于任何对象。1.静态成员属于类,所有对象共享,实例成员属于对象,对象之间私有的。
2023-08-16 21:50:24
29
原创 数组练习中的错题
C: int number[] = {31,23,33,43,35,63} D: 数组的length可以赋值的。A: 数组是引用数据类型 B: 数组属于一种原生类(基本数据类型)A: 11 B: 10 C: 0 D: 运行时报错。A: 10 B: 5 C: 0 D:运行报错。7.以下for循环执行后,x的值是(D)16.下面的代码运行后输出的结果是(A)18.下面的代码运行后输出的结果是(B)6.下列语句语序执行后,k的值是(C)9.下列代码执行后,输出的结果是(D)10.下面关于数组的定义错误的是(B)
2023-08-13 18:27:39
227
原创 方法及递归
非访问修饰符:用于控制程序元素的行为,包括static、final、abstract、 synchronized、volatile等。将main里的arr的地址赋值给Insert中的arr,若Insert中的arr改变,原数据也会改变。将main里a的值赋给addNum中的a,若addNum中的a改变,原数据a不变。在方法重载时,数组和可变参数不能定义在两个方法中,当可以定义在同一个方法。一个类中,方法的名字相同,方法的参数不同(参数的个数、类型)满足方法内部不在调用方法本身的条件称为递归的终止条件。
2023-08-11 20:32:15
34
原创 数组最基础
静态初始化数组数据类型[] 数组名;动态初始化数组数据类型[] 数组名 = new 数据类型[数组长都度]定义数组时,元素类型不同,默认值不同数组执行原理方法区:字节码文件先加载到这里栈:方法运行时所进入的内存区域,由于变量在方法中,所以变量也在这一块 区域中堆:存储new出来的东西,并分配地址。由于数组是new 出来的,所以数组也在 这块区域。
2023-08-11 11:20:53
175
原创 数据库基础
insert into 表名 [(字段名称1,字段名称2,字段名称3)] values (value1,value2,value3);insert into 表名[(字段名称1,字段名称2,字段名称3)] value (value1,value2,value3);select * from 表名 where 字段 not in (value1,value2,value3);select * from 表名 where 字段 in (value1,value2,value3);
2023-07-24 21:12:07
25
原创 数据库基本操作
alter user 用户名@'ip主机地址' identified by '密码' password expire never;update mysql.user set host='%' where user='用户名';create user 用户名@'ip主机地址' identified by '密码';DDL数据定义语言,用来定义数据库对象(数据库中的表,字段,数据库)DCL数据控制语言,用来创建数据库用户,控制数据库的访问权限。# mysql8 中创建的数据库默认编码是'utf8mb4'
2023-07-21 13:54:50
26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人