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

北京做网站设计招聘博客网站

北京做网站设计招聘,博客网站,mysql做网站怎么查看数据,如何做一张图片的网站文章目录 1、线程池的使用2、MD5算法的使用3、多用枚举类 整理下近期干活儿遇到的一些坑。 1、线程池的使用 不合理点1:jstack线程转储发现,有几万个线程,查看代码发现,线程池放在方法内部或者循环体中创建,尽管方法…

文章目录

  • 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

http://www.yidumall.com/news/41561.html

相关文章:

  • 横峰县城乡建设网站苏州seo培训
  • 北京南站停车场收费标准抖音视频排名优化
  • 网站建设背景怎么写青岛网站优化公司哪家好
  • 重庆网站建设套餐开网店
  • 网站降权原因seo排名优化软件免费
  • 网站开发费用属于什么科目网络推广公司有哪些
  • 不花钱网站怎么做推广长沙网站seo收费
  • 网站服务器维护百度网站推广价格查询
  • 上海做网站建设的公司排名短链接在线生成
  • 清河哪里做网站青岛谷歌seo
  • html教学网站论坛推广
  • 网站建设与推广范文找片子有什么好的关键词推荐
  • 电视剧下载网站 免费糖醋蒜怎样做百度灰色关键词排名
  • 网站备案名称查询网站关键词排名手机优化软件
  • 做网站 斗地主创建属于自己的网站
  • 关于当当网站建设方案兰州seo优化
  • 深圳做营销网站公司简介2024年度关键词
  • 久久建筑资料网seo搜索优化工程师招聘
  • wordpress讨论区桂林seo顾问
  • 网络优化网站做百度网站一年多少钱
  • 扬州百姓网免费发布信息网广州seo网站公司
  • 企业做网站的必要性站长之家音效素材
  • 沈阳微网站建设百度seo排名优化系统
  • 企业网站建设方案包含网盘资源搜索神器
  • 做网站通过什么挣钱nba排名最新排名
  • wordpress表情评论插件seo优化是怎么回事呢
  • 买手表去哪个网站买是正品的高级seo培训
  • 上哪儿找做网站的客户网站关键词快速排名服务
  • 科技公司网站响应式百度推广代理加盟
  • 做报名网站seo教程网