自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Redis】Redis 预备知识

本文围绕 Redis 相关内容展开。首先介绍了如 KEYS、EXISTS 等基本全局命令及其作用。接着提及数据结构和内部编码方面知识。最后阐述了 Redis 的单线程架构特点。通过这些内容,能帮助读者初步了解 Redis 在命令使用、结构编码及架构上的关键要点。

2024-11-27 07:30:00 348

原创 【Redis】Redis介绍

本文围绕 Redis 展开阐述。首先介绍 Redis 是一款具备多种特性的工具,其速度快,基于键值对的数据结构,功能丰富且简单稳定,支持多客户端语言,还有持久化、主从复制、高可用及分布式等特性。接着指出 Redis 的诸多使用场景,涵盖缓存、排行榜系统、计数器应用、社交网络、消息队列系统等方面。最后还提及 Redis 不可以做的事情。总体而言,通过对 Redis 的特性、应用场景及限制的介绍,能让读者较为全面地了解 Redis。

2024-11-26 07:00:00 557

原创 【JavaEE进阶】Spring 事务和事务传播机制

本文全面阐述了事务相关内容。先是回顾事务,包括其定义为一组操作的集合,要么全成功要么全失败;阐述需要事务来保证数据一致性和完整性;介绍事务操作。接着讲 Spring 事务实现,编程式事务作简单了解,重点是声明式 @Transactional。通过对比事务提交和回滚日志加深理解。还详细解析 @Transactional,如 rollbackFor 属性和失效场景。同时涵盖事务隔离级别,包括 MySQL 和 Spring 的相关内容,以及 Spring 事务传播机制的概念和多种类型。

2024-11-12 07:30:00 1006

原创 【JavaEE进阶】Spring AOP 原理

文章先介绍代理模式,即通过代理类控制对其他对象的访问。分为静态和动态代理。静态代理在程序运行前代理类已存在,手动编写代码实现,不够灵活。JDK 动态代理在运行时利用反射创建,需实现 InvocationHandler 接口,但只能代理接口。CGLIB 动态代理基于字节码生成库,通过继承实现,可代理类和接口,需添加依赖。还讲解了它们在框架中的应用,如 Spring AOP 会根据情况选择,同时对比了两者的区别。

2024-11-10 11:10:30 769

原创 【RabbitMQ】RabbitMQ 7种工作模式简单使用示例

本文对 RabbitMQ 7 种工作模式,包括简单模式、工作队列、发布 / 订阅等进行了详细介绍和代码演示

2024-10-15 10:03:45 988

原创 【RabbitMQ】RabbitMQ 的七种工作模式介绍

本文介绍RabbitMQ 的 7 种工作模式,包括简单模式、工作队列、发布 / 订阅等,各模式特点不同,适用不同场景,如消息传递、异步处理等。

2024-10-13 21:02:36 923

原创 【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码

本文介绍了 RabbitMQ 的核心概念,包括生产者、消费者、Connection 和 Channel、Virtual host、Queue、Exchange 等,还讲解了 AMQP 协议及 RabbitMQ 快速入门,包括引入依赖、编写生产者和消费者代码及示例。

2024-09-23 17:00:57 1760

原创 【JavaEE】JVM 内存区域划分,以及 Java 垃圾回收机制引用计数器,可达性分析等

本文主要介绍了JVM 内存区域划分, 堆, 栈, 程序计数器, 元数据区,以及 Java 垃圾回收机制引用计数器,可达性分析, 垃圾回收算法等

2024-08-16 08:02:39 885

原创 【数据结构】二叉搜索树的实现

这篇文章主要介绍了二叉搜索树的概念以及各种操作, 如查找, 插入, 删除. 其中删除操作最为复杂, 需要分情况讨论. 最后对二叉搜索树的性能进行简单分析.

2024-08-14 07:00:00 539

原创 【数据结构】十大排序算法总结和代码实现(插入, 希尔, 选择, 堆排, 冒泡, 快排, 归并, 计数)

本文主要介绍了十大排序算法总结和代码实现(插入, 希尔, 选择, 堆排, 冒泡, 快排, 归并, 计数)

2024-08-12 07:00:00 973

