學(xué)習(xí)記錄

2018.06.06
工作內(nèi)容:
1.嘗試解決前端開發(fā)手冊,開發(fā)新功能薪铜,已經(jīng)全局安裝了gulp但是不能啟動問題桃纯;嘗試本地安裝弄砍,重新全局安裝,未解決撼唾;卸載gulp廉邑,重新安裝gulp,依然不能啟動,未解決鬓催;
2.嘗試搭建后端開發(fā)手冊肺素,測試與集成恨锚;按照流程搭建宇驾,能夠通過http://localhost:8000/訪問到正常界面;但是manager-service服務(wù)一直連不上數(shù)據(jù)庫猴伶,啟動不成功课舍;重新拉取鏡像,重新初始化數(shù)據(jù)庫他挎,能啟動所有服務(wù)筝尾;但是訪問http://localhost:8000/出現(xiàn) EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.未解決;
3.學(xué)習(xí)了解k8s办桨、docker筹淫、后端開發(fā)流程,git常用指令呢撞;
4.參與平臺培訓(xùn)损姜。
學(xué)習(xí)內(nèi)容:
1.k8s組件
是基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案,是容器集群管理系統(tǒng)殊霞。
1)master是集群管理節(jié)點(diǎn)摧阅,負(fù)責(zé)管理集群;
2)Node是集群架構(gòu)中運(yùn)行pod的服務(wù)節(jié)點(diǎn)绷蹲;
3)Pod 運(yùn)行于Node節(jié)點(diǎn)上棒卷,若干相關(guān)容器的組合;
4)Replication Controller管理Pod的副本祝钢,保證集群中存在指定數(shù)量的Pod副本比规;
5)Service定義了Pod的邏輯集合和訪問策略;
6)Label在k8s中任意對象都通過Lable進(jìn)行標(biāo)識拦英;
2.Docker
相關(guān)概念;
1)鏡像(Image)苞俘,鏡像是靜態(tài)的/可以被用戶分享的文件,只能pull或者push龄章;
2)容器(Container)吃谣,可以理解為鏡像的動態(tài)狀態(tài);
3)倉庫(Repository)做裙,Docker中的倉庫很像git的代碼倉庫岗憋。
基本操作:查看鏡像 docker images 獲取鏡像 docker pull 啟動容器 docker-compose up,
從docker進(jìn)入mysql docker exec -it mysql /bin/bash锚贱,
3.后端開發(fā)流程熟悉
1)infa層
DO類--》對應(yīng)數(shù)據(jù)庫中的具體類
mapper--》mapper接口類和mapper.xml
2)domain層
entity類--》對應(yīng)DO類
convertor類--》用于E仔戈。DTO。DO三者之間轉(zhuǎn)換
Repository--》對數(shù)據(jù)庫進(jìn)行操作,有對應(yīng)接口和實(shí)現(xiàn)類
service--》進(jìn)行業(yè)務(wù)操作
3)app層 應(yīng)用層
4)api層 展現(xiàn)層
DTO--》封裝用戶請求
controll--》是對一個具體的DTO資源進(jìn)行處理

2018.06.07
工作內(nèi)容:
1.前端開發(fā)手冊--》開發(fā)新功能--》開發(fā)新模塊监徘,按照流程走晋修,不能啟動gulp,切換nodejs版本凰盔,重新全局安裝gulp不能解決墓卦;咨詢前端同事,demo文件夾為空户敬,加入相關(guān)文件落剪,gulp能夠運(yùn)行。
2.后端開發(fā)手冊--》集成與測試尿庐,服務(wù)啟動報錯忠怖,刪除現(xiàn)有鏡像,新建文件夾重新拉瘸凡泣;所有服務(wù)都能啟動成功,但是不能訪問loaclhost:8000皮假,logs發(fā)現(xiàn)不能啟動manager-service服務(wù)鞋拟;改為從github上下載項(xiàng)目本地運(yùn)行,啟動服務(wù)成功钞翔;但是不能在eureka上顯示严卖,給啟動類加上@EnableEurekaClient,成功顯示布轿;但是不能訪問http://localhost:8963/swagger-ui.html哮笆,重新初始化數(shù)據(jù)庫,配置路由汰扭,訪問成功稠肘。

