java后端1年經(jīng)驗(yàn)和技術(shù)總結(jié)(1)

1.引言

畢業(yè)已經(jīng)一年有余睦柴,這一年里特別感謝技術(shù)管理人員的器重醉途,以及同事的幫忙,學(xué)到了不少東西跷坝。這一年里走過一些彎路酵镜,也碰到一些難題,也受到過做為一名開發(fā)卻經(jīng)常為系統(tǒng)維護(hù)和發(fā)布當(dāng)救火隊(duì)員的苦惱柴钻。遂決定梳理一下自己所學(xué)的東西淮韭,為大家分享一下。

經(jīng)過一年意識(shí)到以前也有很多認(rèn)識(shí)誤區(qū)贴届,比如:

偏愛收集靠粪,經(jīng)常收集各種資料視頻塞滿一個(gè)個(gè)硬盤蜡吧,然后心滿意足的看著容量不行動(dòng)。

不重基礎(chǔ)占键,總覺得很多基礎(chǔ)東西不需要再看了昔善,其實(shí)不懂的地方很多,計(jì)算機(jī)程序方面任何一個(gè)結(jié)果都必有原因捞慌,不要只會(huì)用不知道原理耀鸦,那是加工廠出來的。現(xiàn)在ide查看代碼那么方便啸澡,ctrl+點(diǎn)擊就進(jìn)入了JDK查看實(shí)現(xiàn)細(xì)節(jié)袖订。

好高騖遠(yuǎn),在計(jì)算機(jī)基礎(chǔ)不牢固的情況下嗅虏,總想著要做架構(gòu)洛姑,弄分布式,搞大數(shù)據(jù)之類皮服。

不重視性能楞艾,只求能實(shí)現(xiàn)功能,sql查詢是不是可以優(yōu)化龄广,是否有算法妙用硫眯,大對(duì)象是否要清除。

不重視擴(kuò)展性择同,模塊之間緊密耦合两入,常用方法不提取成工具類,調(diào)用關(guān)系混亂等問題敲才。

……

本文重點(diǎn)不在這些裹纳,故只列舉了一小部分,下面進(jìn)入正題紧武。

2.語法基礎(chǔ)

2.1 Java類初始化順序

這是所有情況的類初始化順序剃氧,如果實(shí)際類中沒有定義則跳過:父類靜態(tài)變量——父類靜態(tài)代碼塊——子類靜態(tài)代碼塊——父類非靜態(tài)變量——父類非靜態(tài)代碼塊——父類構(gòu)造函數(shù)——子類非靜態(tài)變量——子類非靜態(tài)代碼塊——子類構(gòu)造函數(shù)

2.2值傳遞和引用傳遞

可能很多人對(duì)此不屑一顧,心想老子都工作一年了阻星,對(duì)這些還不熟悉嗎朋鞍?但實(shí)際情況并非這樣,JDK中東西全部熟悉了嗎妥箕?以一個(gè)最簡(jiǎn)單的例子開始滥酥,你覺得下圖中代碼執(zhí)行完之后fatherList中的元素是什么?

這是一個(gè)最基礎(chǔ)的值傳遞和引用傳遞的例子矾踱,你覺得好簡(jiǎn)單,已經(jīng)想躍躍欲試的挑戰(zhàn)了疏哗,那么請(qǐng)看下面的呛讲,StringBuffer很好理解禾怠,但是當(dāng)你執(zhí)行一遍之后發(fā)現(xiàn)是不是和預(yù)想中的輸出不一樣呢?String不是引用類型嗎贝搁,怎么會(huì)這樣呢吗氏?如果你無法理解,那么請(qǐng)看下String的實(shí)現(xiàn)源碼雷逆,了解下其在內(nèi)存中分配的實(shí)現(xiàn)原理弦讽。

2.3集合的使用

這部分幾乎每個(gè)人都會(huì)用到,而且大家還都不陌生膀哲。下圖來源于互聯(lián)網(wǎng)往产,供大家復(fù)習(xí)一下。但是利用集合的特性進(jìn)行巧妙的組合運(yùn)用能解決優(yōu)化很多復(fù)雜問題某宪。Set不可重復(fù)性仿村,List的順序性,Map的鍵值對(duì)兴喂,SortSet/SortMap的有序性蔼囊,我在工作中有很多復(fù)雜的業(yè)務(wù)都巧妙的使用了這些,涉及到公司保密信息衣迷,我就不貼出代碼了畏鼓。工作越久越發(fā)現(xiàn)這些和越巧妙。

