自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (3)
  • 收藏
  • 关注

原创 锁机制 -- 概述篇

加锁是为了解决并发场景下,多个线程对同一资源同时进行操作,而导致同一线程多次操作出现结果不唯一的情况(一次操作包含多条指令)。结果不唯一发生的原因在于指令的错乱,前提条件是多线程环境及多个线程的执行顺序是无序的。对于资源A来说,有一次操作[A++] (内包含了多条指令:指令1,读取A的值;指令2,将A的值加1;指令3,将结果值重新赋予A),某一时刻,线程1执行了指令1,2,将要执行指令3时,线程2开始执行,并执行完了指令1,这样最终结果A的值只加了1;......

2024-06-29 22:44:33 981

原创 记录一次前端页面崩溃的产生及处理

记录一次前端页面崩溃的产生及处理

2024-05-30 15:07:12 957

原创 Docker 基本命令

记录Docker的基本命令

2024-05-26 14:49:12 303

原创 Spring 处理 HTTP 请求参数注解

简要说明 Spring 处理 HTTP 请求参数中的注解

2024-04-27 16:32:44 460 1

原创 TransmittableThreadLocal 问题杂记

TransmittableThreadLocal,简称 TTL,是阿里巴巴开源的一个Java库,它能够实现ThreadLocal在多线程间的值传递,适用于使用线程池、异步调用等需要线程切换的场景,解决了ThreadLocal在使用父子线程、线程池时不能正确传递值的问题。核心实现:捕获(capture)- 重放(replay)- 恢复(restore)。

2024-03-31 21:40:54 725

原创 数据(上下文)传递问题

最近在开发的一个操作信息记录的接口,遇到了两个数据传递的问题,特此记录。问题产生:该接口是一个异步接口且调用方和被调用方不在同一个服务内,在进行数据库保存操作时,出现了通用字段(创建人,修改人)未被正确赋值的问题。初步排查,该问题的产生点有两个,1:服务间调用使用 OpenFeign,而 OpenFeign 在进行远程调用时会发起一个新的 http 请求,导致请求头中的信息丢失,2:异步接口是通过线程池的方式进行,而子线程通常情况不会持有父线程的上下文内容。

2024-02-28 22:13:57 414

原创 一个诗词网站的设计与实现

该系统采用了前后端分离的总体架构,整个系统由三个子系统构成:微信小程序客户端、管理员后台系统、数据接口后台。微信小程序客户端采用了微信小程序原生开发技术和ColorUI样式组件库;管理员后台系统采用了Vue2技术和ElementUI组件库;数据接口后台采用目前市面上比较主流的分布式架构:SpringCloud微服务架构,采用MySQL作为数据库,采用Redis作为缓存数据库以及消息中间件RabbitMQ来提高系统的运行效率。​ 数据接口后台提供对管理员后台系统和微信小程序客户端的数据支持。

2024-02-21 21:44:35 1020

原创 Centos 7.9 服务器环境搭建

Centos 7.9 服务器环境搭建

2024-01-15 10:03:05 2150 1

原创 批量多字段唯一性校验

【代码】批量多字段唯一性校验。

2023-09-16 00:04:17 519

原创 事务注解与全局事务配置

事务注解与全局事务配置

2023-04-10 16:23:21 709 1

原创 字段自动填充功能( JPA )

最近,项目需要实现一个字段自动填充功能,整体需求是这样子:在每次实体类进行插入、修改操作时,给公共字段自动赋值,公共字段有创建人Id、创建人名称、修改人Id、修改人名称、创建时间、修改时间,其中创建人Id、创建人名称、修改人Id、修改人名称从 Token 中解析获取。

2023-03-17 08:57:11 1028

原创 RocketMQ 初步了解

RocketMQ 初步了解1、基本组成2、功能特性2.1、消息发送重试和流控机制2.1.1、消息重发2.1.2、流控机制2.2、消息过滤2.3、负载均衡 2.4、消费进度管理2.5、消息存储和清理机制

2023-02-17 18:15:00 710