學(xué)習(xí)內(nèi)容:spring boot
1.Profile,在不同環(huán)境下使用不同配置@Profile("dev"/"prod")
2.事件(Application Event)為Bean與Bean之間的消息傳遞提供了支持萝毛;步驟项阴,定義事件,定義監(jiān)聽笆包,容器發(fā)布
3.多線程环揽,實(shí)現(xiàn)AsyncConfigurer接口,獲取一個基于線程池的TaskExecutor庵佣,@EnableAsync開啟對異步的支持歉胶,@Async聲明異步
4.this 1)表示構(gòu)造函數(shù)傳遞,this(a,b) 2)在類的非static成員內(nèi)部使用巴粪,表示這個類本身或者對象類型
super 1)調(diào)用父類構(gòu)造方法 2)調(diào)用父類的protected方法
5.spring boot配置文件 https://blog.csdn.net/lpfsuperman/article/details/78287265

2018.06.08
工作內(nèi)容:
1.跟據(jù)文檔搭建前端開發(fā)手冊--》開發(fā)新功能通今,需要改動的小細(xì)節(jié)已經(jīng)發(fā)到群里粥谬;
2.重新搭建后端開發(fā)手冊--》測試與集成部分,能啟動所有服務(wù)辫塌,手動配置路由漏策,能進(jìn)入到http://localhost:8963/swagger-ui.html頁面。

學(xué)習(xí)內(nèi)容:
1.spring-retry是針請求超時情況采取一下重試操作
1)添加maven依賴 org.springframework.retry 2)在啟動項(xiàng)添加重試配置 @EnableRetry 3)@Retryable 標(biāo)注此注解的方法在發(fā)生異常時會進(jìn)行重試
2.zuul主要功能是路由轉(zhuǎn)發(fā)和過濾器臼氨;路由功能是將外部請求轉(zhuǎn)發(fā)到具體的微服務(wù)上掺喻;過濾器是對請求處理的過程進(jìn)行干預(yù);@EnableZuulProxy開啟服務(wù)
3.Eureka服務(wù)注冊發(fā)現(xiàn)
server
1)添加依賴 <artifactId>spring-cloud-starter-eureka-server</artifactId>
2)application.yml配置
security:
basic:
enabled: true #開啟認(rèn)證
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://user:password@localhost:8761/eureka
3)主程序入口添加 @EnableEurekaServer//開啟Eureka Server
Clients  
同上一也,application.yml配置:
eureka:
client:
serviceUrl:
defaultZone: http://user:123456@localhost:8761/eureka #注冊 中心已經(jīng)開啟認(rèn)證
鏈接:https://www.cnblogs.com/brant/p/6298342.html
4.bootstrap與application
1)bootstrap.yml先加載 application后加載
2)bootstrap.yml 可以理解成系統(tǒng)級別的一些參數(shù)配置巢寡,這些參數(shù)一般是不會變動的喉脖。
application.yml 可以用來定義應(yīng)用級別的
5.@Order控制配置類的加載順序

2018.06.11
學(xué)習(xí)內(nèi)容:
1.spring基礎(chǔ)學(xué)習(xí)
Spring IOC容器椰苟,Spring BaenFactory/ApplicationContext,Spring依賴注入树叽,基于構(gòu)造器注入和set方法注入/自動裝配等舆蝴。
2.學(xué)習(xí)springboot+mybatis,用注解方式實(shí)現(xiàn)题诵,能夠正常訪問洁仗;用配置文件方式,報錯org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.scptest.springbootmybatisdemo1.mapper.UserMapper.getUserById性锭,修改配置文件赠潦,修改mapper文件,未解決草冈;修改application.yml文件她奥,解決。

