自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 Redis

Redis是一种开源的、基于内存的键值对存储系统,具有高性能、丰富的数据类型和持久化等特点。它主要用于缓存服务器,同时也可作为消息中间件和Session共享等。性能优势:Redis全称为Remote Dictionary Server,是一款开源的基于内存的键值对存储系统,其主要被用作高性能缓存服务器使用。由于其基于内存的方式,免去了磁盘I/O速度的影响,使得其读写性能极高,能够支持每秒数十万次的读写操作。

2024-07-09 22:46:45 934 1

原创 Swagger

Swagger能够帮助开发者自动生成API文档,并且这些文档会随着代码的更新而实时更新,从而避免了传统手动维护API文档的繁琐过程。同时,Swagger还支持多种语言,并能通过Swagger UI展示易于浏览和测试的交互式API文档。Swagger的核心功能之一是其能够将项目中的所有接口自动展示在一个页面上,并提供接口调用和测试的功能。这样后端开发者就无需为前端使用者编写专门的接口文档。当接口发生更新时,只需修改代码中的Swagger描述即可立即反映至生成的接口文档中。

2024-07-07 21:33:11 957 1

原创 Maven高级

通过将一个大型项目拆分成多个子模块,每个模块可以独立开发、测试和部署,从而提升项目的可维护性和可扩展性。install。

2024-07-05 21:49:06 1515 1

原创 SpingBoot原理

SpringBoot配置的优先级从高到低依次为命令行参数、JNDI属性、Java系统属性、操作系统环境变量、外部配置文件、内部配置文件、注解指定的配置文件和编码中直接指定的默认属性。具体如下:下面是一个SpringBoot配置优先级的示例:假设有以下配置文件: (开发环境配置文件) (生产环境配置文件) 命令行参数:在启动应用时,会按照以下顺序加载配置:最终,应用程序的端口号为9090,数据源URL为。在Spring框架中,获取Bean的方法有多种,包括通过Appl

2024-06-24 08:00:00 1746 2

原创 事务&AOP

事务管理是指对一系列数据库操作进行管理,确保这些操作要么全部成功执行,要么在遇到错误时全部回滚,以维护数据的一致性和完整性。在多用户并发操作和大数据处理的现代软件开发领域中,事务管理已成为确保数据一致性和完整性的关键技术之一。Spring事务管理是Spring框架提供的一个重要功能,用于确保在应用程序中多个数据库操作能够作为一个整体进行管理,要么所有操作全部成功,要么在出现错误时全部回滚。Spring事务管理通过提供一个统一的编程模型,可以整合各种事务API(如JTA、JDBC、Hibernate等),使得

2024-06-18 21:44:32 2368 2

原创 SpringBootWeb登录认证

JSON Web Token JSON Web Tokens - jwt.ioJSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).h

2024-06-02 23:35:39 2384 6

原创 基于Spring Boot框架的分页查询和文件上传

要想从数据库中进行分页查询,我们要使用LIMIT关键字,格式为:limit 开始索引 每页显示的条数假设一页想展示10条数据查询第1页数据的SQL语句是:查询第2页数据的SQL语句是:查询第3页的数据的SQL语句是:观察以上SQL语句,发现: 开始索引一直在改变 , 每页显示条数是固定的开始索引的计算公式: 开始索引 = (当前页码 - 1) * 每页显示条数开始索引 = (当前页码 - 1) * 每页显示条数当前页码 page每页显示条数 pageSize。

2024-05-29 23:25:30 1808 5

原创 Mybatis

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和参数的手动设置,简化了开发过程。此外,它还提供了对象关系映射工具,可以将普通的 Java 对象自动映射成数据库表中的记录。MyBatis 还提供了插件机制,可以方便地实现自己的功能官网:MyBatis的使用主要包括配置依赖、创建实体类、编写映射文件和执行数据库操作等步骤。配置依赖:需要在项目中引入MyBatis的依赖,这可以通过Maven或Gradle等构建工具来完成。

