- 博客(122)
- 收藏
- 关注
原创 RabbitMQ入门
RabbitMQ 是一个开源的消息中间件(Message Broker),实现了消息队列的功能,允许不同的应用程序或服务之间通过消息进行异步通信。RabbitMQ 采用 Erlang 语言实现了AMQP(Advanced Message Queuing Protocol,高级消息队列协议)标准,提供了可靠的消息传递、队列管理、消息路由等功能
2024-11-23 09:00:00
360
4
原创 Java 枚举
枚举(enum):是一种特殊的类,用于定义一组常量,将其组织起来。枚举使得代码更具有可读性和可维护性,特别是在处理固定集合的值时,如:星期、月份、状态码等
2024-11-08 09:00:00
1976
113
原创 Spring AOP
AOP(Aspect-Oriented Programming,面向切面编程):是一种软件开发的编程范式,旨在将横切关注点(cross-cutting concerns)与核心业务逻辑分离,以提高代码的模块化性、可维护性和复用性
2024-11-04 09:00:00
2932
95
原创 Java 反射
反射(reflection)是 Java 中的一项特性,它允许程序在运行时查询和操作类的信息。即,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意方法和属性。获取到方法和属性后,就可以对其进行修改。这种动态获取信息以及动态调用对象方法的功能也就是Java的反射机制
2024-11-01 09:00:00
4312
95
原创 Java 泛型
泛型是在 JDK 1.5 引入的新语法,是 Java 中的一个特性,在定义类、接口或方法时,使用类型参数来提高代码的灵活性和可重用性。通过泛型,可以在编写代码时不指定具体的类型,而是在使用时再指定,从而实现更通用的代码
2024-10-27 09:00:00
3594
102
原创 KMP 算法
KMP 算法是一种改进的字符串匹配算法,利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。文章介绍了KMP算法为什么不需要在主串中进行回退、如何计算next数组、next数组的优化以及如何查找所有匹配成功的起始位置
2024-10-20 09:00:00
3363
103
原创 BF 算法
BF算法:即暴力(Brute Force)算法,是一种模式匹配算法,将目标串 S 的第一个字符与模式串 T 的第一个字符进行匹配,若相等,则继续比较 S 的第二个字符和 T 的第二个字符;若不相等,则比较 S 的第二个字符和 T 的第一个字符,依次比较下去,直到得出最后的匹配结果
2024-10-16 09:00:00
3437
73
原创 Java 继承
继承(inhertance):是面向对象编程的特征,它允许在保持原有类的基础上进行扩展,增加新的功能,这样产生的新类,称之为派生类。通过继承,能够实现共性的抽取,从而实现代码的复用
2024-10-09 09:00:00
3429
93
原创 二分查找算法
二分查找是一种高效的搜索算法,适用于在一组数据中中查找某个特定元素,其基本思路是通过不断将查找范围减半来快速定位目标元素。接下来,我们就通过具体的问题,来学习二分查找34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
2024-10-02 09:00:00
1067
47
原创 Java 代码块
代码块指使用 {} 定义的一段代码,根据代码块定义的位置和关键字,可将其分为以下四种:普通代码块、构造块、静态块、同步代码块
2024-09-29 09:00:00
2352
84
原创 找到字符串中所有字母异位词、串联所有单词的子串
找到字符串中所有字母异位词:给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序
2024-09-26 09:00:00
724
35
原创 两数之和、三数之和、四数之和
若 nums[left] + nums[right] < target,此时 nums[right] 为最大值,不能再增加了,因此我们需要让 nums[left] 变大,因此 left++,让 nums[left] 增加。若 nums[left] + nums[right] > target,此时 nums[left] 为最小值,不能再减小了,因此,我们让 right--,减小 nums[right] 的值,从而让两数之和减小。
2024-09-24 09:00:00
1184
85
原创 双指针算法
双指针算法是一种常用的算法,主要用于处理数组和链表中的问题。特别是需要在集合中查找、排序或计算时,可以通过两个指针来优化时间复杂度和空间复杂度。双指针有两种常见的形式:对撞指针和快慢指针
2024-09-21 09:00:00
944
93
原创 JDBC 编程
JDBC(Java Database Connectivity):Java数据库连接,是一种用于执行 SQL 语句的Java API,是 Java 数据库连接规范,为 Java 开发人员操作数据库提供了一个标准的 API,可以为多种关系数据库提供统一访问
2024-09-19 09:00:00
1631
67
原创 MySQL数据的增删改查(一)
在本篇文章中,我们来学习 C(create 增加)R(retrieve 查询)U(update 更新)D(delete 删除),即数据的增删改查
2024-09-13 09:00:00
3552
64
原创 数据链路层
数据链路层是 TCP/IP 五层协议模型中的第二层,主要负责在相邻的网络节点之间传输数据帧,在本篇文章中,我们来学习以太网、帧、MAC地址、ARP等
2024-09-07 09:00:00
1367
54
原创 TCP协议
TCP(Transmission Control Protocol 即传输控制协议)是传输层的重要协议之一,对数据的传输进行详细的控制
2024-09-03 09:00:00
1625
57
原创 线程安全问题
若某个代码,无论是在单个线程下执行,还是在多个线程下执行,都不会产生 bug,则这种情况就称为线程安全;而如果这个代码在单线程下正确运行,但在多线程下,就可能会产生 bug,则这种情况就称为线程不安全或存在线程安全问题,即若多线程环境下代码运行的结果是符合我们预期的(在单线程环境下应该的结果),则说明是 线程安全 的i < 5000;});i < 5000;});t1.start();t2.start();t1.join();
2024-08-19 09:00:00
860
35
原创 wait 和 notify
由于线程之间是的,因此,线程之间执行的先后顺序难以预知,但是,在实际开发中,有时候我们希望合理的协调多个线程之间的执行先后顺序例如:在篮球场上,每个队员都是独立的 执行流,也就是一个 线程当需要完成一个具体的得分动作时,就需要多个队员相互配合,按照一定的顺序执行一定的动作,线程 1 先向 线程 2 "传球",线程2 才能 "扣篮"要完成 协调工作,主要涉及到三个方法:wait()/wait(long timeout):让当前线程进入等待状态notify():唤醒当前对象上等待的线程。
2024-08-17 08:51:04
1284
53
原创 线程的状态
在我们调试多线程代码时,线程的状态可以作为调试的重要依据,在 Java 中,线程有以下几种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED
2024-08-16 09:00:00
1167
42
原创 Thread 类的基本用法
一个线程就是一个 "执行流",,多个线程之间 "同时" 执行着多份代码创建线程比创建进程更快销毁进程比销毁线程更快调度线程比调度进程更快线程是操作系统中的概念,操作系统内核实现了线程这样的机制,并且对用户层提供了一些 API 供用户使用(如 Linux 的 pthread 库)而在 Java 标准库中,将这些 API 进行了封装,因此我们可以直接使用类来实现多线程程序。
2024-08-14 09:00:00
1286
46
原创 进程和线程
进程(Process)是操作系统提供的一种 "软件资源",是操作系统对一个正在运行的程序的一种抽象,即,可以把进程看做程序的一次运行过程,进程依赖于程序运行而存在。线程,也可以称为 轻量级进程,在进程的基础上做出了改进,保持了 独立调度执行这样的 并发支持,同时省去了 分配资源、释放资源 带来的额外开销
2024-08-10 09:00:00
1321
54
原创 JVM(Java虚拟机)
JVM 作为 Java 的核心组成部分,提供了丰富的功能和机制,在本篇文章中,我们主要学习 JVM 的内存区域划分、类加载机制 和 垃圾回收算法
2024-07-31 09:00:00
1211
47
原创 HTTPS
HTTP 协议内容都是按照文本的方式进行明文传输的,这就导致在传输过程中比较危险,可能会被黑客劫持,从而窃取用户隐私信息,或是篡改内容,而 HTTPS 则在 HTTP 的基础上进行了加密,进一步保证用户的信息安全
2024-07-29 09:00:00
1002
61
原创 SpringBoot实现图形验证码
验证码的实现方式有很多,可以由前端实现,也可以由后端进行实现,也有很多的插件和工具包可以使用,在这里,我们使用 Hutool 提供的小工具实现
2024-07-16 09:00:00
3657
59
原创 SpringMVC 请求参数接收
在浏览器与程序进行交互时,主要分为将用户(浏览器)和 Java 程序连接起来,也就是访问一个地址能够调用到 Spring程序用户请求时会携带一些参数,在程序中要想办法获取到参数,因此请求这部分主要是的功能在执行了业务逻辑之后,要将程序执行的结果返回给客户,也就是响应在本篇文章中,我们来学习请求(获取参数 )这部分内容。
2024-06-27 09:00:00
1905
44
原创 JWT令牌技术
是一种用于身份验证和授权的方法,常用于网络安全和信息技术领域。在计算机系统中,令牌是一种用于证明用户身份或授权访问的凭证,可以是基于硬件的安全令牌,也可以是基于软件的生成代码或数据。令牌技术允许用户获取一个特定的令牌后,在之后的通信中使用该令牌来证明自己的身份或获得授权。
2024-06-09 09:00:00
2211
48
原创 拦截器(Interceptor)
拦截器(Interceptor)是Spring框架提供的核心功能之一,主要用于拦截用户请求,在指定方法前后,根据业务需求执行预先设定的代码拦截器允许开发人员提前预定义一些逻辑,在用户的请求响应前后执行,也可以在用户请求前阻止其执行,在拦截器当中,开发人员可以在应用程序中做一些通用性的操作例如,可以通过拦截器拦截前端发来的请求,判断Session中是否有登录用户的信息,若有,则放行;若没有,则进行拦截在了解了什么是拦截器之后,我们来学习如何实现拦截器。
2024-06-05 09:00:00
1408
45
原创 密码加密及验证
摘要算法也称为哈希函数,是一种将任意长度的输入消息转换为固定长度的输出值(哈希值)的算法。同样的,我们将加密的过程看做数学中计算y = f(x)的过程,其中 x 为明文,y 为密文,f( )表示加密算法对于摘要算法,可以通过y = f(x)计算密文,而无法通过密文计算明文固定长度输出:摘要算法生成的哈希值长度是固定的,不受输入消息长度的影响。唯一性:对于不同的输入消息,摘要算法应该生成不同的哈希值。
2024-06-03 09:00:00
1828
35
原创 Spring事务
指作为单个逻辑工作单元执行的一系列操作,是一组操作的集合,是一个不可分割的操作。在数据库管理系统中,事务通常用于确保数据库操作的原子性、一致性、隔离性和持久性。事务会把所有的操作作为一个整体,一起向数据库提交或是撤销操作的请求,这组操作要么同时成功,要么同时失败。
2024-05-23 09:00:00
1254
47
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