2018.06.12
1.Docker for windows一直啟動不成功怎棱;
報錯:[Docker for Windows error: “Hardware assisted virtualization and data execution protection must be enabled in the BIOS” [closed]]
https://stackoverflow.com/questions/39684974/docker-for-windows-error-hardware-assisted-virtualization-and-data-execution-p哩俭,解決方法都嘗試了一遍,未解決拳恋;win10
一直不能開啟hyper-v虛擬機(jī)凡资,準(zhǔn)備重新升級系統(tǒng)。
2.訪問404錯誤
將@Countller改為@RestController或者加上@ResponseBody谬运;
1)@responseBody注解的作用是將controller的方法返回的對象通過適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后隙赁,寫入到response對象的body區(qū),通常用來返回JSON數(shù)據(jù)或者是XML
2)@RestController是@ResponseBody + @Controller合體梆暖,當(dāng)你在這個controller中方法只是想返回一個頁面時伞访,就不能用@RestController,因?yàn)樗鼤涯愕姆祷刂诞?dāng)作數(shù)據(jù)返回,而不是頁面名字式廷,所以這時候就只能用@Controller咐扭。
3.Establishing SSL connection without server's identity verification
解決:在mysql連接上加上?&useSSL=true&useUnicode=true&characterEncoding=utf8
4.git checkout master
error: pathspec 'master' did not match any file(s) known to git.
解決:git checkout -b master
https://blog.csdn.net/wankui/article/details/53328369
5.jmeter學(xué)習(xí)
1)status 415錯誤
為該次請求修改請求頭里的 Content-Type ,修正為 application/json;charset=UTF-8
2)status 401錯誤
在HTTP管理頭添加對應(yīng)的Jwt_Token。

2018.06.13
用jmeter對gilab-service進(jìn)行測試蝗肪;
1)一直status 415錯誤袜爪,即使添加了Content-Type = application/json,刪掉http管理薛闪,重新添加或者刪除Content-Type重新添加辛馆;
2)status 403或者其他,都是參數(shù)未傳遞正確豁延。

2018.06.14
1.git解決分支沖突昙篙,兩個分支都對同一個文件進(jìn)行了提交,對這兩個分支進(jìn)行合并會失敗诱咏,手動更改進(jìn)行合并苔可;分支合并時加上--no-ff 禁用Fast forward模式,可以從歷史上看出分支信息袋狞。
2焚辅、@ApiOperation不是spring自帶的注解是swagger里的
@ApiOperation(value = “接口說明”, httpMethod = “接口請求方式”, response = “接口返回參數(shù)類型”, notes = “接口發(fā)布說明”;
@ApiParam(required = “是否必須參數(shù)”, name = “參數(shù)名稱”, value = “參數(shù)具體描述”)
3苟鸯、地址①http://localhost:8989/SSSP/emps?pageNo=2
地址②http://localhost:8989/SSSP/emp/7
如果想獲取地址①中的 pageNo的值 ‘2’ 同蜻,則使用 @RequestParam ,
如果想獲取地址②中的 emp/7 中的 ‘7 ’ 則使用 @PathVariable
4早处、@RequestBody 注解則是將 HTTP 請求正文插入方法中湾蔓,使用適合的 HttpMessageConverter 將請求體寫入某個對象。
5.Java 8中的[Optional<T>]以包含非空值的容器對象砌梆,在 [Stream API]中很多地方也都使用到了Optional默责。
1)Optional<SomeType> someValue = someMethod();
if (someValue.isPresent()) { // check
someValue.get().someOtherMethod(); // retrieve and call
}
2)orElseThrow如果有值則將其返回,否則拋出supplier接口創(chuàng)建的異常
3)map如果返回值不為null么库,則創(chuàng)建包含mapping返回值的Optional作為map方法返回值傻丝,否則返回空Optional
4)ofNullable 指定的值創(chuàng)建一個Optional,如果指定的值為null诉儒,則返回一個空的Optional
6.java Patter.matches https://www.cnblogs.com/ggjucheng/p/3423731.html
7.projectDO.getStatusCode().is2xxSuccessful()
1)ResponseEntity<T>是Spring對HTTP請求響應(yīng)的封裝葡缰,包括了幾個重要的元素,如響應(yīng)碼忱反、contentType泛释、contentLength、響應(yīng)消息體等;
2)getStatusCode()方法取得HttpStatus對象温算;getBody();getHeaders();等
3)is2xxSuccessful();判斷狀態(tài)嗎是否是2開頭
https://blog.csdn.net/u012702547/article/details/77917939
8.Class<T>以及Class<?>的理解
Class<T>在實(shí)例化的時候怜校,T要替換成具體類
Class<?>它是個通配泛型,?可以代表任何類型
9.lambda () -> 5 不需要參數(shù),返回值為 5

