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

北京做网站设计招聘app001推广平台官网

北京做网站设计招聘,app001推广平台官网,网页生成apk,江都区城乡建设局网站文章目录 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.ds6.com.cn/news/52134.html

相关文章:

  • 响应式自适应网站模板磁力兔子搜索引擎
  • 建设公司名字智谋网站优化公司
  • 网站建设工作具体内容360排名检测
  • 兴力网站建设行业关键词
  • 南阳网站搭建如何做网络推广
  • 向国外卖货的电商平台成都seo优化外包公司
  • iis网站服务器 建立出现问题汕头网站建设开发
  • 山西太原今天重大新闻seo广告优化多少钱
  • 武汉便宜的做网站公司怎么快速推广app
  • 江西网站开发联系方式网上推广企业
  • 唐山网站搭建建个网站需要多少钱?
  • 孝感城乡建设委员会网站百度推广开户代理商
  • 网站建设需要什么人员企业广告宣传
  • 网站建设广告背景图广告联盟接单平台
  • 百度网站推广找谁做微信搜索seo优化
  • 中山蓝图科技网站建设百度推销广告一年多少钱
  • 寿光网站建设多少钱seo关键字排名
  • 日木女人做爰视频网站友情链接网站
  • 自己做网站要买域名吗seo工具查询
  • 成都装修公司招聘信息seo综合检测
  • 雄安网站建设公司免费的网站域名查询
  • wordpress多站点模式今日nba数据帝
  • 百度推广投诉电话西安网站建设推广优化
  • 定制网站建设制作商出售友情链接是什么意思
  • 公司设计网站定制网络黄页推广软件哪个好用
  • 网站里+动效是用什么做的上海谷歌seo推广公司
  • 做生存曲线网站在线seo工具
  • 金桥网站建设游戏推广拉人渠道
  • 个人做视频网站永久8x的最新域名
  • 做网站备案免费的外贸网站推广方法