回覆列表
  • 1 # 廣州瑞飛包裝裝置

    最好的的提升方式就是實戰! 一直以來都想學Java,看了不少書,影片教程,但是真的要動手,就舉步維艱! 今年年初剛好有個需求,ANDROID 的PDA 掃描二維碼後,隨即透過藍芽的方式列印標籤;當時不知哪來的勇氣居然敢報價(2w+),竟然中單了. 高興半秒後,接著就是緊張,之前沒有任何實戰經驗,這個軟體要求忙高,用在醫療行業. 接單之後一點也不敢怠慢.第一步:把專案的技術難點找出來;第二步:難度分類,先易後難。對於基本的增刪改查都要網上找例子的新手,只能投入時間,不斷找例項練手;第三步:解決高難度問題:app 藍芽連線sewoo 行動式藍芽印表機(類似斑馬行動式印表機),並且列印標籤.第四步:軟體完善:經過前面幾步的歷煉,對java已經有了一定的功底,執行緒,訊息這些都已經熟練了,但是軟體的僅僅停留在能用的水平,真正交付給使用者還需要打磨昇華;1.裝置開機自動連線藍芽印表機;2: 獲取藍芽印表機的電量;獲取印表機狀態(就緒、缺紙、機蓋是否合上);3:掃描引擎引數設定(Mobydata,zebra 兩款PDA測試;4. 最高難度還是處理列印中文字型。PDA掃描二維碼,此QR code特殊至極,把中文字型以二進位制的形式存儲存,PDA需要解碼,參照24點陣的顯示,之後把解碼內容再轉換為 印表機指令 CPCL,這一步真是嘔心瀝血,翻閱了無數前人資料,研究漢字點陣字型,24x24,12x12.... 歷經無數次失敗,當第一次終於打印出漢字時,那種喜悅是就像.要提升自己就要歷煉.

  • 2 # greatfeather

    這個問題要看目前處於什麼“段位”。

    如果目前的段位屬於初級,最缺的是知識的豐富程度和實戰經驗,那就透過多練習,多磨練來不斷提升自己的水平。這個階段可以透過CSDN等網站來多學習一些經驗。同時還得多看一些框架性的書籍。

    如果目前屬於中級段位,說明基礎知識都沒問題了。這時需要對Spring全家桶、Hibernate等進行系統性學習。還得熟練掌握Redis、MQ等中介軟體軟體的,不斷提升自己架構級能力。

    如果目前已經出於較高段位,那就可以透過GitHub等網站多多瞭解Java語言的底層原理、Java各類衍生產品的底層原理和實現方式。還可以自行設計或者參與到很多產品的設計和實現工作中。這樣就會越來越牛了。

  • 3 # 陸地神仙老尹

    我覺得首先作為一名程式設計師不要侷限於一門語言,至少我個人認為提升自己有兩個方向,一個是技術流,技術流又有兩種,一種是某領域深度技術研究,比如你對流媒體技術有所瞭解並且想對這一領域進行深入那你可以制定你的學習路線專攻這一塊,另外一種技術流是掌握技術面多,比如說會多門語言,伺服器知識,容器虛擬化等等,另外一種不想走技術流的那就走業務流,對業務分析需求提煉的把控分析,對專案的理解和運用到的技術進行妥協,說完方向,那就說下如何提升自己:

    1.上自學網站學習(極客學院,慕課,51cto,github)

    2.領會和揣摩現實工作中你上級童鞋的做事辦法和思路

    3.要相信自己可以改變自己

    以上就是道和術的一個小範圍解釋,希望你以後會遇到真正口述這個哲理的人

  • 4 # 猿猿嘚不嘚

    我覺得程式設計師寫到最後拼的還是思想。

    因為程式碼寫來寫去還是那樣,倒是一個程式設計思想一個架構這就是個人想法問題。

    為什麼同樣寫程式碼你只能寫業務邏輯,別人卻能寫出框架。這就是思想的不同。

    所以我覺得程式設計師提升還是多看看別人先進的設計思維,github這個網站有很多優秀的開源專案足夠提升了

  • 5 # 特別行動科

    對程式設計師來說,github確實是一個非常好的選擇,很多優質專案都在github上託管,透過github確實可以閱讀到大量的優秀程式碼,但是個人認為只依靠github還是遠遠不夠的。推薦網站主要有兩類,一類是各種交流平臺,如:CSDN,Stack Overflow等;另一類是各優秀專案的官方文件。另外還可以結合GitHub和自己熟悉的IDE工具閱讀專案的原始碼。

    除網站之外,閱讀和實踐也是必不可少的,我自己閱讀的書籍有:《深入理解Java虛擬機器 JVM高階特性與最佳實踐》、《Java併發程式設計的藝術》。

  • 6 # 產品鬍子哥
    掌握專案管理和開發工具當你處於一個產品或者專案團隊中,掌握專案管理的技能很有必要,產品或專案開發是一個相對複雜的過程,涉及產品需求對接、UI、架構設計、開發測試、釋出等流程。對於如何建立溝通技能、優先順序安排,開發進度安排、問題如何協調解決、啟用戰鬥力也變的很重。可以推薦一本書人月神話。目前很多公司都採用敏捷開發,可以深入學習瞭解下。現在團隊高效協作離不開工具的支援,需要掌握配置和使用技能。比如Maven、Gradle、Jenkins、Sonar、Git、Jira等建議堅持寫技術Blog

    作為一個理工科的程式設計師來講,可能不願意去寫作。建議養成寫作的習慣,真的很好,知識的沉澱需要有一個承載的地方,它可以幫助你進一步思考和總結,對於程式碼實現、架構、技術問題的解決能力都會有一個質的飛躍。當你回頭看的時候,你發現寫Blog真是一件好事情,非常有價值。

    三、網站推薦

    Github有很多開源的好專案,作為拿來主義肯定省時省力,但對於你練好內功完全不適用。所以說只靠Github完全不夠用。可以學習的網站還有CDSN,stackoverflow,iteye(javaeye),infoq,ifeve(併發程式設計)等向你推薦下。

  • 7 # 鬥戰勝佛

    Do more

    做的更多,做的比你主管安排給你的任務更多。我在HW的時候,負責一個版本的開發,這個版本的工作量大約是2000行左右,但是我除了做完這個功能,還將關聯的功能全部掌握清楚了,程式碼(大約10000行)也全部看了一遍,做完這個版本後,我對這個版本相關的整套業務全部很熟悉了。經過一兩次會議後,大家發現我對這塊掌握最熟了,接下來就有趣了:產品討論需求找我、測試有問題也找我、老大對外支撐也找我;後來,不是我負責的功能他們也找我,即使我當時不知道,我也會看程式碼或者找文件幫他們回答。。。。。。最後我就成了我這個系統的“專家”了。雖然這個時候我還是做業務的,還是寫業務程式碼,但是我已經對整個業務都很熟悉了。以上只是一個簡單的例子,其實就是想說:要想有機會,首先你得從人群中冒出來,要想冒出來,你就必須做到與眾不同,要做到與眾不同,你就要做得更多!怎麼做得更多呢?可以從以下幾個方面著手:1)熟悉更多業務,不管是不是你負責的;熟悉更多程式碼,不管是不是你寫的這樣做有很多好處,舉幾個簡單的例子:需求分析的時候更加準確,能夠在需求階段就識別風險、影響、難點問題處理的時候更加快速,因為相關的業務和程式碼都熟悉,能夠快速的判斷問題可能的原因並進行排查處理方案設計的時候考慮更加周全,由於有對全域性業務的理解,能夠設計出更好的方案2)熟悉端到端比如說你負責web後臺開發,但實際上使用者發起一個http請求,要經過很多中間步驟才到你的伺服器(例如瀏覽器快取、DNS、nginx等),伺服器一般又會經過很多處理才到你寫的那部分程式碼(路由、許可權等)這整個流程中的很多系統或者步驟,絕大部分人是不可能去參與寫程式碼的,但掌握了這些知識對你的綜合水平有很大作用,例如方案設計、線上故障處理這些更加有含金量的技術工作都需要綜合技術水平。“系統性”、“全域性性”、“綜合性”這些字眼看起來比較虛,但其實都是技術大牛的必備的素質,要達到這樣的境界,必須去熟悉更多系統、業務、程式碼。3)自學一般在比較成熟的團隊,由於框架或者元件已經進行了大量的封裝,寫業務程式碼所用到的技術確實也比較少,但我們要明白“唯一不變的只有變化”,框架有可能要改進,元件可能要替換,或者你換了一家公司,新公司既沒有元件也沒有框架,要你從頭開始來做。這些都是機會,也是挑戰,而機會和挑戰只會分配給有準備的人,所以這種情況下我們更加需要自學更多東西,因為真正等到要用的時候再來學已經沒有時間了。以java為例,大部分業務程式碼就是if-else加個資料庫操作,但我們完全可以自己學些更多java的知識,例如垃圾回收,調優,網路程式設計等,這些可能暫時沒用,但真要用的時候,不是google一下就可以了,這個時候誰已經掌握了相關知識和技能,機會就是誰的。以垃圾回收為例,我自己平時就抽時間學習了這些知識,學了1年都沒用上,但後來用上了幾次,每次都解決了卡死的大問題,而有的同學,寫了幾年的java程式碼,對於stop-the-world是什麼概念都不知道,更不用說去優化了。Do better要知道這個世界上沒有完美的東西,你負責的系統和業務,總有不合理和可以改進的地方,這些“不合理”和“可改進”的地方,都是更高級別的怪物,打完後能夠增加更多的經驗值。識別出這些地方,並且給出解決方案,然後向主管提出,一次不行兩次,多提幾次,只要有一次落地了,這就是你的機會。例如: 重複程式碼太多,是否可以引入設計模式? 系統性能一般,可否進行最佳化? 目前是單機,如果做成雙機是否更好? 版本開發質量不高,是否引入高效的單元測試和整合測試方案? 目前的系統太龐大,是否可以透過重構和解耦改為3個系統? 阿里中介軟體有一些系統感覺我們也可以用,是否可以引入 ?只要你去想,其實總能發現可以改進的地方的;如果你覺得系統哪裡都沒有改進的地方,那就說明你的水平還不夠,可以多學習相關技術,多看看業界其它公司怎麼做,BAT都怎麼做。我2013年調配到九遊,剛開始接手了一個簡單的後臺系統,每天就是配合前臺做資料增刪改查,看起來完全沒意思,是吧?如果只做這些確實沒意思,但我們接手後做了很多事情:解耦,將一個後臺拆分為2個後臺,提升可擴充套件性和穩定性;雙機,將單機改為雙機系統,提高可靠性;最佳化,將原來一個耗時5小時的介面最佳化為耗時5分鐘還有其它很多最佳化,後來我們這個組承擔了更多的系統,後來這個小組5個人,負責了6個系統。Do exercise在做職業等級溝通的時候,發現有很多同學確實也在嘗試Do more、Do better,但在執行的過程中,幾乎每個人都遇到同一個問題:光看不用效果很差,怎麼辦?例如:學習了jvm的垃圾回收,但是線上比較少出現FGC導致的卡頓問題,就算出現了,恢復業務也是第一位的,不太可能線上出現問題然後讓每個同學都去練一下手,那怎麼去實踐這些jvm的知識和技能呢?Netty我也看了,也瞭解了Reactor的原理,但是我不可能參與Netty開發,怎麼去讓自己真正掌握Reactor非同步模式呢?看了《高效能MySQL》,但是線上的資料庫都是DBA管理的,測試環境的資料庫感覺又是隨便配置的,我怎麼去驗證這些技術呢?框架封裝了DAL層,資料庫的訪問我們都不需要操心,我們怎麼去了解分庫分表實現?諸如此類問題還有很多,我這裡分享一下個人的經驗,其實就是3個詞:learning、trying、teaching!1)Learning這個是第一階段,看書、google、看影片、看別人的部落格都可以,但要注意一點是“系統化”,特別是一些基礎性的東西,例如JVM原理、Java程式設計、網路程式設計,HTTP協議。。。。。。等等,這些基礎技術不能只通過google或者部落格學習,我的做法一般是先完整的看完一本書全面的瞭解,然後再透過google、影片、部落格去有針對性的查詢一些有疑問的地方,或者一些技巧。2)Trying這個步驟就是解答前面提到的很多同學的疑惑的關鍵點,形象來說就是“自己動手豐衣足食”,也就是自己去嘗試搭建一些模擬環境,自己寫一些測試程式。例如:Jvm垃圾回收:可以自己寫一個簡單的測試程式,分配記憶體不釋放,然後調整各種jvm啟動引數,再執行的過程中使用jstack、jstat等命令檢視jvm的堆記憶體分佈和垃圾回收情況。這樣的程式寫起來很簡單,簡單一點的就幾行,複雜一點的也就幾十行。Reactor原理:自己真正去嘗試寫一個Reactor模式的Demo,不要以為這個很難,最簡單的Reactor模式程式碼量(包括註釋)不超過200行(可以參考Doug Lee的PPT)。自己寫完後,再去看看netty怎麼做,一對比理解就更加深刻了。MySQL:既然有線上的配置可以參考,那可以直接讓DBA將線上配置發給我們(注意去掉敏感資訊),直接學習;然後自己搭建一個MySQL環境,用線上的配置啟動;要知道很多同學用了很多年MySQL,但是連個簡單的MySQL環境都搭不起來。框架封裝了DAL層:可以自己用JDBC嘗試去寫一個分庫分表的簡單實現,然後與框架的實現進行對比,看看差異在哪裡。用瀏覽器的工具檢視HTTP快取實現,看看不同種類的網站,不同型別的資源,具體是如何控制快取的;也可以自己用Python寫一個簡單的HTTP伺服器,模擬返回各種HTTP Headers來觀察瀏覽器的反應。還有很多方法,這裡就不一一列舉,簡單來說,就是要將學到的東西真正試試,才能理解更加深刻,印第安人有一句諺語:I hear and I forget. I see and I remember. I do and I understand ,而且“試試”其實可以比較簡單,很多時候我們都可以自己動手做。當然,如果能夠在實際工作中使用,效果會更好,畢竟實際的線上環境和業務複雜度不是我們寫個模擬程式就能夠模擬的,但這樣的機會可遇不可求,大部分情況我們還真的只能靠自己模擬,然後等到真正業務要用的時候,能夠信手拈來。3)Teaching一般來說,經過Learning和Trying,能掌握70%左右,但要真正掌握,我覺得一定要做到能夠跟別人講清楚。因為在講的時候,我們既需要將一個知識點系統化,也需要考慮各種細節,這會促使我們進一步思考和學習。同時,講出來後看或者聽的人可以有不同的理解,或者有新的補充,這相當於繼續完善了整個知識技能體系。這樣的例子很多,包括我自己寫部落格的時候經常遇到,本來我覺得自己已經掌握很全面了,但一寫就發現很多點沒考慮到;組內培訓的時候也經常看到,有的同學寫了PPT,但是講的時候,大家一問,或者一討論,就會發現很多點還沒有講清楚,或者有的點其實是理解錯了。寫PPT、講PPT、討論PPT,這個流程全部走一遍,基本上對一個知識點掌握就比較全面了。

  • 8 # 一一哥Sun

    IT行業是可以說是一個需要不停學習,不斷充電的行業,如果不能夠及時的更新自己的技能和知識儲備,那麼離淘汰也就為期不遠了。

    我說一下自己的學習充電的地方吧。

    Android技能提升:Android開發者論壇,安卓巴士;

  • 9 # 略懂IT

    首先有提升自己的觀點是非常棒的,根據我的實際情況簡單說一下:

    1. JDK原始碼

    在會用的前提下,去學習原理。其中執行緒池、Future、併發包裡的執行緒安全類、以及鎖的根基AQS、volatile,synchronized的原理等等都要去看。原始碼部分能用到的就要去看下實現原理。

    2. JVM層面

    寫程式一定要知道程式在記憶體中是如何存放已經管理的,各種回收機制,利弊,使用場景,如果最佳化,好好的去研究

    3. 設計模式

    業界有一句笑話“搞JAVA的人天天加班在想怎麼設計”,足以看出設計模式在Java中的主要性。針對設計模式我也要多說幾句,不要只看,要講學到的東西應用到自己的實踐中。

    4. Java優秀的框架原始碼學習

    spring,springmvc,mybatis,tomcat,netty,dubbo 任何一個就夠自己研究幾個月的。

    5. 資料儲存層Mysql相關的知識

    一般對於Java程式設計師來說,DB的相關知識特別的薄弱。對於DB的索引、隔離級別、最佳化以及底層原理都需要搞懂

    6. 中介軟體相關

    分散式記憶體資料庫-Redis,MQ-Kafka,RPC-dubbo,服務治理-Zookeeper。像redis是C++寫的,可以去了解實現原理,Kafka很龐大也可以只學習原理。dubbo啃程式碼吧,寫的很好。

    7. IO方面的知識

    Java最擅長的領域就是Web開發,與網路打交道IO只是是缺不了的。比如可以從《Netty權威指南入手》學習,Tomcat中除了容器也是與IO相關的知識。

    可以看書,當然書一定不要只看一遍。我一般是一本書至少看兩遍。第一遍粗略的讀,知道有這個回事就可以。第二遍精讀,鑽牛角尖的讀,碰到不了解的知識點就要去研究。(為什麼要讀兩遍,我一直有一個觀點就是,作者在寫的時候整本書的知識點就已經都掌握了,先粗略看一遍對全域性知識點有了大概的瞭解後再來看書肯定有不一樣的見解)一段時間過後,再返回來讀一遍,絕對會有不一樣的收穫(自己掌握知識水平不同,看書的理解也會不同)。

    差不多先這些吧,夠研究幾年的了

  • 中秋節和大豐收的關聯?
  • 有哪些關於庫裡的科普?