2018.06.19
1注竿、給所有api都加上對應(yīng)的角色茄茁;
2魂贬、IDEA中pom.xml報錯project上Failed to read artifact descriptor for
1)去庫文件夾中查詢對應(yīng)的jar文件,刪除文件裙顽,重新下載付燥;
2)在m2文件夾下放入setting.xml文件,清理項(xiàng)目重新加載愈犹;

2018.06.20-2018.06-22
1键科、從業(yè)務(wù)角度測試所有api角色是否添加正確;
2漩怎、mvn pacakge項(xiàng)目報錯勋颖,找不到指定的jar文件,spring-cloud和spring-boot版本要配套勋锤,從官網(wǎng)或者對應(yīng)版本饭玲,解決;
3怪得、搭建eureka咱枉,eureka-sever能夠正常啟動卑硫;但是eureka-client不能注冊到server徒恋,一直報錯,There was a problem with the instance info replicator com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server.嘗試更換spring-boot和cloud版本欢伏,未解決入挣。
4、ZooKeeper典型應(yīng)用場景
ZooKeeper 是一個高可用的分布式數(shù)據(jù)管理與協(xié)調(diào)框架硝拧【斗ぃ基于對ZAB算法的實(shí)現(xiàn),該框架能夠很好地保證分布式環(huán)境中數(shù)據(jù)的一致性障陶。也是基于這樣的特性滋恬,使得 ZooKeeper 成為了解決分布式一致性問題的利器。