2024-05-22 23:19:12 1656 2

原创 MySQL

SQL:结构化查询语言。一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。在学习具体的SQL语句之前,先来了解一下SQL语言的语法。1、SQL语句可以单行或多行书写,以分号结尾。2、SQL语句可以使用空格/缩进来增强语句的可读性。3、MySQL数据库的SQL语句不区分大小写。4、注释:单行注释:-- 注释内容 或 # 注释内容(MySQL特有)多行注释: /* 注释内容 */

2024-05-20 22:45:43 1367 1

原创 SpringBoot请求响应

SpringBoot中的IoC(Inversion of Control,控制反转)是一种设计原则和编程思想,它的核心思想是将对象的创建、配置和管理交给一个外部的容器来完成,而不是由对象自己或者其使用者来控制。此外,每一层都有明确的职责,彼此之间通过接口进行通信,确保了系统的高内聚和低耦合。方法来启动IoC容器。通过这种方式,SpringBoot会自动扫描指定包下的组件,并将它们装配到IoC容器中。简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。方式二:xxxxxxxxxxxxx?

2024-05-19 23:30:09 1357 1

原创 SpringBoot入门

在com.itheima这个包下创建一个子包controller然后在controller包下新建一个类:HelloController​。

2024-05-18 23:31:26 730 1

原创 Maven

此外,Maven 的生命周期是高度抽象的,实际的构建工作是由绑定到各个阶段的插件完成的。这样的设计使得 Maven 非常灵活,用户可以通过配置不同的插件来定制构建过程,满足各种复杂项目的需求。上述配置的maven环境,只是针对于当前工程的,如果我们再创建一个project,又恢复成默认的配置了。Maven 的生命周期由一系列有序的阶段组成,这些阶段代表了构建过程中的各个步骤。以上图中紫色框起来的部分属于项目对象模型,就是将我们自己的项目抽象成一个对象模型,有自己专属的坐标。

2024-05-16 21:50:58 1464 1

原创 前端工程化

Vue CLI 的主要作用是提供一个标准化的脚手架,帮助开发者快速搭建和配置 Vue.js 项目。它通过集成了前端生态中优秀的工具和插件集合,简化了项目初始化、开发、构建和管理等环节,提高了开发效率。Element-UI是一个流行的UI组件库,它基于Vue框架,并提供了一系列预制的组件,如按钮、表格、对话框等,以帮助开发者快速构建高质量的网页界面。在这个例子中,我们定义了两个路由,分别对应主页和关于页面。这只是一个简单的示例,Element还提供了许多其他组件和功能,可以根据具体需求进行选择和使用。

2024-05-13 23:01:47 899 2

原创 JavaScript

JavaScript是一种轻量级的、解释型或即时编译型的编程语言,广泛用于Web开发以增强网页的交互性。JavaScript最初于1995年由Netscape公司的Brendan Eich设计并在网景导航者浏览器上首次实现。它的命名来源于与Java语言的外观相似,但实际上它的语法风格更接近Self和Scheme。JavaScript可以在不同的软件平台上运行,包括主流浏览器如Chrome、IE、Safari、Opera、Firefox、Edge等。

2024-05-13 22:15:12 1154 2

原创 Java 反射&动态代理

在调用过程中,会先输出"Before invoking doSomething",然后调用原始方法,最后输出"After invoking doSomething"。总的来说,Java反射是一个强大但需要谨慎使用的工具。它为Java程序提供了极大的灵活性,但也带来了性能和安全性的挑战。在实际开发中,应当权衡利弊,合理使用反射机制。以上是Java反射的基本用法,实际使用中还需要考虑异常处理、泛型类型等细节。需要注意的是,反射操作可能会破坏封装性,导致安全问题,因此在实际开发中应当谨慎使用。

2024-05-11 14:52:15 795 2

原创 Java 网络编程

