当前位置: 首页 > news >正文

保护密码等敏感信息的几个常用方法

概述

在生产环境,保护数据库账号密码等敏感信息是至关重要的,这些信息不能被所有研发工程师看见,本文介绍几种避免明文存储的常用方法。


方法1: 使用配置中心加密

适用场景:已采用配置中心(如Spring Cloud Config、Apollo、Nacos等)。
方案

  • 服务端加密:在配置中心中对敏感字段进行加密(如Spring Cloud Config支持对称/非对称加密)。
  • 客户端解密:微服务启动时从配置中心获取加密配置并解密。
  • 操作步骤
    # application.yml 示例(加密后的值以{cipher}开头)
    spring:datasource:username: "{cipher}密文字符串"password: "{cipher}密文字符串"
    
    • 生成密文:使用配置中心的 /encrypt 端点加密明文。
    • 配置密钥:在配置中心服务端设置 encrypt.key(对称加密)或 encrypt.keyStore(非对称加密)。

方法2: 环境变量注入

适用场景:容器化部署(如Docker、Kubernetes)。
方案

  • 通过环境变量传递敏感信息,避免写入配置文件。
  • Kubernetes示例
    # 创建Secret
    kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=123456
    
    # 在Deployment中引用Secret
    env:- name: DB_USERNAMEvalueFrom:secretKeyRef:name: db-secretkey: username- name: DB_PASSWORDvalueFrom:secretKeyRef:name: db-secretkey: password
    

方法3: 集成密钥管理服务(KMS)

适用场景:高安全性要求,云原生环境。
推荐工具

  • HashiCorp Vault:动态生成数据库凭据,自动轮换密钥。
  • AWS KMS/阿里云KMS:与云服务深度集成,加密敏感数据。
  • 操作示例(Vault)
    1. 启动Vault并启用数据库密钥引擎:
      vault secrets enable database
      vault write database/config/mysql plugin_name=mysql-database-plugin ...
      
    2. 微服务通过Vault API动态获取临时数据库凭据。

方法4: 应用层加密(如Jasypt)

适用场景:无配置中心,需直接在应用内解密。
方案

  • 使用加密工具库(如Jasypt)对配置项加密。
  • Spring Boot集成步骤
    1. 添加依赖:
      <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version>
      </dependency>
      
    2. 加密密码:
      java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \input="123456" password=MySecretKey algorithm=PBEWithMD5AndDES
      
    3. 配置文件中使用密文:
      spring:datasource:password: ENC(密文字符串)
      
    4. 启动时传入密钥:
      java -Djasypt.encryptor.password=MySecretKey -jar app.jar
      

方法5: 配置文件的linux权限控制

辅助措施:无论是否加密,均需限制文件访问权限。

  • Linux示例
    chmod 600 application.yml   # 仅允许所有者读写
    chown service-user:service-user application.yml  # 归属服务运行用户
    

方法6: 避免硬编码与代码仓库泄露

  • 将配置文件排除在代码仓库外(如.gitignore)。
  • 使用占位符或外部化配置(如Spring Profiles)。

方法7: 轮换密钥和增加访问日志

  • 务必定期轮换加密密钥。
  • 审计敏感信息的访问日志。

小结

  • 初级方案:环境变量 + 配置文件权限控制。
  • 中级方案:配置中心加密(如Spring Cloud Config)或应用层加密(Jasypt)。
  • 高级方案:集成Vault/AWS KMS,实现动态凭据与自动轮换。

案例

在 Nacos 中对敏感字段进行加密,通常需要结合 加密工具(如 Jasypt)Nacos 插件 实现。本文介绍Nacos服务端配置和Java客户端解密过程。


1. 方案选择

  • 推荐方式:使用 Jasypt 对敏感字段加密,将密文存储到 Nacos,客户端启动时通过密钥解密。
  • 优势:无需修改 Nacos 服务端,兼容 Spring Boot/Cloud 生态,操作简单。

2. Nacos 服务端配置

(1) 生成加密后的密文