原创 问题记录 —— SpringBoot 项目启动时,只打印 banner 就退出了

SpringBoot 项目启动时,只打印 banner 就退出了

2023-02-14 16:40:00 1263

原创 微信小程序组件 —— 带搜索功能的选择器

微信小程序组件(原生方式)实现带搜索功能的选择器

2022-12-22 18:23:00 2887 4

原创 简单聊聊 WebSocket

1、简介 WebSocket 是一种在单个 TCP 连接上进行 全双工 通信的协议。2、建立连接3、解决的问题 —— 服务器与客户端的双向通信问题

2022-12-13 22:47:05 458

原创 Java 面试题 —— String、StringBuffer、StringBuilder 的区别

Java 面试题 —— String、StringBuffer、StringBuilder 的区别首先,从速度上来说,StringBuilder > StringBuffer > String,其内在的原因在于 String 的对象是不可变的(底层 byte[] value 加了 final 关键字),StringBuffer、StringBuilder 的对象是可变的(底层 byte[] value 没加 final 关键字),因此 String 的速度小于 ...

2022-12-06 20:20:50 308

原创 如何设计一张数据库表

​ 如何设计一张数据库表,或者说设计一张数据库表需要注意些什么,这是我最近在思考的问题,刚开始,我简单的罗列了一下注意事项:1. 设置合理的主键;2. 根据字段更改的频率程度考虑是否设置索引;3. 根据该张数据库表是否与其它的数据库表有联系,考虑添加外键。​ 一时间,我发现我只能想到这些:主键、索引、外键,竟觉得有些空洞,于是我便开始查阅资料...

2022-12-03 20:08:34 8041 1

原创 简单聊聊 倒排索引