Java网络编程是指使用Java语言实现的网络通信技术。它允许在不同计算机之间进行数据传输和资源共享。计算机网络基础:在深入Java网络编程之前,需要了解计算机网络的基本概念,包括计算机网络的作用、OSI参考模型以及TCP/IP协议簇等。这些是网络编程的理论基础。网络编程三要素:进行网络编程时,需要关注三个核心要素:协议、IP地址和端口号。协议定义了数据通信的规则,IP地址用于定位网络上的设备,而端口号则是用来识别设备上的具体应用程序。Java网络编程API。

2024-05-11 14:44:34 1290 1

原创 Java 多线程补充

通过使用ThreadLocal,每个线程都可以在本地存储自己的私有数据,而不会影响其他线程的数据。Hashtable在Java中是一个较早出现的集合类,它提供了一种存储键值对的方式,这些键值对被称为条目,它们存储在一个哈希表中。需要注意的是,虽然Hashtable是线程安全的,但在迭代时仍需手动同步以保证一致性。原子性是并发编程中的一个重要概念,它保证了线程安全,即在一个线程执行操作时,不受其他线程的干扰。方法会使计数器的值减一,当计数器的值减至零时,其他尝试获取许可的线程将被阻塞。

2024-05-10 23:01:23 1014 1

原创 Java 多线程

守护线程的生命周期依赖于用户线程,当所有的用户线程结束时,守护线程也会随之结束,不会阻止Java虚拟机(JVM)的退出。但是,需要注意的是,线程优先级并不是一个绝对的执行顺序保证,它只是一个提示给线程调度器的参考信息。总的来说,虽然可以通过设置线程优先级来影响线程的执行顺序,但是具体的线程执行顺序还是由操作系统的线程调度器来决定的,因此不能保证高优先级的线程一定会先于低优先级的线程执行。默认情况下,子线程会继承父线程的优先级,而Java主线程的默认优先级是5。方法,这个方法包含了线程要执行的任务代码。

2024-05-10 17:47:34 1314

原创 Java 高级流

缓冲流,也被称为高效流,是Java I/O库中为了提高数据读写效率而设计的一组特殊的流。它们通过在内存中创建缓冲区来减少直接的I/O操作次数,从而达到提升性能的目的。缓冲流的分类字节缓冲流:包括和,这两个分别用于处理字节数据的输入和输出。字符缓冲流:包括和,这两个用于处理字符数据的输入和输出。工作原理缓冲流在创建时会生成一个默认大小的缓冲区数组,这个数组用来临时存储数据。当进行读取或写入操作时,数据首先被读取到或从缓冲区写出,这样可以减少对物理设备的直接I/O操作。

2024-05-09 15:12:00 662 1

原创 Java IO流

Java IO流是用于处理设备之间数据传输的一套系统,涵盖了多种类型的流。数据流向:流按照数据流向可以分为输入流和输出流。输入流用于从源读取数据到程序中,即数据的输入;输出流则将数据从程序写出到目的地,即数据的输出。数据类型:根据操作的数据单位不同,流可以分为字节流和字符流。字节流以8位的字节为单位进行数据的读写,而字符流则是以16位的字符为单位。通常文本文件使用字符流处理更为方便,其他类型的文件(如图片、视频等)则使用字节流。流的分类:流可以进一步分为节点流和处理流。

2024-05-09 14:27:13 933 1

原创 Java File类

Java中的File类是用于表示文件和目录路径名的抽象表示,它提供了一系列的构造方法和操作方法来处理文件系统中的文件和目录。创建File对象:可以通过指定文件路径名或父路径和子路径来创建File对象。获取文件信息:可以使用File类的方法来获取文件的大小、最后修改时间等信息。判断文件属性:File类提供了一些方法来判断文件或目录是否存在,是否为文件或目录等。重命名和删除:可以使用File类的renameTo()方法来重命名文件,使用delete()方法来删除文件或目录。创建、删除目录。

2024-04-26 17:29:01 714 1

原创 Java 异常

