看代码所学3
Posted television
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看代码所学3相关的知识,希望对你有一定的参考价值。
1、随机数:RandomUtils.nextInt(起点,终点); Int可更改
2、为什么使用uuid作为主键而不是使用自增id,因为可能存在分库,不能控制每个分库中id的自增点,每个库中的id会重复;然后id会增长到什么规模都不知道,所以使用uuid是个比较好的选择。
uuid生成:UUIDUtils.createUuid(x -> lessonGroupDao.getUuid(x) != null)
createUuid中存放的是一个断言式接口。
原始的生成方式:将”—“都替换成”"
UUID.randomUUID().toString().replaceAll("-", "”);
3、怎么在mybatis中插入了自增主键之后还要能够取出这个主键
在insert或update的配置中加入 useGeneratedKeys=“true” , keyProperty="主键名"
<insert id="saveMsg" parameterType="cn.com.hyddl.smarthome.notice.core.nano.Notice"useGeneratedKeys="true" keyProperty="msgId”>
4、rocketmq
消息顺序性:生产者先生产消息m1,m2到mqserver,然后,为了保证m1先于m2被消费,则让mqserver先发送m1,当消费者接收到后将应答信号发送到mqserver,如果mqserver接受失败就重新发送m1到消费者,知道成功;当mqserver接受应答信号成功就发送m2。但是,有可能m1已经被消费了,但是应答信号发送失败,这就产生了消息重复发送的可能。
消息重复性:这个就设计到了等幂性了:不同消息在同一个系统上的响应一致。可以在消费端设置一个去重的日志表,将同样id的消息失效,但是会影响性能,所以rocketmq的去重需要在业务中进行。
5、MultipartFile file 前端传来的是一个文件
MultipartHttpServletRequest request 前端传来的是一个request请求(其中可能包含多文件)
request.getFileNames——>获取传输的多个文件的文件名
Iterator<String> it = request.getFileNames();
While(it.hasNext()){
MultipartFile file = request.getFile(it.next);
}
file.getName——>获取表单对应名称(不是文件名称)
file.getOriginalFileName——>获取文件名字
文件后缀获取方法:
String fileExt = StringUtils.isBlank(originalName) ?
ContentTypeUtils.getFileExt(contentType) :
"." + originalName.substring(originalName.lastIndexOf(‘.‘) + 1);
这个后缀获取需要解释几个地方:
1、由于我们使用contentType,然后参考MIME文件的话是不靠谱的,因此我们还是尽量使用自带的文件尾缀,使用contentType只是为了兜底
2、而当我们使用substring的时候我们没有用文件自带的“.”,而是我们自己加一个”.”,因为极端情况下,文件名是啥都没有的,连.都没有,我们用lastIndexOf(’.’)就会返回-1,+1为了截取.后面的内容(也是为了防止报错,很细节这个地方),然后我们给这个前面加上个自己做的“.”