使用 Jasypt 工具生成敏感字段的密文:

# 下载 Jasypt 工具包(或通过 Maven 依赖调用)
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \input="your_db_password" \password=MySecretKey \  # 加密密钥(需保管好)algorithm=PBEWithMD5AndDES

输出示例:

----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.331-b09 ----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES
input: your_db_password
password: MySecretKey----OUTPUT----------------------
uTS8YqJHBROG6BQx0YHa2QmM9r0q9J7T

(2) 在 Nacos 中存储加密配置

  1. 登录 Nacos 控制台,创建配置文件(如 my-service-dev.yaml)。
  2. 将敏感字段替换为 ENC(密文) 格式:
    spring:datasource:username: ENC(密文)password: ENC(uTS8YqJHBROG6BQx0YHa2QmM9r0q9J7T)
    

3. Java 客户端配置

(1) 添加依赖

pom.xml 中引入 Jasypt 和 Spring Cloud Alibaba Nacos 依赖:

<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2022.0.0.0</version>
</dependency>

(2) 配置解密密钥

bootstrap.yml 中指定 Jasypt 解密密钥:

spring:cloud:nacos:config:server-addr: localhost:8848namespace: devfile-extension: yamljasypt:encryptor:password: MySecretKey  # 与加密时使用的密钥一致algorithm: PBEWithMD5AndDES  # 加密算法需一致

(3) 代码中读取配置

直接通过 @Value 注入即可,Jasypt 会自动解密:

@Value("${spring.datasource.username}")
private String dbUser;@Value("${spring.datasource.password}")
private String dbPassword;

4. 安全增强措施

(1) 避免硬编码密钥

通过环境变量或启动参数传递密钥,而非写在配置文件中:

java -Djasypt.encryptor.password=MySecretKey -jar your-app.jar

bootstrap.yml 中动态引用环境变量:

jasypt:encryptor:password: ${JASYPT_ENCRYPTOR_PASSWORD:}  # 从环境变量读取

(2) 配置文件权限控制

确保 Nacos 配置文件的权限仅限于授权用户:

chmod 600 my-service-dev.yaml

(3) 密钥轮换

定期更换加密密钥,并重新生成所有密文。


5. 完整流程示例

  1. 加密敏感数据

    java -cp jasypt-1.9.3.jar ... JasyptPBEStringEncryptionCLI input="db_password" password=MySecretKey
    

    输出密文:ABC123

  2. Nacos 配置

    spring:datasource:password: ENC(ABC123)
    
  3. 客户端启动命令

    java -Djasypt.encryptor.password=MySecretKey -jar app.jar
    

6. 使用 Nacos 插件(可选)

若需 Nacos 服务端原生支持加密,可开发自定义插件或使用企业版功能:

  1. Nacos 服务端插件:通过 SPI 机制扩展加密逻辑。
  2. 企业版加密:阿里云 MSE Nacos 商业版支持配置加密。

nacos案例小结

  • 核心步骤:Jasypt 加密敏感字段 → Nacos 存储密文 → 客户端通过密钥自动解密。
  • 关键安全点
    • 密钥通过环境变量或启动参数传递,避免泄露。
    • 定期轮换密钥,结合云厂商的KMS(如阿里云KMS)管理密钥更安全。

相关文章:

保护密码等敏感信息的几个常用方法

概述 在生产环境&#xff0c;保护数据库账号密码等敏感信息是至关重要的&#xff0c;这些信息不能被所有研发工程师看见&#xff0c;本文介绍几种避免明文存储的常用方法。 方法1&#xff1a; 使用配置中心加密 适用场景&#xff1a;已采用配置中心&#xff08;如Spring Clou…...

