在开发Spring Boot应用时,我们经常面临着不同的控制器方法需要处理各种不同类型的响应结果,以及在代码中分散处理异常可能导致项目难以维护的问题。你是否曾经遇到过在不同地方编写相似的返回格式,或者在处理异常时感到有些混乱?这些看似小问题的积累,实际上可能对项目产生深远的影响。统一结果返回和统一异常处理并非只是为了规范代码,更是为了提高团队的协作效率、降低项目维护的难度,并使代码更易于理解和扩展。
最近经常阅读微信公众号的文章,发现有很多优秀的技术文章,每每转发给自己保存想后续再看的时候,回头已经发现被删除了,又或者是因为转发了其他的内容,又或者是多设备登录导致转发的聊天记录消失了,所以为了避免以上问题。掏出了jsoup进行了一番研究之后,决定把微信公众号的文章直接爬到本地收藏观看,废话不多说直接上代码。 @Service @RequiredArgsConstructor public
用netty做websocket广播的时候,发现两个玩家的时候,各自单独的消息广播没有问题,当消息群发的时候就出问题,其他人收不到,然后就出现IllegalReferenceCountException refCnt: 0, decrement:
示例代码 分页插件配置 package com.example.demo.conf; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @MapperScan(basePackages = "com.example.demo.mapper") public class MybatisPlusConfig {
布隆过滤器是一个精巧而且经典的数据结构。 你可能没想到:RocketMQ、 Hbase 、Cassandra 、LevelDB 、RocksDB 这些知名项目中都有布隆过滤器的身影。 对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。 1 缓存穿透 我们先来看一个商品服务查询详情的接口: public Product queryProductById (Long id){ // 查询缓存 Product product =
作为卓越工程文化的一部分,Code
问题 - 递归循环 java.lang.StackOverflowError at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863) at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863) at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863) at
1. 场景 在我们实际开发中,枚举类型应用十分广泛,可以避免在项目中定义大量的『魔法值』变量。但是,在 web 开发中,如何将枚举对象作为请求参数传进 Controller,做到类型自动转换?直接使用 @RequestParam 和 @RequestBody 断然是不够的,这里就需要我们自定义 Converter 来实现类型转化了。 2. 需求 比如一个用户对象,里面的性别属性,我们定义一个枚举类型
在项目开发中我们经常会遇到各种参数校验,尤其是表单参数的校验。当参数不多时我们可以在控制器中手动校验,但是一旦遇到需要校验的参数较多的post接口时,还去一个个的校验的话那会累死个人。 其实,Spring框架给我们提供了对象校验的API,可以帮助我们省去逐一手动校验接口参数的烦恼。 本文就和大家一起系统学习一下Spring
springboot日志配置: springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。 一、使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了) 1、在项目的resources目录下创建一个【logback-spring.xml】日志配置文件 名称只要是一 logback开头就行,测试使用log.xml并不会生成日志。合法名称:logback.xml
Redis的Set集合中如何把对象根据某个值的数据去重,简简单单就是重写对象的HashCode就可以了。 @SuppressWarnings("NonFinalFieldReferencedInHashCode") @Override public int hashCode() { return this.id == null ? super.hashCode() : this.id.hashCode(); } @SuppressWarnings("NonFinalFieldReferenceInEquals") @Override public boolean equals(Object obj) { if (obj instanceof BlogComment) { if (this.id == null && ((BlogComment) obj).id == null) {
你敢相信一个日均不到20个访客的博客居然用es来记录访问日志. 简介 Elasticsearch 是一个分布式的开源搜索和分析引擎,在 Apache Lucene 的基础上开发而成。 Lucene 是开源的搜索引擎工具包,Elasticsearch 充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易, 而最重要的是, 正如名字中的“ elastic ”所示,
虽然平时大部分工作都是和Java相关的开发, 但是每天都会接触Linux系统, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行环境中. 自己记忆力不好, 很多有用的Linux命令不能很好的记忆, 现在逐渐总结一下, 以便后续查看. 基本操作 Linux关机,重启 # 关机 shutdown -h now # 重启 shutdown -r now 查看系统,CPU信息 # 查看系统内核信息 uname -a # 查看系统内核版本 cat /proc/version #
软件简介 knife4j是为Java
一、简介 在实际的业务系统开发过程中,操作 Excel 实现数据的导入导出基本上是个非常常见的需求。 之前,我们有介绍一款非常好用的工具:EasyPoi,有读者提出在数据量大的情况下,EasyPoi 会占用内存大,性能不够好,严重的时候,还会出现内存异常的现象。 今天我给大家推荐一款性能更好的 Excel 导入导出工具:EasyExcel,希望对大家有所帮助! easyexcel 是阿里开源的一款