- 博客(17)
- 收藏
- 关注
原创 ReentrantLock 源码详解
ReentrantLock 是 Java 并发包中提供的一种可重入锁,它比 synchronized 更加灵活,可以支持公平锁和非公平锁,同时还提供了一些高级功能,例如可中断、可限时等特性。
2023-04-18 13:39:06
300
原创 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
4422
原创 关于 Spring Cloud 全局异常处理的问题
最近在将公司项目改为 Spring Cloud,其中涉及到了全局异常处理的问题记录一下。 全局异常处理是通过 @RestControllerAdvice 这个注解完成的,这里就不在阐述。 首先我的全局异常处理是放在公共模块,然后通过 maven 引入各个微服务中 但是,这样的话是不会生效的,我们需要在微服务启动类中去扫描这个异常类配置所在的包 这样的话,Spring Cloud 中的全局异常处理就会生效了。 ...
2022-03-01 13:52:02
1847
原创 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
1484
原创 后台无法获取前端传入header的问题
遇到一个特别蛋疼的问题,后台始终无法后去前端传入的自定义header,搞了一个下午,终于把最终的原因找到了。 首先了解一个知识点:过滤器如果发现是cors跨域复杂请求会先发送一个方法为OPTIONS的预检请求,这个请求是用来验证本次请求是否安全的。 所以这就是问题的所在:第一次去判断header是否存在的时候,并不是前端传过来的请求,而是这次OPTIONS的预检请求,所以当然header始终为空啊! 解决方法 判断是否为OPTIONS请求,如果是则直接跳过这次请求就好。 if ("OPTIONS".equa
2021-11-18 17:54:53
1907
2
原创 分布式锁实战-用户抢单
分布式锁实战-用户抢单 首先说下业务需求:订单产生以后,用户通过平台进行抢单,只有一个用户最终会拥有订单。 再来看一下项目架构: 首先用户统一调用接口服务 api-order ,再由 api-order 调用 (负载均衡) service-order 集群。 我们先看一下如果不加分布式锁会发生什么情况。 api-order 代码: @GetMapping("/acceptOrderByExpert") public String acceptOrderByExpert(String ord
2022-05-19 17:56:46
716
原创 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
601
原创 Java 内部类的总结
Java 内部类的总结 使用内部类的好处 内部类的方法可以访问该类定义所在域中的数据,包括私有数据 内部类可以对同一个包中的其他类隐藏 当想定义一个回调函数且不想编写大量代码的时候,使用匿名内部类比较便捷 内部类访问外部类 内部类既可以访问自身的数据域,也可以访问创建它的外围类对象的数据域 原理 语法 public class OuterClass { public static void main(String[] args) { OuterClass outerClass
2022-01-17 13:24:36
317
原创 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
373
原创 Spring Boot 项目搭建模板
Spring Boot 项目搭建模板 首先来看一下项目结构 看看项目实际都集成了哪些模块 全局异常处理 响应码枚举 自定义统一响应体 全局处理响应数据 拦截器 全局跨域 阿里短信服务 阿里 OSS 服务 MyBatis MySQL Redis Swagger JWT Lombok Https 认证 全局异常处理 首先来看一下代码的目录结构 自定义异常 /** * @description: 全局异常处理类 * @author: wubowen * @date: 2021/5/25 0025
2021-12-09 14:29:32
1291
原创 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
300
原创 实现自己的分页工具类
实现自己的分页工具类 需求:根据传入的页数、每页条目数、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
142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