自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 问答 (3)
  • 收藏
  • 关注

原创 代理模式介绍

**JDK动态代理**:利用Java反射机制和InvocationHandler接口在运行时动态创建代理类,这种情况下不需要提前编写代理类,只需提供一个实现了InvocationHandler接口的类,该类会在invoke方法中处理方法调用的全过程。- **静态代理**:在编译期间就已经确定代理类,代理类和真实主题类通常在同一源码文件中显式定义,代理类手动实现了与真实主题相同的接口,并在接口方法的实现中加入额外功能。

2024-04-09 16:22:29 413

原创 Mybatis介绍

**减少样板代码**:MyBatis封装了大量JDBC API的细节,比如数据库连接管理、预编译SQL语句、参数设置和结果集的提取等,从而减少了大量重复的JDBC代码编写。- **动态SQL**:MyBatis提供了强大的动态SQL标签,可以构建复杂的条件查询语句,支持动态条件判断和循环等逻辑。- **自定义SQL**:MyBatis允许开发者直接编写原生SQL语句,可以根据业务需求定制最优查询,具有很高的灵活性。- **事务管理**:支持声明式事务,可与Spring框架整合进行更加灵活的事务控制。

2024-04-02 21:03:49 188

原创 常见的几种字符串及其区别

StringBuilder:可变字符串,继承自AbstractorBuilder,可变长,底层也是字符串数组。StringBuffer:可变字符串,继承自AbstractorBuilder,可变长,底层也是字符串数组。String,StringBuffer,StringBuilder都实现了CharSequence接口。StringBuffer和StringBuilder都可变,默认大小16个字节,扩容为原长的2倍+2.String: 不可变字符串,底层使用的是字符数组保存的字符串。String:不可变。

2024-04-01 15:11:06 195

原创 Servlet详解

总结起来,Servlet是一种可以接收和处理客户端请求的Java程序,它具有独立于平台和协议、多线程处理、可重用组件、安全性和性能优化等特点。Servlet是Java编写的服务器端程序,它可以接收和处理客户端的请求,并返回相应的结果。Servlet是基于Java的Web开发的重要组成部分,它可以实现动态网页生成、数据处理和业务逻辑处理等功能。Servlet可以通过注解或在web.xml配置文件中进行配置和映射。在配置中,可以指定Servlet的URL映射、初始化参数等信息。

2024-03-29 20:29:44 161

原创 get,post请求

POST请求是用于向服务器提交数据的请求方法。在POST请求中,请求参数会以请求体的形式发送到服务器。POST请求的特点是参数不会明文显示在URL中,且请求的数据量较大。GET请求是用于从服务器获取数据的请求方法。在GET请求中,请求参数会以查询字符串的形式附加在URL的末尾。GET请求的特点是参数明文可见,且请求的数据量有限制。在后端开发中,可根据具体的编程语言和框架选择相应的库或工具来处理GET和POST请求。GET请求和POST请求都是HTTP协议中常用的请求方法。

2024-03-28 21:23:32 206

原创 HTML页面标签

此外,还有许多其他的HTML标签,用于创建不同的元素和效果。需要根据具体需求选择合适的标签来编写HTML页面。HTML页面标签是用于定义 HTML 文档结构和呈现内容的元素。每个标签都有不同的作用和功能。

2024-03-26 21:12:20 309

原创 dao模式简介

通过使用DAO模式,应用程序可以将数据访问逻辑封装在DAO实现类中,使得业务逻辑层只需要调用DAO的方法,而不需要关心具体的数据访问实现细节。这样,当需要更换数据访问技术时,只需要修改DAO实现类而不影响业务逻辑层的代码。它的主要目的是将数据访问逻辑从业务逻辑中分离出来,使得数据访问操作更加灵活、可复用和可维护。在DAO模式中,数据访问对象(DAO)是一个接口或类,用于定义可以被应用程序使用的各种数据访问操作。它隐藏了数据访问细节,提供了对数据的增删改查等基本操作的统一接口。

