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

字符脱敏工具类

1、字符脱敏工具类

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;/*** 数据脱敏工具类** @date 2024/10/30 13:44*/@Slf4j
public class DataDesensitizationUtils {public static final String STAR_1 = "*";public static final String STAR_2 = "**";public static final String STAR_3 = "***";public static final String STAR_4 = "****";/*** 手机号脱敏** @param mobile 手机号* @return 返回值*/public static String mobileDesensitize(String mobile) {// 如果手机号为空则返回空字符串if (StringUtils.isBlank(mobile)) {return "";}// 取手机号最后4位String right = StringUtils.right(mobile, 4);// 手机号除了最后4位都用*代替String leftPad = StringUtils.leftPad(right, StringUtils.length(mobile), STAR_1);// 移除前面默认的三位*String removeStart = StringUtils.removeStart(leftPad, STAR_3);// 取手机号前3位String left = StringUtils.left(mobile, 3);// 字符串链接并返回return left.concat(removeStart);}/*** 姓名脱敏** @param name 姓名* @return 返回值*/public static String nameDesensitize(String name) {// 名字为空则返回空字符串if (StringUtils.isBlank(name)) {return "";}// 名字长度小于等于3个字符,则将前面一个字符用*代替int length = 3;if (name.length() <= length) {int len = name.length() - 1;String right = StringUtils.right(name, len);return STAR_1.concat(right);}// 名字长度大于3个字符,则将前两个字符用*代替int len = name.length() - 2;String right = StringUtils.right(name, len);return STAR_2.concat(right);}/*** 地址脱敏** @param detailAddress 地址* @return 返回值*/public static String detailAddressDesensitize(String detailAddress) {int length = 10;String desensitizationText = STAR_4;// 地址为空或长度小于10个字符则默认返回*if (StringUtils.isBlank(detailAddress) || detailAddress.length() <= length) {return desensitizationText;} else {// 把地址10个字符后的所有字符替换为*StringBuilder address = new StringBuilder(detailAddress);int start = address.length() - 10;int end = address.length();return address.replace(start, end, desensitizationText).toString();}}}

2、测试工具类

@Slf4j
@ExtendWith(MockitoExtension.class)
public class DataDesensitizationUtilsTest {@Testpublic void testMobileDesensitize() {String mobile = "13011112222";String result = DataDesensitizationUtils.mobileDesensitize(mobile);log.info("手机号脱敏结果:{}", result);}@Testpublic void testNameDesensitize() {String name = "诸葛孔明";String result = DataDesensitizationUtils.nameDesensitize(name);log.info("姓名脱敏结果:{}", result);}@Testpublic void testAddressDesensitize() {String address = "北京首钢国际会展中心9号馆、10号馆";String result = DataDesensitizationUtils.detailAddressDesensitize(address);log.info("地址脱敏结果:{}", result);}}

相关文章:

字符脱敏工具类

1、字符脱敏工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils;/*** 数据脱敏工具类** date 2024/10/30 13:44*/Slf4j public class DataDesensitizationUtils {public static final String STAR_1 "*";public static final …...

【jvm】jvm对象都分配在堆上吗

目录 1. 说明2. 堆上分配3. 栈上分配&#xff08;逃逸分析和标量替换&#xff09;4. 方法区分配5. 直接内存&#xff08;非堆内存&#xff09; 1. 说明 1.JVM的对象并不总是分配在堆上。2.堆是JVM用于存储对象实例的主要内存区域&#xff0c;存在一些特殊情况&#xff0c;对象…...

@AutoWired和 @Resource原理深度分析!

嗨&#xff0c;你好呀&#xff0c;我是猿java Autowired和Resource是 Java程序员经常用来实现依赖注入的两个注解&#xff0c;这篇文章&#xff0c;我们将详细分析这两个注解的工作原理、使用示例和它们之间的对比。 依赖注入概述 依赖注入是一种常见的设计模式&#xff0c;…...

C++设计模式创建型模式———原型模式

文章目录 一、引言二、原型模式三、总结 一、引言 与工厂模式相同&#xff0c;原型模式&#xff08;Prototype&#xff09;也是创建型模式。原型模式通过一个对象&#xff08;原型对象&#xff09;克隆出多个一模一样的对象。实际上&#xff0c;该模式与其说是一种设计模式&am…...

重学SpringBoot3-Spring WebFlux之SSE服务器发送事件

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE&#xff1f;2. Spring Boot 3 响应式编程与 SSE为什么选择响应式编程实现 SSE&#xff1f; 3. 实现 SSE 的基本步骤3.…...

YOLO即插即用模块---AgentAttention

Agent Attention: On the Integration of Softmax and Linear Attention 论文地址&#xff1a;https://arxiv.org/pdf/2312.08874 问题&#xff1a; 普遍使用的 Softmax 注意力机制在视觉 Transformer 模型中计算复杂度过高&#xff0c;限制了其在各种场景中的应用。 方法&a…...

探索开源语音识别的未来:高效利用先进的自动语音识别技术20241030

&#x1f680; 探索开源语音识别的未来&#xff1a;高效利用自动语音识别技术 &#x1f31f; 引言 在数字化时代&#xff0c;语音识别技术正在引领人机交互的新潮流&#xff0c;为各行业带来了颠覆性的改变。开源的自动语音识别&#xff08;ASR&#xff09;系统&#xff0c;如…...

学习路之TP6--workman安装

一、安装 首先通过 composer 安装 composer require topthink/think-worker 报错&#xff1a; 分析&#xff1a;最新版本需要TP8&#xff0c;或装低版本的 composer require topthink/think-worker:^3.*安装后&#xff0c; 增加目录 vendor\workerman vendor\topthink\think-w…...

.NET内网实战:通过白名单文件反序列化漏洞绕过UAC

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 03原理分析 在渗透测试和红…...

AI Agents - 自动化项目:计划、评估和分配

Agents: Role 角色Goal 目标Backstory 背景故事 Tasks&#xff1a; Description 描述Expected Output 期望输出Agent 代理 Automated Project: Planning, Estimation, and Allocation Initial Imports 1.本地文件helper.py # Add your utilities or helper functions to…...

Git的.gitignore文件

一、各语言对应的.gitignore模板文件 项目地址&#xff1a;https://github.com/github/gitignore 二、.gitignore文件不生效 .gitignore文件只是ignore没有被追踪的文件&#xff0c;已被追踪的文件&#xff0c;要先删除缓存文件。 # 单个文件 git rm --cached file/path/to…...

网站安全,WAF网站保护暴力破解

雷池的核心功能 通过过滤和监控 Web 应用与互联网之间的 HTTP 流量&#xff0c;功能包括&#xff1a; SQL 注入保护&#xff1a;防止恶意 SQL 代码的注入&#xff0c;保护网站数据安全。跨站脚本攻击 (XSS)&#xff1a;阻止攻击者在用户浏览器中执行恶意脚本。暴力破解防护&a…...

深度学习:梯度下降算法简介

梯度下降算法简介 梯度下降算法 我们思考这样一个问题&#xff0c;现在需要用一条直线来回归拟合这三个点&#xff0c;直线的方程是 y w ^ x b y \hat{w}x b yw^xb&#xff0c;我们假设斜率 w ^ \hat{w} w^是已知的&#xff0c;现在想要找到一个最好的截距 b b b。 一条…...

SparkSQL整合Hive后,如何启动hiveserver2服务

当spark sql与hive整合后&#xff0c;我们就无法启动hiveserver2的服务了&#xff0c;每次都要先启动hive的元数据服务&#xff08;nohup hive --service metastore&#xff09;才能启动hive,之前的beeline命令也用不了&#xff0c;hiveserver2的无法启动&#xff0c;这也导致我…...

前端路由如何从0开始配置?vue-router 的使用

在 Web 开发中&#xff0c;路由是指根据 URL 的不同部分将请求分发到不同的处理函数或页面的过程。路由是单页应用&#xff08;SPA, Single Page Application&#xff09;和服务器端渲染&#xff08;SSR, Server-Side Rendering&#xff09;应用中的一个重要概念。 在开发中如何…...

Java中的运算符【与C语言的区别】

目录 1. 算术运算符 1.0 赋值运算符&#xff1a; 1.1 四则运算符&#xff1a; - * / % 【取余与C有点不同】 1.2 增量运算符&#xff1a; - * / % * 【右侧运算结果会自动转换类型】 1.3 自增、自减&#xff1a;、-- 2. 关系运算符 3. 逻辑运算符 3.1 短路求值 3.2 【…...

二、基础语法

入门了解 注释 **作用&#xff1a;**在代码中加一些注释和说明&#xff0c;方便自己或者其他程序员阅读代码 两种格式&#xff1a; 单行注释&#xff1a;// 描述信息 通常放在一行代码的上方&#xff0c;或者一条语句的末尾&#xff0c;对该行代码进行说明 多行注释&#x…...

DB-GPT系列(一):DB-GPT能帮你做什么?

DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL and Agents)&#xff0c;围绕大模型提供灵活、可拓展的AI原生数据应用管理与开发能力&#xff0c;可以帮助企业快速构建、部署智能AI数据应用&#xff0c;通过智能数据分析、洞察…...

【Python各个击破】numpy

简介 NumPy是一个开源的Python库&#xff0c;它提供了一个强大的N维数组对象和许多用于操作这些数组的函数。它是大多数Python科学计算的基础&#xff0c;包括Pandas、SciPy和scikit-learn等库都建立在NumPy之上。 安装 !pip install numpy导入 import numpy as np用法 # …...

【STM32 Blue Pill编程实例】-4位7段数码管使用

4位7段数码管使用 文章目录 4位7段数码管使用1、7段数码介绍2、硬件准备与接线3、模块配置4、代码实现在本文中,我们将介绍如何将 STM32 Blue Pill开发板与 4 位 7 段数码管连接,并在 STM32CubeIDE 中对其进行编程。 在文章中首先将介绍 4 位 7 段数码管及其与 STM32 Blue Pi…...

IntelliJ IDEA工具栏隐藏技巧:3分钟添加上一步/下一步按钮(附快捷键指南)

IntelliJ IDEA高效导航&#xff1a;自定义工具栏与快捷键深度指南 为什么我们需要关注IDE导航效率&#xff1f; 作为一名长期使用IntelliJ IDEA进行开发的工程师&#xff0c;我深刻体会到流畅的代码导航对工作效率的影响。想象一下这样的场景&#xff1a;在调试复杂业务逻辑时&…...

Qt开发浦语灵笔2.5-7B图形界面应用实战

Qt开发浦语灵笔2.5-7B图形界面应用实战 1. 引言 想象一下&#xff0c;你有一个强大的多模态AI模型&#xff0c;能够理解图像、视频、音频&#xff0c;还能进行智能对话&#xff0c;但每次使用都要在命令行里敲代码&#xff0c;是不是有点不太方便&#xff1f;这就是我们今天要…...

NFS共享那些坑:从‘insecure参数‘到‘nolock选项‘的避坑指南(附CentOS8实测)

NFS共享配置深度解析&#xff1a;从参数调优到故障排查实战 在分布式系统架构中&#xff0c;网络文件系统(NFS)作为经典的共享存储解决方案&#xff0c;凭借其简单高效的特性&#xff0c;至今仍广泛应用于企业级环境。然而&#xff0c;正是这种"简单"的表象下&#x…...

微机原理实战:基于8253/8255芯片的智能电子时钟设计与实现

1. 项目背景与核心器件选型 第一次接触8253和8255芯片是在大三的微机原理实验课上&#xff0c;当时看着示波器上精准的方波信号从8253输出&#xff0c;突然理解了"可编程"的真正含义。这次我们要用这对黄金搭档打造一个带校时功能的电子时钟&#xff0c;这可比单纯点…...

granite-4.0-h-350m多语言实战:Ollama部署后中英日韩阿葡等语种问答效果横向对比

granite-4.0-h-350m多语言实战&#xff1a;Ollama部署后中英日韩阿葡等语种问答效果横向对比 今天我们来实测一个轻量级但功能强大的多语言模型——granite-4.0-h-350m。这个模型只有3.5亿参数&#xff0c;却支持12种语言&#xff0c;包括中文、英文、日语、韩语、阿拉伯语、葡…...

Gemma-3多模态大模型效果展示:艺术画作风格分析+相似作品推荐案例

Gemma-3多模态大模型效果展示&#xff1a;艺术画作风格分析相似作品推荐案例 1. 惊艳的艺术理解能力 Gemma-3 Pixel Studio的多模态能力在艺术领域展现出令人印象深刻的表现。不同于普通图像识别工具&#xff0c;它能够深入理解画作的风格、技法和情感表达&#xff0c;为艺术…...

MySQL数据库基础——SQL语句之DCL介绍

一、DCL介绍 1.1 概念 Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限 二、管理用户 2.1 查询用户 select * from mysql.user;Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问&#xff0c;是不可以远程访…...

qodo-cover:AI如何重塑测试覆盖率分析与优化

1. 当测试覆盖率遇上AI&#xff1a;qodo-cover带来的变革 测试覆盖率一直是衡量代码质量的重要指标&#xff0c;但传统的手工编写测试用例方式效率低下&#xff0c;难以应对现代快速迭代的开发节奏。我最近在项目中尝试了qodo-cover这个AI驱动的测试覆盖率框架&#xff0c;它彻…...

海景美女图FLUX.1部署教程:supervisorctl重启+服务状态查看

海景美女图FLUX.1部署教程&#xff1a;supervisorctl重启服务状态查看 1. 引言&#xff1a;从文字到海景的魔法 想象一下&#xff0c;你脑海中浮现出一个画面&#xff1a;夕阳西下&#xff0c;一位身着白裙的女士漫步在金色沙滩上&#xff0c;海浪轻抚着她的脚踝。现在&#…...

ComfyUI语音合成新玩法:用VibeVoice快速制作多角色有声书(附声音克隆技巧)

ComfyUI语音合成新玩法&#xff1a;用VibeVoice快速制作多角色有声书&#xff08;附声音克隆技巧&#xff09; 有声内容创作正在经历一场技术革命。想象一下&#xff0c;你正在制作一部多人角色对话的有声小说&#xff0c;传统方式需要协调多位配音演员的档期、处理录音棚租用费…...