- 博客(67)
- 问答 (1)
- 收藏
- 关注
原创 针对RPC框架项目的面试问题
协作流程:客户端调用→动态代理→序列化→协议编码→网络传输→服务端接收→协议解码→反序列化→反射调用→返回结果逆向传递。这些答案展示了候选人对RPC框架的深入理解和技术细节的把握能力,同时也体现了工程实践经验和持续改进的思考。22. 这个RPC框架与主流RPC框架(如Dubbo、gRPC)相比有哪些优势和不足?5. 动态代理在项目中是如何具体实现的?8. Vert.x的异步非阻塞特性在项目中是如何体现的?你是如何设计它们之间的交互流程的?16. 反射机制在动态方法调用中是如何具体应用的?
2025-08-01 10:44:36
252
原创 IM即时通讯系统面试准备(一)——websocket
你可以通过实现WebSocketHandler接口的方法来访问WebSocketSession对象,然后在你的WebSocket消息处理器中使用它。Spring提供了配置和管理WebSocket连接的必要组件,包括服务器和客户端的。这类似于Spring MVC中的@RequestMapping注解,但它是用于WebSocket消息的。Spring Framework通过spring-websocket模块提供对WebSocket的支持,该模块与Spring的其他部分。
2025-08-01 09:40:35
920
1
原创 Redis入门到掌握
Redis是一个高性能的内存数据库,支持多种数据结构,可作为缓存、消息队列等使用。它具有持久化、主从复制等功能,但存在缓存与数据库一致性问题。Redis支持RDB和AOF两种持久化策略,以及集群模式如主从复制、哨兵模式和Cluster集群。常见问题包括缓存雪崩、穿透和击穿,可通过随机过期时间、布隆过滤器、分布式锁等解决。相比Memcached,Redis支持更丰富的数据类型和持久化功能。
2025-07-29 15:46:38
1175
原创 Redis学习(一)
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储数据库,支持多种数据结构(如字符串、哈希、列表、集合等),常用于缓存、消息队列和实时数据分析等场景。
2025-07-29 10:39:01
433
原创 鱼皮项目简易版 RPC 框架开发(六)----最后的绝唱
本文为笔者阅读鱼皮的项目 《简易版 RPC 框架开发》的笔记,如果有时间可以直接去看原文前面的内容可以笔者的前面几篇笔记引用:1. 简易版 RPC 框架开发。
2025-07-29 09:46:24
471
原创 鱼皮项目简易版 RPC 框架开发(五)
该代码实现了一个基于JDK动态代理的RPC客户端代理类,用于远程调用服务。核心功能包括序列化请求、发送HTTP请求、处理响应及异常。
2025-07-29 09:01:34
693
原创 鱼皮项目简易版 RPC 框架开发(四)
这段代码实现了一个基于 HTTP 协议的 RPC 服务器请求处理器,负责接收客户端请求、反射调用本地服务方法并返回响应结果。核心功能包括请求反序列化、服务方法调用、结果封装和序列化响应。
2025-07-29 08:07:24
972
原创 鱼皮项目简易版 RPC 框架开发(三)
本文为笔者阅读鱼皮的项目 《简易版 RPC 框架开发》的笔记,如果有时间可以直接去看原文,前面的内容可以笔者的前面两个篇笔记在分布式系统中,RPC(远程过程调用)框架的核心挑战之一是如何高效地在网络间传输对象数据。序列化器模块正是解决这一问题的关键组件。本文将深入解析一个RPC框架中的序列化器实现,揭示其设计哲学与技术细节。
2025-07-28 21:07:56
1006
原创 鱼皮项目简易版 RPC 框架开发(二)
本文为笔者阅读鱼皮的项目 《简易版 RPC 框架开发》的笔记,如果有时间可以直接去看原文,前面的内容可以笔者的看第一篇笔记。
2025-07-28 16:44:09
1271
原创 鱼皮项目简易版 RPC 框架开发(一)
RPC(Remote Procedure Call,远程过程调用)是一种允许运行在一台计算机上的程序调用另一台计算机上子程序的技术。这种技术屏蔽了底层的网络通信细节,使得程序间的远程通信如同本地调用一样简单。RPC机制使得开发者能够构建分布式计算系统,其中不同的组件可以分布在不同的计算机上,但它们之间可以像在同一台机器上一样相互调用。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。
2025-07-28 09:56:41
1001
原创 用Java实现rpc的逻辑和流程图和核心技术与难点分析
A[客户端调用] --> B[动态代理生成代理对象]B --> C[代理对象拦截方法调用]C --> D[序列化请求参数]D --> E[网络传输层]E --> F[服务端接收请求]F --> G[反序列化请求]G --> H[反射调用目标方法]H --> I[执行业务逻辑]I --> J[序列化响应结果]J --> K[网络返回响应]K --> L[客户端接收响应]L --> M[反序列化响应]M --> N[返回调用结果]E --> E1[连接池管理]
2025-07-26 16:21:51
514
原创 RPC框架的简单理解
远程过程调用)是一种允许运行在一台计算机上的程序调用另一台计算机上子程序的技术。这种技术屏蔽了底层的网络通信细节,使得程序间的远程通信如同本地调用一样简单。RPC机制使得开发者能够构建分布式计算系统,其中不同的组件可以分布在不同的计算机上,但它们之间可以像在同一台机器上一样相互调用。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
2025-07-26 14:55:43
1077
原创 苍穹外卖CRUD代码解读
这里定义了一个抽象类 UserService,并定义了一个抽象方法wxLogin。该抽象方法返回类型是User。其他CRUD部分类推。
2025-07-22 11:08:29
241
原创 苍穹外卖服务层CRUD的结构解读
Data@Builder//微信用户唯一标识//姓名//手机号//性别 0 女 1 男//身份证号//头像//注册时间。
2025-07-22 08:26:47
292
原创 苍穹外卖pojo层解读(二)
在springboot中,对于一个bean类,注入其他bean的时候,常见的是使用@Autowired,实际上也可以使用构造函数注入,这个时候就可以使用@AllArgsConstructor或者@RequiredArgsConstructor来代替。,其核心思想是使用简单的Java对象实现业务逻辑,避免对特定框架的强依赖。@AllArgsConstructor:生成该类下全部属性的构造方法。提供的一种注解,用于简化构建对象的过程。相关的代码,使得对象的构建更加简洁和易读。注解,可以自动生成一个。
2025-07-05 16:22:50
508
原创 苍穹外卖pojo层内容(一)
③从输出来看,在进行返回响应时,若数据表有100 个字段,那么 PO 中就有 100 个属性,而界面可能只需要其中10 个属性,那么查询数据库后,对象就需要由PO 转化成 DTO。,这个概念来源于 J2EE 的设计模式,原来的目的是为了 EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低 网络负载,但本文,泛指用于。①单个大 DTO ,减少调用次数,只用创建一次,但是难以掌握传输的数据,不同的小 DTO ,要创建很多DTO,传输数据很清晰。当然,不建议这样命名。
2025-07-04 22:03:29
1096
原创 阿里云OSS,HttpClient,JwtUtil和WechatPayUtil工具类实战指南
由于JWTUtil类只创建、解析jwt,而不进行其它的业务逻辑,所以应该把Claims传递给其它方法处理。当然,为了方便,我们可以将Claims的数据拿出来,存储在一个Map中,再交给其它方法处理。由于签名用于确保信息有效,头部是配置信息,所以对于业务逻辑,最关键的是负载payload。当前端把jwt令牌传来时,我们要把它解析成可以理解的格式,所以也要有解析这一步骤。经过上面的学习,我们大概知道jwt是什么了,那么,就该了解它的使用方法了。过滤器的构建,是Spring MVC的内容,在此不介绍。
2025-07-04 16:08:32
760
原创 jwt令牌
【摘要】JWT(JSON Web Token)是一种跨平台的开放标准令牌,用于身份验证和信息传输。它由Header、Payload和Signature三部分组成,支持跨语言使用并可直接嵌入HTTP请求头。文章介绍了JWT在SpringBoot中的实现流程:用户登录成功后生成令牌,后续请求携带该令牌进行验证。技术实现包括Maven依赖配置、JWT工具类(生成/解析令牌)以及管理员/用户双拦截器设计(通过请求头验证令牌有效性)。该方案通过减少数据库查询提升系统性能,并通过签名机制确保令牌安全性。
2025-07-03 19:10:13
609
原创 映射阿里云OSS(对象存储服务)
Spring 会自动扫描使用了 @Controller 注解的类,并将其注册为控制器 Bean,在处理请求时自动将请求映射到相应的 @RequestMapping 注解标注的方法中进行处理。需要注意的是,@Component 注解通常作为其他更具体的注解(如 @Service、@Repository、@Controller 等)的基础,用于创建具有特定用途的组件。与 @Service 注解类似,使用 @Repository 注解标记的类也会被 Spring 扫描并自动注入到其他组件中。
2025-07-03 16:53:09
1184
原创 深入理解 Spring 的 MethodParameter 类
Override@Override// 从安全上下文中获取当前用户是 Spring 框架中处理方法参数元数据的核心类,它提供了:完整的类型信息(包括泛型)注解访问能力参数名发现能力方法/构造器上下文信息合理使用可以大大简化框架扩展开发,特别是在实现自定义参数解析器、返回值处理器等场景下。
2025-04-10 20:19:41
1001
原创 MyBatis复习(二)
若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射--resultMap:设置自定义映射属性:id:表示自定义映射的唯一标识type:查询的数据要映射的实体类的类型子标签:id:设置主键的映射关系result:设置普通字段的映射关系association:设置多对一的映射关系collection:设置一对多的映射关系属性:property:设置映射关系中实体类中的属性名column:设置映射关系中表中的字段名-->--></select>
2025-04-08 15:46:54
834
原创 MyBatis复习(一)
工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的 相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象。若mapper接口中的方法参数为单个的字面量类型 此时可以使用${}和#{}以任意的名称获取参数的值,注意${}需要手动加单引号。1={password=123456, sex=男, id=1, age=23, username=admin},alias:设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名且不区分大小。
2025-04-08 15:27:26
1028
原创 代码随想录算法训练营第十八天|栈与队列理论基础
栈与队列理论基础附:passion!!!passion!!!passion!!!栈与队列理论基础队列是先进先出,栈是先进后出。如图所示:在Java中,栈和队列是两种常见的数据结构,它们分别遵循后进先出(LIFO)和先进先出(FIFO)的原则。栈和队列的底层实现可以通过数组或链表来完成。
2025-03-26 08:36:05
237
原创 MySQL复习
book_name VARCHAR(20) COMMENT '图书名',book_price DOUBLE COMMENT '图书价格',book_num INT COMMENT '图书数量') CHARSET=utf8mb4 COMMENT='图书表';USE bms;DESC book;
2025-03-25 15:01:46
835
空空如也
以下这个代码有什么问题
2023-10-26
typora为什么变成这样了?
2023-10-20
问一下我的git为什么这样
2023-10-14
dev CPP出现了一些问题
2023-10-14
我大一新生在线提问,。、
2023-10-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人