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