在Java中,异常被定义为一种特殊的对象,它们可以被抛出、捕获和处理。这样,调用该方法的代码就可以根据需要捕获并处理该异常。块中的代码是可能引发异常的部分。如果在执行过程中发生了异常,程序会跳转到与该异常类型匹配的。这意味着调用该方法的代码需要处理这两种异常,或者继续向上抛出。关键字声明异常后,调用该方法的代码必须根据声明的异常类型进行异常处理。块可以处理一种特定类型的异常,并且可以访问异常对象以获取更多信息。关键字抛出一个异常对象,以便上层代码能够捕获并处理该异常。关键字来指定可能抛出的异常类型。

2024-04-26 16:05:31 971 2

原创 Java Collections类、Stream流

在实际使用中,Stream流可以极大地提高代码的可读性和编写效率。例如,你可以使用Stream流来过滤集合中的元素、对元素进行映射转换、对集合进行排序、将结果收集到新的集合中,以及其他复杂的数据处理任务。这些示例展示了如何使用Java Stream流来处理集合,包括过滤、映射、排序和收集等操作。Stream流提供了一种声明式的方式来处理数据,使得代码更加简洁和易于理解。

2024-04-22 21:15:40 833 2

原创 Java可变参数和不可变参数

使用可变参数时,你可以在调用方法时传递任意数量的参数,而这些参数在方法内部被当作数组处理。对于String类型,由于它是不可变的(immutable),因此在方法内部对它的修改会创建一个新的String对象,而不会改变原始的String对象。对于基本数据类型,如int、float、double等,由于它们是按值传递的,因此在方法内部对它们的修改不会影响到实际参数的值。:如果类是不可变的,即它的状态不能被修改,那么在方法内部对该类的实例进行操作时,不会影响到实际参数的值。这些参数在方法内部不能被修改。

2024-04-22 21:00:09 790 2

原创 Java双列集合

然后,我们通过键来获取值,遍历了LinkedHashMap中的所有元素,并演示了如何移除元素、检查键是否存在、获取大小以及清空LinkedHashMap。在这个示例中,我们创建了一个HashMap实例,并添加了一些键值对。然后,我们通过键来获取值,遍历了HashMap中的所有元素,并演示了如何移除元素、检查键是否存在、获取大小以及清空HashMap。Java LinkedHashMap是Java集合框架中Map接口的一个实现,它继承自HashMap类,并添加了链表来维护插入顺序。Java Map集合是。

2024-04-18 15:19:33 1183 3

原创 Java——二叉树

平衡因子可以是 -1、0 或 1,这确保了每个节点的左右子树的高度差不会超过 1,从而维持了树的平衡状态。AVL树是一种高度平衡的二叉搜索树,它在每次插入或删除节点后,都会通过旋转操作来保持树的平衡。AVL树的主要优点是在保持平衡的同时,还能保持二叉搜索树的性质,因此在查找、插入和删除操作时具有较高的效率。红黑树是一种特殊的二叉查找树,它的每个节点都有一个颜色属性,要么是红色,要么是黑色。:当一个节点的平衡因子变为非法值时,如果不平衡在节点的某一侧,那么只需要一次旋转就可以恢复平衡。

2024-04-16 21:07:10 1267 3

原创 Java不可重复单列集合

是有序的,所以当我们打印集合的内容时,可以看到元素已经按照升序排列。接口的实现之一,它使用红黑树(Red-Black tree)数据结构来存储元素。当添加元素并打印结果时,你会看到元素是按照字母降序排列的。中,如何删除元素,以及如何使用迭代器遍历集合。能够确保集合中的元素处于排序状态。下面是一个简单的示例,展示如何使用。在这个例子中,我们首先创建了一个。中的元素进行排序,你可以在创建。在这个例子中,我们创建了一个。Java中的Set集合是。,用于存储唯一的元素。,并提供了一个自定义的。

2024-04-16 20:10:35 980 1

原创 数据结构——Java