2024-03-25 14:09:30 315

原创 基本的sql语句

数据库操作语句涵盖了SQL(Structured Query Language)的多种功能,包括但不限于创建、查询、更新和删除数据等。-- 在出错时撤销事务中的所有更改。-- 提交事务,使更改永久生效。-- 一系列操作语句...

2024-03-21 16:48:38 265

原创 时区问题可以使用java.util.TimeZone类来处理

注意,时区标识符是按照国际惯例命名的,例如 "America/Los_Angeles" 和 "Europe/Berlin",可以参考 Java 官方文档中的时区标识符列表来查找特定时区的标识符。接着将时区设置为美国洛杉矶时区,获取当前时间并打印。获取支持的时区列表: 使用静态方法 TimeZone.getAvailableIDs() 可以获取Java支持的所有时区的标识符列表。设置时区: 使用静态方法 TimeZone.setTimeZone(String ID) 可以根据时区标识符设置时区。

2024-03-20 17:11:55 339

原创 表的查询1

要进行表的查询,你需要指定要查询的表,以及查询条件。查询条件可以是一个或多个列的值,也可以是其他的查询条件,如大于、小于等。然后,根据查询条件,你可以选择要查询的列,并使用适当的操作符和关键字来执行查询。请注意,这只是一个简单的示例,实际的查询可能包含更复杂的条件和操作符。在进行查询时,你还可以使用其他关键字和语法来限制结果集、排序结果、聚合数据等。其中,列1、列2等是要查询的列名,表名是要进行查询的表的名称,条件是指定的查询条件。这将返回一个结果集,包含所有满足条件的学生的姓名和成绩。

2024-03-19 19:41:09 116

原创 JDBC的基本操作

JDBC(Java Database Connectivity)是Java语言访问数据库的一种标准接口。以上是使用JDBC的基本步骤,可以根据实际需求进行相应的操作,例如执行更新语句、事务处理等。

2024-03-18 14:12:55 214 1

原创 JDBC初识

JDBC的主要作用是将Java程序与数据库进行连接,并提供了一套统一的API(应用程序接口),使得开发者可以使用统一的方式来操作不同的数据库系统。通过JDBC,开发者可以执行各种数据库操作,如查询、插入、更新和删除数据。JDBC是Java程序与数据库交互的重要工具,它为开发者提供了一种灵活、高效的方式来操作数据库。JDBC(Java Database Connectivity)是Java语言操作数据库的一套标准接口,它提供了一种与数据库交互的方式,使得Java程序能够方便地连接、操作和管理数据库。

2024-03-15 19:53:22 103 1

原创 数据库的介绍

数据库中的数据通常按照表格的形式组织,其中每个表格表示一个实体,表格的每一行表示一个实体的具体实例,而表格的每个列则表示一个属性或特征。数据的持久性和安全性:数据库将数据持久地存储在硬盘中,避免了数据的丢失和损坏,并提供了各种安全机制来保护数据的机密性和完整性。数据的共享和访问控制:数据库允许多个用户同时访问和共享数据,并可以通过权限控制来管理用户对数据的访问权限。数据的一致性和完整性:数据库提供了一系列的约束和规则,确保数据的一致性和完整性,减少数据错误和冲突。

2024-03-14 09:38:16 385 1

原创 TCP/IP/UDP

TCP/IP(传输控制协议/因特网协议)是一种协议族,用于在因特网上进行数据通信。它是因特网的核心协议,并与其他网络协议一起构成了互联网的基础架构。TCP(传输控制协议)是一种面向连接的协议,用于可靠的数据传输。它通过建立连接、分割数据为小的数据包、提供错误检测和纠正、保证数据按照正确的顺序到达目的地等方式来保证数据的可靠性和完整性。IP(因特网协议)是一种无连接的协议,用于在网络上传输数据包。它负责将数据包从源主机发送到目的主机,通过主机的唯一IP地址来标识和定位主机。IP也提供了负载平衡和路由选择等功能

