A. java入門如何學習怎麼學好Java開發
Java如今已經是全球編程語言排名第一的語言,運用廣泛,前景廣闊,而且很多軟體的開發都離不開Java,而在以Java為核心的開發領域中,JavaEE程序員的需求量10年來一直居於首位!也正是因為如此很多的小夥伴參加Java培訓,當然也有部分小夥伴想要先了解一下,Java到底是什麼,怎麼可以學好,有個大概的認知才參加Java培訓或者Java學習,那麼Java入門如何學習?怎麼學好Java開發?學習要點是什麼?掌握以下內容讓Java入門更快,掌握Java更輕松。
一、Java入門如何學習?怎麼學好Java開發?Java必備基礎知識
1、你需要精通面向對象分析與設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該十分了解UML,尤其是class,object,interaction以及statediagrams。
2、你需要學習JAVA語言的基礎知識以及它的核心類庫(collections,serialization,streams,networking,multithreading,reflection以及其他)。
3、你應該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類文件並且明白一些基本的匯編指令。
4、你需要學習java資料庫技術,如JDBCAPI並且會使用至少一種persistence/ORM構架,例如Hibernate,JDO,CocoBase,TopLink,InsideLiberator或者iBatis。
5、你應該熟練掌握一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜歡VI或EMACS來編寫文件。隨便你用什麼了:)
6、JAVA(精確的說是有些配置)是冗長的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet等等。
二、Java入門如何學習?怎麼學好Java開發?Java學習5大階段
階段1:Java設計和編程思想掌握的技能:
精通面向對象思想和Java基礎語法;熟練Java異常處理;精通JavaI/O操作;掌握Java多線程操作;精通Jjava集合類的使用;掌握Java網路編程;精通資料庫/JDBC的使用。
階段2:Web前端開發掌握的技能:
掌握html+css+js相關技術;通過H5相關的庫快速編寫代碼;搭建符合大數據要求的界面,使前端+後端+大數據實現三維一體。
階段3:JavaEE進階掌握的技能:
掌握Tomcat/Nginx伺服器搭建;掌握Jsp&Servlet的使用;精通SSH、SSM兩大流行框架的原理及使用。
階段4:大數據核心知識掌握的技能:
了解hadoop機制原理;了解hadoop集群搭建過程;了解HdfsAPI使用以及mr編程模型;了解hive、hbase、sqoop、flume等組件的使用方法。
階段5:綜合項目掌握的技能:
大型網上商城項目、當日達項目、點餐系統、網上書城、OA辦公自動化項目、CRM客戶關系管理項目等企業真實綜合項目開發能力,達到中高級Java工程師的技術水平。
Java入門如何學習?怎麼學好Java開發?這是一個從易到難再到易的過程,需要一步一個腳印去學習,嚴格意義上說,java是一門較復雜的編程語言,不下苦功,是不可能學到非常好的層次。
同樣,學習java為了最快的提升效率和保證你能夠學會,還是需要找一家正規專業的培訓機構,接受系統化的學習和掌握java實戰項目,才能從入門到精通,更快成為一名合格的java工程師。
學Java當然要到17年技術積累的昆明北大青鳥教育,引領行業的技術,一線技術專家,15萬家就業合作企業。技術,求職,高薪,你的所有問題都能一站式解決!
2月份Java免費訓練營火熱報名中,經典Java免費課程限額送,一線技術大牛,為你解析行業前景,就業形勢,面試真經,讓你一站式成為Java大牛工程師,名額有限,填寫下面的表格即可獲得試聽資格!
B. 程序員,感覺技術停滯了怎麼辦
程序人生 | 程序員感覺技術停滯了怎麼辦?Java程序員如何打破工作2,3年的瓶頸問題,讓技術更上一層樓?? 很多人做java開發2,3年後,都會感覺自己遇到瓶頸。什麼都會又什麼都不會,如何改變..
C. 程序員,感覺技術停滯了怎麼辦
你是一名程序員,感覺技術停滯了。那你就去深造唄,就是你可以選擇各種的程序任務去做。哦!針對自己有弱點的地方,然後去學習。活到老,學到老。
D. 程序員如何突破技術瓶頸期
對於程序員來說,在工作中除了實現自己的個人價值以外,同時也需要不斷吸收新的知識來充實和提高自己的能力。今天,我們就一起來了解一下,程序員在技術瓶頸期應該如何突破。
作為一個技術人,不知道你有沒有遇到過下面的情況?
「我學不到新東西」
「我感覺沒啥成長」
「每天都在重復勞動」
其實,每個技術從業者,多多少少都會遇到工作或學習瓶頸期。產生瓶頸鄭猜期,往往不是因為我們不夠努力,而是以下原因導致的:
1、無法積累有效的項目經驗,一直在做著重復的事情,成長出現斷層。
2、企業的培訓較為傳統,多為被動接收,「營養成分」較低,對業務開發無明顯提升。
3、技術書籍和網上的免費資料實效性較低,且大多理論性會大於實用性,導致無法應用到工作場景。
那麼,該如何解決呢?
1、藉助「巨人的肩膀」,快速成長。
學習資料非常關鍵,真正經典的素材只佔1%。如果希望得到快速成長,或是成為技術領域高手,那麼就需要藉助「巨人的肩膀」。比如,如果可以接觸到BAT、或者國外大公司的資深技術人,你的學習效果就會事半功倍。
2、利用碎片化時間,提升專業能力。
一旦進入職場,我們很難有成塊的時間去系統的學習一門知識,良好的狀態是利用自身碎片時間,學習與業務緊密相關的實戰知識。網上下載的資料,或者一些技術書,可能無法在碎片化時間消化。
3、每個角色都要懂其他角色的東西,才能成為優秀的角色。
雖然研發團隊角色不同,如產品、研發、測試。但是這些角色都是相互交叉影響的。如果對其他領域沒有一定的認知,就會聽不懂他們的訴求本質和技術方案,耗費溝通罩悔成本。而能在多方配合的溝通場景中,北京北大青鳥發現通過學習到的多樣技術能力,直面解決技術問題,就可以在技術成長之路上得到提喊悶型升,成為一名優秀的技術leader。
有沒有「拿來就用」的解決方法呢?
以上推薦的3點解決方法,可以總結如下:
1、學習使用有價值的經典學習材料;
2、持續學習,碎片化汲取「營養」;
3、保持在多領域對技術知識的拓展。
E. 程序員如何提高解決問題的能力
#技術分享# 程序員最重要的能力之解決問題的能力。上次說到程序員最重要的能力之自學能力。自學你總能找到這樣或者那樣的資料,然而當你遇到一個技術難題你可能在網路找不到任何有用得資料。
這個問題我分兩個層面去闡述,道與術。道是基礎知識儲備,術就是方法。
零散的知識是無用的,你聽到一句很有哲理的話,你看到一個深入你心的人生感悟,這些東西對你其實都是毫無作用的。真正有作用的知識一定是成體系的,系統性的。知識與知識直接是有關聯的。用分類的思想來說,知識點有兄弟關系,有父子關系。兄弟是有同有異的,父子是有傳承的,是從屬的。 另外,系統性的知識一定是強調完備性的,是有限元的。
抽象的東西很難理解,通俗的去說就是在學習的時候有要意識的去系統性的學習。就好像你聽到的人生感悟,各種雞湯,他們不是沒有道理,而是還得知道他們的背景與環境。了解了這些你就不會急著往你自己身上套。
術就分享幾個小方法。編程上遇到的問題一般都有錯誤信息,這些信息都會有堆棧。很多同學一看到錯誤提示是英文的就不管三七二十一復制去網路了。其實很多時候錯誤提示本身就是答案,因此學一些基礎的英文是有必要的。如果錯誤信息過於抽象,那跟著堆棧去調試也是一個很好的選擇。以上基本就能解決你遇到的90%的問題。從另外的角度也提示我們在編程的時候需要拋出友好的錯誤提示。
另外我們還會遇到一些莫名其妙的問題,沒有任何提示。這個時候我們要學會提取關鍵詞,利用搜索引擎找到答案。分享一個案例,我在用flutter開發app時有客戶反饋偶發性的白屏。提取關鍵詞flutter+白屏在網路幾乎沒有任何有用的信息。繼續細節化,白屏出現在啟動頁。換成谷歌 flutter+splash+blank順利找到解決方案。總結就是,盡量找一手資料,盡量用英文搜索,利用細節關鍵詞縮小搜索范圍。
當然,以上的兩個方面都不足以概論如何提升解決問題能力的問題。最重要的是經驗,有足夠解決問題的經驗是基礎。這種能力是有正向反饋的,你解決了第一個問題,你就有信心解決第二個問題。遇到問題不要著急去搜索,去技術群問答案。自己能解決問題會給你帶來良好的正向反饋。
廣告:泰升網路 科技 ,專業從事企業信息化服務,軟體定製開發,SAAS等。
F. 程序員遇到百度不出來的bug都是怎麼解決的
筆者不同意下面網友的回答。程序員如果解決bug的水平停留在網路,那麼本質上只是一個「面向搜索引擎的代碼搬運工」,是不合格的程序員。
程序員對面bug,正確的「打開方式」是像福爾摩斯和柯南那樣,尋找線索、運用邏輯推理來縮小問題可能的根因范圍,最終精準定位。
常用的方法有:
1. 壞境上下文變換法
2. 工具調試法
3. 版本回溯對比法
4. 代碼審計法
……
沒有編程問題是stack overflow和Google解決不了的,假設你在編程中遇到了問題,你自己解決不了、你周圍的的人都解決不了的時候,我覺得stack overflow、Google是你最好、也是最後的幫手。
作為一個程序員,我覺得Google、stack overflow是你必須要學會使用的兩個工具,這兩個工具本身並沒有使用門檻,只不過因為一些眾所周知的原因,很多人不能使用Google和stack overflow這兩款工具。
Google主要還是方便,而且很多編程問題都需要用到英文搜索,當然現在網路在專業能力上也提升明顯,不過跟Google也還是有比較大的差距,因此我還是強烈建議要學會使用Google,這會幫你在工作、學習上事半功倍。假設Google確實因為某些原因沒辦法很好的使用,我也建議你至少要會使用Bing搜索。
現在可以說stack overflow上沒有你找不到的問題了,從IDE環境安裝問題,到各類編程語言問題。演算法問題,數據結構問題,調試,重構等等,幾乎這里就沒有你找不到的答案,可以說在stack overflow上你可以找到任何解決方案,並且上面的回答者基本上都是非常有經驗,而且都是實際中遇到的問題分享出來的,這個工具一定要會使用。同理,除了stack overflow這個專業的垂直程序員問答社區,你也可以使用Quora這個綜合問答社區,這上面也能找到很多問題的答案。
一些比較優秀的文本編輯器: Emacs/Vim,Visual Studio Code,Sublime Text,Atom,Ultraedit,Hbuilder等。
一些比較非常出色的IDE集成開發環境: visual studio,IntelliJ IDEA,PhpStorm,Haskell for Mac ,eclipse,WebStorm,GoLand,CLion,Android Studio,Xcode,QT等。
macOS平台比較好的第三方包管理工具: Fink,Macports,Homebrew等。
一些比較好的終端工具: Zoc7,iTerm2,Cmder,terminus,hyper等。
一些比較好的筆記軟體、markdown工具、效率工具: Evernote,有道雲筆記,為知筆記,Ulysses,MWeb,FileZilla,Snipaste,Kantu等。
虛擬機軟體、容器軟體: Parallels Desktop,VMWare Fusion,Virtual Box,Docker等。
我是個程序員,職務是linux底層驅動工程師。平時的主要工作是調試驅動,但產品遇到諸如死機、重啟、不開機之類的問題時,也要參與查找原因。一部分問題,確實可以查看相關的log,然後網路這些log的關鍵字來解決;但更多的問題,牽扯的條件太多,並不是簡單的網路就能解決的。
觀察了周圍同事們的做法,我總結出以下幾種解決方法:
網路因為競價排名的原因,搜索出來的結果有很多廣告的成分,所以有時候要翻好幾頁才能看到一條相關的答案,有些甚至要翻幾十頁。
因為網路搜索使用的是SEO技術,即普通用戶可以通過優化網站內容來提升關鍵詞排名。
而這就會導致一個問題:你搜索關鍵詞後展現出來的結果是有人想要讓你看到的,並不是質量最好的。
也就是說,網路搜索結果被人為干預了。所以網路一直被網民所詬病。
但網路搜索不出結果,未必是網路的原因,也有可能是自己輸入的搜索詞不準確造成的。所以對於網路,我們要做到如下幾點:
除此之外,網路搜索還有點小技巧,粥左羅《萬字干貨,徹底講透搜索技巧,10倍提升你的搜索力(免費教程)》這篇文章寫得非常好,我整理幾點,僅供參考:
01 過濾目標內容
命令:「+」「-」
用法:通過「+」和「-」來對搜索結果進行過濾
比如在關鍵詞後加上「-推廣 -推廣鏈接」就可以排除搜索結果中包含相應字樣的鏈接。如果你發現廣告還沒有排除干凈,你也可以再加上「-廣告」通常就能徹底的消滅廣告。
02 搜索包含某關鍵詞的內容
命令:「intitle」
用法:通過「intitle」命令指定搜索結果中要包含的關鍵詞,注意「intitle」後邊連接的冒號是英文狀態下的。
03 搜索某一個格式的文件
命令:「filetype」
用法:通過「filetype」命令可以限制我們要搜索文件的類型,注意「filetype」後邊接的冒號也是英文狀態下的。
04 搜索特定時間范圍的內容
命令:「時間..時間」
用法:通過「時間..時間」命令可以限制我們要搜索的文件的時間,注意兩個時間的中間頓號沒有空格。
相對網路,谷歌、必應對於技術搜索,就相對准確許多,所以當你網路搜索不到時,嘗試下別的搜索引擎,說不定會有新發現。
現在程序員使用的機器語言,都是國外的,更准確的說,都是美國的。所以很多論壇、資料等,都是英文。如果你只會用中文來搜索,某些小眾的問題,當然搜不到啦。
所以,要學會使用英文關鍵字來搜索。
有時候甚至要去國外的一些論壇來搜索想要的答案,這就要求要有一定的英語閱讀能力,不能一看到英文帖就放棄。
有時候不管你如何搜索,都找不到自己想要的答案,該怎麼辦呢?這種情況下,就只能硬著頭皮嘗試自己解決了。
或者,尋求同事或朋友的幫助,尋求大腦風暴,說不定就會有思路。
如果有些問題是因為新器件帶來的,還可以找到器件供應商,讓他們安排技術支持幫忙查找原因。
除此之外,還可以把問題整理好,寫清發生的條件、復現步驟、測試方法、相關的LOG截圖等資料,去一些技術論壇發求助帖,尋找大牛的幫助。
做技術時間久了,發現有些問題確實無解,根本沒有辦法去解決它。
這時候,我一般會嘗試把它繞過,就是說,想辦法讓它無法復現,雖然問題還是存在,但是能把它掩蓋過去。
比如有些驅動在開機啟動時會載入不正常,那麼就讓它晚點啟動,或者手動載入。這也不失為一種解決問題的方法。
以上就是我的建立,希望對你有幫助。
首先作為一個程序員,一個優秀的程序員最最最重要的能力就是解決問題的能力。這里解決問題的能力當然就包含了解決 bug 能力了
畢竟,程序員這一生,可能會寫無數個 bug ,沒有說哪個程序員敢保證自己寫的程序沒有 bug 。 所以,寫了 bug ,遇到 bug 並不可怕,可怕的是你沒有解決 bug 的能力 。
作為一個程序員,解決 bug 的途徑有哪些呢?我們來一起聊一聊!
其實,每個程序員在學習編程的時候,都會使用編程工具,而現在的開發工具,其實功能都很強大。如果你自己合理利用編程工具,都了解和懂得開發工具的一些技巧,其實不僅僅能夠提高開發效率,而且還能夠幫助你解決很多編程中的實際問題。
debug 調試,大部分你常用的開發工具,都會有調試模式的,簡而言之,就是你編程的時候,遇到了不是自己所想的結果的時候,你可以使用 debug 模式,來一步一步的調試,在調試模式下一般每一步都會顯示所執行的結果,你可以看看在哪一步出錯了,執行的結果與你預想的結果不對,那麼你就能夠找到問題所在了。
還有就是,開發工具的控制台,都會提示出報錯信息的,現在的開發工具,都會直接告訴你哪一行,報了什麼錯。其實,很容易定位到錯誤的。你只需要在編程的過程中積累經驗,知道報什麼錯,用什麼方法來解決就行啦。
可是,提示的報錯信息,我不知道用什麼方法來解決的時候,該怎麼辦呢?這就是你需要積累的,也是問題中所描述的,就是通過搜索引擎來找答案。
不對,這里不應該是合理使用搜索引擎,應該是學會正確使用搜索引擎。比如:網路,你就不要用了,搜出一堆重復的信息,而且廣告也多。作為程序員,建議你使用谷歌搜索。
其實,你在編程中所遇到的幾乎所有的問題和 bug ,別人也同樣遇到過,因為不管是經驗豐富的老程序員,他技術再牛逼,也是初學者過來的,也都踩過你踩的坑。所以,互聯網是個好地方,裡麵包含了你想要的問題的答案。
你只要把報錯信息往搜索引擎上一放,回車一下,很多關於這個 bug 的答案就出來很多,你只需要找到跟你一樣的 bug ,就能找到答案了。
在這里必須提一下這個網站,所有的程序員有必要學會使用這個網站,其實,你編程中所遇到的問題,這個網站上幾乎都是由解答的。
Stack Overflow 可以說是最好的軟體程序類問答網站了,給軟體開發人員工作和學習提供了非常大的便利,以至於像小白,離了 Stack Overflow 簡直都不會寫程序了。
所以,建議大家一定要學會使用這個網站,對你編程肯定會有非常大的幫助的。
通過上面的方法,幾乎應該能夠解決到你所遇到的問題,但是,實在找不到答案的話,你可以問經驗比你豐富的老程序員,實在解決不了,那就換種方法吧!
網路,谷歌,debug,斷點調試,業務上的bug就需要問下同事或者產品。如果能知道大致范圍,哪一部分錯了,就換一種方法唄,一般都不會只有一種方法。
1.reload
2.restart
3.rewrite and then goto 2 or 4
4.reboot
5.rm -rf /
6.原諒我編不下去了[捂臉][捂臉][捂臉][捂臉][捂臉][捂臉][捂臉]
找bug跟醫生看病的思路是一樣的,要對症下葯。得先把問題的根源找到,找到根源以後問題就容易處理了。搜索引擎找不到的問題,說明這個問題不是一個常見的問題,具有獨特性,那麼從bug出現的路徑上一步一步去排查。必要時可以用排除法,盡可能的縮小排查范圍。另外,當軟體的業務邏輯比較繁多復雜的時候,一個結構清晰的架構能為你節省不少找bug的時間。還有,充分的單元測試能夠幫你減少出bug的機會。以上均為個人看法,歡迎討論!
一般程序員能碰到的bug無外乎其他上遊程序員寫庫時手抖留下些不匹配或者容易溢出的問題,搜一下差不多能解決問題。如果是自己寫的,那無非就是時序錯誤類型錯誤之類的,用break point一行行的調就好了。
再復雜點的bug就是程序員拿高薪的根本了,只可意會,不可言傳~
僅僅靠搜索引擎、其他網站那必然無法解決大量問題,因為很多問題是跟業務邏輯相關的,是沒有直接答案的。比如 游戲 開發有個界面一直無法顯示,這個問題就不是網路可以解決的。問題需要調試分析,這和破案非常像,但在開發過程中更有利的是問題有機會可以重現。破案是逆向工程,需要反推。解決代碼問題不僅僅可以反推,也可以通過閱讀代碼正向分析。下面說說如何debug一個業務邏輯問題。回到剛剛的例子,有個界面一直出不來,我們如何快速去定位:
1.思考這個問題發生的可能性。比如 游戲 內大量界面都是正常的,那麼可以對比正常界面代碼和異常界面代碼的區別,這是對比法。
2.假設創建正常界面和這個異常界面的邏輯代碼是一樣的,那麼問題就落到了這兩個界面內部,繼續在內部重復上面的對比法進行判斷,直到鎖定最終位置。
上面說的方法基本上可以杜絕卡在一個簡單問題上,這是擺脫新手的一個過程。選擇使用對比法或者其他方法的前提都是基於觀察和對項目的認識,所以,搜集「案發現場」是最關鍵的。
其他的問題,不屬於邏輯的,像其他網友說的那樣,有些通過到github、stackoverflow等地方解決的。這些問題也不是直接就去查找的,它通常也有個分析過程。比如你使用了一個庫,但是目前它不支持你的模塊。對於新手,就是直接網路或者google了。實際上這樣的問題也是有「案發現場」的。對於作者提供的api介面的統一性和便捷程度去推斷作者在相關支持模塊的位置以及命名以及拓展,再嘗試在文件夾中搜索。如果都找不到,再去Google上獲取更多的信息。重復推斷、分析,決定如何拓展或者繞過。
綜合上面的幾種問題,可以看到的是都離不開對現場的觀察和推理分析。這種能力也被稱為經驗。但是一般情況下你看不到它們這個分析過程,你能做的就是在實際環境中反復逼迫自己去思考,去訓練。這個推理的培養,不僅僅是對事情,也是對人。
我在入行 游戲 開發的前期,也是類似的情況。卡在不同種類的問題上,有些在簡單邏輯,有些在別人的代碼支持上。後面解決的問題多了,就會發現裡面共通的思維方式。常用的一些方法如下:
1.對比法,比較正常與異常代碼區別
2.二分查找法。分段注釋找問題,也會用在很多方面。比如最近版本突然出了一個奇怪bug,可以通過svn還原來定位。這個還原不是一個一個版本還原,而是用二分法去還原。
3.增加信息。在懷疑的位置或者過程添加日誌或者打斷點輔助自己更好的推理。
4.相似推理。比如一個引擎在api、性能使用程度上都非常友好,那麼它在別的地方也有可能相對表現比較好。這時候如果有個功能我們的實現需要很復雜才能完成,那麼就有可能是我們用錯了。相似推理不一定都能正確,但會提供一些幫助。
以上。