原创 【JavaEE进阶】数据库加密 -- MD5 加密方法

是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法. 摘要算法是不可逆的, 也就是无法解密. 通常用来检验数据的完整性的重要技术, 即对数据进行哈希计算然后比较摘要值, 判断是否一致. 常见的摘要算法有: MD5, SHA系列(SHA1, SHA2等), CRC(CRC8, CRC16, CRC32)

2024-08-11 06:00:00 1146

原创 【JavaEE进阶】用户登录场景中的令牌技术(JWT令牌)

JWT全称: JSON Web Token官网:JSON Web Token(JWT) 是一个开放的行业标准(RFC 7519), 用于客户端和服务器之间传递安全可靠的信息.其本质是一个token, 是一种紧凑的URL安全方法.

2024-08-10 10:16:26 1074

原创 【JavaEE进阶】Spring AOP使用篇

创建一个注解类(和创建Class文件一样的流程, 选择Annotation就可以了)代码简单说明, 了解即可, 不做过多的解释1. @Target 标识了 Annotation 所修饰的对象范围, 及该注解可以用在什么地方.常用取值:ElementType.TYPE: 用于描述类, 接口(包括注解类型)或 enum 声明ElementType.METHOD: 描述方法ElementType.PARAMETER: 描述参数ElementType.TYPE_USE: 可以标注任意类型。

2024-06-27 22:48:52 1117 2

原创 【JavaEE进阶】Spring统一功能处理:统一异常处理和统一结果返回

2.降低前端程序员和后端程序员的沟通成本,按照某个格式实现就可以了, 因为所有接口都是这样返回的.4.有利于后端技术部门门]的统一规范的标准制定,不会出现稀奇古怪的返回内容.在图书管理系统中的强制登录的过程中, 我们共做了两步工作。1.方便前端程序员更好的接收和解析后端数据接口返回的数据。在多次测试不同的返回结果之后, 发现只有返回结果为。2.对后端返回数据进行封装, 告知前端处理的结果。类名, 方法名和返回值可以自定义, 重要的是注解。要进行处理,其他的不进行处理.接口返回为数据是, 需要加上。

2024-06-25 23:59:15 987

原创 【JavaEE进阶】Spring统一功能处理:拦截器的使用

定义拦截器: 实现HandlerInterceptor接口, 并重写其所有方法@Slf4j@Overridelog.info("LoginInterceptor ⽬标⽅法执⾏前执⾏..");@Overridelog.info("LoginInterceptor ⽬标⽅法执⾏后执⾏");@Overridelog.info("LoginInterceptor 视图渲染完毕后执⾏,最后执⾏");

2024-06-18 09:53:58 1081 1

原创 【JavaEE进阶】Cookie和Session详解

Cookie是服务器传给客户端的体积很小的纯文本文件。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。HTTP协议自身是属于"无状态"协议."无状态"的含义指的是:默认情况下HTTP协议的客户端和服务器之间的这次通信,和下次通信之间没有直接的联系.

2024-04-07 09:18:58 1342 47

原创 【JavaEE进阶】SpringMVC中的常用注解和用法

是应用程序中最常被用到的注解之一, 它是用来注册接口的路由映射的.表示服务收到请求时, 路径为/sayHi的请求就会调用sayHi这个方法的代码.当用户访问一个URL时,将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射.既然已经可以达到我们的⽬的了, 我们为什么还要加呢?我们把去掉, 再来访问⼀次:可以看到, 程序报了404, 找不到该页⾯.这就是起到的作用.一个项目中,会有很多类,每个类可能有很多的方法,Spring程序怎么知道要执行哪个方法呢?

2024-04-05 21:52:05 1887 56

原创 Linux: linux常见操作指令

查看 Linux 主机 ip在终端下敲ifconfig指令, 查看到 ip 地址。

2024-04-04 22:36:19 923 1

原创 【JavaEE】网络原理: HTTPS协议相关内容

HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层.HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况.

2024-02-26 22:59:10 1021 7

原创 【JavaEE】网络原理: HTTP协议相关内容