2.3異常處理

1.看著try壶谒、catch云矫、finally非常容易,如果和事務(wù)傳播結(jié)合在一起佃迄,就會(huì)變得極其復(fù)雜泼差。

2.finally不一定必須執(zhí)行,return在catch/finally中處理情況(建議親自操刀試一下)呵俏。

3.catch中可以繼續(xù)拋?zhàn)远x異常(并把異常一步步傳遞到控制層堆缘,利用切面抓取封裝異常,返回給調(diào)用者)普碎。

2.4面向?qū)ο笏枷?/p>

一提起面向?qū)ο蠛鸱剩蠹叶贾莱橄蟆⒎庋b麻车、繼承缀皱、和多態(tài)。但是實(shí)際工作經(jīng)驗(yàn)中又知道多少呢动猬,對(duì)于項(xiàng)目中如何巧用估計(jì)更不要提了啤斗。

共性的機(jī)會(huì)每個(gè)都需要用的建立基類,如每個(gè)控制層方法可能要通過security獲取一個(gè)登錄用戶id赁咙,用于根據(jù)不同的用戶操作不同的數(shù)據(jù)钮莲,可以抽象出一個(gè)應(yīng)用層基類免钻,實(shí)現(xiàn)獲取id的protect方法。同理DAO層可以利用泛型提取出一個(gè)包含增刪改查的基類崔拥。

多態(tài)的Override:基類的引用變量不僅可以指向基類的實(shí)例對(duì)象极舔,也可以指向其子類的實(shí)例對(duì)象,如果指向子類的實(shí)例對(duì)象链瓦,其調(diào)用的方法應(yīng)該是正在運(yùn)行的那個(gè)對(duì)象的方法拆魏。在策略模式中使用很普遍。

提到面向?qū)ο蟠雀筒豢杀苊獾囊f設(shè)計(jì)模式渤刃,在工作中,一個(gè)技術(shù)大牛寫的一個(gè)類似策略模式(更復(fù)雜一點(diǎn))肥卡,十分巧妙的解決了各種業(yè)務(wù)同一個(gè)方法溪掀,并且實(shí)現(xiàn)了訂單、工單步鉴、業(yè)務(wù)的解耦揪胃,看得我是非常佩服。我想很多面試中都會(huì)問道單例模式吧氛琢,還沒有理解的建議去看一看喊递。

3.多線程

3.1線程安全

這個(gè)是老生常談的問題了,但是確實(shí)是問題和bug高發(fā)區(qū)阳似。線程同步問題不需要單獨(dú)寫了骚勘,想必大家都清楚,不太熟悉的建議百度一下撮奏。

3.1.1線程安全問題

1.代碼中如果有同步操作俏讹,共享變量要特別注意(這個(gè)一般都能意識(shí)到)

2多個(gè)操作能修改數(shù)據(jù)表中同一條數(shù)據(jù)的。(這個(gè)容易被忽略畜吊,業(yè)務(wù)A可能操作表a泽疆,業(yè)務(wù)B也可以操作表a,業(yè)務(wù)A玲献、B即使在不同的模塊和方法中殉疼,也會(huì)引起線程安全問題。例如如果一個(gè)人訪問業(yè)務(wù)A接口捌年,另一個(gè)人訪問業(yè)務(wù)B接口瓢娜,在web中每個(gè)業(yè)務(wù)請(qǐng)求都是會(huì)有單獨(dú)的一個(gè)線程進(jìn)行處理的,就會(huì)出現(xiàn)線程安全問題)礼预。

3.不安全的類型使用眠砾,例如StringBuffer、StringBuild托酸,HashTable褒颈、HashMap等伙单。在工作中我就遇到過有人在for循環(huán)進(jìn)行l(wèi)ist的remove,雖然編譯器不報(bào)錯(cuò)哈肖,程序可以運(yùn)行,但是結(jié)果卻可想而知念秧。

4.Spring的bean默認(rèn)是單例的淤井,如果有類變量就要特別小心了(一般情況下是沒人在控制層、業(yè)務(wù)層摊趾、DAO層等用類變量的币狠,用的話建議是final類型,例如日志log砾层,gson等)漩绵。

