自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 JAVA中双亲委派机制

开发者可以通过继承。

2024-12-13 20:36:16 614

原创 TCP 的三次握手

三次握手的目的是为了在客户端和服务端之间建立可靠的 TCP 连接,确保双方能够同步,并且为数据传输做好准备。

2024-11-30 09:15:00 1159

原创 WebSocket 与传统 Socket

特性WebSocket传统 Socket协议层级基于 HTTP 协议升级为 WebSocket(基于 TCP)底层协议(TCP/UDP)连接方式持久连接,双向通信可以是单向通信或双向通信(取决于协议)通信模式全双工通信,实时双向数据交换通常为请求/响应模式(TCP)或无连接(UDP)使用场景实时聊天、在线游戏、股票市场、推送通知等文件传输、HTTP 服务、SSH 远程连接等开发难度相对简单,浏览器和现代框架原生支持需要较底层的开发,管理连接和协议延迟与效率低延迟,适合实时应用。

2024-11-29 09:30:00 718

原创 RPC协议概述

在gRPC中,服务和消息是通过Protobuf文件定义的。以下是一个简单的服务定义,客户端请求服务器返回一个问候消息。

2024-11-28 16:09:15 1127

原创 HTTPS 的应用数据是如何保证完整性的?

在。

2024-11-27 10:00:00 1056

原创 HTTPS 加密

数字证书(CA 证书)是 HTTPS 加密通信的重要组成部分,保证了服务器的身份认证,并通过信任链保障通信的安全性。最终,HTTPS 提供了一种安全的数据传输方式,保护用户敏感信息,防止中间人攻击和数据泄露。协议对通信进行加密,确保数据的机密性、完整性和身份认证。客户端(浏览器)向服务器发起 HTTPS 请求,请求的内容会被加密以确保安全连接。在 HTTPS 的加密过程中,涉及多种加密技术,主要包括。加密该会话密钥,然后将加密后的会话密钥发送给服务器。签发,用于验证服务器的身份并确保数据传输的安全。

2024-11-27 08:30:00 1004

原创 对称加密与非对称加密

是信息安全中的核心部分,用于确保数据的机密性、完整性和身份验证。和。这两种加密方式在加密和解密过程中使用的密钥数量、密钥管理方式和安全性上有显著的不同。对称加密(Symmetric Encryption)是指加密和解密使用相同的密钥。也就是说,发送方和接收方必须共享一个秘密密钥来进行加密和解密。由于加密和解密操作使用相同的密钥,所以被称为“对称”。

2024-11-26 13:43:35 1990 1

原创 HTTP 管道传输与多路复用

这种方式确保了即使请求并行发送,浏览器仍然能够正确地将每个响应与请求匹配。

2024-11-26 13:34:37 1320

原创 HTTP 缓存技术

HTTP 缓存技术通过存储已请求资源的副本,减少重复请求、提升响应速度,并节省带宽。缓存可以在客户端、代理服务器、CDN(内容分发网络)等位置进行,能够有效提升 Web 应用的性能、降低服务器压力和加速用户访问体验。

2024-11-26 13:24:47 1223

原创 Java 多线程:run() 和 start() 方法的区别