2024-03-13 15:07:15 168

原创 集合中常见接口的实现类比较

Linkedlist查询时内部元素时,按照索引下标从头或从尾开始逐个从而使访问速度慢,其时间复杂度为O(n),但是当对中间元素进行增加或删除时由于没有数据移动的问题所以速度快,其时间复杂度为O(1),所以LinkedList增删速度快,但随机访问速度慢从而导致查询效率也稍低一些;查询时内部元素时,按照索引下标访问速度快,其时间复杂度为O(1),但是当对中间元素进行增加或删除时会导致大部分元素的移动从而使速度变慢,其时间复杂度为O(n),所以Arraylist随机访问速度快也就是查询效率很高,但增删效率低。

2024-03-11 14:13:32 291

原创 HashMap与HashTable区别

3、对Null key和Null value的支持:HashMap中null可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为null。推荐使用:在Hashtable的类注释可以看到,Hashtable是保留类不建议使用,推荐在单线程环境下使用HashMap替代,如果需要多线程使用则用ConcurrentHashMap替代。①创建时如果不指定容量初始值,Hashtable 默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。也就是说HashMap总是使用2的幂作为哈希表的大小。

2024-03-09 11:40:05 289 1

原创 Map接口及其实现类

Map接口提供了键值对的添加、删除、查找等操作。HashMap:采用哈希表实现的Map接口的实现类,它以键的哈希码来进行存储和查找,具有较快的插入和查找速度。Hashtable:是一个较早的实现类,也是哈希表实现的,线程安全的,但效率较低,已经被HashMap取代。这些实现类都实现了Map接口定义的操作方法,但在具体实现和性能方面有所差异,根据具体的需求选择适合的实现类。TreeMap:采用红黑树实现的Map接口的实现类,它能够按照键的顺序进行排序,可以实现有序的键值对存储。

2024-03-09 11:36:39 176 1

原创 Set接口及其实现类

TreeSet是基于红黑树实现的Set接口,它的元素是有序的,可以按照元素的自然顺序或者自定义的比较器进行排序,添加、删除和查找元素的时间复杂度都是O(logN)。HashSet是基于哈希表实现的Set接口,它的底层是一个HashMap,通过哈希值来存储和查找元素,所以添加、删除和查找元素的时间复杂度都是O(1)。Set接口继承自Collection接口,它有多个实现类,常用的有HashSet和TreeSet。Set接口是Java集合框架中的一个接口,它代表了一组不重复的元素。

2024-03-08 10:36:51 344 1

原创 泛型及其例子

例如,我们可以声明一个泛型类List<T>,其中T表示元素的类型。然后,我们可以创建一个List<String>的对象,它可以存储字符串类型的元素。通过使用泛型,我们可以编写更通用,更灵活的代码,并提高代码的复用性和可读性。例如,List<String>可以存储一组字符串,List<Integer>可以存储一组整数。例如,一个实现了Comparable<Integer>接口的类可以进行整数的比较。1. 提高代码的复用性:通过使用泛型,我们可以编写更通用的代码,可以适用于不同类型的数据。

2024-03-07 10:43:13 289 1

原创 LinkedHashMap介绍

每个元素都被包装在一个Entry对象中,该对象持有一个指向前一个和后一个元素的引用,形成了一个双向链表。另外,LinkedHashMap还使用了一个HashMap来存储元素,这个HashMap负责实现键值对的存储和查找功能。LinkedHashMap是Java集合框架中的一个类,它是HashMap的一个子类。与HashMap不同的是,LinkedHashMap可以保持元素的插入顺序,因此它是有序的。在遍历LinkedHashMap时,元素的顺序将与插入顺序相同。

2024-03-06 09:26:13 165 1

原创 集合和数据结构的初识