5.多個(gè)系統(tǒng)共享數(shù)據(jù)庫情況,這個(gè)其實(shí)和分布式系統(tǒng)類似

用戶重復(fù)提交問題(即使代碼中從數(shù)據(jù)庫讀取是否存在進(jìn)行限制不能解決問題)

3.1.2線程安全解決

在需要同步的地方采用安全的類型肛炮。

JDK鎖機(jī)制止吐,lock、tryLock侨糟,synchronized碍扔,wait、notify秕重、notifyAll等

Concurrent并發(fā)工具包不同,在處理一些問題上,誰用誰知道溶耘。強(qiáng)烈建議查看源碼二拐!

數(shù)據(jù)表加鎖。(除非某個(gè)表的訪問頻率極低凳兵,否則不建議使用)

涉及分布式的百新,采用中間件技術(shù)例如zookeeper等解決。

3.2異步

異步使用場(chǎng)景不影響主線程留荔,且響應(yīng)較慢的業(yè)務(wù)吟孙。例如IO操作,第三方服務(wù)(短信驗(yàn)證碼聚蝶、app推送杰妓、云存儲(chǔ)上傳等)。

如果異步任務(wù)很多碘勉,就需要使用任務(wù)隊(duì)列了巷挥,任務(wù)隊(duì)列可以在代碼級(jí)別實(shí)現(xiàn),也可以利用redis(優(yōu)勢(shì)太明顯了)验靡。

3.3多線程通信

這方面文章非常多倍宾,這里不在詳述雏节。

1.共享變量方式(共享文件、全局變量高职,信號(hào)量機(jī)制等)

2.消息隊(duì)列方式

3.忙等钩乍,鎖機(jī)制

3.4多線程實(shí)現(xiàn)

1.集成Thread類,重寫(這里的重寫指的是override)run方法怔锌,調(diào)用start方法執(zhí)行寥粹。

2.實(shí)現(xiàn)Runable接口,實(shí)現(xiàn)run方法埃元,以Runable實(shí)例創(chuàng)建thread對(duì)象涝涤。

3.實(shí)現(xiàn)Callable接口,實(shí)現(xiàn)call方法岛杀,F(xiàn)utureTask包裝callable接口阔拳,F(xiàn)utureTask對(duì)象創(chuàng)建thread對(duì)象,常用語異步操作类嗤,建議使用匿名內(nèi)部類糊肠,方便閱讀和使用。

額外需要說明的是:

1.理解thread的join方法遗锣;

2.不要認(rèn)為volitate是線程安全的(不明白原因的建議去看jvm運(yùn)行時(shí)刻內(nèi)存分配策略)罪针;

3.sleep時(shí)間片結(jié)束后并不保證立馬獲取cpu。

4.ThreadLocal能夠?yàn)槊恳粋€(gè)線程維護(hù)變量副本黄伊,常用于在多線程中用空間換時(shí)間泪酱。

4.開源框架

4.1 Hibernate、Mybatis

相信每一個(gè)java程序員對(duì)這些都不陌生还最,這里不再詳述墓阀。

需要說明的主要以下幾點(diǎn):

1.hibernate一級(jí)緩存(內(nèi)置session緩存),二級(jí)緩存(可裝配sessionFactory緩存)拓轻,二級(jí)緩存會(huì)引起并發(fā)問題斯撮。

2.hibernate延遲加載原理理解。

3.hibernate的get扶叉、load方法勿锅,sava、persist枣氧、savaOrUpdate方法區(qū)別

4.session重建了關(guān)聯(lián)關(guān)系卻并沒有同數(shù)據(jù)庫進(jìn)行同步和更新

5.hibernate session關(guān)聯(lián)關(guān)系:detached對(duì)象溢十、persistent對(duì)象

6.Spring data集成,注解方式配置屬性和實(shí)體达吞。

7.mybatis插件张弛。

8.分頁查詢(數(shù)據(jù)庫)。

9.連接池技術(shù)

4.2 Spring IOC

4.1.1 Spring bean

1.bean注入注解方式方便易讀,引用第三方(數(shù)據(jù)庫連接吞鸭,數(shù)據(jù)庫連接池寺董,JedisPool等)采用配置文件方式。

2. bean作用域:Singleton刻剥,prototype遮咖,request,session造虏,global session

3.bean生命周期:如下圖所示(圖片來源于互聯(lián)網(wǎng)):

4.3 Spring AOP

