- 博客(67)
- 收藏
- 关注
原创 自用bug收集
#1、getReader() has already been called for this request需求:通过过滤器实现对HttpServletRequest请求体的数据做一些逻辑判断、通过获取request.getReader() 流读取body的详细内容,但是request.getReader() 和 request.getInputStream() 都是只能调用一次,所以抛出上述异常信息(个人猜想:导致在controller层无法取到body数据)。解决:通过继承HttpServletR
2021-07-12 10:43:48
414
1
原创 Spring获取URL信息
框架“采纳”这些头:应用容器或框架读取这些 X-Forwarded-* (或标准 Forwarded )头,把 HttpServletRequest 的“可见属性”改成客户端视角,从而 getScheme()/isSecure()/getServerName()/getServerPort()/getRequestURL() 都与外部一致。在第二步、获取token时使用代码获取当前请求的URL、我方Nginx收到了三方的认证回调为https、实际在程序中获取出来的地址是http。
2025-12-23 11:11:38
519
原创 设计模式学习
应用了开闭原则编程思想、利用组合的方式、动态的将类的拓展,满足各种复杂的业务场景,相对于继承显得更加灵活,只需要一层一层的装饰、就能获得想要的业务对象。优点在于可以不改变现有的代码达到对功能的拓展、但是会新增很多新业务的装饰者类、业务场景越多对应的装饰者越多。当需要将算法的实现和使用它的代码分离开来时,策略模式可以将算法封装在独立的类中,使得它们可以独立地变化。这可以让客户从实现的接口解耦。如果在一段时间之后,我们想要改变接口,适配器可以将改变的部分封装起来,客户就不必为了应对不同的。接口而每次跟着修改。
2025-12-05 15:28:10
963
原创 HTTP请求Content-Type整理
决定“服务端绑定方式”:例如在 Java Spring 中 @RequestBody 读取 JSON 请求体;@RequestParam 读取查询参数或表单字段;决定“参数落在哪”:JSON → 请求体对象;x-www-form-urlencoded → 表单字段;multipart → 每个表单/文件分部;GET → 查询字符串。决定“如何编码”:x-www-form-urlencoded 对特殊字符进行百分号编码;multipart 通过边界分隔;GET 与 POST 的核心差异。
2025-11-20 10:24:49
729
原创 mybatis-plus分页插件使用
)@Component // 确保它是一个Spring管理的Bean,以便在配置类中注入@Override// 这里是你的SQL修改逻辑,例如:// 通过反射将修改后的SQL设置回去// 继续执行后续流程@Override@Override// 如果需要从配置中获取参数,可以在这里处理。
2025-10-16 15:13:22
258
原创 ComponentScan自定义排除不扫描包
由于加载顺序的问题、不能使用@Value获取配置文件的值、需要实现EnvironmentAware 接口获取相关配置@Component@Override@Overrideif (!if (!
2025-09-02 11:36:30
319
原创 HttpClient使用
全局路由限制、达到限制时,所有新请求均进入阻塞队列,直到全局有连接被释放。单个路由限制,达到限制时,请求进入阻塞队列,直到路由有连接被释放。建立 TCP 连接的超时时间(如 DNS 解析、三次握手等), 在指定时间内未完成与目标服务器的 TCP 连接建立。从连接池获取连接的最大等待时间(若连接池无可用连接,等待其他请求释放连接的时间) 在指定时间内未从连接池获取到可用连接则抛出异常。在读取或发送数据时,连续等待超过指定时间未收到新数据,也就是数据传输过程中的超时,当超过配置的时间将抛出异常。
2025-03-14 11:06:14
460
原创 PageHelper新发现
今天发现了一个很有趣的现象,接手一个很老的项目springmvc项目、使用PageHelper分页实现常见的后端接口分页功能。但是发现当页码参数大于实际的页码数时、正常不应该返回数据,但是目前确一直返回数据不知道问题在哪里。定义:当设置为 true 时,允许 pageSize=0,此时分页插件会执行 COUNT 查询但 返回所有数据。不知道其含义,但是在项目当中是默认开启的状态、后面一顿搜索查询到了下面的信息才明白原由。:false(禁止 pageSize=0):false(不修正非法参数)
2025-02-27 17:36:35
687
原创 nginx模板文件
在 Docker 化部署 Nginx 时,为了能够通过环境变量动态地更改 Nginx 的配置,经常会引入这个模板文件。Docker 启动后会读取环境变量,替换掉 default.conf.template 中使用的环境变量,生成 default.conf,然后再启动 Nginx。nginx通过读取环境变量完成对nginx.conf的相关代理设置,但是nginx.conf不支持直接读取环境变量、所以使用nginx的模板功能达到相应目的。进入容器内部可看到/etc/nginx/conf.d下生成了。
2024-12-13 11:28:39
777
原创 Docker-Compose环境变量
现状是通过Docker-Compose配置管理系统的各个容器服务、因为是微服务架构所以配置文件很多、但是例如数据库、redis、kafka等配置都是同一份但是需要在多个配置文件做映射。参考地址:https://www.baeldung-cn.com/linux/nginx-config-environment-variables#23-docker-compose。想到spring可以自动读取环境变量的特性、就准备做一个配置文件预置所有公共配置,将配置文件中的配置写入docker容器的环境变量。
2024-12-05 14:11:18
957
原创 analysis-ik分词器
最细粒度划分模式。该模式会尽可能多地切分文本,将文本中的每个可能的词语都切分。找到对应es版本的ik分词器、下载zip后放到。该模式会尽可能少地切分文本。创建相关索引、搜索时用。使用离线安装下载地址。bin目录下执行脚本。(服务器能连通外网)配置文件进行相关修改。
2024-10-17 15:01:27
837
原创 elk部署安装
1、提前装好docker docker-compose相关命令2、替换docker仓库地址国内镜像源参考地址:https://blog.youkuaiyun.com/llc580231/article/details/1399796033、写一个docker-compose.yml(4、提前下载好相关镜像。
2024-10-16 15:02:07
862
原创 mysql误删数据恢复记录
1、数据库版本 5.7.36,由于误操作删掉了表的所有数据,但是数据库备份每天凌晨进行、只能从备份恢复昨日的全量数据,当日的数据将会丢失。
2024-08-14 16:34:49
591
1
原创 利用AOP数据脱敏
Retention;Target;if(result!= null) {//判断只有字段为字符串同时具有Desensitize注解才生效 if(value instanceof String) {} }if(result!= null) {
2024-04-17 17:18:41
443
原创 Dubbo泛化调用
泛化调用主要用于消费端没有 API 接口的情况;不需要引入接口 jar 包,而是直接通过 GenericService 接口来发起服务调用,。泛化调用对于服务端无需关注,按正常服务进行暴露即可。
2024-04-01 16:58:19
659
原创 SpringMvc 配置文件分离
日常开发中区分测试/生产两种环境的配置文件、springboot常用的解决办法是指定文件后缀在配置以此激活文件的配置内容、由于项目较老使用的是SpringMvc框架,所以通过maven的方式指定配置文件路径。
2024-02-27 10:36:54
655
原创 nginx前缀匹配
来结束地址部分,然后在后面添加 proxy_set_header Host $host;来确保请求头的 Host 字段被正确设置。当您希望保留原始请求的 URI 时,您应该在 proxy_pass 指令中使用。
2024-02-19 15:19:20
1357
原创 dubbo rpc序列化
providerconsumer上述配置中,服务端和消费端serialization属性指定了序列化方式为Hessian2。同样,你可以根据需要选择其他的序列化方式。需要注意的是,序列化方式的选择应该与服务提供者和消费者之间的兼容性相匹配。如果服务提供者和消费者使用的序列化方式不一致,可能会导致通信失败。因此,在选择序列化方式时,应确保服务提供者和消费者都支持所选的序列化方式。
2024-01-31 11:37:06
829
原创 HttpClient调用405 Not Allowed
HTTP 405 错误,也被称为 “Method Not Allowed”,是一个常见的 HTTP 状态码。这个错误通常意味着客户端(例如,一个网页浏览器或一个应用程序)尝试使用服务器不支持的 HTTP 方法(例如 GET、POST、PUT、DELETE 等)来访问某个资源。例如,如果一个 API 只支持 GET 和 POST 方法,而客户端尝试使用 PUT 或 DELETE 方法来访问它,服务器可能会返回一个 405 错误。
2024-01-31 10:25:55
1222
原创 netty使用
服务端配置类//设置线程组、parentGroup处理连接、childGroup处理I/O//Channel通过何种方式获取新的连接(NioServerSocketChannel、NioSocketChannel)//ServerChannel一些配置项、ChannelOption.SO_BACKLOG//ServerChannel的子Channel的选项//自定义ChannelInboundHandlerAdapter、编码解码器等。
2023-12-08 11:17:46
255
原创 Docker容器间网络共享
Docker环境中为了一套应用部署多个环境、并且不修改配置文件的情况下,做到一键部署。要求不同容器直接的网络交互,使用容器名称。网络相关常用命令官网的。
2023-12-01 10:44:56
931
原创 MQTT记录
mqtt:一种通信协议,是一种标准(类比)而emqx是这种标准的具体实现。主要为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,应用于物联网MQ:消息的传输过程中保存消息的容器 -消息队列。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
2023-09-11 17:29:04
369
原创 docker真实IP解决
在微服务的环境中使用docker部署各个应用,部分应用使用容器内的真实ip暴露出服务。会导致微服务之间调用出现网络超时,要解决这个问题需要让微服务暴露为宿主机的ip。
2023-09-11 16:15:47
909
原创 H5扫码整理
/ aspectRatio: 1.777778 // 可选,视频馈送需要的纵横比,(4:3--1.333334, 16:9--1.777778, 1:1--1.0)传递错误的纵横比会导致视频不显示。//console.log("创建扫码对象",html5QrCode)// this.$toast('您需要授予相机访问权限')// environment后置摄像头 user前置摄像头。// 可选,如果你想要有界框UI。"开始获取摄像头------"// 可选,每秒帧扫描二维码。'扫码errMsg: '
2023-08-24 14:55:40
615
原创 MYSQL的MVCC个人总结
由于事务id数据库自动维护递增,事务id(1,2,3,4,6,7,8)均已提交,同一时间事务B开启,当前事务idB为12修改同一条数据并提交。事务A读取记录得到事务id = 12的数据,此时对比事务id判断是否可取当前值,idA < idB 当前事务不应该读到超前的版本12的数据,此时需要借助undo log版本链去找到小于当前事务id且不活跃的数据。在并发事务的时候,不同的事务会生成不同的read view ,再结合undo log配合事务隔离策略,解决并发事务的脏读、幻读、不可重复读的事务问题。
2023-04-19 15:46:54
136
原创 参数转换(统一校验)
/ 这里我是判断这个参数是否有我自定义的 MyAnnotation 注解 //return parameter.hasParameterAnnotation(MyAnnotation.class);// 也可以换成其他的,例如如果参数的类型是 Student 类的话,用这个resolver解析,怎么用就怎么写 return methodParameter . getParameterType() . equals(User . class);
2023-04-17 11:40:01
169
原创 Vagrant初次体验
hostname ,port,IdentityFile 这三个位置,登录信息约为 127.0.0.1:2222,用户名:vagrant,有可能不能选择密码登录,默认是用密钥登录,浏览,文件,找到 刚刚的IdentityFile ,再输入密码vagrant 就可以使用vagrant 用户 ssh登录。地址:https://app.vagrantup.com/boxes/search。地址:https://www.virtualbox.org/的相关配置,放开root用户权限并重启,放开。
2022-09-08 21:23:14
3025
1
原创 VUEX使用
针对多个组件依赖于同一状态,来自不同视图的行为需要变更同一状态。使用传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。在根路径下创建store文件夹、和index.js文件。在项目中安装vuex、各自的版本对应命令如下。在main.js对store全局导入和引用。编写模板对store的值进行更改。...
2022-08-31 09:36:17
273
原创 跨域请求理解
浏览器访问前端,前端访问后端不同的服务http://localhost:8080 -> http://localhost:5000。协议、主机、端口都相同的话,则这两个 URL 是同源、反之则浏览器视为非同源(跨域:违背了同源策略)
2022-08-29 17:20:51
772
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