数据结构是一种组织和存储数据的方式,它提供了一种在计算机中有效地访问和操作数据的方法。集合是一组唯一的元素的无序集合,而数据结构是一种组织和存储数据的方式。集合和数据结构是计算机科学中非常基础和重要的概念,它们在算法设计和程序实现中起着关键的作用。深入理解集合和数据结构的特点和应用场景,对于计算机科学的学习和应用都是非常有益的。对于集合和数据结构,还有一些常见的算法和操作,如搜索、插入、删除、排序等。这些操作可以根据具体的数据结构进行实现,并且它们的性能通常取决于所使用的数据结构的特点。

2024-03-04 10:32:17 102

原创 线程总结1

暂时没想好,晚点补。

2024-03-02 23:49:58 88

原创 线程池的七大核心参数

4. 提供替代方案:虽然无法接受对方的请求,但提供一个替代方案,以表达自己对对方的帮助,例如:“虽然我不能陪你去购物,但我可以告诉你哪个商场有更好的折扣活动。2. 委婉拒绝:用较为委婉的措辞表达自己的不同意或不愿意接受对方的请求或建议。3. 线程空闲时间(keepAliveTime):当线程池中的线程数量超过核心线程数时,空闲线程在被回收之前等待新任务的最长时间。7. 拒绝策略(handler):当线程池已满并且队列也已满时,对新任务的处理策略,可以是抛出异常、丢弃任务等。

2024-03-01 09:07:17 770 1

原创 线程池的工作原理

线程调度器会选择一个空闲的线程来执行任务,或者创建新的线程来执行任务。7. 线程回收:当任务执行完成后,线程池会将线程放回线程池中,等待下一次任务的执行。- 如果线程池中的线程数等于或超过核心线程数,任务将被放入任务队列等待执行。- 如果任务数量超过线程池的最大线程数,任务会被缓存到任务队列中等待执行。- 如果线程池中的线程数小于核心线程数,线程池会创建新的线程来执行任务。- 如果线程池的线程数超过了核心线程数,多余的线程会被回收。6. 执行任务:线程池中的线程从任务队列中取出任务,并执行任务。

2024-02-29 09:10:25 659

原创 线程创建的4种方式

3. 实现Callable接口:与实现Runnable接口类似,创建一个类实现Callable接口,并实现call()方法。2. 实现Runnable接口:创建一个类实现Runnable接口,然后实现run()方法。4. 使用线程池:通过创建一个线程池,然后将任务提交给该线程池来创建线程。线程池可以重复利用线程,避免了线程创建和销毁的开销。1. 继承Thread类:通过创建一个继承自Thread类的子类,并实现run()方法来创建线程。然后可以通过实例化子类对象并调用start()方法来启动线程。

2024-02-28 15:39:41 293

原创 Readme

的章节,将分为2部分进行讲授,基础入门以及和集合框架的混用。

2024-02-27 09:09:44 1413

原创 冒泡排序,

System.out.println("排序前:" + Arrays.toString(arr));System.out.println("排序后:" + Arrays.toString(arr));

2024-02-26 15:23:05 379 1

原创 选择排序,每次找出数组中最小值,放到有序元素后面

System.out.println("排序前:");System.out.println("排序后:");

2024-02-23 20:47:41 151

原创 递归遍历文件夹,以c:/windows为例

/如果是文件夹,用定义文件数组File[] children接收这个文件夹内的所有内容。//遍历数组children内的内容,递归调用show()方法。//如果是文件夹,先输出文件夹的绝对路径。

2024-02-22 20:17:22 545

原创 Linux常用命令

8. mv:移动文件或文件夹,或重命名文件或文件夹。15. chown:修改文件或文件夹的所有者。13. grep:在文件中搜索指定的字符串。14. chmod:修改文件或文件夹的权限。1. ls:列出当前目录下的文件和文件夹。11. head:显示文件的前几行内容。12. tail:显示文件的后几行内容。4. mkdir:创建一个新的文件夹。5. rmdir:删除一个空的文件夹。6. touch:创建一个新的空文件。7. cp:复制文件或文件夹。9. rm:删除文件或文件夹。2. cd:进入指定的目录。

2024-02-22 19:56:21 302

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除