线程池的使用 + MD5加密 + 枚举类
文章目录
- 1、线程池的使用
- 2、MD5算法的使用
- 3、多用枚举类
整理下近期干活儿遇到的一些坑。
1、线程池的使用
不合理点1:
jstack线程转储发现,有几万个线程,查看代码发现,线程池放在方法内部或者循环体中创建,尽管方法最后有shutdown关闭线程池,但一定并发调用下线程数量会激增
改进:
使用成员变量放线程池
不合理点2:
非单例Bean,或者一个普通的类中,线程池放成员变量了,但没有static修饰,正好其所在类被大量创建对象,一个对象一个线程池,大量线程池被创建

改进:
使用static修饰成员变量,即某个属性所有对象都相同,与之相反的是实例变量,即某个属性一个对象一份,如名字、身高
2、MD5算法的使用
不合理点:
调用一个三方接口,有个请求参数accesskey,其可能包含反斜线、等号🟰等特殊字符,直接传可能导致接口调用失败,甚至SQL执行出错,影响系统数据
改进:
考虑做一个MD5加密,输出一个定长字符串
补充:
关于MD5算法:Message-Digest Algorithm 5,可以将任意长度的数据映射为固定长度(通常为128位)的哈希值,该过程不可逆(无法从哈希值反推原始数据),多用于数据完整性校验
输入任意长度的数据 → 经过多轮循环处理 → 输出固定长度的128位哈希值(通常表示为32位十六进制字符串)
需要注意MD5有安全性问题:不同的输入可能生成相同的哈希值(目前已构造出大量碰撞案例),因此,不适用于:
- 密码存储(应使用 bcrypt、Argon2 等算法)。
- 数字签名或高安全场景。
仅推荐用于:非敏感数据的快速校验,如文件完整性检查
3、多用枚举类
代码中多用枚举类代替直接创建的字符串,常用的枚举形式一:
public enum StatusEnum {SUCCESS,RUNNING
}
//代替大量的"SUCCESS"字符串
StatusEnum.SUCCESS.name()
形式二:加一个display,而不是name()后转小写,更加有灵活性
@Getter
public enum ClusterTypeEnum {RABBITMQ("rabbitmq"),MQTT("mqtt");private final String displayName;ClusterTypeEnum(String displayName) {this.displayName = displayName;}}
形式三:用于传参字段上,直接将枚举类型和String在序列化和反序列化时自动转换,如此Dto类中可以直接用枚举类型的变量,而不再要求非得String,同样的,序列化时,也会把枚举转成String:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;@Getter
@AllArgsConstructor
public enum OrderFieldEnum {CREATE_TIME("createTime", "create_time"),NAME("name","name");private final String value; //值private final String field; //对应数据库中的字段,方便后面写业务和Mapper层代码private static final Map<String, OrderFieldEnum> map = new HashMap<>();//@JsonCreator标记一个构造函数或静态工厂方法,告诉 Jackson 在反序列化 JSON 时应该调用该方法来创建对象实例。@JsonCreatorpublic static OrderFieldEnum check(String value) {//这里的判断map为空则遍历枚举类的值放进Map中//这个操作和上面的利用类加载时机初始化Map集合一个目的if (map.isEmpty()) {for (OrderFieldEnum orderFieldEnum : OrderFieldEnum.values()) {map.put(orderFieldEnum.getValue(), orderFieldEnum);}}//如果在Map中找不到对应的key和传入的字段相等,则认为非法传参,即不支持这个排序字段if (!map.containsKey(value)) {throw new MyExceptionHandler("不支持这个排序字段"); //自定义异常,在全局异常处理器处理}//否则返回整个枚举对象return map.get(value);}//@JsonValue标记一个方法,将该方法的返回值直接作为 JSON 的值,而不是将整个对象序列化为 JSON 对象//使用场景:当某个类本身不需要完整的 JSON 表示,只需要输出其中一个字段的值时@JsonValuepublic String getValue() {return value;}
}
详见:https://llg-notes.blog.csdn.net/article/details/130997300
相关文章:
线程池的使用 + MD5加密 + 枚举类
文章目录 1、线程池的使用2、MD5算法的使用3、多用枚举类 整理下近期干活儿遇到的一些坑。 1、线程池的使用 不合理点1:jstack线程转储发现,有几万个线程,查看代码发现,线程池放在方法内部或者循环体中创建,尽管方法…...
[qt5学习笔记]Application Example示例程序源码解析
开发环境问题 vs2022下直接打开ui、ts文件失败 解决办法如下图, 设置designer独立运行。估计是嵌入运行存在些许bug。 同理,ts编辑工具linguist也存在这个问题。 qrc rc的编辑嵌入编辑都正常,但分离式更稳定可靠。 qt creator编译失败 原…...
【在时光的棋局中修行——论股市投资的诗意哲学】
在时光的棋局中修行——论股市投资的诗意哲学 引子:数字之海与星辰之约 在经纬交织的K线图里,我常看见银河倾泻的轨迹。那些跳动的数字如同繁星坠落,在午夜时分编织着财富的密码。炒股之道,是理性与诗意的交响,是数据…...
IB网络错误检查工具ibqueryerrors
ibqueryerrors 是一个用于查询 InfiniBand 网络中错误统计信息的工具。它可以帮助网络管理员识别和诊断网络问题,如丢包、重传和其他通信错误。这个工具通常是 InfiniBand 管理软件包的一部分,例如 OpenSM(Open Subnet Manager)。…...
「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
论文阅读 DOES END-TO-END AUTONOMOUS DRIVING REALLY NEED PERCEPTION TASKS?
端到端的强势来袭,好久了~~~ 简单翻译:端到端真的需要感知任务嘛? code https://github.com/PeidongLi/SSR. https://arxiv.org/pdf/2409.18341 1. 摘要 端到端自动驾驶(E2EAD)方法通常依赖于监督式感知任务来提取显…...
25年黑龙江省考报名流程详细教程
2025年黑龙江省考报名马上就要开始报名啦! 有想要参加黑龙江省考报名的同学,可以提前了解一下考试报名流程,熟悉考试报名照要求! 一、考试时间安排 报名时间:2月18日9:00至2月23日17:00 缴费时间:2月18日…...
基于SpringBoot的小区运动中心预约管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
部署postgresql_exporter监控pgsql
部署exporter配置监控job配置告警规则 一键部署脚本 #!/bin/bash# 定义变量 PG_HOST"xx.ap-southeast-1.rds.amazonaws.com" PG_PORT"5432" PG_PASSWORD"bagayalu321" PG_USER"monitor_user" EXPORTER_VERSION"0.16.0" #…...
Mac本地部署deepseek
Ollama 运行deepseek需要本地运行工具ollama,安装路径如下 ollama官方网站 (https://ollama.com/download) 下载Mac版ollama,点击移至application下面 DeepSeek R1 14b 通过ollama安装deepseek,对应的运行指令可通过 deepseek本地部署列表…...
huggingface+下载deepseek8b lamda+本地部署 笔记
步骤倒过来 1.python hf_download.py --model unsloth/DeepSeek-R1-Distill-Llama-8B-GGUF model后加模型名(HF-Mirror中查) 【huggingface模型下载不下来?这里教你万能解决办法~huggingface小白使用指南。】 https://www.bilibili.com/video…...
中上211硕对嵌入式AI感兴趣,如何有效规划学习路径?
今天给大家分享的是一位粉丝的提问,中上211硕对嵌入式AI感兴趣,如何有效规划学习路径? 接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。 同学提问: 中上211,…...
Jedis 客户端 用于java连接redis服务
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId...
车载诊断数据库 --- 通用性诊断数据库ODX
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
docker 基础命令使用(ubuntu)
docker 状态查询 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作镜像命令 docker imagesdocker rmi 镜像id/镜像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 参数…...
IDEA集成DeepSeek
引言 随着数据量的爆炸式增长,传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术,凭借其强大的语义理解与深度学习能力,正在改变搜索领域的游戏规则。 对于 Java 开发者而言,将 DeepSeek 集成…...
Unity 接入Luabn记录图解
Luban 文档及链接项目目录UnityEditor 导表工具 文档及链接 官方文档 最新版本 项目目录 接入的方法有很多,我这里随便找了一种 https://gitee.com/focus-creative-games/luban_examples.git如上图,git拉去后,只保留圈起来的2个文件夹。…...
【MySQL】我在广州学Mysql 系列——Mysql 日志管理详解
ℹ️大家好,我是练小杰,今天又是新的一周了,又该摆好心态迎接美好的明天了!!!😆 本文主要对Mysql数据库中的日志种类以及基本命令进行讨论!! 回顾:Ǵ…...
【线段树 二分查找】P3939 数颜色|普及+
本文涉及知识点 C线段树 C二分查找 P3939 数颜色 题目背景 大样例可在页面底部「附件」中下载。 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的。每只兔子都有一种颜色,不同的兔子可能有 相同的颜色。小 C 把她标号从 1 到 n n n 的 n n n 只兔…...
2011年下半年软件设计师考试上午题真题的详细知识点分类整理(附真题及答案解析)
以下是针对2011年下半年软件设计师考试上午题真题的详细知识点分类整理,涵盖所有题目涉及的核心知识点,供考生背诵记忆: 1. 数据结构与算法 树与图: 树的性质:树的节点数、深度、叶子节点数之间的关系。二叉树遍历&am…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