基本概念:關(guān)注點(diǎn)盯滚、切面Aspect、切入點(diǎn)pointcut酗电、連接點(diǎn)joinpoint、通知advice内列、織入weave撵术、引入introduction。

Spring AOP支持5中類型通知话瞧,分別是MethodBeforeAdvice嫩与、AfterReturningAdvice、ThrowsAdvice交排、MethodInterceptor划滋、IntroductionInterceptor(吐槽一下名字太長(zhǎng))

實(shí)現(xiàn)方式如下:

1.基于代理的AOP

2.基于@Aspect注解驅(qū)動(dòng)的切面。(強(qiáng)烈推薦:可讀性好埃篓,易維護(hù)处坪,易擴(kuò)展,開發(fā)快)

3.純POJO切面架专。

4.注入式Aspect切面同窘。

4.4 Srping事務(wù)

4.4.1事務(wù)傳播

概念:某些操作需要保證原子性,如果中間出錯(cuò)部脚,需要事務(wù)回滾想邦。如果某個(gè)事務(wù)回滾,那么調(diào)用該事務(wù)的方法中的事務(wù)的作出如何的動(dòng)作委刘,就是事務(wù)傳播丧没。

短時(shí)間內(nèi)寫不清楚,建議訪問http://www.cnblogs.com/yangy608/archive/2010/12/15/1907065.html查看锡移。

事務(wù)傳播屬性:

1.?PROPAGATION_REQUIRED--支持當(dāng)前事務(wù)呕童,如果當(dāng)前沒有事務(wù),就新建一個(gè)事務(wù)淆珊。這是最常見的選擇拉庵。

2. PROPAGATION_SUPPORTS--支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行钞支。

3. PROPAGATION_MANDATORY--支持當(dāng)前事務(wù)茫蛹,如果當(dāng)前沒有事務(wù),就拋出異常烁挟。

4. PROPAGATION_REQUIRES_NEW--新建事務(wù)婴洼,如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起撼嗓。

5. PROPAGATION_NOT_SUPPORTED--以非事務(wù)方式執(zhí)行操作柬采,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起且警。

6. PROPAGATION_NEVER--以非事務(wù)方式執(zhí)行粉捻,如果當(dāng)前存在事務(wù),則拋出異常斑芜。

事務(wù)隔離級(jí)別:

1. ISOLATION_DEFAULT:這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別肩刃,使用數(shù)據(jù)庫默認(rèn)的事務(wù)隔離級(jí)別.另外四個(gè)與JDBC的隔離級(jí)別相對(duì)應(yīng)

2. ISOLATION_READ_UNCOMMITTED:這是事務(wù)最低的隔離級(jí)別,充許令外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)杏头。這種隔離級(jí)別會(huì)產(chǎn)生臟讀盈包,不可重復(fù)讀和幻像讀。

3. ISOLATION_READ_COMMITTED:保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取醇王。另外一個(gè)事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)

4. ISOLATION_REPEATABLE_READ:這種事務(wù)隔離級(jí)別可以防止臟讀呢燥,不可重復(fù)讀。但是可能出現(xiàn)幻像讀寓娩。它除了保證一個(gè)事務(wù)不能讀取另一個(gè)事務(wù)未提交的數(shù)據(jù)外叛氨,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)。

5. ISOLATION_SERIALIZABLE這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別棘伴。事務(wù)被處理為順序執(zhí)行力试。除了防止臟讀,不可重復(fù)讀外排嫌,還避免了幻像讀畸裳。

4.5其他Spring技術(shù)棧

spring boot輕量級(jí)啟動(dòng)框架

spring security用戶權(quán)限管理,根據(jù)角色和用戶淳地,實(shí)現(xiàn)UserDetailsService怖糊,進(jìn)行自定義權(quán)限管理。

spring task代碼級(jí)定時(shí)任務(wù)颇象,注解方式伍伤,使用起來非常方便。需要注意的是遣钳,如果某次定時(shí)任務(wù)出了異常而沒有進(jìn)行處理扰魂,會(huì)導(dǎo)致接下來定時(shí)任務(wù)失效。如果各個(gè)任務(wù)相互獨(dú)立,可以簡(jiǎn)單用try劝评,catch包圍(之前就吃過這方面的虧)姐直。

spring data注解方式定義實(shí)體,屬性等

