2018年終總結-從我所在的團隊回首一年技術變遷

前言

今天是2018年的最後一天,獨自一人關上房門,靜坐回想一年來的總總,看成總結吧。
做爲傳統的it公司,不是互聯網企業,能逐漸轉型到各類流行的技術,不容易。若是恰好看到此文章的您是互聯網公司的,請不要見笑。css

微服務

spring cloud

微服務近兩年很火,特別是spring推出了spring cloud後。2016年用的人很少,因此市面只是零星出了幾本書籍,到了2017年,通過了一年多的使用,用的公司多了,書也多了,2018年出了更多的spring cloud書,雖然不少內容類似,但也能夠看出火爆。前端

版本更新也很是快,從以前的config+eureka+zuul,到今年zuul從1升級2,但spring cloud官方卻推出gateway,而且不支持zuul2。vue

無論怎樣,我終於用spring cloud實現了一個系統。它涉及寫代碼的很少,更多的是配置。而大部分的配置,都是我來弄的,也算是一種小幸運吧。java

有些奇怪的是,很多的人把微服務和spring boot總拉到一塊,雖然你要使用spring cloud就必須得使用spring boot,但不管如何,boot只是spring的簡化與集成,它爲何是微服務呢?好比市面上有一本書名爲使用spring boot構建微服務;還有一次會議上,一個經理說:前臺用vuejs實現,後臺我們就用微服務實現吧,呃,不須要用spring cloud這麼複雜,就用spring boot吧。node

可能你們想說的是RESTful api吧,這個spring mvc裏就有了,並非真正的微服務,可能錯的人多了,這樣稱呼也是對的吧。python

dubbo

dubbo是很早就有了,2015年的項目我就接觸過,雖然我在項目裏沒有真正的寫dubbo代碼。搞不懂是dubbo推進了微服務仍是微服務帶旺了dubbo。今年感受dubbo也發展的不錯,也推出了spring cloud dubbo的集成。公司也有用,可是RPC寫起代碼我本身以爲仍是比較麻煩,定義interface,打成jar包提供給外。也許天生就沒有rest優雅,畢竟關注的是效率。mysql

k8s

雖然據說也提供微服務,但用起來好像更偏向於容器那一塊,今年我沒有機會接觸到,看看明年公司是否有機會給我弄弄這個。react

其餘

一個東西火了以後,一切都好說。華爲也推出了微服務,有技術沉澱就是好,說弄就弄出來。晚舟被抓沒事,我們技術跟上就行。android

微軟也出了微服務,不過沒太關注.net發展,不是很清楚細節。

前端框架

Vue.js

今年公司大力在推。基本做爲首要的前端框架,不管pc端仍是移動端。大把大把的項目在用。用的基本都是Vue2,好在。1和2的差距仍是有些的。若是在寫2的代碼,拿着一本1的書在看,估計比較難受。Vue3也出來了,有什麼新變化呢?

和react、angular這三巨頭,react仍是佔有率最大,可是增加勢頭卻比不上vue。vue有可能未來超越react嗎?雖然尤雨溪當時在google,可是畢竟是國人,如今也回來了,vue也入選osc了,若是它能厲害點,仍是開心一點。開源中國去年它還排第四,今年竟然是冠軍了。

layui

這名字。。。我總當作layer,或者和不少相似的一大把ui框架名字很類似:ligerui、easyui等等。但它居然在2017年ocs排名第一!雖然今年倒退到第四,可是估計國內用的項目仍是很多的。不少後端的人都說好用。但同事卻有的說很差,究竟好很差?看來我要再努力,多參與。

bootstrap

想不到這麼多年了,在ui、css上這框架仍是這麼火。不知道和國內的一樣比較流行的element好比何,都是柵格系統。

這三個框架,今年都沒能深刻弄,2019年我要在前端技術上再積累多一點,不要老搞後端的,否則領導分配個前端的任務給我我還不會,太丟人了。

thymeleaf/freemarker

不該該放這。隨便吧。模板,今年用的很少,明年可能也逐漸被vue替換吧?

SSM框架

終於轉型ssm了!你沒聽錯,我今年以前並不會spring和mybatis(好久前用過,包括hibernate,可是那時候都是配置xml的,這麼多年了,連xml裏是啥都不記得了)。

S所表明的spring已經基本都默認用spring boot替代了。第一個的S也早不是struts1或2,如今沒有新項目不用spring mvc了把?

spring各類註解,學起來很爽。但剛開始仍是挺難,特別mvc那塊,涉及web。mybatis確實沒有hibernate有技術含量,不過,好用就好了,應對複雜業務。

