- 博客(39)
- 收藏
- 关注
原创 springboo打包--微服务打包
本文介绍了在Spring Boot微服务项目中统一打包部署的四种方案。推荐使用父工程统一聚合Jar的方式,通过maven-dependency-plugin自动收集各子模块jar到统一目录。其他方案包括使用Assembly插件生成发布包、Jenkins脚本统一收集以及子模块自行Copy(不推荐)。重点分析了各方案的优缺点,其中父工程聚合方式既能保持微服务独立性,又能实现高效部署,是最优选择。文章还详细说明了Maven构建顺序如何保证该方案的可行性。
2025-12-15 16:54:44
993
原创 springboo打包--Maven 打包
本文介绍了Spring Boot应用的打包机制,重点分析了默认打包方式及可执行Jar的结构。Spring Boot通过spring-boot-maven-plugin将普通Jar重新打包为包含所有依赖的Fat Jar,可直接通过java -jar命令运行。文章详细解析了Fat Jar的内部结构,包括BOOT-INF/classes存放应用代码、BOOT-INF/lib存放依赖库,以及Spring Boot自定义类加载器。同时提供了pom.xml配置示例,建议通过finalName控制Jar名称,确保打包文件
2025-12-15 16:52:52
421
原创 SpringBoot参数绑定机制
文章摘要:本文介绍了后端接口开发中常见的参数获取方式,包括@RequestParam、@RequestBody、@PathVariable和@ModelAttribute四种注解的使用场景与特性。同时说明了Spring MVC的默认参数绑定机制,即不配置注解时自动匹配POJO对象属性的特性。最后补充了使用Map<String, String>接收所有参数的场景。文章通过代码示例展示了不同参数绑定方式的具体实现方法,并强调了参数名与属性名一致的重要性。
2025-11-20 21:55:00
532
原创 【问题记录】 容器监控数据不一致:内存、CPU、状态三类指标差异解析
容器生命周期监控指标差异分析:容器从运行到移除经历多个状态变化,Prometheus监控中三个关键指标(内存使用、CPU占用率、启动时间)在不同阶段会出现不一致现象。内存指标随cgroup释放最快消失;CPU率依赖采样窗口,可能滞后;启动时间指标则持续到元数据删除。典型场景如无流量服务、快速重启容器等会导致指标差异,循环重启容器可能仅出现在部分指标中。理解这些差异有助于准确诊断容器状态。
2025-11-20 19:44:31
346
原创 [Nginx] 3.由HTTP转发引出的重定向问题
摘要:在调试接口时发现HTTP的POST请求被Nginx强制转为HTTPS后变为GET请求,导致参数丢失。这是由于301/302重定向的默认行为将POST改为GET。解决方案包括:直接使用HTTPS、改用307/308重定向保留请求方法、Nginx同时监听80/443端口或使用rewrite重写而非重定向。关键要区分重定向(客户端感知)和重写(服务端内部处理)的差异,以及URL参数和请求体参数在重定向时的不同处理方式。
2025-10-28 17:47:12
414
原创 【Linux】Linux时区设置与Java应用的时区问题
参考 Linux 修改时区的方法,不推荐用于生产环境,因为容器重启后修改可能丢失。该方法需要镜像中已经包含时区数据且能识别 TZ环境变量。让容器直接使用宿主机的时区配置,无需修改镜像。一个常见问题,可能存在。
2025-10-17 17:22:19
358
原创 【ElasticSearch】text 和 keyword 类型区分
Elasticsearch中text和keyword类型的核心区别在于:text类型会分词处理,适合全文搜索;keyword类型保持原样存储,适合精确匹配。text通过分析器建立倒排索引支持模糊查询,但排序聚合需额外配置;keyword天然支持精确查询和聚合操作。实际应用中常采用多字段类型,同时定义text主字段和keyword子字段,兼顾全文检索与精确匹配需求,其中keyword子字段常用于排序、聚合等场景。
2025-10-13 15:44:27
558
原创 【代码记录】日期字符串聚合
解决了聚合中的一个核心问题:如何区分“可代表整体的聚合”和“仅代表部分数据的聚合”。只有当一个分组内的模式能完整覆盖一个自然时间单位(如一个完整的月)时,才用通配符(*)替代,否则就保留所有原始模式。这有效防止了数据缺失情况下的错误聚合,保证了数据的准确性。确保了聚合是一个“尽力而为”的过程,即使第一层聚合(如按年)后结果集仍然很大,系统也不会放弃,而是自动降级到更细的粒度(月、旬)继续尝试,直至达到可接受的范围。同时,可以最大程度上保证不引入额外的索引,也就是额外的查询开销,保证查询的精确性。
2025-09-26 15:59:54
286
原创 【MYSQL】Java SQL 预编译解析与 DDL 语句挑战
摘要:本文探讨了动态修改数据库表结构时使用预编译(Prepared Statement)的安全性问题。虽然MySQL支持DDL语句预编译,但JDBC规范存在局限性,无法正确处理表名、列名等标识符的占位符替换,导致语法错误。文章分析了预编译的核心优势(安全性和性能)及在MyBatis中的实现方式,重点指出#{}和${}占位符的区别。最后提出了针对DDL语句的安全处理方案,包括白名单校验和参数严格过滤,为解决动态表结构修改中的SQL注入风险提供了实践指导。
2025-09-24 16:06:22
1128
原创 【MYSQL】MySQL 中反引号与引号
MySQL数据库操作中,反引号(`)、单引号(')和双引号(")用途不同。反引号用于引用标识符(表名、列名等),特别在处理保留字或特殊字符时必需。单引号是字符串和日期的标准表示方式,若字符串包含单引号需转义。双引号默认可替代单引号,但在ANSI_QUOTES模式下会变为标识符引用。建议优先使用单引号表示字符串,避免双引号引发的兼容性问题。特殊情况下需嵌套或转义引号时,需根据具体规则处理。
2025-09-24 15:32:19
1198
原创 【Nginx】2. Tengine 容器化部署
本文介绍了使用Docker部署Tengine和OpenResty的完整流程。主要内容包括:环境准备(Docker安装和端口检查)、Tengine容器部署(镜像获取、目录挂载配置、路径确认和容器启动)、日常维护(配置修改和日志查看)以及OpenResty的补充部署说明。重点强调了端口管理、配置文件映射和路径一致性的重要性,并提供了完整的docker run命令示例。通过容器化部署方式,实现了服务的高效管理和维护。
2025-09-19 15:30:09
452
原创 【MYSQL】SQL语句幂等性
本文对比了两段SQL语句的防重机制差异,重点分析了SQL幂等性在DevOps流程中的重要性。第一段SQL直接插入数据,存在重复执行风险;第二段SQL通过WHERE NOT EXISTS子查询确保数据唯一性,具备幂等性。文章进一步阐述了幂等性的概念、应用场景及实现方式,包括DDL操作(如CREATE IF NOT EXISTS)和DML操作(如INSERT IGNORE、ON DUPLICATE KEY UPDATE等)的幂等实现技巧,以及UPDATE/DELETE操作的安全注意事项。这些技术可有效提升数据库
2025-09-16 17:22:03
444
原创 SpringBoot中的循环依赖以及解决办法
摘要:SpringBoot 2.6+版本默认禁止循环依赖,会抛出BeanCurrentlyInCreationException异常。常见解决方案包括:1)配置允许循环依赖;2)使用@Lazy延迟注入;3)改用Setter/字段注入;4)通过Provider延迟获取Bean;5)代码重构消除循环依赖。其中前四种为临时方案,最后一种为根本解决方案。这些方法适用于不同场景,开发者可根据项目实际情况选择合适方案。(148字)
2025-09-15 18:03:52
311
原创 Spring Cloud Alibaba 与 Spring Boot、Spring Cloud 的版本兼容性对照
本文提供了Spring Cloud Alibaba各版本与Spring Cloud、Spring Boot及主要组件的兼容性对照表。最新稳定版本为2023.0.1.0,对应Spring Cloud 2023.0.1和Spring Boot 3.2.4,支持Sentinel 1.8.6、Nacos 2.3.2、RocketMQ 5.1.4和Seata 2.0.0。表中详细列出了从2021到2023年间各版本间的对应关系及组件版本要求,为开发者选择合适的版本组合提供了参考依据。
2025-09-15 11:35:23
1068
1
原创 5. Redis缓存实现快速入门
本文介绍了基于Redis实现用户查询缓存与接口限流的技术方案。缓存部分通过@Cacheable等注解实现5分钟TTL的用户数据缓存,采用JSON序列化并防止缓存穿透。限流部分通过自定义注解和拦截器实现IP维度的接口访问控制(1分钟10次),使用Redis原子操作保证准确性。方案包含详细配置代码、验证方法和避坑指南,如防止缓存穿透的null值处理和限流Key设计,兼顾功能实现与系统稳定性。
2025-09-04 14:29:07
199
原创 【Nginx】1. Nginx信创调研
Nginx 凭借其高性能、高稳定性、低资源消耗以及灵活强大的反向代理与负载均衡功能,已成为构建现代高性能网站和应用基础设施的首选工具之一。奠定了其作为互联网关键技术基石的重要地位。而基于信创项目需求,对整理了当前主流的服务器软件,帮助开发者快速定位适合的工具。
2025-09-02 11:38:55
461
原创 2. SpringBoot 异常处理/自定义格式校验
在类级别约束的异常处理时,ex.getBindingResult().getFieldErrors() 会返回空值;在 Controller 方法上直接使用参数级约束,并且,Controller 类上有 @Validated 注解时,验证失败会触发 ConstraintViolationException 异常。注意:类级别约束应该加在需要验证的目标类(实体类/DTO)的类声明上,且在 Controller 方法参数添加 @Valid 和在 Service 方法参数添加 @Valid。
2025-07-22 09:22:59
834
原创 3. 自定义注解
Java自定义注解是一种元编程技术,通过声明式标记为代码添加元数据和行为。核心要素包括@Target(定义应用范围)、@Retention(生命周期)、@Documented(是否包含在JavaDoc)、@Inherited(可继承性)和@Repeatable(重复使用)。创建流程分为定义注解接口、实现处理器(如AOP、BeanPostProcessor或拦截器)和应用注解三步骤。典型应用包括自定义验证(结合验证器实现)和权限控制(通过切面编程)。注解技术能有效减少样板代码,提升代码可读性和框架扩展性,是J
2025-07-11 15:44:12
808
原创 centos7镜像下绕过systemctl限制,即不添加/usr/sbin/init参数,安装mysql
考虑到容器化技术的设计和限制,CentOS 7 镜像对 systemd 有一些限制,并不支持直接运行 systemctl。但在 CentOS 7 的镜像中,想要使用 systemctl 启动 mysql 服务,必须要在创建容器的时候添加参数。在添加了 /usr/sbin/init 作为启动参数情况下,在启动容器时,会跳转到一个文本模式的登录界面,要求用户登录。这一问题可能有多种解决方法,这里给出一个不需要重新构建镜像的方法。
2024-04-20 17:25:45
553
原创 centos7 mini虚拟机从零开始 安装常用软件并配置防火墙
centos7 mini虚拟机从零开始 安装java,conda,mysql和docker,并配置防火墙,开放对应的端口
2024-04-20 16:58:43
574
原创 【论文阅读006】:Reducing Test Cases with Attention Mechanism of Neural Networks
本文通过提出了新的数据增强方案,能够处理长序列的模型结构,主要来对生成的测试样例缩短。删去无关的字符,只保留会导致程序崩溃的部分,提高模糊测试变异的效率
2024-04-20 16:41:07
1038
1
原创 【论文阅读005】:Nuances are the Key: Unlocking ChatGPT to Find Failure-Inducing Tests with Differential...
一句话论文:通过引导,使ChatGPT了解到程序正确版本与有缺陷版本之间的细微差别,从而能生成触发程序缺陷的测试用例。
2024-04-13 10:04:27
1317
2
原创 centos7 mini虚拟机从零开始 安装并配置vmtools
在VMware下,用centos-7-Minima镜像从零安装centos系统。并配置root权限,连接网络,并安装vmtools,使用共享文件夹
2024-03-27 21:02:10
556
原创 [记录]C++ 中二维向量的定义与遍历
/ 创建一个包含n个vector<int>的二维动态数组,每个vector<int>都是空的,大小为n x 0i < n;++i) {if (!g[i].empty()) { // 需要判断是否非空// 具体操作// 创建是一个n x n的二维数组,但所有元素的值都是未定义的int(n));i < n;++j) {// 具体操作,但要注意元素的值是未初始化的// 创建一个n x n的二维动态数组,每个元素都被初始化为-1int(n, -1));
2024-03-02 11:04:48
854
1
原创 ubuntu20.04下Defects4J详细安装步骤
Defects4J(https://github.com/rjust/defects4j)作为软件漏洞领域一个非常重要的数据集,绝大多数的漏洞修复相关研究都涉及到了这一数据集,当想要复现这些论文的时候,Defects4J的安装就变得非常重要。而能够查到的关于Defects4J安装与配置的资料比较少,而且很多并不够全面。因此,这里把之前配置的步骤以及其中遇到的问题整理和整理一下,供大家参考,希望能够帮到大家。时间:2023.8.17。
2023-08-17 10:53:47
1538
1
原创 PyTorch torch.nn.functional.pad()用法详细说明
PyTorch的torch.nn.functional.pad()函数可以将一个Tensor类型的变量在不改变维度的情况下扩展到固定长度。
2023-03-19 18:13:21
6634
原创 【论文阅读004】:V-Fuzz: Vulnerability Prediction-Assisted Evolutionary Fuzzing for Binary Programs
这篇文章设计并实现了一种基于图神经网络的脆弱性预测模型,给出预测目标二进制程序各函数块的脆弱概率,从而能够衡量不同测试用例的质量,从而能够选择更有针对性的Seed。这是第一篇将二者结合的论文。
2022-11-28 11:29:49
1117
1
原创 【论文阅读003】:CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
这篇文章作为2021年的SOTA,将其他领域内的一些技术迁移到自动修复这一问题上,在两个常用数据集上取得了比较好的效果,并为自动化漏洞修复这一方向中存在的一些问题,提供了部分解决思路
2022-10-08 16:10:59
1379
1
原创 VulnHub DC1靶机渗透测试
对VulnHub DC1靶机进行渗透测试。最终,得到了四个flag和一个thefinalflag,共5个flag。有两个问题不是特别清楚,需要再进一步学习。根据网络上两篇博文学习,总结。如果有版权问题,请联系我进行修改或删除...
2022-08-25 20:15:28
1393
1
原创 【论文阅读002】Generating Natural Language Adversarial Examples through ProbabilityWeightedWord Saliency
论文地址:https://www.aclweb.org/anthology/P19-1103/,发表于第57届计算语言学协会年会论文集(2019年7月28日至8月2日)的第1085-1097页。目录论文主要工作已有的工作创新性具体方法问题对抗样本示例单词替换候选词选择替换策略效果评价论文主要工作在产生对抗样本,保持词法,语法的正确性和语义的相似性。提出了一种全新的方法:在同义词替换策略的基础上,引入了一种新的由词显著性和分类概率决定的词替换顺序,从而提
2021-03-23 16:23:33
2043
1
原创 PWWS开源代码各部分理解
这一部分是PWWS攻击方法的开源代码(地址在https://github.com/JHL-HUST/PWWS)中几个重点文件的梳理。主要用于记录自己的思路,还有一部分不太清楚,之后有更多了解再改正,有什么问题的话欢迎在评论区说明。一、paraphrase.py变量supported_pos_tags,标签列表,即支持的单词种类; SubstitutionCandiadate类,候选词池类。包含了四个属性,token_position,替换位置;similarity_rank,相似度;origina
2021-03-12 17:23:23
1474
原创 【读论文-001】OpenAttack: An Open-source Textual Adversarial Attack Toolkit
最近,对文本对抗这个方向比较感兴趣,所以找了一部分论文打算一篇一篇慢慢地读,顺便记录下来,也正好能理一理思路。文章题目是《OpenAttack: An Open-source Textual Adversarial Attack Toolkit》,原文地址在https://arxiv.org/pdf/2009.09191.pdf,同时收录在https://github.com/thunlp/TAADpapers中,这个项目中还有许多其他文本对抗相关的内容。这篇论文主要是介绍了名为OpenAttack的一
2021-03-10 22:15:35
643
3
原创 C++实现简单的RSA加密
#include <iostream>#include <stdio.h>using namespace std;int primeNum(int num);//判断素数int coprime(int a, int b);//判断互素int candp(int a, int b, int c); //计算密文int key();//生成密钥int encryption();//加密int decode();//解密int main(){ cout &.
2021-03-04 09:24:45
1080
1
原创 记录Ubuntu更换国内源时出现的一个问题
最近,在学习fabric相关的内容,所以尝试,然后总是会出现各种各样的问题,然后在一次重新安装虚拟机后,竟然更换源时都报错了。然后在网上查了查相关的内容,有的说是在软件与更新中更换地址之类的,并没有解决问题,不过提供了一个思路,再仔细回想一下,貌似是在安装虚拟机的最后几步中有一项是选择你所在的城市,由于是很多次重新安装虚拟机了,所以就没有在意,直接跳过了。所以,重新安装虚拟机时,将地址设置为北京(不知道其他的国内地址能不能解决,也没有尝试),然后,更改完文本后,更新时,没有任何问题...
2020-10-18 22:31:28
543
1
quixbugs漏洞数据集 "QuixBugs: A Multi-Lingual Program Repair Benchmark Set Based on the Quixey Challenge"
2025-09-05
常用【自然语言处理】多源NLP数据集下载路径汇总:文本分类与推理任务资源集成方案
2025-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