spring mvc簡(jiǎn)單明了的mvc框架蒋畜。url傳值声畏、數(shù)組傳值、對(duì)象傳值姻成、對(duì)象數(shù)組等傳值類型插龄,上傳/下載文件類型需要注意。

spring restful注意命名科展,對(duì)命名要求很嚴(yán)格均牢。

spring shell命令行方式執(zhí)行命令,救火才睹、導(dǎo)入導(dǎo)出數(shù)據(jù)等用起來非常方便徘跪、制作報(bào)表。

5. Web基礎(chǔ)

5.1 web容器啟動(dòng)

1.web.xml加載順序:?listener -> filter ->servlet

2.webt容器啟動(dòng)過程砂竖,java新手很怕配置文件,理解完這些有助于熟悉配置文件http://blog.csdn.net/u014431852/article/details/47042895

5.2??Servlet鹃答、Interceptor乎澄、Listener、Filter

Servlet接收請(qǐng)求返回響應(yīng)测摔,最原始的web業(yè)務(wù)處理類置济。

Interceptor攔截器,可以實(shí)現(xiàn)HandlerInterceptor接口自定義攔截器锋八,在日志記錄浙于、權(quán)限檢查、性能監(jiān)控挟纱、通用行為等場(chǎng)景使用羞酗,本質(zhì)是AOP。

Listener監(jiān)聽器常用于統(tǒng)計(jì)在線人數(shù)等縱向功能紊服。

Filter過濾器在請(qǐng)求接口處理業(yè)務(wù)之前改變r(jià)equset檀轨,在業(yè)務(wù)處理之后響應(yīng)用戶之前改變r(jià)esponse。如果某些數(shù)據(jù)不加密欺嗤,很容易用抓包工具加filter作弊参萄。

5.3 web項(xiàng)目結(jié)構(gòu)

5.3.1 mvn結(jié)構(gòu)

熟練掌握幾種常見的mvn項(xiàng)目結(jié)構(gòu),mvn可以自動(dòng)生成煎饼,這里不再詳述讹挎。

5.3.2 mvn包管理

1.版本號(hào)盡量幾種在一個(gè)文件中便于管理。

2.spring milestone包解決spring包沖突問題。

3.mvn?dependency:tree命令分析所有包依賴筒溃,對(duì)于沖突的在pom文件中包圍起來

5.3.3版本控制

1.git马篮、svn等

2.代碼沖突解決方案

3.分支管理。

對(duì)于某個(gè)穩(wěn)定版本上線后铡羡,如果在此基礎(chǔ)上開發(fā)新功能积蔚,一定要新建分支,在新分支上提交代碼烦周,最后在新版發(fā)布時(shí)合并分支尽爆。修改運(yùn)營環(huán)境bug切換到主分支進(jìn)行修改

5.4 Http請(qǐng)求

5.4.1請(qǐng)求方法

post、get读慎、put漱贱、head、delete夭委、copy幅狮、move、connect株灸、link崇摄、patch,最常用的是前4慌烧、5個(gè)逐抑。

5.4.2請(qǐng)求頭,狀態(tài)碼

常用的請(qǐng)求頭有Accept(下載文件會(huì)特殊使用)屹蚊、Accept-Charset(設(shè)置utf-8字符集)厕氨、Content-Type(json等配置)等

常用的響應(yīng)頭有Content-Type、Content-Type汹粤、Content-Length等命斧,偏前端,不再詳述嘱兼。

6.系統(tǒng)架構(gòu)

接觸的不是特別多国葬,目前用到的只是服務(wù)器主從備份。Nginx反向代理進(jìn)行配置芹壕。

多個(gè)項(xiàng)目nginx配置

Spring Mvc用json數(shù)據(jù)進(jìn)行交互胃惜,配置json轉(zhuǎn)換的servlet。

封裝返回值

自定義RunEnvironmentException(狀態(tài)碼哪雕,原因)船殉,覆蓋原有Exception,切面ExceptionHandler抓取Exception并封裝到返回值中(前后端松耦合)

