- 博客(17)
- 收藏
- 关注
原创 ReentrantLock 源码详解
ReentrantLock 是 Java 并发包中提供的一种可重入锁,它比 synchronized 更加灵活,可以支持公平锁和非公平锁,同时还提供了一些高级功能,例如可中断、可限时等特性。
2023-04-18 13:39:06 174
原创 SpringBoot 项目通过 HttpServletRequest 获取 body 内容
@PostMapping("/test") public void test(HttpServletRequest httpServletRequest) { // 获取内容长度 int length = httpServletRequest.getContentLength(); // 新建缓存存放读取数据 byte[] buffer = new byte[length]; ServletInputStream in = null
2022-03-08 16:15:47 3764
原创 关于 Spring Cloud 全局异常处理的问题
最近在将公司项目改为 Spring Cloud,其中涉及到了全局异常处理的问题记录一下。全局异常处理是通过 @RestControllerAdvice 这个注解完成的,这里就不在阐述。首先我的全局异常处理是放在公共模块,然后通过 maven 引入各个微服务中但是,这样的话是不会生效的,我们需要在微服务启动类中去扫描这个异常类配置所在的包这样的话,Spring Cloud 中的全局异常处理就会生效了。...
2022-03-01 13:52:02 1687
原创 Docker-Compose 部署 Spring Boot + Mysql + Redis
Docker-Compose 部署 Spring Boot + Mysql + Redis配置 Spring Boot 项目中 Mysql 和 Redis 的信息spring: datasource: url: jdbc:mysql://主机地址:3306/account?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetri
2021-12-09 14:58:21 1310
原创 后台无法获取前端传入header的问题
遇到一个特别蛋疼的问题,后台始终无法后去前端传入的自定义header,搞了一个下午,终于把最终的原因找到了。首先了解一个知识点:过滤器如果发现是cors跨域复杂请求会先发送一个方法为OPTIONS的预检请求,这个请求是用来验证本次请求是否安全的。所以这就是问题的所在:第一次去判断header是否存在的时候,并不是前端传过来的请求,而是这次OPTIONS的预检请求,所以当然header始终为空啊!解决方法判断是否为OPTIONS请求,如果是则直接跳过这次请求就好。if ("OPTIONS".equa
2021-11-18 17:54:53 1481 1
原创 分布式锁实战-用户抢单
分布式锁实战-用户抢单首先说下业务需求:订单产生以后,用户通过平台进行抢单,只有一个用户最终会拥有订单。再来看一下项目架构:首先用户统一调用接口服务 api-order ,再由 api-order 调用 (负载均衡) service-order 集群。我们先看一下如果不加分布式锁会发生什么情况。api-order 代码: @GetMapping("/acceptOrderByExpert") public String acceptOrderByExpert(String ord
2022-05-19 17:56:46 489
原创 Eureka 优化
Eureka 优化自我保护优化自我保护机制Eureka在15分钟内收到服务端心跳数小于Eureka本应该收到的总心跳数 * 自我保护阈值(默认0.85)就会触发。该机制默认开启。等网络恢复后退出自我保护自我保护常用配置eureka: server: # 自我保护开关,默认开启 enable-self-preservation: true # 自我保护阈值,默认0.85 renewal-percent-threshold: 0.85 # 自我保护剔除时
2022-02-09 16:21:14 474
原创 Java 内部类的总结
Java 内部类的总结使用内部类的好处内部类的方法可以访问该类定义所在域中的数据,包括私有数据内部类可以对同一个包中的其他类隐藏当想定义一个回调函数且不想编写大量代码的时候,使用匿名内部类比较便捷内部类访问外部类内部类既可以访问自身的数据域,也可以访问创建它的外围类对象的数据域原理语法public class OuterClass { public static void main(String[] args) { OuterClass outerClass
2022-01-17 13:24:36 245
原创 Vue 拦截器的使用
Vue 拦截器的使用新建 axios.js 文件import axios from 'axios'import store from '../store'axios.defaults.headers.common['token'] = '123'// 添加请求拦截器axios.interceptors.request.use(config => { console.log(config) config.headers.common['token'] = store.getter
2021-12-17 09:52:56 275
原创 Spring Boot 项目搭建模板
Spring Boot 项目搭建模板首先来看一下项目结构看看项目实际都集成了哪些模块全局异常处理响应码枚举自定义统一响应体全局处理响应数据拦截器全局跨域阿里短信服务阿里 OSS 服务MyBatisMySQLRedisSwaggerJWTLombokHttps 认证全局异常处理首先来看一下代码的目录结构自定义异常/** * @description: 全局异常处理类 * @author: wubowen * @date: 2021/5/25 0025
2021-12-09 14:29:32 1098
原创 VMware + CentOS7 + NAT 配置外网连接
1.设置虚拟机网络连接方式为NAT模式2.修改相关VMware设置VMware-编辑-虚拟网络编辑器 如下图所示勾选并且填写子网以及子网掩码(可以自己随意填写)NAT设置,网关地址一般以2结尾3.Linux系统内设置进入此路径:/etc/sysconfig/network-scripts,编写ifcfg开头的配置文件,注意:文件名字个人可能不同,我的是:ifcfg-ens33。修改命令:vi ifcfg-ens33修改ifcfg-ens33相关配置,BOOTPROTO必须
2021-08-24 13:09:30 202
原创 实现自己的分页工具类
实现自己的分页工具类需求:根据传入的页数、每页条目数、List数组进行分页实现/** * @description: 分页工具类 * @author: wubowen * @date: 2021/7/5 0005 15:50 */public class PageUtil { public static PageEntity startPage(int pageNum, int pageSize, List data) { int total; //
2021-07-05 16:53:26 75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人