摘要:花了將近兩個(gè)星期完成了功能,期間我編寫(xiě)的能力也算是有所提升了。所以能看到這篇文章的同學(xué)都是大佬如果想看更多的原創(chuàng)技術(shù)文章,歡迎大家關(guān)注我的微信公眾號(hào)。可能感興趣的鏈接文章的目錄導(dǎo)航微信公眾號(hào)端文章的目錄導(dǎo)航端海量精美腦圖
前言
只有光頭才能變強(qiáng)
2018年8月30日,今天我辭職了。在6月25號(hào)入職,到現(xiàn)在也有兩個(gè)月時(shí)間了。
感受:
第一天是期待的:第一次將項(xiàng)目拉到本地上看的時(shí)候,代碼很多,有非常多的模塊,模塊下又有dao/service/controller/form/bean,眼花繚亂的。再連上測(cè)試庫(kù),也發(fā)現(xiàn)有100多張表。~~順著一些模塊看下去,發(fā)現(xiàn)用的技術(shù)不難,之前基本都有接觸過(guò),都是可以看得懂的。
第一個(gè)星期是焦慮的:第二天給我發(fā)下了一個(gè)文檔,文檔里邊有幾個(gè)小任務(wù)(一、編寫(xiě)接口將數(shù)據(jù)導(dǎo)出到Excel,二、改進(jìn)一個(gè)功能)。
第二個(gè)功能的SQL語(yǔ)句寫(xiě)了很長(zhǎng)的時(shí)間都沒(méi)寫(xiě)出來(lái),沒(méi)寫(xiě)出來(lái)原因有兩個(gè):我的SQL能力弱和業(yè)務(wù)表之間的關(guān)系還沒(méi)熟悉(現(xiàn)在想起來(lái),算是我這兩個(gè)月里寫(xiě)過(guò)最麻煩的SQL了)?;藢⒔鼉蓚€(gè)星期完成了功能,期間我編寫(xiě)SQL的能力也算是有所提升了。
大多時(shí)候是閑的:很多時(shí)候接到的任務(wù)都是基于原有的基礎(chǔ)上添加一些功能,改Bug之類的,也做過(guò)小的模塊開(kāi)發(fā)??傮w來(lái)看:技術(shù)難度不大,主要是對(duì)業(yè)務(wù)的理解。
這兩個(gè)月過(guò)得很開(kāi)心,好吃好住,就是長(zhǎng)胖了
另外值得一說(shuō)的是:別以為我寫(xiě)了那么多博客的就很厲害,很牛逼,其實(shí)我渣得一批!校招的算法筆試題基本沒(méi)有ac的,在面試的時(shí)候,知識(shí)點(diǎn)說(shuō)忘就忘。我寫(xiě)博客主要是記錄一下自己的成長(zhǎng),遺忘的技術(shù)可以翻看,跟大家一起交流交流,共同進(jìn)步~
朋友吐槽我寫(xiě)的文章像是小學(xué)生作文,我也不擅長(zhǎng)著感想之類的.....所以,將就點(diǎn)看吧..~
下面主要記錄了在實(shí)習(xí)中遇到的新技術(shù),還有一些之前寫(xiě)過(guò)的筆記也放上來(lái)了。
一、實(shí)習(xí)時(shí)學(xué)到的新技術(shù) 1.1swagger文檔框架在看公司代碼的時(shí)候,發(fā)現(xiàn)Controller有幾個(gè)我不知道的注解:@Api,@ApiOperation..
去查了一下,原來(lái)是接口的文檔框架。
想要更加深入了解:
https://blog.csdn.net/i6448038/article/details/77622977
1.2Lombok讓Java代碼更簡(jiǎn)潔看到JavaBean的時(shí)候,也發(fā)現(xiàn)了新大陸:注解@Data
在JavaBean中沒(méi)有任何的set/get方法,但在外面卻可以使用set/get方法,很是神奇..
去找了一下資料,原來(lái)這玩意叫做:Lombok。
簡(jiǎn)單來(lái)說(shuō):通過(guò)注解消除樣板代碼(從此set/get就沒(méi)有了),JavaBean會(huì)十分簡(jiǎn)潔!
要注意的是:在IDE上需要安裝插件(IDEA如果沒(méi)安裝lombok插件,編譯會(huì)錯(cuò)誤,一大堆的紅色!)
Lombok使用和介紹:
https://yq.aliyun.com/articles/59972
https://www.zhihu.com/question/42348457
https://blog.csdn.net/lvshuchangyin/article/details/68065775
1.3postman使用公司前后端分離,后端返回json數(shù)據(jù)給前端解析。我拿到的代碼是完全沒(méi)有前端頁(yè)面的,老大讓我裝個(gè)postman來(lái)調(diào)試。
由于之前都是個(gè)人開(kāi)發(fā),想怎么玩就怎么玩(所以就沒(méi)用過(guò)postman..)。
找到了一篇很好的postman教程(如果沒(méi)用過(guò)的同學(xué),看完應(yīng)該可以快速上手!):
https://blog.csdn.net/fxbin123/article/details/80428216
1.4JSON Web Token(認(rèn)證授權(quán))JSON Web Token(JWT)是什么?
WT作為一個(gè)開(kāi)放的標(biāo)準(zhǔn)(RFC 7519), 定義了一種簡(jiǎn)潔自包含的方法用于通信雙方之間以Json對(duì)象的形式安全的傳遞信息。 因?yàn)樘囟ǖ臄?shù)字簽名,所以這些通信的信息能夠被校驗(yàn)和信任。 JWT可以使用HMAC算法或者RSA的公鑰私鑰對(duì)進(jìn)行簽名。
什么時(shí)候應(yīng)該使用JSON Web Tokens?
認(rèn)證鑒權(quán)(Authentication)
數(shù)據(jù)交換(Information Exchange)
貌似我司很簡(jiǎn)單用了一下JWT,用于認(rèn)證鑒權(quán),我簡(jiǎn)單總結(jié)了一下流程:
按照正常的方式登錄
將用戶信息拼接成參數(shù)
用這個(gè)參數(shù)生成jwt對(duì)應(yīng)的token值。
這個(gè)token值保存對(duì)應(yīng)的權(quán)限,有效期,加密方式
token返回到瀏覽器中,使用Session Storage存儲(chǔ)起來(lái)
再次訪問(wèn)的時(shí)候,將這個(gè)token值帶過(guò)去(可以通過(guò)header的方式,也可以post/url拼接的方式)。問(wèn)了一下前端小哥,他們用的是Angular,封裝了一下,每次請(qǐng)求都將其寫(xiě)在header上。
如果這個(gè)token沒(méi)過(guò)期,解析這個(gè)Token值,返回對(duì)應(yīng)的User對(duì)象(標(biāo)識(shí))
如果這個(gè)token過(guò)期了,重新讓用戶登錄
了解更多查看文檔(中文):
http://jwtio.com/introduction.html
相關(guān)博文與討論:
http://www.liriansu.com/jwt
https://www.zhihu.com/question/41248303
https://www.cnblogs.com/cjsblog/p/9277677.html
1.5SQL編寫(xiě)思路之前自己寫(xiě)的sql都挺簡(jiǎn)單的,無(wú)非就是連接兩張表查詢出對(duì)應(yīng)的數(shù)據(jù)。
到了需求的時(shí)候就不同了,復(fù)雜很多(以至于我寫(xiě)了一個(gè)星期還沒(méi)寫(xiě)出來(lái)....)
需求的任務(wù)簡(jiǎn)單概括:要對(duì)每個(gè)字段的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),又要顯示每個(gè)字段下具體的內(nèi)容
說(shuō)白了,就是將多行的數(shù)據(jù)拼接起來(lái),弄成一行~
最終思路:
使用concat函數(shù)將其對(duì)應(yīng)的字段拼接起來(lái)
隨后再對(duì)字段進(jìn)行分組,使用group_concat函數(shù)再將上述的拼接起來(lái)
最終拿到拼接到一行的結(jié)果,放到程序中解析
2018年8月31日15:56:00更新:現(xiàn)在認(rèn)為,分成多條SQL拆分比較合理
反正sql這玩意得多寫(xiě)...(虐了我一個(gè)星期,原本都認(rèn)為這功能是無(wú)法實(shí)現(xiàn)的了..)
在完成需求的時(shí)候也想過(guò)很多種辦法來(lái)解決,找思路,從中也找到了一些比較好的關(guān)于sql的博文:
case when 使用: https://www.cnblogs.com/qlqwjy/p/7476533.html
exists關(guān)鍵字 使用:https://zhuanlan.zhihu.com/p/20005249
非相關(guān)子查詢:
相關(guān)子查詢:
沒(méi)有什么是select解決不了的,如果有,那就再套一層---《3y》
tips : 在連表查詢的時(shí)候,思考一下是不是一開(kāi)始就需要連表得出結(jié)果(可能有的時(shí)候:某個(gè)查詢條件必要時(shí),才要連表)1.6數(shù)據(jù)庫(kù)外鍵
在公司中,看數(shù)據(jù)庫(kù)表的設(shè)計(jì)是不用外鍵的。
在初學(xué)數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常用到了外鍵約束。在論壇中查看討論的時(shí)候,一般人都說(shuō)很少用外鍵。因?yàn)槲覀兺耆梢栽?strong>業(yè)務(wù)(程序控制和事務(wù))上處理表之間關(guān)系。一般互聯(lián)網(wǎng)應(yīng)用沒(méi)必要使用外鍵,外鍵會(huì)帶來(lái)一系列不好的影響:
1.數(shù)據(jù)庫(kù)需要維護(hù)外鍵的內(nèi)部管理;
2.外鍵等于把數(shù)據(jù)的一致性事務(wù)實(shí)現(xiàn),全部交給數(shù)據(jù)庫(kù)服務(wù)器完成;
3.有了外鍵,當(dāng)做一些涉及外鍵字段的增,刪,更新操作之后,需要觸發(fā)相關(guān)操作去檢查,而不得不消耗資源;
4.外鍵還會(huì)因?yàn)樾枰?qǐng)求對(duì)其他表內(nèi)部加鎖而容易出現(xiàn)死鎖情況;
參考資料:
https://www.zhihu.com/question/19600081
二、之前的一些筆記 2.1Timer和Quartz的區(qū)別Timer和Quartz都是任務(wù)調(diào)度框架,簡(jiǎn)單來(lái)說(shuō)就是:程序能夠在某時(shí)某刻上執(zhí)行你想要執(zhí)行的代碼。
之前在項(xiàng)目中簡(jiǎn)單用到了Quartz,在初學(xué)的時(shí)候也接觸過(guò)一下Timer的API調(diào)用。之前簡(jiǎn)單記錄過(guò)他倆的區(qū)別,現(xiàn)在回頭整理一下吧~
1.出身不同:Timer由jdk直接提供,調(diào)用方式簡(jiǎn)單粗暴,不需要其它jar包支持。Quartz并非jdk自帶,需要引入相應(yīng)的jar包
2.能力區(qū)別:主要體現(xiàn)在對(duì)時(shí)間的控制上。某個(gè)具體時(shí)間執(zhí)行具什么任務(wù)的話Timer可以輕松搞定,而比如每個(gè)星期天早上八點(diǎn)提醒做某事的功能就需要Quartz,因此Quartz對(duì)時(shí)間的控制遠(yuǎn)比Timer強(qiáng)大,完善
3.異常處理不同:Quartz的某次執(zhí)行任務(wù)過(guò)程中拋出異常,不影響下一次任務(wù)的執(zhí)行,當(dāng)下一次執(zhí)行時(shí)間到來(lái)時(shí),定時(shí)器會(huì)再次執(zhí)行任務(wù);而TimerTask則不同,一旦某個(gè)任務(wù)在執(zhí)行過(guò)程中拋出異常,則整個(gè)定時(shí)器生命周期就結(jié)束,以后永遠(yuǎn)不會(huì)再執(zhí)行定時(shí)器任務(wù)。
4.對(duì)并發(fā)支持不同:Timer走后臺(tái)線程執(zhí)行定時(shí)任務(wù)(單線程),Quartz能夠使用多個(gè)執(zhí)行線程去執(zhí)行定時(shí)任務(wù)
5.Quartz每次執(zhí)行任務(wù)都創(chuàng)建一個(gè)新的任務(wù)類對(duì)象,而TimerTask則每次使用同一個(gè)任務(wù)類對(duì)象
參考資料:
https://segmentfault.com/a/1190000009542398
https://segmentfault.com/a/1190000009972187
TimerTask 和 Quartz比較:https://blog.csdn.net/gongyouong/article/details/72965451
Quartz Demo源碼:
https://img.mukewang.com/down/5950cae200010ca100000000.rar
2.2Java生成二維碼我們現(xiàn)在已經(jīng)離不開(kāi)二維碼了。
二維碼是由一維碼發(fā)展而來(lái)的,最典型的一維碼就是我們平時(shí)去商場(chǎng)中看到商品包裝的條形碼,這就是典型的一維碼。
而二維碼的數(shù)據(jù)存儲(chǔ)量信息又比一維碼大得多,并且有很好的糾正的功能(即使二維碼中有部分的信息不完整,還是能夠解析得到二維碼的數(shù)據(jù))
使用Java語(yǔ)言生成二維碼有以下的方式:
zxing API
qrcode
juqeryqrcode
當(dāng)然了,肯定是jquery的方式來(lái)生成二維碼是比較簡(jiǎn)單的。但是如果想定制二維碼的樣式、形狀的話。那么使用Java的方式來(lái)生成是比較靈活的。(比如:在二維碼中間放上logo)
下載生成二維碼的資源jar包:https://img.mukewang.com/down/5799a5440001040300000000.rar
使用Jquery的方式生成二維碼的博文:http://suflow.iteye.com/blog/1687396
使用zxing生成二維碼的博客:http://guopengli.cn/index.php/2017/10/05/53.html
參考資料:
https://segmentfault.com/a/1190000009909177
2.3Java實(shí)現(xiàn)圖片水印、縮略圖有的時(shí)候我們?cè)谏蟼鲌D片時(shí),不希望展示的圖片大小和上傳的圖片大小相同時(shí),我們就需要把圖片進(jìn)行壓縮生一定的像素??s略圖例子:
圖片水印也經(jīng)常會(huì)看到:
無(wú)論是水印還是縮略圖,其實(shí)就是通過(guò)類庫(kù)來(lái)實(shí)現(xiàn)的,一般我們會(huì)使用JAVA圖像處理庫(kù)Thumbnailator。
參考資料:
https://segmentfault.com/a/1190000010302289
生成水印源碼:https://github.com/HongZhilin/watermark
縮略圖博文:http://blog.csdn.net/qq_31179919/article/details/53336293
縮略圖源碼:https://github.com/Amant-huangqi/Thumbnails
最后能看到我博客的人,說(shuō)明是有看技術(shù)文章的習(xí)慣的。有看技術(shù)文章的習(xí)慣,說(shuō)明都是愛(ài)技術(shù)/學(xué)習(xí)的人。愛(ài)技術(shù)/學(xué)習(xí)的人,技術(shù)一般不會(huì)差。所以能看到這篇文章的同學(xué)都是大佬----《3y》
如果想看更多的原創(chuàng)技術(shù)文章,歡迎大家關(guān)注我的微信公眾號(hào):Java3y。Java技術(shù)群討論:742919422。公眾號(hào)還有海量的視頻資源哦,關(guān)注即可免費(fèi)領(lǐng)取。
可能感興趣的鏈接:
文章的目錄導(dǎo)航(微信公眾號(hào)端):https://zhongfucheng.bitcron.com/post/shou-ji/wen-zhang-dao-hang
文章的目錄導(dǎo)航(PC端):http://www.zhongfucheng.bitcron.com/post/shou-ji/pcduan-wen-zhang-dao-hang
海量精美腦圖:http://www.zhongfucheng.bitcron.com/post/shou-ji/nao-tu-da-quan
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/76938.html
摘要:一個(gè)前端菜鳥(niǎo)的成長(zhǎng)記現(xiàn)在才總結(jié)似乎有點(diǎn)晚,但聊勝于無(wú),記錄一下我的,畢業(yè)的第一年,對(duì)于人生意義重大的一年。感謝勇哥新哥,給予我機(jī)會(huì)去做更多的嘗試。 一個(gè)前端菜鳥(niǎo)的成長(zhǎng)記 現(xiàn)在才總結(jié)似乎有點(diǎn)晚,但聊勝于無(wú),記錄一下我的2016,畢業(yè)的第一年,對(duì)于人生意義重大的一年。 我的求職之路 打從進(jìn)入了大四之后,便深深的意識(shí)到了就業(yè)的壓力,并一直在做著邁向社會(huì)的準(zhǔn)備。從2015年9月開(kāi)始,便開(kāi)始投簡(jiǎn)...
摘要:保證上線后的版本不會(huì)因?yàn)g覽器緩存而產(chǎn)生影響。前端部分之后會(huì)有多人合作,為了提高效率決定采用組件化開(kāi)發(fā)。對(duì)之后的維護(hù)工作造成了一點(diǎn)困擾。之后的日子里做到一周更新兩篇博文,主要是實(shí)際項(xiàng)目中遇到的具體問(wèn)題來(lái)加以總結(jié)和分析,未完待續(xù)。 原文鏈接: http://xdlrt.github.io/2016/1...距離上次更博已經(jīng)過(guò)去兩個(gè)月了,終于也有時(shí)間能靜下心來(lái)想一些事情,也對(duì)這幾個(gè)月的生活做...
摘要:保證上線后的版本不會(huì)因?yàn)g覽器緩存而產(chǎn)生影響。前端部分之后會(huì)有多人合作,為了提高效率決定采用組件化開(kāi)發(fā)。對(duì)之后的維護(hù)工作造成了一點(diǎn)困擾。之后的日子里做到一周更新兩篇博文,主要是實(shí)際項(xiàng)目中遇到的具體問(wèn)題來(lái)加以總結(jié)和分析,未完待續(xù)。 原文鏈接: http://xdlrt.github.io/2016/1...距離上次更博已經(jīng)過(guò)去兩個(gè)月了,終于也有時(shí)間能靜下心來(lái)想一些事情,也對(duì)這幾個(gè)月的生活做...
摘要:保證上線后的版本不會(huì)因?yàn)g覽器緩存而產(chǎn)生影響。前端部分之后會(huì)有多人合作,為了提高效率決定采用組件化開(kāi)發(fā)。對(duì)之后的維護(hù)工作造成了一點(diǎn)困擾。之后的日子里做到一周更新兩篇博文,主要是實(shí)際項(xiàng)目中遇到的具體問(wèn)題來(lái)加以總結(jié)和分析,未完待續(xù)。 原文鏈接: http://xdlrt.github.io/2016/1...距離上次更博已經(jīng)過(guò)去兩個(gè)月了,終于也有時(shí)間能靜下心來(lái)想一些事情,也對(duì)這幾個(gè)月的生活做...
閱讀 3385·2021-11-22 12:04
閱讀 2771·2019-08-29 13:49
閱讀 534·2019-08-26 13:45
閱讀 2322·2019-08-26 11:56
閱讀 1069·2019-08-26 11:43
閱讀 648·2019-08-26 10:45
閱讀 1330·2019-08-23 16:48
閱讀 2231·2019-08-23 16:07