令人頭疼的用戶重復(fù)(連續(xù)快速點(diǎn)擊)提交問題斯嚎,前端限制治標(biāo)不治本利虫;后端用sessonid在切面上實(shí)現(xiàn)挨厚,又需要前端存儲(chǔ),對(duì)所有請(qǐng)求數(shù)據(jù)加sessionId糠惫。最后用jedis中存儲(chǔ)疫剃,用接口名+用戶名當(dāng)做key,根據(jù)不同的接口對(duì)不同的key可以單獨(dú)設(shè)置時(shí)間硼讽,不僅保證了重復(fù)提交問題巢价,也避免了惡意請(qǐng)求問題,同時(shí)還能自定義請(qǐng)求間隔固阁。(期初擔(dān)心redis緩存讀寫時(shí)間延誤導(dǎo)致限制失效壤躲,后來發(fā)現(xiàn)多慮了,對(duì)一般的小系統(tǒng)來說备燃,經(jīng)性能測(cè)試碉克,發(fā)現(xiàn)即使請(qǐng)求頻率再提高100被也不會(huì)導(dǎo)致限制失效)

testNg單元測(cè)試、性能測(cè)試并齐,覆蓋測(cè)試漏麦。

切面管理日期、權(quán)限况褪。緩存等撕贞。

7. Nosql

1.Redis的java庫Jedis。

Jedispool配置测垛。

項(xiàng)目中用到的有任務(wù)隊(duì)列捏膨、緩存。

2. neo4j圖數(shù)據(jù)庫

處理社交赐纱、推薦

8.服務(wù)端

linux操作系統(tǒng)熟悉以centos為例:

常用簡(jiǎn)單命令:ssh脊奋、vim熬北、scp疙描、ps、gerp讶隐、sed起胰、awk、cat巫延、tail效五,df、top炉峰,shell畏妖、chmod、sh疼阔、tar戒劫、find半夷、wc、ln迅细、|

目錄結(jié)構(gòu)明細(xì):/etc/巫橄、~/、/usr/茵典、/dev/湘换、/home/、/etc/init.d/

服務(wù)端:jdk统阿、tomcat彩倚、nginx、mysql砂吞、jedis署恍、neo4j啟動(dòng)與配置(特別說明的是該死的防火墻,nginx啟動(dòng)后一直訪問不了蜻直,查找一下午查不到原因盯质,最后發(fā)現(xiàn)是防火墻問題)

監(jiān)控服務(wù)器狀態(tài)(cpu,磁盤概而,內(nèi)存)呼巷,定位pid,日志查看

nginx負(fù)載均衡赎瑰、反向代理王悍、配置

自動(dòng)化部署腳本

簡(jiǎn)單shell腳本書寫,避免大量人力勞動(dòng)餐曼。

監(jiān)控系統(tǒng)压储,代碼拋fatal異常自動(dòng)發(fā)郵件,系統(tǒng)指標(biāo)持續(xù)偏高自動(dòng)發(fā)郵件源譬。

9.數(shù)據(jù)庫相關(guān)

10.第三方接口對(duì)接

10.1支付接口

微信支付坑比較多集惋,用將近兩周時(shí)間才把微信支付所有完成。需要在微信后臺(tái)配置的地方太多踩娘。

而支付寶支付模塊只用了2天時(shí)間就搞定了刮刑。

10.2推送接口

為用戶定義tag、定義alias养渴,注意當(dāng)數(shù)據(jù)更新時(shí)需要同步更新tag雷绢、更新alias。如果沒采用異步實(shí)現(xiàn)(用戶體驗(yàn)就是好卡袄肀啊)

10.3云存儲(chǔ)

大量文件上傳云端(七牛云)翘紊,注意創(chuàng)建bucket

10.4短信驗(yàn)證

很簡(jiǎn)單的第三方接口,引入依賴藐唠,直接調(diào)用即可帆疟。需要在第三方后臺(tái)設(shè)置模板等孵滞,注意限定用戶訪問次數(shù)。

10.5郵件

很簡(jiǎn)單小功能鸯匹,工具類坊饶。

時(shí)間有限,目前先寫這么多技術(shù)棧殴蓬。對(duì)于代碼書寫和匿级、算法技巧問題,會(huì)抽時(shí)間寫在(2)中染厅。

好了同學(xué)們痘绎,我能介紹的也都全部介紹完給你們了,如果下獲得更多JAVA教學(xué)資源肖粮,可以選擇來我們這里共同交流孤页,群:24044837,很多大神在這里切磋學(xué)習(xí)涩馆,不懂可以直接問行施,晚上還有大牛免費(fèi)直播教學(xué)。

注:加群要求

1魂那、具有一定工作經(jīng)驗(yàn)的蛾号,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加涯雅,有些應(yīng)屆生和實(shí)習(xí)生也可以加鲜结。