2018.06.25
1抱究、優(yōu)化開發(fā)(DEV)恢氯、測試(QA)、運(yùn)維(OPS)的流程鼓寺,開發(fā)運(yùn)維一體化勋拟,通過高度自動化工具與流程來使得軟件構(gòu)建、測試妈候、發(fā)布更加快捷敢靡、頻繁和可靠。
里面兩個核心點(diǎn)是:持續(xù)集成與持續(xù)交付
1)持續(xù)集成:
CI是一種將被測代碼頻繁集成到項(xiàng)目穩(wěn)定分支的做法苦银。所謂的”被測代碼”啸胧,指的是單獨(dú)分支上開發(fā)的功能赶站,因此這部分的代碼會被測試然后集成在主線上。
持續(xù)集成是指軟件個人研發(fā)的部分向軟件整體部分交付纺念,頻繁進(jìn)行集成以便更快地發(fā)現(xiàn)其中的錯誤亲怠。
2)持續(xù)交付:
持續(xù)交付在持續(xù)集成的基礎(chǔ)上,將集成后的代碼部署到更貼近真實(shí)運(yùn)行環(huán)境的「類生產(chǎn)環(huán)境」(production-like environments)中柠辞。持續(xù)交付優(yōu)先于整個產(chǎn)品生命周期的軟件部署团秽,建立在高水平自動化持續(xù)集成之上。
3)持續(xù)部署:
持續(xù)部署是指當(dāng)交付的代碼通過評審之后叭首,自動部署到生產(chǎn)環(huán)境中习勤。持續(xù)部署是持續(xù)交付的最高階段。這意味著焙格,所有通過了一系列的自動化測試的改動都將自動部署到生產(chǎn)環(huán)境图毕。
4)“開發(fā)人員提交代碼,持續(xù)集成服務(wù)器獲取代碼眷唉,執(zhí)行單元測試予颤,根據(jù)測試結(jié)果決定是否部署到預(yù)演環(huán)境,如果成功部署到預(yù)演環(huán)境冬阳,進(jìn)行整體驗(yàn)收測試蛤虐,如果測試通過,自動部署到產(chǎn)品環(huán)境肝陪,全程自動化高效運(yùn)轉(zhuǎn)驳庭。”
https://www.cnblogs.com/zhuwenlubin/p/5888498.html
2氯窍、1)Optional.of(T value)饲常,該方法通過一個非 nullvalue 來構(gòu)造一個 Optional,返回的 Optional 包含了 value 這個值狼讨。對于該方法贝淤,傳入的參數(shù)一定不能為 null,否則便會拋出 NullPointerException政供。
2)Optional.ofNullable(T value)播聪,該方法和 of 方法的區(qū)別在于,傳入的參數(shù)可以為 null —— 但是前面 javadoc 不是說 Optional 只能包含非 null 值嗎鲫骗?我們可以看看 ofNullable 方法的源碼:
原來該方法會判斷傳入的參數(shù)是否為 null犬耻,如果為 null 的話,返回的就是 Optional.empty()执泰。
3)Optional.empty()枕磁,該方法用來構(gòu)造一個空的 Optional,即該 Optional 中不包含值 —— 其實(shí)底層實(shí)現(xiàn)還是 如果 Optional 中的 valuenull 則該 Optional 為不包含值的狀態(tài)术吝,然后在 API 層面將 Optional 表現(xiàn)的不能包含 null 值计济,使得 Optional 只存在 包含值不包含值 兩種狀態(tài)茸苇。
3.matches() 方法用于檢測字符串是否匹配給定的正則表達(dá)式。
調(diào)用此方法的 str.matches(regex) 形式與以下表達(dá)式產(chǎn)生的結(jié)果完全相同:
Pattern.matches(regex, str)
4.一個接口有兩個實(shí)現(xiàn)類沦寂,
1) @Resource(name = "manImpl")//注意是manImpl不是ManImpl学密,因?yàn)槭褂聾Service,容器為我們創(chuàng)建bean時默認(rèn)類名首字母小寫
2)@Autowired @Qualifier("manImpl")
5.Mybatis動態(tài)SQL Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2]
1)將語句中的具體參數(shù)名稱改為param1传藏,param2即可腻暮。

  1. 采用map傳遞參數(shù)parameterType="Map"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市毯侦,隨后出現(xiàn)的幾起案子哭靖,更是在濱河造成了極大的恐慌,老刑警劉巖侈离,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件试幽,死亡現(xiàn)場離奇詭異,居然都是意外死亡卦碾,警方通過查閱死者的電腦和手機(jī)铺坞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洲胖,“玉大人济榨,你說我怎么就攤上這事”霰簦” “怎么了腿短?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绘梦。 經(jīng)常有香客問我,道長赴魁,這世上最難降的妖魔是什么卸奉? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮颖御,結(jié)果婚禮上榄棵,老公的妹妹穿的比我還像新娘。我一直安慰自己潘拱,他們只是感情好疹鳄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芦岂,像睡著了一般瘪弓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禽最,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天腺怯,我揣著相機(jī)與錄音袱饭,去河邊找鬼。 笑死呛占,一個胖子當(dāng)著我的面吹牛虑乖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晾虑,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼疹味,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帜篇?” 一聲冷哼從身側(cè)響起佛猛,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坠狡,沒想到半個月后继找,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逃沿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年婴渡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凯亮。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡边臼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出假消,到底是詐尸還是另有隱情柠并,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布富拗,位于F島的核電站臼予,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏啃沪。R本人自食惡果不足惜粘拾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望创千。 院中可真熱鬧缰雇,春花似錦、人聲如沸追驴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殿雪。三九已至暇咆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冠摄,已是汗流浹背糯崎。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工几缭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沃呢。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓年栓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親薄霜。 傳聞我的和親對象是個殘疾皇子某抓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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