- 博客(24)
- 资源 (2)
- 收藏
- 关注
原创 WebSocket 与传统 Socket
特性WebSocket传统 Socket协议层级基于 HTTP 协议升级为 WebSocket(基于 TCP)底层协议(TCP/UDP)连接方式持久连接,双向通信可以是单向通信或双向通信(取决于协议)通信模式全双工通信,实时双向数据交换通常为请求/响应模式(TCP)或无连接(UDP)使用场景实时聊天、在线游戏、股票市场、推送通知等文件传输、HTTP 服务、SSH 远程连接等开发难度相对简单,浏览器和现代框架原生支持需要较底层的开发,管理连接和协议延迟与效率低延迟,适合实时应用。
2024-11-29 09:30:00
718
原创 HTTPS 加密
数字证书(CA 证书)是 HTTPS 加密通信的重要组成部分,保证了服务器的身份认证,并通过信任链保障通信的安全性。最终,HTTPS 提供了一种安全的数据传输方式,保护用户敏感信息,防止中间人攻击和数据泄露。协议对通信进行加密,确保数据的机密性、完整性和身份认证。客户端(浏览器)向服务器发起 HTTPS 请求,请求的内容会被加密以确保安全连接。在 HTTPS 的加密过程中,涉及多种加密技术,主要包括。加密该会话密钥,然后将加密后的会话密钥发送给服务器。签发,用于验证服务器的身份并确保数据传输的安全。
2024-11-27 08:30:00
1004
原创 对称加密与非对称加密
是信息安全中的核心部分,用于确保数据的机密性、完整性和身份验证。和。这两种加密方式在加密和解密过程中使用的密钥数量、密钥管理方式和安全性上有显著的不同。对称加密(Symmetric Encryption)是指加密和解密使用相同的密钥。也就是说,发送方和接收方必须共享一个秘密密钥来进行加密和解密。由于加密和解密操作使用相同的密钥,所以被称为“对称”。
2024-11-26 13:43:35
1990
1
原创 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
原创 进程(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
基于DS18B20的单总线温度显示系统(内附仿真图及源代码)
2020-07-09
人机接口技术:利用C51进行矩阵键盘按键识别和数码管动态显示
2020-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人