2、在公司待久了活逆,過得很安逸精刷,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修蔗候、跳槽拿高薪的可以加怒允。

3、如果沒有工作經(jīng)驗(yàn)琴庵,但基礎(chǔ)非常扎實(shí)误算,對(duì)java工作機(jī)制仰美,常用設(shè)計(jì)思想迷殿,常用java開發(fā)框架掌握熟練的,可以加咖杂。

4庆寺、覺得自己很牛B,一般需求都能搞定诉字。但是所學(xué)的知識(shí)點(diǎn)沒有系統(tǒng)化懦尝,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加知纷。

5.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn),分享知識(shí)陵霉,多年工作經(jīng)驗(yàn)的梳理和總結(jié)琅轧,帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知踊挠!

PS:現(xiàn)在主要講解的內(nèi)容是(反射原理乍桂、枚舉原理與應(yīng)用、注解原理效床、常用設(shè)計(jì)模式睹酌、正規(guī)表達(dá)式高級(jí)應(yīng)用、JAVA操作Office原理詳解剩檀、JAVA圖像處理技術(shù)憋沿,等多個(gè)知識(shí)點(diǎn)的詳解和實(shí)戰(zhàn))

6.小號(hào)或者小白之類加群一律不給過,謝謝沪猴。

最后辐啄,每一位讀到這里的網(wǎng)友,感謝你們能耐心地看完运嗜。覺得對(duì)你有幫助可以給個(gè)喜歡则披!希望在成為一名更優(yōu)秀的Java程序員的道路上,我們可以一起學(xué)習(xí)洗出、一起進(jìn)步

X?\?P?.??v?\

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末士复,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子翩活,更是在濱河造成了極大的恐慌阱洪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菠镇,死亡現(xiàn)場(chǎng)離奇詭異冗荸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)利耍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蚌本,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隘梨,你說我怎么就攤上這事程癌。” “怎么了轴猎?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵嵌莉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我捻脖,道長(zhǎng)锐峭,這世上最難降的妖魔是什么中鼠? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任怎憋,我火速辦了婚禮蝴簇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘时迫。我一直安慰自己椎扬,他們只是感情好熊杨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盗舰,像睡著了一般晶府。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钻趋,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天川陆,我揣著相機(jī)與錄音,去河邊找鬼蛮位。 笑死较沪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的失仁。 我是一名探鬼主播尸曼,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼萄焦!你這毒婦竟也來了控轿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拂封,失蹤者是張志新(化名)和其女友劉穎茬射,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冒签,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡在抛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萧恕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刚梭。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖票唆,靈堂內(nèi)的尸體忽然破棺而出朴读,到底是詐尸還是另有隱情,我是刑警寧澤惰说,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布磨德,位于F島的核電站缘回,受9級(jí)特大地震影響吆视,放射性物質(zhì)發(fā)生泄漏典挑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一啦吧、第九天 我趴在偏房一處隱蔽的房頂上張望您觉。 院中可真熱鬧,春花似錦授滓、人聲如沸琳水。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽在孝。三九已至,卻和暖如春淮摔,著一層夾襖步出監(jiān)牢的瞬間私沮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工和橙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仔燕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓魔招,卻偏偏與公主長(zhǎng)得像晰搀,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子办斑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理外恕,服務(wù)發(fā)現(xiàn),斷路器乡翅,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評(píng)論 6 342
  • 慶幸我堅(jiān)持看過了前面十幾分鐘雜亂無聊的開頭吁讨,后面帶給我的確實(shí)心靈的洗禮。 早就聽說過《oh my god》這部電影...
    快樂鳥兒閱讀 1,319評(píng)論 0 0
  • 現(xiàn)在的情緒不好峦朗,低落期建丧。可是感覺還是應(yīng)該記錄一下子吧波势。 幾乎每次想到未來都會(huì)絕望翎朱,用詞可能夸張但情緒嚴(yán)重時(shí)會(huì)控制不...
    Charlotte_yue閱讀 267評(píng)論 0 0
  • 家里養(yǎng)了為數(shù)不多且營養(yǎng)不良的幾盆植物,我偶爾觀察它們尺铣,思考我要如何才能把它們養(yǎng)成健壯的樣子拴曲。 我發(fā)現(xiàn),它們除了需要...
    05e357f628f8閱讀 204評(píng)論 0 0