數據庫

接着,該輪到數據庫上場了。

mycat

mycat在2017年仍是很不錯的,可是在今年卻連osc的前20都進不了。可能你們確實以爲bug有點多吧。我用了了父子表,居然有事務的bug,想該源碼,又不知道怎麼改,項目進度壓力在那,沒時間慢慢看。後來放棄了父子表就行了,雖然要xml里加個rule而且不能關聯表查詢。(謝謝張哈希提供了一點幫助)

QQ羣也是一個莫名其妙的存在,入羣要交30元。我很驚訝一個開源的軟件要交錢入羣。雖然我不知道原因。

但做爲國內的開源分佈式mysql解決方案,而且基本是惟一的解決方案,仍是不錯的。我很想知道,你們是怎麼用mysql的?不用mycat,難道都是本身公司造一個輪子,你們都這麼厲害?

mysql

我今年終於認真的用mysql進行開發了,以前幾年都是在打醬油。細細研究,和oracle差異巨大。建表時每一個字段的定義都有講究,還有json格式,json,是一個好東西,出如今各處。

druid

連數據庫,國內你們應該都用這個吧?新項目不多用DBCP了吧?支持下阿里仍是不錯的。

redis

五種數據類型我在一個項目裏用了四種,zset之後會有機會的。我從沒用過redis,也沒寫過代碼,可是你們卻用我設計的redis來開發,還沒發現什麼問題,很是神奇,redis是一個好工具。集羣和非集羣還須要繼續學習,分別用Jedis和JedsCluster操做。

mongodb

同事在用,所謂文檔,不少是json、或者圖片吧?明年看看是否能夠接觸下。

消息隊列

消息隊列居然單獨一章節,很神奇。多年前,只知道jms。

kafka和RabbitMQ仍是選擇了前者。效率優先。rocketmq那些就更沒機會了。kafka的主題和分區怎麼定,個人經驗仍是欠缺,多向同事學習,畢竟搞了幾十個仍是上百個broker。大數據量,大併發纔有意思。須要寫磁盤的,爲何還能這麼高效?

Web服務器

nginx

2018年apacke雖然繼續第一,但nginx也不弱,第二。並且增加勢頭第一。apache主要是國外php用因此纔多吧?國內java的世界,估計nginx更火。

剛剛幾天前用了最新的1.14.2,前幾月還用1.12.幾,還有漏洞,nginx的發展也不慢。

細細看,功能還很多:反向代理、rewrite、緩存等等。學習起來真的不比tomcat簡單,反而更難,特別若是用lua開發,基於openresty。

keepalived

開始弄,走了很多彎路。keepalived+nginx是最成熟的方案了吧,若是不用F5硬件負載的話。keepalived相對簡單不少,只要掌握了虛擬ip,和防火牆的配置注意事項。今年終於用上了這個不算新的技術,不錯。

tomcat、jetty、undertow

spring boot默認支持的三劍客。既然必需要用tomcat,那weblogic和Websphere就能夠歇歇了。我真正須要拿起多年的tomcat6的書籍看看。雖然我在用的是tomcat9。

session共享是用tomcat cluster配置,仍是用更高效的redis?都和Weblogic差異很大。

基於nio和少佔用內存,undertow和jetty也是能夠嘗試。謝謝阿里的許進和Lovnx他們給個人一點提示。

編程語言

java8

終於用上java8了,不容易。緣由大概就是spring cloud不支持java6。既然升,沒理由只升到7而已。惋惜oracle立刻就說java8要收費。總不能停留在java8的某一個小版本吧?

公司也許會找人基於openjdk來一個的,我以爲。會不會找我呢?

或者改用go?net?不太可能。改了也沒啥,我也挺有興趣。

java8的lambda頗有意思,在多線程、集合和打印日誌都嘗試了,調試是一個麻煩事。java9和java10是否是都不太火?

python

你們搞機器學習和深度學習的都在談論,但咱們也有人用來shell。是的,也是一個不錯的選擇,我也這麼幹了。比寫shell舒服不少。解析性的語言學習成本極低。適合搞數學的人拿來就用。

可是安裝包是一個很是麻煩的事情,jar簡單不少。python2和python3也在各個平臺不同。

es六、nodejs

代碼裏你們寫的各類let、const、imort、require開始時把我搞暈了,我技術太差,要不斷學習。
原本想把nodejs放在web服務器裏寫,想一想又感受不對。仍是放這。
也許是nodejs推進了es6吧?若是沒有了nodejs的出現會怎樣?npm、webpack這些還會不會出現呢?不知道。我只知道es6裏的promise、暫時性死區等等很難理解,要不斷看書。