倒排索引(Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下 某个单词 在一个文档或者一组文档中的存储位置的 映射,它是文档检索系统中最常用的数据结构。 通过倒排索引,可以根据单词快速获取包含这个单词的文档列表,倒排索引主要由两个部分组成:“单词词典” 和 “倒排文件”。

2022-12-02 11:21:18 523

原创 Java 面试题 —— 强类型语言和弱类型语言的区别

强类型语言,也称为强类型定义语言,是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。​  弱类型语言,是数据类型可以被忽略的语言,它与强类型定义语言相反,一个变量可以赋不同数据类型的值。​

2022-11-28 11:48:51 577

原创 Redis —— 一次错误记录

今天在使用 Redis 存储数据时,发现数据每隔一段时间就会消失,刚开始以为是数据过期时间的问题,使用 QuickRedis 连上 Redis 后,发现数据的过期时间也没有问题,但却发现 数据库0 莫名其妙多出几个 key(backup1、backup2、backup3、backup4),接着我去查看了 Redis 的运行日志,发现 Redis 一直报这个错。,在网上搜索了一番之后,最终确定 Redis 可能遭受了 RDB 方式的入侵攻击。

2022-11-27 21:07:06 1922

原创 Linux 软链接 与 硬链接 的区别

Linux 软链接 与 硬链接 的区别1、概念2、区别3、应用场景4、创建

2022-11-25 20:51:17 6337

原创 Java 面试题 —— TCP 粘包、拆包问题

Java 面试题 —— TCP 粘包、拆包问题1、粘包、拆包问题概况2、产生原因3、解决方案4、Netty 框架对 TCP 粘包拆包问题的解决工具

2022-11-24 20:27:42 1111

原创 Java 面试题 —— 简单工厂、工厂方法、抽象工厂的区别

Java 面试题 —— 简单工厂、工厂方法、抽象工厂的区别1、简单工厂模式2、工厂(方法)模式3、抽象工厂模式4、区别

2022-11-21 12:56:42 831

原创 记录 SQL 语法(MySQL)

记录 SQL 语法(MySQL)1、建库建表2、增删改查

2022-11-07 16:12:10 271

原创 实验二 Linux基本操作

实验二 Linux基本操作1.熟悉Linux环境2.掌握Linux对于文件和目录的基本操作

2022-11-04 15:52:23 449

原创 Java 面试题 —— 请你介绍一下 Java 的线程池

Java 面试题 —— 请你介绍一下 Java 的线程池线程池(thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能,而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,这避免了在处理短时间任务时创建与销毁线程的代价(线程池不仅能够保证内核的充分利用,还能防止过分调度)。---补充:Java 线程池 的实现方式- 基于 生产者-消费者 模式 - 生产者:线程池的调用者 - 消费者:线程池中的工作线程 - 中间容器:阻塞队列---

2022-11-04 14:37:01 476

原创 Spring bean 的生命周期(总结)

Spring bean 的生命周期起点:protected T doGetBean(String name, @Nullable Class requiredType, @Nullable Object[] args, boolean typeCheckOnly)- 阶段1:处理名称,检查缓存;- 阶段2:检查父工厂;- 阶段3:检查 DependsOn;- 阶段4:按 Scope 创建 bean;- 阶段5:创建 bean;- 阶段6:类型转换;- 阶段7:销毁 bean 。

2022-10-17 22:31:03 1052

原创 批量将 svg 文件转成 png 文件

批量将 svg 文件转成 png 文件

2022-10-14 10:51:15 888

原创 聊聊 RabbitMQ 消息可靠性的保证

消息可能会出现的不可靠问题:- 消息丢失- 消息重复- 消息积压产生的原因及相应的解决方案1、消息丢失2、消息重复消费3、消息积压

2022-10-13 19:09:33 1045

原创 初识 RabbitMQ

1、概述 RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。2、架构3、SpringBoot 整合

2022-10-01 20:03:18 985

原创 简单聊聊 MyBatis

1、​MyBatis 是一款 持久层框架,用于将 结果集数据 持久化(保存)到 数据库 中。​常见的持久层框架有:- MyBatis- JPA(默认实现为 Hibernate)2、MyBatis # 和 $ 的区别3、MyBatis 缓存机制3.1、一级缓存(又称 本地缓存,默认启动 且 不能关闭)3.2、3.2、二级缓存(又称 全局缓存,需要进行手动配置)

2022-09-05 22:42:29 321

原创 关于 Redis 的这些知识 你知道哪些

Redis Sentinel(哨兵)是一个 分布式架构,它包含 若干 哨兵节点 和 数据节点,每个哨兵节点 会对 数据节点 和 其余的哨兵节点 进行监控,当发现节点不可达(节点发生宕机)时,会对节点做 下线标识。如果 被标识的 是 主节点,它就会与 其它的哨兵节点 进行协商,当 多数哨兵节点 都认为 主节点 不可达时,它们便会选举出一个 哨兵节点 来完成 自动故障转移 的工作,同时还会将这个变化实时地通知给 应用方(整个过程是自动完成,不需要人工介入)。

2022-08-21 20:57:49 353

原创 关于 分布式事务 你知道多少

分布式事务 是指 事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的 分布式系统 的不同节点之上。简单来说,分布式事务 就是 在分布式系统中多个本地事务组合而成的事务。从本质上讲,分布式事务就是为了保证不同数据库的数据一致性。分布式事务问题的解决方案:- 2PC- TCC- 本地消息表- MQ 事务- Saga 事务...

2022-08-16 21:36:07 266

原创 简单聊聊 分布式

CAP原则 指的是在一个 分布式 系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。高并发(High Concurrency),通常是指通过设计保证 系统 能够 同时并行 处理很多请求。分布式存储(分布式文件系统)架构-中间控制节点架构(HDFS)-完全无中心架构——计算模式(Ceph)-完全无中心架构——一致性哈希(Swift)......

2022-08-15 09:57:23 517

原创 Java 多线程 —— 内存合并

Executor 框架 是 Java 5 引进的用于 启动、调度和管理线程的 API,其内部使用了线程池机制,同时也是一个 基于 生产者-消费者模式 的异步执行框架,其提交任务的线程相当于生产者、执行任务的线程相当于消费者(使用 Runnable 表示任务),处于 java.util.cocurrent 包下。...

2022-08-10 21:57:10 733

原创 浅谈 Redis 的底层数据结构

Redis 五大基本类型所使用的底层数据结构:- string(简单动态字符串)- list(双向链表、压缩列表)- hash(压缩列表、字典)-- 当 hash 保存的键值对数量小于 512个,且键和值的字符串长度都小于 64 字节 采用 压缩列表 作为 底层实现,否则 采用 字典 作为底层实现 - set(整数集合)- zset(压缩列表、字典、跳跃表)Redis 没有直接使用 C语言 传统的字符串,而是自己构建了一种名为 简单动态字符串Simple Dynamic String)..

2022-08-07 21:07:11 1042

原创 简单聊聊 Kafka

Kafka 是一种 高吞吐量的、分布式的、基于 zookeeper 协调的 发布订阅消息系统,常用于 web/nginx日志、访问日志、消息服务等,Kafka 起初由 LinkedIn 公司开发,后于 2010年 贡献给 Apache 基金会 并成为 顶级开源项目。Kafka 的特性:- 高吞吐量、低延迟:Kafka 每秒可以处理数百万条消息,它的最低延迟只有几毫秒- 持久性:Kafka 可以将 消息 持久化到本地磁盘- 可扩展性:Kafka 集群支持 热扩展- 高并发- 高可用...

2022-08-02 16:37:23 407

原创 Redis —— 基础篇

Redis(Remote Dictionary Server,远程字典服务)是一个开源的 使用 ANSI C语言 编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。​ Redis 的主要用途如下:- 缓存:是实现分布式缓存的首选中间件- 数据库:实现诸如点赞、关注、排行等对性能要求极高的互联网需求- 计算工具:统计诸如PV/UV、用户在线天数等数据- 其他的使用场景:可以实现分布式锁,可以作为消息队列使用...

2022-07-28 12:05:08 3318

原创 MySQL 实践篇 —— 主从复制

主从复制 就是 把 主服务器(Master)上的 二进制日志文件(binlog,记录了所有修改数据库的操作)复制到 从服务器(Slave)上执行一遍,保证 从服务器 上的数据 和 主服务器 上的数据 保持一致。​ 工作过程:- 主服务器 把数据更改 记录到 二进制日志文件 中- 从服务器 开启一个 I/O 线程 通过 MySQL 协议 把 主服务器 的 二进制日志文件 复制到自己的 中继日志文件(relay log)中- 从服务器 开启一个 SQL 线程 执行 中继日志文件 中的内容......

2022-07-27 18:02:36 419

原创 JVM 内存管理 你知道多少

“Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有的区域则是依赖用户线程的启动和结束而建立和销毁。”-Java 内存区域-Java 对象--对象的创建--对象的内存布局--对象的访问定位--对象的引用--对象的存亡-垃圾收集算法--分代收集理论--标记 - 清除算法--标记 - 复制算法--标记 - 整理算法...

2022-07-27 11:40:54 315

嵌入式Linux应用开发期末大作业

开发工具:Qt 开发语言:C/C++ 涉及功能:QT的数据传输(TCP传输)、多线程的应用(共享变量、信号量机制)、数据库(SQLite)和QT(界面、控件)的协同运用、QT的数据库模块、QT的摄像头模块 服务器端功能: 1、接受客户端发送的模拟数据,写入数据库 2、接受客户端的文件请求,发送文件到客户 3、接受客户端的视频请求,发送视频到客户 4、用处理线程完成与多个客户端的通信 5、写库操作使用单独线程完成 6、摄像头操作使用单独线程完成 客户端功能: 1、产生并发送模拟数据到服务器 2、发送文件请求到服务器并接收服务器文件,显示到客户端 3、发送视频请求到服务器并接收服务器数据,显示到客户端 4、集成数据库查询显示功能 DbPro 为客户端 TServer 为服务端

2022-07-09

SolidWorks课程设计

SolidWorks课程设计:源代码 + 作品演示

2022-06-04

操作系统课程设计(++)

操作系统课程设计(++)

2022-02-26

空空如也

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

TA关注的人

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