思考问题:为什么HTTP报文中要存在"空行"?因为HTTP协议并没有规定报头部分的键值对有多少个. 空行就相当于是"报头的结束标记", 或者是"报头和正文之间的分隔符".HTTP在传输层依赖TCP协议, TCP是面向字节流的. 如果没有这个空行,就会出现"粘包问题".

2024-02-22 11:24:39 1355 2

原创 【JavaEE】网络原理: UDP协议和TCP协议的相关内容

网络通信中, 协议是一个非常重要的概念. 协议进行了分层, 此处就是按照这几层顺序来介绍每一层中的核心协议.

2024-02-14 10:03:32 1490 3

原创 【JavaEE】网络原理:UDP数据报套接字编程和TCP流套接字编程

1.1 DatagramSocketDatagramSocket 是UDP Socket,用于发送和接收UDP数据报。DatagramSocket 的构造方法:方法签名方法说明DatagramSocket()创建⼀个UDP数据报套接字的Socket,绑定到本机任意⼀个随机端口(⼀般用于客户端)DatagramSocket(int port)创建⼀个UDP数据报套接字的Socket,绑定到本机指定的端口(⼀般用于服务端)

2024-01-27 20:03:26 1384 12

原创 【JavaEE】网络原理: 网络编程套接字(概念)

网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信 (或称为网络数据传输)。当然,我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程.特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。进程A:编程来获取网络资源进程B:编程来提供网络资源。

2024-01-27 17:14:26 1309 1

原创 【JavaEE】网络原理:网络中的一些基本概念

协议分层是将网络协议按照不同的功能和层次进行分组和组织的一种方式。它将复杂的网络通信过程划分为多个层次,每个层次负责特定的功能和任务。

2024-01-20 22:05:32 1383 13

原创 【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

Java 中通过 java.io.File 类来对⼀个文件(包括目录)进行抽象的描述。注意,有 File 对象, 并不代表真实存在该文件。我们先来看看 File 类中的常见属性、构造方法和方法方法修饰符及返回值类型方法签名说明intread()读取⼀个字节的数据,返回 -1 代表已经完全读完了int最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表已经读完了int最多读取 len - off 字节的数据到 b 中,从 off 开始,返回实际读到的数量;

2024-01-18 14:23:37 2088 12

原创 【JavaEE】多线程(7) -- 线程池的概念和简单实现

以最后一个构造方法为例:Java的 ThreadPoolExecutor 是一个线程池执行器,用于管理和调度线程的执行。1.corePoolSize:核心线程数即线程池中保持活动状态的最小线程数。如果线程池中的线程数小于corePoolSize,则即使其他线程是空闲的,ThreadPoolExecutor也会创建新的线程来处理任务。2.maximumPoolSize:最大线程数即线程池中允许的最大线程数。

2023-12-30 19:24:08 2069 13

原创 【JavaEE】多线程(6) -- 定时器的使用及实现

它允许开发人员在指定的时间间隔内重复执行任务,或在指定的延迟之后执行任务。定时器是Java提供的一种方便的工具,用于处理需要定期执行的任务,例如定时任务调度、定时数据备份等。2. Task 类⽤于描述⼀个任务(作为 Timer 的内部类). ⾥⾯包含⼀个 Runnable 对象和⼀个 time(毫秒时 间戳) 这个对象需要放到优先队列 中. 因此需要实现 Comparable 接⼝。定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码。

2023-12-28 22:43:51 767 15

原创 【JavaEE】多线程(5) -- 阻塞队列

上述过程中, A 和 B , A 和 C 之间的耦合性是比较轻的, A中的代码需要设计到一些B相关的操作, B中的代码也涉及到和A相关的操作, A 的代码中也需要涉及和 C 相关的操作, C 的代码也涉及和 A 相关的操作, 另外, 如果 B 或者 C 服务器出现故障, 对 A 的影响就很大.⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤ 等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取.此时进程并会不结束.

2023-12-17 22:04:18 1234 5

原创 【JavaEE】多线程(4) -- 单例模式

设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀ 些固定的套路. 按照套路来⾛局势就不会吃亏.软件开发中也有很多常⻅的 "问题场景". 针对这些问题场景, ⼤佬们总结出了⼀些固定的套路. 按照这 个套路来实现代码, 也不会吃亏.

2023-12-17 15:37:37 1354 1

