- 博客(43)
- 收藏
- 关注
原创 持久层接口开发
通常一个接口定义后,从持久层开始开发。对于一个新模块需要使用工具生成模型类、mapper接口、mapper映射文件等,下边介绍一个工具用于自动生成代码。
2024-08-24 19:10:04
205
原创 接口如何定义
接口设计完成之后,需要出接口文档。根据要求可以出word类型、excel类型都可以;如果没有特殊要求,使用swagger生成接口文档较为方便。根据接口设计的内容编写controller方法,最后通过swagger生成接口文档。
2024-08-24 16:18:09
197
原创 接口如何设计
在企业中,前后端分离开发是一种常见的开发模式。在这种模式下,Java 程序员通常负责设计和实现后端 API 接口,而前端工程师则根据这些接口来开发用户界面和功能。首先明确该接口是一个前后端交互接口,该接口由前端通过HTTP协议进行调用,前端去调用接口需要知道以下内容:HTTP请求方法接口路径请求参数类型请求参数内容响应结果类型响应结果状态码响应结果内容所以我们设计接口需要设计这些内容。
2024-08-24 15:54:17
631
原创 快速融入新项目开发
进入一家新公司初次接触一个新项目应该从哪里入手呢?怎么做才能快速的去熟悉项目并顺利进入开发工作?首先去熟悉项目大概情况,包括:项目的背景、项目业务流程、项目架构等。然后根据自己所分配的业务模块,去理解它的需求及设计。了解的差不多了就可以进入模块开发,参考同类型的业务模块尝试动手开发。
2024-08-24 14:36:50
399
原创 Maven 常用命令
执行时,Maven 会执行整个生命周期的默认阶段,包括编译、测试、打包和安装。因此,你不需要单独执行,Maven 会在install阶段自动完成打包操作。这个命令综合了构建的多个步骤,并将结果安装到本地仓库,便于本地项目引用。
2024-08-23 20:09:39
653
原创 路线规划之Neo4j
Neo4j 是一个领先的图数据库管理系统,以其高效处理和查询复杂关系数据的能力而闻名。它使用图结构存储数据,能够直观地表示实体及其之间的关系,非常适合处理社交网络分析、推荐系统、网络安全、供应链管理等场景中的复杂关系和连接数据。Neo4j 是一个功能强大的图数据库系统,专注于处理和查询复杂的关系数据。凭借其灵活的图数据模型、高效的关系查询能力以及丰富的生态系统,Neo4j 在许多领域中得到了广泛应用。它不仅适用于传统的数据库应用场景,还能够处理需要分析和查询复杂关系的现代应用程序。
2024-08-20 13:32:42
786
原创 基于RabbitMQ的消息监听器
RabbitMQ是一种广泛使用的消息队列(Message Queue)系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于在不同的系统或组件之间传递消息。通过消息队列,系统可以实现解耦、异步处理、负载均衡等特性,从而提高系统的可扩展性和可靠性。这段代码的主要作用是通过监听RabbitMQ消息队列,处理微服务A中与机构相关的消息。在微服务B中通过解析消息内容,动态确定消息的类型和需要执行的操作,并调用相应的服务处理该消息。
2024-08-19 16:42:56
956
原创 单体项目转换为微服务架构
从单体项目到微服务架构的转变,是一个逐步优化的过程。上述各个方面涵盖了从服务注册、通信、网关管理、配置管理、服务保护、事务处理、监控、数据库管理到DevOps等多个方面的考虑。通过合理的架构设计和工具的使用,可以逐步实现系统的分布式部署和扩展,提高系统的可维护性和可用性。
2024-08-15 21:46:02
622
原创 模型类DTO、PO、VO
DTO(数据传输对象)用于不同层之间的数据传递,轻量化,字段通常为业务逻辑所需。PO(持久化对象)是直接与数据库表对应的实体类,负责数据库操作。VO(值对象)是用于前端展示的数据封装,通常包含组合或处理后的数据。
2024-08-15 17:52:15
876
原创 两种变量初始化方法的区别
例如,你可能在后续代码中通过某种条件判断来决定是否创建或赋值一个。,但在某些情况下(如集合或数组)会检查更多条件。两种方式主要在于是否创建和分配了内存给。,并影响后续对该变量的使用。对象,这时候初始化为。,这个方法通常也会返回。
2024-08-15 16:10:03
773
原创 责任链设计模式
责任链设计模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合。责任链模式通过将这些对象连成一条链,并沿着这条链传递请求,直到某个对象处理它为止。
2024-08-15 10:04:49
460
原创 BigDecimal高精度运算
当两个整数进行除法运算时,直接相除会丢弃小数部分,得到一个整数结果。然而,通过使用BigDecimal类或工具类方法(如 Hutool 的),可以保留小数部分并得到一个精确的BigDecimal结果。这种方法特别适用于需要高精度计算的场景,例如财务、科学计算等。
2024-08-14 19:45:54
772
原创 枚举(enum)的用法及代码讲解
上述代码实现了以下逻辑:1. **识别经济区**: 通过检查收件省份和发件省份是否都属于同一个经济区,来确定它们是否在同一区域内互寄。2. **查询运费模板**: 如果找到了匹配的经济区,就根据运费模板类型、运输类型,以及关联的城市信息,查询是否存在对应的运费模板。通过这种方式,系统可以确保在处理运费计算时,考虑到经济区之间的互寄场景,选择正确的运费模板来处理运费的计算和应用。
2024-08-14 16:52:59
964
原创 StremUtil使用
在这里,`ObjectUtil.notEqual` 用于检查当前的 `CarriageEntity` 对象的 `id` 是否与 `carriageDto` 的 `id` 不相等。- 有些终端操作会在满足条件后立即停止流的处理,如 `anyMatch`、`allMatch`、`noneMatch`、`findFirst`、`findAny`。- 常用的中间操作包括 `filter`(过滤)、`map`(映射)、`flatMap`(展平映射)、`sorted`(排序)、`distinct`(去重)等。
2024-08-14 11:01:38
1100
原创 Controller上的相关注解
**`@Slf4j`**:提供日志功能。- **`@Validated`**:启用参数验证。- **`@RestController`**:将类标识为 RESTful 控制器,返回值直接写入响应体。- **`@Api(tags = "运费管理")`**:为 Swagger API 文档添加描述。- **`@RequestMapping("/carriages")`**:为控制器定义一个基础路径 `/carriages`。
2024-08-13 15:57:47
583
原创 MyBatis-Plus 提供的一个通用服务层实现类
**`@Service`**:标识为服务层组件,供 Spring 容器管理。- **继承 `ServiceImpl`**:继承了 MyBatis-Plus 提供的通用实现类,自动具备了基础 CRUD 操作的功能,简化了服务层代码。- **实现 `CarriageService`**:实现了自定义的业务逻辑接口,可以扩展更多与 `CarriageEntity` 相关的业务操作。
2024-08-12 22:12:47
820
原创 MyBatis-Plus 框架提供的一种通用服务接口
通过继承 `IService`,`CarriageService` 接口具备了 MyBatis-Plus 提供的基础 CRUD 功能,同时允许你在 `CarriageService` 中添加更多特定于 `CarriageEntity` 的业务逻辑方法。这个设计使得你的服务层更加简洁和功能强大,避免了手动编写重复的 CRUD 代码,同时保留了扩展业务逻辑的灵活性。
2024-08-12 21:30:34
303
原创 MyBatis-Plus 提供的通用 Mapper 接口
在 Java 中,`extends` 关键字表示类的继承,允许一个类继承另一个类的属性和方法。在下面代码中,`CarriageMapper` 接口继承了 `BaseMapper`,这表示 `CarriageMapper` 接口继承了 `BaseMapper` 接口中定义的所有方法和功能,并将这些方法应用于 `CarriageEntity` 实体类。
2024-08-12 21:17:39
422
原创 数据库表对应的实体类上的相关注解
这些注解是Java中常用的Lombok库和MyBatis-Plus框架提供的,用于简化实体类的开发和ORM映射。下面是对每个注解的解释:- 这是Lombok库的一个综合注解,包含了以下几个注解的功能:- `@Getter`: 为所有字段生成getter方法。- `@Setter`: 为所有字段生成setter方法。- `@ToString`: 为类生成`toString()`方法。- `@EqualsAndHashCode`: 为类生成`equals()`和`hashCode()`方法。
2024-08-12 20:55:11
853
原创 protobuf序列化
Protocol Buffers (protobuf) 是一种轻量级、高效的数据序列化格式,由 Google 开发。它被设计用于高效地在不同平台和语言之间进行数据通信和存储。protobuf 提供了一种结构化的方式来定义数据模型,并生成用于序列化和反序列化数据的代码。protobuf是一种比json和xml等序列化工具更加轻量和高效的结构化数据存储格式。
2023-12-26 11:52:37
1095
原创 Linux Programmer‘s Manual
在终端中输入命令”man” 加上你想要查询的命令或程序,例如:”man ls”。按下回车键后,系统会在屏幕上显示出该命令的手册页面。
2023-12-17 22:21:03
399
1
原创 epoll使用详解
1. 每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大;而epoll保证了每个fd在整个过程中只会拷贝一次。2. 每次调用select都需要在内核遍历传递进来的所有fd;而epoll只需要轮询一次fd集合,同时查看就绪链表中有没有就绪的fd就可以了。3. 内核仅会将有 IO 事件的文件描述符返回给用户,用户也无需遍历整个文件描述符集合。4. 没有文件描述符1024的限制(poll和epoll都是)
2023-12-17 22:15:46
477
1
原创 IO多路复用之select、poll、epoll
epoll是Linux目前大规模网络并发程序开发的首选模型。在绝大多数情况下性能远超select和poll。目前流行的高性能web服务器Nginx正式依赖于epoll提供的高效网络套接字轮询服务。但是,在并发连接不高的情况下,多线程+阻塞I/O方式可能性能更好。
2023-12-07 15:06:22
930
1
原创 fprintf 和 sprintf 的用法和区别
输出目标不同:`fprintf` 将格式化数据输出到文件流,而 `sprintf` 将格式化数据写入到字符串中。-参数类型不同:`fprintf` 的第一个参数是文件流指针,而 `sprintf` 的第一个参数是目标字符串的指针。
2023-11-21 15:01:42
315
原创 理解 char*、char** 和 char*[] 的区别
3. `char*[]`:`char*[]` 是一个字符串指针数组,也称为 C 字符串数组。它是一个一级指针数组,每个元素都是一个 `char*` 类型的指针,指向一个字符串。2. `char**`:`char**` 是一个指向指针的指针,也称为指向 C 字符串的指针数组。1. `char*`:`char*` 是一个指向字符的指针,也称为 C 字符串。需要注意的是,在 C 语言中,`char*[]` 和 `char**` 在某些上下文中可以互换使用,但它们的语义和用法略有不同。以上两种写法效果等同。
2023-11-21 11:43:59
899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人