链表由一系列节点组成,每个节点包含两部分:一部分是存储数据的值,另一部分是指向下一个节点的引用。顶点是图中的数据元素,而边则表示顶点之间的关系。在图的表示中,通常使用字母V来表示顶点集合,E来表示边集合,因此一个图可以表示为G = (V, E)。但是,这也意味着在随机访问元素时,链表的效率较低,因为它需要从头节点或尾节点开始逐个遍历直到找到目标元素。在实际应用中,根据节点的子节点数量,树可以分为多种类型,如二叉树、多叉树等。是线程安全的,但是它的方法是同步的,这意味着在多线程环境下性能可能会受到影响。

2024-04-14 22:48:14 1183 2

原创 Java可重复单列集合

Java Collection 是 java.util包中的一个接口,它用于将多个对象表示为单个单元。Collection接口在Java中扮演着非常重要的角色,它提供了一种方式来存储和操作一组对象。以下是一些关于Java Collection的重要信息:Collection集合常用方法 Java Collection集合的遍历有以下几种方式: 使用增强for循环进行遍历: 使用Java 8的Stream API进行遍历: List集合List是Java中的一种数据结构

2024-04-14 22:28:18 826 2

原创 Java Lambda表达式

Lambda表达式是Java 8中引入的一种新特性,它允许你以更简洁的方式编写匿名函数。Lambda表达式主要用于简化集合操作、线程创建等场景。

2024-04-13 18:45:18 208 2

原创 Java 排序算法

希尔排序(Shell Sort)是一种改进的插入排序算法,它通过将待排序数列按照一定的间隔分组,对每组进行插入排序,然后逐渐缩小间隔,直到间隔为1时,整个数列已经基本有序,此时再进行一次普通的插入排序即可。该算法的时间复杂度为O(n*k),其中n是待排序数列的长度,k是待排序数列中的最大值的位数。该算法的时间复杂度为O(n+k),其中n是待排序数列的长度,k是待排序数列中的最大值。该算法的时间复杂度为O(n+k),其中n是待排序数列的长度,k是待排序数列中的最大值。

2024-04-13 18:40:15 1246 1

原创 Java 查找算法

具体来说,它将数组分为两个部分,其中第一部分的长度为斐波那契数列中的一个数,第二部分的长度为斐波那契数列中的另一个数。然后根据要查找的元素与这两个部分的边界值的关系,来确定下一步查找的范围。哈希查找(Hash Search)是一种基于哈希表的查找算法,它通过将待查找的元素映射到一个哈希表中的位置,然后直接访问该位置来查找元素。树表查找(Tree Table Search)是一种基于树形结构的查找算法,它通过将待查找的元素与树表中的节点进行比较,然后根据比较结果在树表中进行递归查找。

2024-04-13 18:28:10 711 2

原创 Java包装类

例如,将int类型的值赋给Integer类型的变量时,Java会自动将int值转换为Integer对象。例如,将Integer对象赋给int类型的变量时,Java会自动将Integer对象转换为int值。需要注意的是,如果字符串无法正确转换为对应的基本类型,将会抛出。Java中的自动装箱和拆箱是Java 5引入的一个新特性,它允许在基本数据类型和对应的包装类之间进行自动转换。运算符连接字符串和基本类型:当基本类型与字符串相加时,Java会自动将基本类型转换为字符串。等方法可以将相应的基本类型转换为字符串。

2024-04-12 22:25:54 750 2

原创 Java时间类

由于Calendar类是抽象的,不能直接实例化,而是通过调用其静态方法getInstance()来获取一个Calendar对象,该对象已由当前日期和时间初始化。方法获取当前日期和时间,并将其与特定的ZoneId结合,得到一个ZonedDateTime对象,以表示一个具体的日期和时间,同时包含了时区信息。对象,并指定了日期和时间的格式。然后,我们使用该格式化器将当前日期和时间格式化为字符串,并将一个符合格式的字符串解析为。方法创建一个自定义的格式化器,并使用它来格式化当前日期和时间。方法来比较时间间隔。

2024-04-12 22:11:36 914 2