原创 【JavaEE】多线程(3) -- 线程等待 wait 和 notify

由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序.完成这个协调⼯作, 主要涉及到三个⽅法注意: wait, notify, notifyAll 都是 Object 类的⽅法。

2023-12-03 14:42:21 2403 50

原创 【JavaEE】多线程 -- 死锁问题

其实, 问题的关键是,这两次加锁, 其实是在同一个线程上进行的. 由于是同一个线程, 此时锁对象就知道了第二次加锁的线程, 第二次加锁操作就可以直接放行通过, 不会出现阻塞. 这个特性称为 "可重入".这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该会出现阻塞问题吗?使用可重入锁, 可以避免代码出现死锁问题, 如果使用的不是可重入锁, 就会出现死锁问题.

2023-11-30 22:13:46 1164 7

原创 【JavaEE】多线程 (2) --线程安全

执行上面的代码,我们发现结果并不是100000, 并且多次运行, 每次的结果都有所不同:这就是线程不安全的一个例子.

2023-11-26 22:57:43 1417 69

原创 【JavaEE】多线程 (1)

⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏ 着多份代码.

2023-11-25 20:43:50 1828 64

原创 【MySql】MySql表的增删查改

- 新增insert into 表(字段1, ..., 字段N) values (value1, ..., value N);-- 多行插入insert into 表(字段1, ..., 字段N) values-- 全列查询select * from 表-- 指定列查询select 字段1,字段2... from 表-- 查询表达式字段select 字段1+100,字段2+字段3 from 表-- 别名select 字段1 别名1, 字段2 别名2 from 表。

2023-11-06 13:32:10 892 1

原创 【MySql】数据库基础

- 显示-- 创建-- 使用use xxx;-- 删除常用数据类型:INT:整型DECIMAL(M, D):浮点数类型VARCHAR(SIZE):字符串类型TIMESTAMP:日期类型-- 查看show 表;-- 创建create table 表名(字段1 类型1,字段2 类型2,...-- 删除drop talbe 表名;

2023-10-29 16:09:30 199

原创 【C语言】位段,枚举和联合体详解

什么是位段位段的声明和结构体是类似的,有两个不同:1.位段的成员必须是 int、unsigned int 或 signed int 。2.位段的成员名后边有一个冒号和一个数字。

2023-08-22 21:17:19 2005 152

原创 【C语言】什么是结构体内存对齐?结构体的大小怎么计算?

结构体内存对齐(Struct Memory Alignment)是指编译器在分配结构体变量的内存空间时,按照一定规则对结构体成员进行排列,以保证结构体的访问效率和内存对齐要求。在计算机中,访问内存的速度是有限的,而且通常是按照特定的字节大小进行的。为了提高内存访问的效率,许多计算机体系结构要求特定类型的数据在内存中的地址必须是某个特定值的倍数。这个特定值通常是数据类型的大小或者是处理器的字长。

2023-08-20 22:23:30 1381 91

原创 【C语言】字符函数和字符串函数

拷贝num个字符从源字符串到目标空间。如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。使用示例int main()return 0;

2023-08-19 16:26:05 2095 87

原创 【数据结构】二叉树链式结构的实现及其常见操作

在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在我们对二叉树结构掌握还不够深入,为了降低学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式。这样我们就写出了一个简单的二叉树。

2023-08-17 09:03:09 1551 120

原创 【数据结构】堆的实现,堆排序以及TOP-K问题

向堆中插入一个元素,我们可以将这个元素插入到堆的尾部,因为堆的实际存储结构是一个数组,我们可以将元素放到数组末尾,但如果仅仅是插入到数组末尾的话,会将堆的结构给破环,我们还需要调用一个向上调整的函数,来调整各个节点间的大小关系。弹出元素就是将堆顶的元素给删除,但我们不能直接进行删除,这样会将堆的结构给破坏,正确的方法是先将堆顶的元素和最后的元素进行交换,这样保证的首元素的左子树和右子树依然是堆的形态,然后将size自减,最后调用一个堆的向下调整函数。这里写的是小根堆,大根堆可以在小根堆的基础上稍作修改。

2023-08-15 07:45:42 2377 181

空空如也

空空如也

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

TA关注的人

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