1. 什么是 run() 方法?定义:run() 是线程的核心逻辑所在,定义了线程需要执行的任务。调用方式:可以直接调用(像普通方法一样)。也可以通过 start() 间接调用。特点:直接调用时,任务在当前线程中执行,不会启动新线程。是 Thread 类和 Runnable 接口中任务逻辑的实现方法。示例代码:直接调用 run()public class RunExample { public static void main(String[] args) {

2024-11-21 08:30:00 515

原创 Java 中创建线程的方法

线程池是现代多线程开发的主流方式,可以高效地管理和复用线程,减少频繁创建和销毁线程的开销。从 Java 8 开始,Lambda 表达式可以简化。可以提升代码的可读性,适合与线程池结合使用。的增强版,支持返回值和异常处理。作为创建和管理线程的首选方式,接口的实现,减少代码量。

2024-11-21 08:00:00 785

原创 并发和并行的基础知识

尽管 CPU 在某一时刻只能执行一个任务,但因为切换速度极快(毫秒级),你会感觉这些任务在同时运行。

2024-11-20 15:10:49 1277

原创 进程(Process)和线程(Thread)的基本知识

线程(Thread)**是操作系统中两个重要的概念,它们用于描述程序的执行方式。以下是对进程和线程的详细解释,包括它们的定义、特性、区别以及在操作系统中的作用。假设你打开了一个文本编辑器(如 Notepad),它启动的就是一个进程。这个进程会申请内存空间、加载文件并等待用户的操作。进程是程序的一次执行实例,它是资源分配的基本单位。进程是静态程序在运行时的动态表现,拥有自己独立的地址空间和系统资源。线程是进程中的一个执行单元,是操作系统中调度的最小单位。一个进程可以包含多个线程,它们共享进程的资源。

2024-11-20 15:03:42 940

原创 同类中的方法调用事务会失效

Spring 代理无法自动拦截类内部的直接调用,这是 Java 的方法调用机制决定的,并非 Spring 本身的限制。通过理解代理的工作原理,可以更好地设计代码,避免事务失效问题。是 Spring 提供的一个工具类,用于在运行时获取当前对象的代理实例。可以通过它来调用代理对象的方法。移动到一个单独的类中,由 Spring 管理该类的 Bean。调用新类的方法时,实际上是调用它的代理对象,这样就能触发事务逻辑。当方法移到另一个类中时,新类的实例是由 Spring 容器管理的。时,实际上是通过代理对象调用的。

2024-11-20 13:53:26 1170

原创 Spring 事务失效场景

Spring 的事务管理通过代理对象拦截方法调用实现事务逻辑。如果一个类中方法调用另一个带有事务注解的方法(即内部调用),此调用不会经过代理对象,而是直接调用原始方法,导致事务逻辑失效。即使代码中配置了事务注解,数据库也会直接提交操作。Spring 的事务管理是基于 AOP 代理实现的,代理只能拦截 public。或包访问权限,代理将无法拦截到该方法的调用,因此事务不会生效。,Spring 会认为方法正常完成,不回滚事务。的事务不会生效,异常抛出后事务不回滚。事务不会回滚,数据库操作直接提交。

2024-11-20 13:39:29 463 1

原创 Maven 多模块项目中解决 PageHelper 和 MyBatis-Plus 依赖冲突问题

通过排除子模块中的冲突依赖,并在主项目中手动引入正确版本,可以有效解决多模块项目中的依赖冲突问题,避免版本不兼容导致的功能异常。

2024-11-18 18:37:53 643

原创 Spring Boot 与 Elasticsearch 日志管理系统

Elasticsearch 是一个基于 Lucene 构建的分布式搜索和分析引擎,主要用于处理大规模的数据搜索和分析任务。它广泛应用于日志管理、应用监控、电子商务、社交媒体分析等场景,支持全文搜索、结构化数据查询、实时分析等操作。LogEntry类定义了日志的字段和数据结构,使用@Document注解将其映射到 Elasticsearch 索引中。文件位置@Id;代码说明:将LogEntry类映射到 Elasticsearch 索引。字段定义level使用Keyword。

2024-11-06 20:09:32 1308

原创 Feign 使用详解:分布式微服务中的简洁 HTTP 调用

在用户服务中,我们创建一个控制器和服务类来实现用户信息的提供。(用户服务控制器)@Autowired(用户服务实现类)@Service// 模拟从数据库获取用户信息回退工厂实现,在create方法中返回UserClient的默认实现。@Component@Override@Override// 记录异常日志System.out.println("调用用户服务失败,异常:" + cause);// 返回默认的用户信息定义用户服务接口:在用户服务中提供。

2024-11-06 16:32:08 1271

原创 Java 21 中的字符串模板特性

Java 21 的字符串模板特性大大提升了字符串构建的简便性,减少了冗余的拼接操作,同时使代码更易读、更易维护。三种模板处理器(STRFMT和RAW)提供了不同的字符串处理方式,使得模板能够适应不同需求。在实际开发中,合理利用字符串模板可以简化日志记录、异常处理、动态生成字符串等操作,显著提升代码质量和开发效率。

2024-11-06 16:06:50 1038

原创 Spring 的依赖注入和配置机制来替代 Java 的原生 SPI

Component@Override@Component@Override在每个实现类上使用注解,并指定属性的值来启用不同的实现。@Component@Override@Component@Override@Profile在复杂场景下,可以创建一个工厂类,根据业务逻辑动态决定加载哪个实现,而不需要在编译时就确定实现。创建一个工厂类,返回合适的实现。@Component// 将所有实现类注入并存入 Map,键为类名或特定标识@Primary和@Qualifier。

2024-11-04 20:53:42 788 2

原创 Java SPI(Service Provider Interface)

首先,我们定义一个接口,表示不同支付方式的处理逻辑。Java 的 SPI 机制为应用程序提供了一种标准化的服务发现和实现加载方式,通过动态加载接口实现类,从而增强了系统的灵活性和扩展性。SPI 特别适合插件式架构和多实现场景,在大型项目和分布式系统中广泛应用。合理使用 SPI,可以有效提升系统的模块化和可扩展性。

2024-11-04 20:41:48 1074

原创 设计模式-工厂设计模式

工厂设计模式是一种创建对象的设计模式,旨在将对象的创建逻辑与其使用分离。主要包括三种实现方式:简单工厂模式、工厂方法模式和抽象工厂模式。

2024-11-04 16:09:11 633

原创 valitile关键字在DCL作用

为什么用volatilevolatile保证了指令的可见性和有序性,避免了重排序导致的空指针问题。效果:在双重检查锁定模式下,通过使用volatile可以保证实例的正确创建,并避免多线程环境下的空指针异常。

2024-11-04 14:11:33 425

原创 设计模式-单例模式

设计模式-单例模式

2024-11-04 14:07:05 495

基于DS18B20的单总线温度显示系统(内附仿真图及源代码)

DS18B20为一单线制数字式温度传感器,即能将非电量的温度信号,转换为 数字信号,并串行传输给单片机,单片机通过数码管动态显示。内附有protues仿真系统和源代码。

2020-07-09

人机接口技术:利用C51进行矩阵键盘按键识别和数码管动态显示

利用C51进行矩阵键盘按键识别与数码管动态显示接口程序的设计和调试。 按下矩阵按键,动态显示数码管上显示对应的键值和扫描码。文件包含protues仿真电路图和源码

2020-07-06

空空如也

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

TA关注的人

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