【Golang 面试题】每日 3 题(六十七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

JavaScript系列(89)--前端模块化工程详解

前端模块化工程详解 &#x1f9e9; 前端模块化是现代Web开发的核心理念之一&#xff0c;它帮助我们组织和管理日益复杂的前端代码。本文将详细探讨前端模块化工程的各个方面&#xff0c;从基础概念到实际应用。 模块化概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;模…...

PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 TIFF

TIFF文件是高质量图像的首选。它们广泛用于印刷、存档和图形设计。企业通常需要转换PDF文档以获得更好的兼容性。了解如何以编程方式执行此转换可以节省时间和资源。在这篇教程中&#xff0c;我们将探讨如何使用 Python 将 PDF 转换为 TIFF。 本文涵盖以下主题&#xff1a; P…...

【开源免费】基于SpringBoot+Vue.JS美食烹饪互动平台(JAVA毕业设计)

本文项目编号 T 219 &#xff0c;文末自助获取源码 \color{red}{T219&#xff0c;文末自助获取源码} T219&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,加密压缩,带有压缩进度

前言 最近在做项目时遇到一个需求&#xff0c;需要将升级的文件压缩成zip&#xff0c;再进行传输&#xff1b; 通过网络调研&#xff0c;有许多方式可以实现&#xff0c;例如QT私有模块的ZipReader、QZipWriter&#xff1b;或者第三方库zlib或者libzip或者quazip等&#xff1…...

【GO】学习笔记

目录 学习链接 开发环境 开发工具 GVM - GO多版本部署 GOPATH 与 go.mod go常用命令 环境初始化 编译与运行 GDB -- GNU 调试器 基本语法与字符类型 关键字与标识符 格式化占位符 基本语法 初始值&零值&默认值 变量声明与赋值 _ 下划线的用法 字…...

docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结

官方网站 官方网址&#xff1a;etcd 二进制包下载&#xff1a;Install | etcd GitHub社区项目&#xff1a;etcd-io GitHub GitHub社区项目版本历史&#xff1a;Releases etcd-io/etcd GitHub 一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令…...

港科大提出开放全曲音乐生成基础模型YuE:可将歌词转换成完整歌曲

YuE是港科大提出的一个开源的音乐生成基础模型&#xff0c;专为音乐生成而设计&#xff0c;专门用于将歌词转换成完整的歌曲&#xff08;lyrics2song&#xff09;。它可以生成一首完整的歌曲&#xff0c;时长几分钟&#xff0c;包括朗朗上口的声乐曲目和伴奏曲目。YuE 能够模拟…...

Hive从入门到运用

hive简介 hive的设计思想&#xff08;本质是一个翻译器&#xff09; 上传安装包 解压&#xff0c;查看 运行hive&#xff08;一定要启动hadoop&#xff0c;是有依赖关系的。&#xff09; 测试启动方法&#xff0c;和建表 文件创建很上传到hdfs&#xff0c;直接上传到hive表的目…...

unity学习55:按钮 button

目录 1 按钮 button 1.1 按钮button 其实就是一个组合体 1.2 测试按钮&#xff0c;在UI中添加1个按钮 1.3 按钮的属性 2 按钮的图片属性 3 按钮的变换 transition 3.1 按颜色变换 3.2 按图片精灵变换 3.3 按动画变换 4 按钮的导航 5 按钮的事件和脚本 1 按钮 …...

《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师

软考论文写作框架&#xff1a;基于构件的软件开发方法及其应用 一、考点概述 本论题“基于构件的软件开发方法及其应用”主要考察的是软件工程专业中关于基于构件开发&#xff08;CBSD&#xff09;的深入理解与实践应用。考点涵盖以下几个方面&#xff1a; 首先&#xff0c;…...

穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路

回溯算法的模版 void backtrack(vector<int>& path, vector<int>& choice, ...) {// 满⾜结束条件if (/* 满⾜结束条件 */) {// 将路径添加到结果集中res.push_back(path);return;}// 遍历所有选择for (int i 0; i < choices.size(); i) {// 做出选择…...

java23种设计模式-命令模式

命令模式&#xff08;Command Pattern&#xff09;学习笔记 1. 模式定义 行为型设计模式&#xff0c;将请求封装为对象&#xff0c;使请求的发送者与接收者解耦。支持请求的排队、记录、撤销/重做等操作。 2. 适用场景 ✅ 需要将操作参数化 ✅ 需要支持事务操作&#xff08…...

交流异步电动机PI双闭环SVPWM矢量控制Simulink

关注微♥“电机小子程高兴的MATLAB小屋”获取专属优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.仿真算法&#xff1a; (…...

利用 Open3D 保存并载入相机视角的简单示例

1. 前言 在使用 Open3D 进行三维可视化和点云处理时&#xff0c;有时需要将当前的视角&#xff08;Camera Viewpoint&#xff09;保存下来&#xff0c;以便下次再次打开时能够还原到同样的视角。本文将演示如何在最新的 Open3D GUI 界面&#xff08;o3d.visualization.gui / o…...

kiln微调大模型-使用deepseek R1去训练一个你的具备推理能力的chatGPT 4o

前言 随着deepseek的爆火&#xff0c;对于LLM的各种内容也逐渐步入我的视野&#xff0c;我个人认为&#xff0c;可能未来很长一段时间&#xff0c;AI将持续爆火&#xff0c;进入一段时间的井喷期&#xff0c;AI也会慢慢的走入我们每个家庭之中&#xff0c;为我们的生活提供便利…...

《从Kokoro看开源语音模型的“无限可能”》:此文为AI自动生成

开源语音模型 Kokoro 是一款轻量级、高性能的文本转语音(TTS)模型,以下是关于它的详细介绍: 核心优势 卓越的音质:即使参数规模仅 8200 万,也能生成自然流畅、富有表现力的语音。轻量高效:占用资源少,运行速度快,在 CPU 上即可实现近乎实时的语音生成,在 GPU 端则能…...

Spring 事务和事务传播机制(详解)

1 .事务 1.1.什么是事务&#xff1f; 事务是一组操作的集合,是不可分割的操作 事务作为一个整体&#xff0c;要不同时完成&#xff0c;要不同时失败 1.2什么时候需要事务&#xff1f; 关于金钱的操作基本都会有事务 例如转账操作&#xff1a; 第一步 A账号 - 500元第二步 B账…...

Innodb MVCC实现原理

什么是MVCC? MVCC全称多版本并发控制&#xff0c;是在并发访问数据库时对操作数据做多版本管理&#xff0c;避免因为写数据时要加写锁而阻塞读取数据的请求问题。 Innodb对mvcc的实现 1、事务版本号 每次事务开启前都会从数据库获得一个自增长的事务ID&#xff0c;可以从事…...

【网络编程】网络套接字和使用案例

一、为什么大多数网络编程使用套接字 在网络编程中&#xff0c;套接字 (socket) 是最常用的接口&#xff0c;但并不是所有的底层通信都依赖于套接字。尽管如此&#xff0c;绝大多数网络应用&#xff08;特别是在操作系统层面&#xff09;都使用套接字进行通信&#xff0c;因为…...

【Java企业生态系统的演进】从单体J2EE到云原生微服务

Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务 目录标题 Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务摘要1. 引言2. 整体框架演进&#xff1a;从原始Java到Spring Cloud2.1 原始Java阶段&#xff08;1995-1999&#xff09;2.2 J2EE阶段&#x…...

【爬虫基础】第二部分 爬虫基础理论 P1/3

上节内容回顾&#xff1a;【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客 【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客 【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客 爬虫相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff…...

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中&#xff0c;您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣&#xff0c;您将运行的示例应用程序由两部分组成&#xff0c;前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…...

山东大学软件学院人工智能导论实验之知识库推理

目录 实验目的&#xff1a; 实验代码&#xff1a; 实验内容&#xff1a; 实验结果 实验目的&#xff1a; 输入相应的条件&#xff0c;根据知识库推理得出相应的知识。 实验代码&#xff1a; def find_data(input_process_data_list):for epoch, data_process in enumerat…...

Java 网络协议面试题答案整理,最新面试题

TCP和UDP的主要区别是什么&#xff1f; TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;的主要区别在于TCP是面向连接的协议&#xff0c;而UDP是无连接的协议。这导致了它们在数据传输方式、可靠性、速度和使用场景方面的不同。 1、连接…...

win10把c盘docker虚拟硬盘映射迁移到别的磁盘

c盘空间本身就比较小、如果安装了docker服务后&#xff0c;安装的时候没选择其他硬盘&#xff0c;虚拟磁盘也在c盘会占用很大的空间&#xff0c;像我的就三十多个G&#xff0c;把它迁移到其他磁盘一下子节约几十G 1、先输入下面命令查看 docker 状态 wsl -l -v 2、如果没有停止…...

AOP进阶-02.通知顺序

一.通知顺序 当有多个切面类中的切入点表达式一样时&#xff0c;这些切面类的执行顺序是怎样的呢&#xff1f;如图我们将定义两个切面类&#xff0c;一个MyAspect2&#xff0c;一个MyAspect3&#xff0c;一个MyAspect4。执行后我们发现&#xff0c; 对于目标方法前的通知方法&…...

${sym} 与 String(sym) 的区别

在 JavaScript 中&#xff0c;${sym}&#xff08;模板字符串插值&#xff09;和 String(sym)&#xff08;显式类型转换&#xff09;虽然都涉及将值转换为字符串&#xff0c;但它们的底层逻辑和行为存在显著差异&#xff0c;尤其是在处理 Symbol 等特殊类型时。以下是具体对比&a…...

sglang框架源码笔记

文章目录 整体架构1. **客户端&#xff08;Client&#xff09;**&#xff1a;2. **服务器端&#xff08;Server&#xff09;**&#xff1a;3. **调度器与模型工作节点&#xff08;Scheduler & Model Worker&#xff09;**&#xff1a; TpModelWorker类ModelRunner类TpModel…...

2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码

一、混沌进化优化算法 https://github.com/ITyuanshou/MATLABCode 1. 算法简介 混沌进化优化算法&#xff08;Chaotic Evolution Optimization, CEO&#xff09;是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过…...

uake 网络安全 reverse网络安全

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文首发于“合天网安实验室” 首先从PEID的算法分析插件来介绍&#xff0c;要知道不管是在CTF竞赛的REVERSE题目中&#xff0c;还是在实际的商业产品中&#xf…...

C语言实现单链表

单链表是数据结构中最基础的链式结构,它不按照线性的顺序存储数据,而是由若干个同一结构类型的“节点”依次串联而成的,即每一个节点里保存着下一个节点的地址(指针)。 上图中,一个表头变量head是用来存储链表首节点的地址,链表中每个节点有data(数据)部分和n…...

Rk3568驱动开发_点亮led灯代码完善(手动挡)_6

1.实现思路&#xff1a; 应用层打开设备后通过write函数向内核中写值&#xff0c;1代表要打开灯&#xff0c;0代表要关闭灯 Linux配置gpio和控制gpio多了一个虚拟内存映射操作 2.注意事项&#xff1a; 配置和读写操作的时候要谨慎&#xff0c;比如先关掉gpio再注销掉虚拟内存…...

threejs:document.createElement创建标签后css设置失效

vue3threejs&#xff0c;做一个给模型批量CSS2D标签的案例&#xff0c;在导入模型的js文件里&#xff0c;跟着课程写的代码如下&#xff1a; import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段&#xff0c;并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration&#xff0c;这个对象里面有compareDate字段&#xff0c;刚好表格查询的对象也是FakeRegistration&#xff0c;所以表格展示的时间就是刚才…...

使用DeepSeek/ChatGPT等AI工具辅助编写wireshark过滤器

随着deepseek,chatgpt等大模型的能力越来越强大&#xff0c;本文将介绍借助deepseek&#xff0c;chatgpt等大模型工具&#xff0c;通过编写提示词&#xff0c;辅助生成全面的Wireshark显示过滤器的能力。 每一种协议的字段众多&#xff0c;流量分析的需求多种多样&#xff0c;…...

Java 大视界 -- Java 大数据在智能物流路径规划与车辆调度中的创新应用(102)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合

概述 实时目标检测对于许多实际应用来说已经变得至关重要&#xff0c;而Ultralytics公司开发的YOLO&#xff08;You Only Look Once&#xff0c;只看一次&#xff09;系列一直是最先进的模型系列&#xff0c;在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在…...

一个行为类似标准库find算法的模板

函数需要两个模板类型参数&#xff0c;一个表示函数的迭代器参数&#xff0c;另一个表示值的类型。 代码 #include<iostream> #include<string> #include<vector> #include<list>using namespace std;template <typename IterType,typename T>…...

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09;针对全桥LLC拓扑&#xff0c;利用Matlab软件搭建模型&#xff0c;分别对轻载&#xf…...

Elasticsearch 的分布式架构原理:通俗易懂版

Elasticsearch 的分布式架构原理&#xff1a;通俗易懂版 Lucene 和 Elasticsearch 的前世今生 Lucene 是一个功能强大的搜索库&#xff0c;提供了高效的全文检索能力。然而&#xff0c;直接基于 Lucene 开发非常复杂&#xff0c;即使是简单的功能也需要编写大量的 Java 代码&…...

[深度学习]基于C++和onnxruntime部署yolov12的onnx模型

基于C和ONNX Runtime部署YOLOv12的ONNX模型&#xff0c;可以遵循以下步骤&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保已经下载后指定版本opencv和onnruntime的C库。 模型转换&#xff1a; 安装好yolov12环境并将YOLOv12模型转换为ONNX格式。这通常涉及使用深度学习…...

seacmsv9报错注入

1、seacms的介绍 ​ seacms中文名&#xff1a;海洋影视管理系统。是一个采用了php5mysql架构的影视网站框架&#xff0c;因此&#xff0c;如果该框架有漏洞&#xff0c;那使用了该框架的各个网站都会有相同问题。 2、源码的分析 漏洞的部分源码如下&#xff1a; <?php …...

剑指 Offer II 033. 变位词组

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20033.%20%E5%8F%98%E4%BD%8D%E8%AF%8D%E7%BB%84/README.md 剑指 Offer II 033. 变位词组 题目描述 给定一个字符串数组 strs &#xff0c;将 变位词 组合在一起…...

【2025全网最新最全】前端Vue3框架的搭建及工程目录详解

文章目录 安装软件Node.js搭建Vue工程创建Vue工程精简Vue项目文件 Vue工程目录的解读网页标题的设置设置全局样式路由配置 安装软件Node.js 下载地址&#xff1a;https://nodejs.org/zh-cn/ 安装完成后&#xff0c;打开cmd,查看环境是否准备好 node -v npm -vnpm使用之前一定…...

前缀和专题练习 ——基于罗勇军老师的《蓝桥杯算法入门C/C++》

目录 一、0求和 - 蓝桥云课 算法代码&#xff1a; 代码思路概述 代码详细解释 数组定义 输入读取 前缀和计算部分 结果计算部分 输出结果 程序结束 总结 二、1.可获得的最小取值 - 蓝桥云课 算法代码&#xff1a; 代码思路概述 详细代码逻辑解释 输入初始化 …...

1.测试策略与计划设计指南

1.介绍 1.1项目介绍 完整项目组成&#xff1a;1.基于K8S定制开发的SaaS平台&#xff1b;2.多个团队提供的中台服务(微服务)&#xff1b;3.多个业务团队开发的系统平台。涉及多个项目团队、上百个微服务组件。 测试在所有团队开发测试后&#xff0c;自己搭建测试环境&#xff0c…...

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…...

HDFS扩缩容及数据迁移

1.黑白名单机制 在HDFS中可以通过黑名单、白名单机制进行节点管理&#xff0c;决定数据可以复制/不可以复制到哪些节点。 黑名单通常是指在HDFS中被标记为不可用或不可访问的节点列表&#xff0c;这些节点可能由于硬件故障、网络问题或其他原因而暂时或永久性地无法使用。当一…...