看代码所学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為了截取.后面的內容(也是為了防止報錯,很細節這個地方),然后我們給這個前面加上個自己做的“.”
? ? 2、而當我們使用substring的時候我們沒有用文件自帶的“.”,而是我們自己加一個”.”,因為極端情況下,文件名是啥都沒有的,連.都沒有,我們用lastIndexOf(’.’)就會返回-1,+1為了截取.后面的內容(也是為了防止報錯,很細節這個地方),然后我們給這個前面加上個自己做的“.”
轉載于:https://www.cnblogs.com/television/p/9353774.html
總結
- 上一篇: vi设计多少钱啊?
- 下一篇: 如何利用大数据指导市场营销