java实战开发
文章平均质量分 65
java实战开发
Gangbb
这个作者很懒,什么都没留下…
展开
-
Java判断对象列表中对象某属性是否都相同
【代码】Java判断对象列表中对象某属性是否都相同。原创 2023-07-04 10:08:38 · 1498 阅读 · 0 评论 -
java比较相同/不同对象中的指定字段是否相同
【代码】java比较相同/不同对象中的指定字段是否相同。原创 2023-06-20 14:23:36 · 890 阅读 · 0 评论 -
Java快速比较同一个类的不同实例字段值的异同
类A定义了很多个属性。实例化出了A的两个对象B和C,并且B与C中的字段值有些相同有些不同。比较出B和C哪些字段值相同哪些不同。例如,有业务需求要记录某一个表单每次修改的操作记录,详细到每个字段的值有什么改变。原创 2023-05-31 20:14:07 · 697 阅读 · 0 评论 -
Java实现多线程有几种方式(满分回答)
Java实现多线程有几种方式原创 2023-02-22 12:03:06 · 5651 阅读 · 0 评论 -
BigDecimal使用注意避坑
BigDecimal使用避坑原创 2023-02-19 16:23:57 · 937 阅读 · 0 评论 -
阿里巴巴《Java开发手册(黄山版)》阅读笔记
前言书籍开源地址:https://github.com/alibaba/p3c本文主要节选一些部分开发中一些自己没有注意到的点,会选择性的舍去一些已经养成的好的编码习惯及一些阿里企业特性比较强的规范。一、编码风格(一)命名风格(二)常量定义1.【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。反例:// 开发者 A 定义了缓存的 key。String key = "Id#taobao_" + tradeId;cache.put(key, value);// 开发原创 2022-03-12 10:24:16 · 933 阅读 · 1 评论 -
Idea设置生成toString()方法带父类toString()方法
Alt + Insert选择toString()点击Settings新建一个模板模板内容public java.lang.String toString(){final java.lang.StringBuilder sb = new java.lang.StringBuilder("$classname").append('[') #if ( $class.hasSuper ) .append(super.toString()) #end#set ($i =.原创 2022-03-10 17:13:54 · 2271 阅读 · 0 评论 -
Java中快速对列表排序去重、排序
一、集合泛型为基本包装类初始物料数据List<String> list = new ArrayList<>();list.add("all");list.add("dfg");list.add("bnm");list.add("cff");list.add("uii");list.add("uii");1. 转Set作用: 去重System.out.println(list);Set<String> set = new HashSet<&g原创 2022-03-10 17:05:59 · 2159 阅读 · 0 评论 -
Springboot项目中获取当前服务端口号
1. 启动时获取@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })public class AdminApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(AdminApplication.class); Environment原创 2022-03-09 13:33:36 · 6708 阅读 · 1 评论 -
坑:mybatis-plus字段名为关键字的错误
报错截图:很明显condition是mysql的关键字,查询和插入都会有问题。在数据表对应的实体类中的字段上需要使用@TableField注解标记。/** * 项目研究基础-具备条件情况 */@TableField("`condition`")private String condition;以后取字段名的时候,尽量避开数据库的关键字!...原创 2022-02-08 10:04:59 · 2314 阅读 · 0 评论 -
Springboot实现 其他属性条件 校验注解
文章目录1. 使用场景2. 技术实现2.1 实现思路2.2 代码实现2.2.1 引入依赖2.2.2 自定义校验注解2.2.3 校验工具类2.2.4 校验处理逻辑3. 使用示例1. 使用场景例如:当属性condition=1时,某某参数为必填;某某参数为必填且只能为某些值或不能为某些值。支持扩展场景:只允许填入某些值不允许填入某些值如果使用注解的属性是对象,可以控制是否对对象中的属性进行再校验2. 技术实现2.1 实现思路使用Hibernate Validator校验工具,自定义校原创 2022-01-29 17:01:38 · 1720 阅读 · 0 评论 -
SpringBoot项目自定义校验枚举注解
文章目录1. 使用场景2. 技术实现2.1 实现思路2.2 代码实现2.2.1 引入依赖2.2.2 自定义校验注解2.2.3 校验工具类2.2.4 校验处理逻辑3. 使用示例1. 使用场景某接口的入参某属性,只希望为系统中某枚举的中定义过的值。例如:用户类型枚举中定义 10-普通用户 20-管理员 30-游客 40-中级用户 50-高级用户希望某接口的入参 userType 只能填入这几种type支持扩展场景:只允许填入枚举中定义过的某些值不允许填入某些值2. 技术实现2.1原创 2022-01-29 16:15:45 · 3209 阅读 · 0 评论 -
Springboot项目使用smart-doc+Apifox 便捷生成管理接口文档
文章目录1. 前言2. 使用流程3. 使用示例1. 前言相信大家在Java开发中都用过不少接口文档工具,最常见的就是Swagger了。但它有一个不好的缺点就是,想要接口文档清晰和美观需要加入许多声明和注解,代码的侵入性很强。最近在维护一个老的项目,项目中没有用到Swagger,之前前后端的交互用的是Yapi,接口写好了,手动在Yapi上手写一遍文档,真的要吐血,于是决定寻找一款工具可以方便快捷的生成API文档。于是乎百度谷歌各类工具,以下是我尝试过的工具或者平台:可以说市面上常用的都试过了一遍,最后原创 2022-01-19 19:47:14 · 7989 阅读 · 3 评论 -
Mybatis Plus构造查询一周内、一月内、一年内的条件构造器
话不多说,直接上代码!构造条件代码private <T extends BaseEntity> LambdaQueryWrapper<T> buildQueryWrapper(NewBigDataBaseDTO dto){ Integer timeType = dto.getTimeType(); Date currentDate = new Date(); LambdaQueryWrapper<T> lqw = W.原创 2022-01-17 14:09:07 · 7225 阅读 · 2 评论 -
Sentinel自定义返回和实现区分来源
文章目录1. 自定义错误返回2. 实现区分来源1. 自定义错误返回因为流控和降级页面报的异常都是相同的,所以可以优化一下。使用官方的接口BlockExceptionHandler(2.2.7.RELEASE)、UrlBlockHandler(0.9.0.RELEASE)定义处理类:@Componentpublic class MyUrlBlockHandler implements BlockExceptionHandler { @Override public voi原创 2022-01-14 07:30:17 · 796 阅读 · 0 评论 -
最新Windows环境下搭建RocketMQ及其控制台环境
文章目录1. 搭建RocketMQ1.1 下载RocketMQ1.2 配置RocketMQ环境变量1.3 启动NAMESERVER1.4 启动BROKER2. 安装官方控制台扩展1. 搭建RocketMQ1.1 下载RocketMQ官网下载地址:https://rocketmq.apache.org/release_notes选择合适的版本下载Binary下载之后解压:1.2 配置RocketMQ环境变量系统变量名: ROCKETMQ_HOME系统变量值: D:\Develop\Ro原创 2022-01-13 10:34:20 · 1739 阅读 · 1 评论 -
更新容器内jenkins版本
如此丝滑简单!自己瞎搞半天!# 进入容器docker exec -it -u root jenkins容器名 bash# 进入war包的存放路径cd /usr/share/jenkins# 备份旧包,新包代替mv jenkins.war jenkins.war-bakwget http://mirrors.jenkins.io/war/latest/jenkins.war# 退出容器exit# 重启容器docker restart jenkins容器名...原创 2022-01-12 19:11:32 · 363 阅读 · 0 评论 -
Sentinel与控制台通信原理剖析及控制台相关配置
文章目录1. Sentinel与控制台通信原理剖析2. 控制台相关配置项1. Sentinel与控制台通信原理剖析控制台是如何获取到微服务的监控信息的?用控制台配置规则时,控制台是如何将规则发送到各个微服务的呢?微服务注册到Sentinel控制台后,会定时发送心跳!(其实就是Sentinel实现了服务发现机制)注册/心跳发送 实现源码com.alibaba.csp.sentinel.transport.heartbeat.SimpleHttpHeartbeatSender(其实就是个定时原创 2022-01-11 15:14:37 · 333 阅读 · 0 评论 -
服务容错Sentinel的降级规则和热点规则探究
文章目录1. 降级规则1.1 降级策略-RT1.2 降级策略-异常比例1.3 降级策略-异常数2. 热点规则1. 降级规则官方文档描述:https://github.com/alibaba/Sentinel/wiki/降级相关源码:com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule#passCheckSentinel的断路器没有半开状态相关Issue :https://github.com/alibaba/Sentinel/pull原创 2022-01-11 00:06:01 · 412 阅读 · 1 评论 -
服务容错Sentinel的流控规则探究
文章目录1. 流控模式--直接2. 流控模式--关联3. 流控模式--链路4. 流控效果--快速失败5. 流控效果--Warm Up6. 流控效果--排队等待1. 流控模式–直接控制台设置流控再次访问,QPS超过1就报异常2. 流控模式–关联当关联的资源达到阈值,就限流自己场景:内容中心有两个API,一个是查询share表,另一个是修改share表的数据,这是高并发的应用,所以查询接口的调用速度过快,就会影响修改接口的性能,相反也一样。这时可以根据业务需求来衡量优先读还是优先修改!如何希原创 2022-01-09 17:41:27 · 312 阅读 · 0 评论 -
windows环境搭建nacos服务并注册服务
文章目录1. Nacos下载和运行2. 测试项目注册到naocs1. Nacos下载和运行下载地址:https://github.com/alibaba/nacos/releasesset MODE="standalone"启动成功登陆页面2. 测试项目注册到naocs测试项目添加依赖:<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId原创 2022-01-07 19:45:04 · 606 阅读 · 0 评论 -
java对接云之家群聊机器人
文档地址:https://www.yunzhijia.com/opendocs/doc.html?#/api/im/im-robot我这边的需求是使用他们的默认样式的应用类消息类似这样的。其实也没有什么难度,就是json格式对上就行了。对象封装:/** * 对接云之家请求参数 * * @author Gangbb * @date 2022/1/4 **/@Datapublic class RobotDto { private String content; priv原创 2022-01-07 00:07:20 · 511 阅读 · 0 评论 -
坑:SpringBoot Request method ‘DELETE ‘/ ‘POST‘ not supported (自己坑自己)
先看看报错的信息:(用的swagger增强Knife4j接口文档调试工具)控制台也就只报:Request method ‘DELETE’ not supported排查了一堆,看到百度说,配置:# 启用hiddenMethod过滤器spring.mvc.hiddenmethod.filter.enabled=true然而并没有什么用。后面改用PostMan又测了一遍:(后台终于有报错信息了)哦!…尴尬了@DeleteMapping("/{deptIds}")public ApiR原创 2022-01-04 07:26:40 · 3705 阅读 · 2 评论 -
jsckson全局配置null转““或[]返回
实现了使用jsckson序列化工具,全局当字符串返回值为null时,处理成返回" ";当集合返回值null时,处理成返回[]。下面是Jackson所有的配置实践,不单是上述内容话不多说,直接上代码!文章目录1. 自定义处理集合为null的JsonSerializer2. 自定义BeanSerializerModifier3. Jackson主配置类4. Yaml文件配置1. 自定义处理集合为null的JsonSerializerimport com.fasterxml.jackson.core.原创 2022-01-03 07:14:59 · 459 阅读 · 0 评论 -
fastjson全局配置超详解
话不多说,直接看代码!import cn.hutool.core.util.ReflectUtil;import com.alibaba.fastjson.serializer.PropertyPreFilter;import com.alibaba.fastjson.serializer.SerializeConfig;import com.alibaba.fastjson.serializer.SerializerFeature;import com.alibaba.fastjson.se.原创 2022-01-03 07:02:49 · 7564 阅读 · 1 评论 -
Myatis中MappedStatement对象属性详解
MappedStatement:描述< select|update|insert|delete >或者@Select、@Update等注解配置的SQL信息所有属性源码:private String resource;private Configuration configuration;private String id;private Integer fetchSize;private Integer timeout;private StatementType statement原创 2021-12-25 20:09:17 · 1467 阅读 · 0 评论 -
坑:阿里云服务器 SpringBoot项目启动后,无法通过IP地址访问
如图:服务器内网能访问了。通过ip访问不了。看了网上一堆:防火墙端口开启对应端口服务器放行端口修改配置文件application.properties中 server.address = 0.0.0.0服务器httpd服务异常1、查看httpd服务 chkconfig --list httpd提示服务不存在2、安装httpd 服务 yum --disableexcludes=all install -y httpd3、启动httpd服务 service httpd start原创 2021-12-22 08:36:19 · 2698 阅读 · 1 评论 -
坑:Redisexception; nested exception isio.lettuce.core.RedisException:java.io.IOException
今天启动项目的时候,访问首页报了排查了一番发现是开启了protected-mode模式。redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:1、关闭protected-mode模式,此时外部网络可以直接访问2、开启protected-mode保护模式,需配置bind ip或者设置访问密码找到服务器的redis配置文件vim redis.conf修改 protected-mode yes 改为:protecte原创 2021-12-22 08:26:56 · 11086 阅读 · 0 评论 -
mapstruct坑:Internal error in the mapping processor: java.lang.NullPointerException at org.mapstruct.
项目中如果使用了mapstruct框架,在使用Idea新版本后,启动会报错!解决方案:方案一Idea设置:Setting -->Build,Execution,Deployment -->Compiler -->User-local build process VM options (overrides Shared options):加上参数:-Djps.track.ap.dependencies=false方案二mapstruct框架引入版本升至1.4.1.Fina原创 2021-12-18 11:41:49 · 10146 阅读 · 0 评论 -
Springbooot配置logback日志详解及实践
文章目录一、 前言二、使用详解1. logback介绍2. logback配置2.1 基本配置2.2 Logback 配置项详解2.3 Logback配置打印信息着色2.4 不同环境配置不同的日志级别2.5 完整配置示例一、 前言日志框架的选型来说最快的肯定还是log4j2,TPS能提升6倍多。但是2021年12月10日,log4j2又被爆出高危漏洞。(前几个月刚开会说用log4j2,淦!赶紧又换回来了 )看来不愧是SpringBoot默认的日志实现,logback还是相对稳定的。现在还是来详细弄一原创 2021-12-13 19:11:37 · 1603 阅读 · 0 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(5)--整合日志实现
本章结束后对应的节选代码文件:Gangbb-Vue-05-Log历史遗留TODO:第三章mybatis缓存暂时没用到,后面整合redis后用redis做缓存(整合Redis完成)。重写mybatis配置文件扫描mapper(日志整合章节完成)整合暂时没有用到druid数据源,后续会用到本章将留下TODO:第四章登录日志还未实现。(到登录和权限模块完成)LogAspect从缓存获取当前的用户信息使用模拟的数据(到登录和权限模块完成)本章将解决TODO:第三章重写.原创 2021-03-10 18:29:59 · 7457 阅读 · 6 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(10)--Spring Security核心内容梳理
文章目录1. 选型原因2.Spring Secutity核心内容2.1 Spring Secutity中的用户信息2.2 密码加密2.3 Spring Security的配置2.4 认证过程2.5 过滤器和过滤链2.6 权限相关本章是Spring Security理论和概念的东西,没有实际的搭建产出,为下节做个铺垫。只是介绍Spring Security一些核心要用到的东西,Spring Security的功能还是很强大的,有兴趣可以系统的学习和了解历史遗留TODO:第四章登录日志还未实现。原创 2021-04-29 17:50:16 · 5574 阅读 · 3 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(4)--链接Mysql和整合mybatis
历史遗留TODO:无本章将留下TODO:第三章mybatis缓存暂时没用到,后面整合redis后用redis做缓存(整合Redis完成)。重写mybatis配置文件扫描mapper(日志整合章节完成)整合暂时没有用到druid数据源,后续会用到1. 添加依赖整体思路:父项目:引入pagehelper-spring-boot-starter(后面分页实现使用的分页插件),并规定版本号。pagehelper-spring-boot-starter内含依赖:(主要是有整合myb.原创 2021-03-10 18:26:24 · 4166 阅读 · 1 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理
文章目录1.新建一个Resourse Bundle2. 自定义WebMvcConfigurer类来实现国际化配置3. 测试使用4. 获取i18n资源文件工具类本章结束后对应的节选代码文件:Gangbb-Vue-07-i18n项目地址:https://github.com/Gang-bb/Study-Record/tree/main/Gangbb-Vue历史遗留TODO:第四章登录日志还未实现。(到登录和权限模块完成)LogAspect从缓存获取当前的用户信息使用模拟的数据(到登录和权限模原创 2021-03-12 12:04:01 · 6417 阅读 · 5 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(8)--统一对象返回和错误处理
文章目录1. 定义统一返回对象2. 自定义异常类及错误码规范2.1 自定义异常类ApiException2.2 错误状态码示例3. 全局异常处理4. 测试本章结束后对应的节选代码文件:Gangbb-Vue-08-ResAndException项目地址:https://github.com/Gang-bb/Study-Record/tree/main/Gangbb-Vue历史遗留TODO:第四章登录日志还未实现。(到登录和权限模块完成)LogAspect从缓存获取当前的用户信息使用模拟原创 2021-03-12 12:08:28 · 5635 阅读 · 5 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(1)--概述
一. 阅读本系列须知本人是一个初级JAVA新手,自己研究技术,选择了若依开源项目。我这个人有点强迫症,用一项技术或者框架,总想着方方面面都给整明白了才用得舒心。本着这个态度我开始研究从零搭建。目前趋势都是前后端分离,所以本系列选择的版本是若依前后端分离的3.3版本(Ruoyi-Vue 3.3)。本系列是把框架核心的功能,还有个人觉得重要和研究比较多的技术搭建做个人理解的梳理,一些犹如字符串处理、网络工具…等工具类的封装不会过多提及。(当然后续有时间也有找些重要的分析分析,毕竟我是强迫症!)原创 2021-03-10 17:58:08 · 10655 阅读 · 1 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(12)--问题总结和之前章节优化
文章目录1. 错误返回处理和异常捕捉相关优化修改2. 参数校验专题2.1 添加pom.xml2.2 实现思路3.修改一些之前文件的本章结束后对应的节选代码文件:Gangbb-Vue-12-13-Login(与13章合并)https://github.com/Gang-bb/Study-Record/tree/main/Gangbb-Vue历史遗留TODO:第四章登录日志还未实现。(到登录和权限模块完成)LogAspect从缓存获取当前的用户信息使用模拟的数据(到登录和权限模块完成)原创 2021-07-16 16:11:16 · 1055 阅读 · 0 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(6)--整合Redis缓存
文章目录1. 添加依赖1.1 Gangbb-common的pom.xml2. Redis数据库连接信息配置3. 在RedisConfig中自定义RedisTemplate解决序列化问题4. 封装RedisUtil --Redis常用命令工具类5.Redis测试使用6. Mybatis使用Redis做二级缓存本章结束后对应的节选代码文件:Gangbb-Vue-06-Redis项目地址:https://github.com/Gang-bb/Study-Record/tree/main/Gangbb-Vu原创 2021-03-12 12:00:55 · 9897 阅读 · 4 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(14)--小总结
怎么说呢,算是一个暂完结吧!完成任务✅确定项目目录和工程结构 ✅整合日志 ✅整合国际化消息处理 ✅同一对象返回和错误处理 ✅SpringSecurity基础功能 ✅若干工具类✅basecontroller(待优化) ✅登录鉴权 ✅整合Druid多数据源 ✅整合Redis缓存 ✅整合mysql和mybatis✅pagerhelper分页插件 .…等等, 总体来说也才是刚刚有一些雏形。本来计划要实现的东西更加多,但是随着接触Java的时间变长和项目的历练,发现自己的能力目前还是比较有限,搭出来原创 2021-07-16 16:39:31 · 2053 阅读 · 6 评论 -
从零搭建若依(Ruoyi-Vue)管理系统(13)--登录和鉴权的实现
文章目录1. 新建相关数据表3. 登录和鉴权处理逻辑3.1 状态码3.2 新增登录用户信息类3.3 UserDetailsServiceImpl3.3 token认证过滤器 JwtAuthenticationTokenFilter3.4 跨域过滤器配置3.5 退出处理类3.6. 注入Spring Security配置文件3.7 用户权限处理service SysPermissionService4. 登录接口实现4.1 新增用户接口4.2 生成验证码接口4.3 登录接口本章结束后对应的节选代码文件:原创 2021-07-16 16:18:49 · 7792 阅读 · 5 评论