原创 Java爬虫

在贪婪爬取中,正则表达式会尽可能多地匹配字符,而在非贪婪爬取中,正则表达式会尽可能少地匹配字符。例如,对于字符串"abcabc",使用正则表达式"a.Java爬虫中的零宽断言是正则表达式中的一种特殊语法,用于在匹配时进行条件判断,但不消耗字符。c"进行匹配,会匹配单独的"abc",而不是整个字符串"abcabc"。c"进行匹配,会匹配整个字符串"abcabc",而不是单独的"abc"。"的组合表示匹配任意数量的任意字符,但"*?"的组合表示匹配任意数量的任意字符,而"*"是贪婪的,会尽可能多地匹配字符。

2024-04-08 21:48:23 1749 2

原创 Java 正则表达式

正则表达式中存在一些预定义字符,它们可以匹配特定的字符集合。\d:匹配任意数字字符,相当于字符类[0-9]。\D:匹配任意非数字字符,相当于字符类[^0-9]。\s:匹配任意空白字符,包括空格、制表符、换页符等,相当于字符类[f \r\t\v]。\S:匹配任意非空白字符,相当于字符类。w:匹配任意字母、数字或下划线字符,相当于字符类。\W:匹配任意非字母、数字或下划线的字符,相当于字符类。:通常用于匹配除换行符之外的任意单个字符。但在一些情况下,它可以配置为匹配包括换行符在内的任意字符。

2024-04-08 21:22:10 975 2

原创 Java BigInteger类、BigDecimal类

例如,当创建一个BigDecimal对象时,如果传入的字符串是"123.4567",那么在内部,BigDecimal会将其转换成一个整数数组,数组中的元素分别对应于'1','2','3','4','5','6','7'这些数字,并且记录下小数点后有四位数字。这个数组是按照从最低位到最高位的顺序存储的,即数组的第一个元素存储的是大整数的最低位,而最后一个元素存储的是大整数的最高位。需要注意的是,在使用BigDecimal时,需要注意其精度和舍入控制问题,以确保计算结果的准确性。的高1位为n-1)。

2024-04-04 08:00:00 901 2

原创 Java Object类、Objects类

这些是Objects类中的一些常用方法,它们提供了对对象的基本操作和比较功能。在实际编程中,我们可以根据需要使用这些方法来简化代码并提高代码的安全性。这些是Object类中的一些常用方法,它们提供了对对象的基本操作和比较功能。在实际编程中,我们可以根据需要重写这些方法,以满足特定的业务需求。Object类是Java中所有类的根类,它提供了一些通用的方法,用于处理对象的基本行为。

2024-04-03 21:53:22 925 2

原创 Java Math类、System类、Runtime类

此外,由于System类的构造函数是private的,因此我们不能创建System类的实例,也就是说,我们不能实例化这个类。System类的所有方法都是静态的,这意味着我们不需要创建对象就可以直接调用这些方法。然后,使用System.getProperty()方法获取该环境变量的值,并将其打印出来。需要注意的是,虽然Runtime类提供了许多强大的功能,但使用这些功能时应当小心谨慎,因为它们可能会对系统稳定性和安全性造成影响。此外,由于Math类中的方法都是静态的,因此无需创建对象就可以直接使用这些方法。

2024-04-03 21:37:53 824 2

原创 Java 图形用户界面

在实际应用中,通常会看到MouseAdapter类的使用,它是一个抽象适配器类,实现了MouseListener和MouseMotionListener接口的所有方法,但所有方法都是空实现。此外,如果需要更详细的鼠标跟踪,如鼠标的移动,可以实现MouseMotionListener接口,它提供了mouseMoved和mouseDragged两个方法。JFrame类是Swing库中的一个关键组件,它代表一个窗口,可以向其中添加各种GUI组件来构建应用程序的用户界面。:这是菜单栏的容器,它通常位于窗口的顶部。

2024-03-31 22:41:29 1428 3

空空如也

空空如也

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

TA关注的人

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