安全:Https、加密

這兩年愈來愈重要。幾年前是不多聽見https的,因此傳統的、技術落後的公司,也不會錯過https的技術浪潮。安全很重要。

買證書、在nginx上配置;又或者用jdk、openssl等生成自簽名。很好玩。

加密的領域,國內慢慢起來了,國密不比什麼aes、rsa差,中國人的數學原本就很好。就看規範、標準的制定和推廣策略行不行了。

我用sm4寫了一個jar,晚點打算用android裏很流行的混淆技術用Intellij混淆成abc;又用oracle寫了一個基於aes+填充標準5的別人看不見我源碼的function,感受很神祕嘛。惋惜oracle裏沒有國密。

敏捷

開始搞敏捷了。很痛苦。每天晨會,卻沒有scrum裏的8小時,也沒有xp裏的兩我的一塊兒寫代碼能夠偷偷懶。唉:)

DevOps

jenkins

好像開始用了,可是我等了一年,這位同事尚未幫我配置好,沒看到。

sonar

同樣,白等了一年。

maven、nexus

早就用了,今年算是平民化了。Gradle算是頹下去吧?業界感受勢頭不行的?
nexus各團隊也搭建很多。
maven我感受本身精通了,其實還有不少不會的。

git

開始替代svn了。搭建了各類各類的gitlab。[git],這個讀音你們要讀正確哦。

持續集成

沒看到,估計在某個團隊的某個角落裏運行中。但沒有喇叭嚇我,沒有可視化屏幕。

這些東東放devops不知道對不對,放在沒地方放,放這把。我對這些沒啥興趣,幾年前都弄過了,也沒什麼技術含量。

Docker

沒有不在用的吧?但我卻還不會。我對本身說:Danni,你要趕忙學啊。是的。
否則一會兒要發佈100臺機器怎麼辦?趕忙看看前天同事寫好發個人dockerfile。
年初我就不該該傻傻的寫scp的shell,也不該該直接用eureka的rest api來啓停發佈。
mesos、k8s這些對我更陌生,下一步再說。

我只是一個小小的程序員,也許看到的只是公司的冰山一角。可能還有更多更多的技術變遷。

我的總結

  • 設計模式&UML:像難馴服的馬,又像深奧的佛學,老是用過了又不記得了,除了最簡單的策略模式。不過,今年我仍是成功用到了命令模式、模板方法模式、門面(外觀)模式、適配器模式。簡單工廠就不算了。
  • 分佈式:大併發時仍是不太會。
  • sso:用的cas,很難,記不住。可是多看幾回,也就那樣了。
  • MAC、工具:Windows轉向mac了。eclispe也轉向idea,webstorm了。學會postman、jmeter。
  • JUnit:在spring和mybatis裏應用自如了,但如今好像又忘了。。。
  • 工做流(ExtJS、DWR):前陣子放下了,沒搞了。太老的技術。。
  • TCP/IP、http:想不到這些基礎技術仍是頗有用。好比:https裏從哪一步開始加密?加密哪些數據?
  • Gitee:比github快太多,若是不是和世界接軌,我都不想用github。
  • 微信小程序、公衆號、app、H5:玩玩就好,我不是搞這個的。不過H5和css3仍是要弄。
  • json、日誌:忘了這個了,雖然是個小東西,可是fastjson、gson、jackson、net.sf等,slf4j、logback、log4j2等。還很多東西。
  • 數學:想不到還挺重要。特別加密、機器學習裏。特別線性代數。
  • 區塊鏈、機器/深度學習、spark:看看書就好,留給公司的專職去弄,有個同事說spark很好用。看那個立刻出版的《程序員2018》也許繼續會有。

2019立flag

  • 學docker,用起來
  • 寫vuejs代碼,有空試試vscode,webstorm老卡和閃退
  • 寫redis(+protobuf)和kafka代碼
  • 學國內的開源框架/組件,支持一下國內。什麼dubbo、layui、element、iview、mybatisplus,啥都行。
  • 大併發、分佈式
  • 同事玩EDAS和HSF好像很厲害,要多參與下
  • 好像怎麼明年目標這麼小?算了,還得幫公司幹活呢,也不能白養我,不能只顧着學習的。

但願這個flag能進到===true的代碼分支吧!

2018.12.31 下午 Danni3 於家中

相關文章
相關標籤/搜索