第一篇:寫給Android初學者的學習經驗和建議
首先說說Android開發環境的搭建吧,本來這是一件很容易的事情,但是很多同學依舊會遇到很多的問題,建議就是在網站下一個Android開發環境的教程,然后一步一步去搭建。同學一遇到有問題首先是要自己去看看哪里出問題了,如果找不到問題,應該是想到搜索引擎才對的,谷歌肯定會給你最好的解答的。
一、Android開發起步其次說的是剛剛起步學習的同學,假如開始沒有任何的開發經驗的話,千萬不要著急,不要想著在短時間內就把一個語言學習好,因為你之前沒有任何的學習經驗,在這個過程中需要有耐心地學習完JAVA的基礎知識,然后才開始踏上Android開發之旅。一類同學是只之前做過JAVA開發經驗的,這類同學可以在Android上迅速上手,但是同樣的是不可忽略Android的一些基礎知識,只有把基礎掌握好了,才能在后期取得大的進步。
二、Android基礎知識學習在掌握好JAVA基礎知識后,接下來就是學習Android基礎知識和如何查看開發文檔了,在這個階段我認為是學習最有勁頭和最有收獲的時候,因為從一無所知到了解是會讓人有收獲良多的感覺,事實上在這一階段也是學習了很多,至少知道如何建立工程,知道一些基本的機制很常用函數的用法,這個階段會出現很多的問題,往往一個很低級的問題都會把你難倒,而這階段正式培養學習能力的好時機,還是那句話,凡是遇到問題第一個想的是自己去解決,自己解決不了的,用百度用谷歌,要學會使用搜索引擎,大部分的時候問題都能得到解決,因為你遇到過的問題別人早就遇到過了,假如搜索引擎也找不到好的答案,這時候可以到論壇發帖問,網上牛人很多,也可以選擇到群里咨詢。
三、Android開發進階學習完Android基礎知識以后,很多同學很快就會感覺到學習停步不前,感覺自己似懂非懂,我覺得這個時候是學習最關鍵的時候,因為一旦你踏出這一步之后,你對Android的理解就會跟更加透徹,做起開發也會更加有信心,但是怎樣跨過這一階段,我根據自己的經驗是首先是保持對自己的信心,自己找一個比較簡單的項目做做或者找一些應用的源代碼研究研究,然后自己山寨出來一個,這樣你也會有了學習的方向,因為你在了解了基礎知識以后急切需要證明一下自己到底是學到了什么東西,而開發出一個自己的簡單應用,就是最大的證明了,而且在開發應用的時候,肯定會遇到很多的問題,而在獨立解決bug的同時,你已經掌握了獨立處理問題的能力。
如果你順利地走完了前面的三個階段,恭喜你,你不知不覺之中已經成為一個Android的開發者了。
最后總結一下,學習最主要還是培養自學能力,要學會使用搜索引擎幫助學習,要學會共享互助的開源精神。
第二篇:Android學習筆記總結初學者必看
Android學習筆記總結
第一步:
Android(1)項目名稱;Build Target程序名稱;Package name程序所支持的最低 SDK 版本代號(2 對應 1.1,3 對應 1.5,4 對應 1.6)
6、運行 Android 項目
打開菜單 “Run”-> “Run Configurations”-> New launch configuration,設置啟動項目名稱,在 Android 選項卡中選擇啟動項目,在 Target 選項卡中設置模擬器
7、創建/使用模擬 SD 卡
創建 SD 卡,運行類似如下命令:mksdcard-l sdcard 512M d:androidsdcard.img 模擬器中使用 SD 卡,在項目配置的 Target 選項卡的 “Additional Emulator Command Line Options” 框中輸入類似如下參數:-sdcard d:androidsdcard.img
8、配置模擬器
運行類似如下命令:android create avd--name android15--target 2。或者直接在菜單 “Window”-> “Android AVD Manager” 中配置模擬器
9、瀏覽模擬 SD 卡中的內容
調試程序,在 DDMS 中選擇 “File Explorer”,在其中的 sdcard 目錄下就是模擬 SD 卡中的內容
10、查看日志 LogCat Window-> Show View-> Other-> Android-> LogCat
11、在模擬器中安裝/卸載 apk 安裝 apk 運行類似如下命令:adb install name.apk;卸載 apk 運行類似如下命令:adb uninstall packagename(注:這里的參數是需要卸載的包名)
12、反編譯 Android 程序
解壓 apk 文件,取出其中的 classes.dex 文件,運行類似如下命令:dexdump.exe-d classes.dex > dump.txt(其意思是將 classes.dex dump 出來,并將反編譯后的代碼保存到指定的文本文件中)
13、人品不好是出現的某些錯誤的解決辦法 如果出現類似如下的錯誤等 no classfiles specified Conversion to Dalvik format failed with error 1 解決辦法:Project-> Clean 出現 Android SDK Content Loader 60%(一直卡在 60%)解決辦法:Project-> 去掉 Build Automatically 前面的勾
14、查看 SDK 源代碼
先想辦法搞到源代碼,如這個地址 http://www.tmdps.cn/android.asp,然后將其解壓到 SDK 根路徑下的 sources 文件夾內即可
二、Android 項目的目錄結構
1、src自動生成 R.java 文件,用于引用資源文件(即 res 目錄下的數據)
3、assets用于放置圖片之類的資源;res/layout用于放置一些常量數據
5、AndroidManifest.xml布局(Layout)和菜單(Menu)介紹
在 Android 中各種布局的應用,以及菜單效果的實現
? 各種布局方式的應用,FrameLayout, LinearLayout, TableLayout, AbsoluteLayout, RelativeLayout
?
為指定元素配置上下文菜單,為應用程序配置選項菜單,以及多級菜單的實現
1、各種布局方式的演示 res/layout/main.xml 代碼
android:layout_height=“wrap_content” android:text=“FrameLayout”>
android:layout_height=“wrap_content” android:text=“Frame Layout”>
android:layout_height=“wrap_content” android:text=“@string/hello” /> android:layout_width=“fill_parent”> android:layout_height=“wrap_content” android:text=“AbsoluteLayout” android:layout_x=“100px” android:layout_y=“100px” /> _Button.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView; public class _Button extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.button); setTitle(“Button”); Button btn =(Button)this.findViewById(R.id.button);btn.setText(“click me”); // setOnClickListener()圖片按鈕控件--> android:layout_width=“wrap_content” android:layout_height=“wrap_content”> _ImageButton.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageButton;import android.widget.TextView; public class _ImageButton extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.imagebutton); setTitle(“ImageButton”); ImageButton imgButton =(ImageButton)this.findViewById(R.id.imageButton);// 設置圖片按鈕的背景 imgButton.setBackgroundResource(R.drawable.icon01); // setOnClickListener()圖片顯示控件--> android:layout_height=“wrap_content”> _ImageView.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle; import android.widget.ImageView; public class _ImageView extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.imageview); setTitle(“ImageView”); ImageView imgView =(ImageView)this.findViewById(R.id.imageView);// 指定需要顯示的圖片 imgView.setBackgroundResource(R.drawable.icon01);} } 5、CheckBox 的 Demo checkbox.xml 代碼 android:orientation=“vertical” android:layout_width=“fill_parent” android:layout_height=“fill_parent”> android:layout_height=“wrap_content” android:id=“@+id/textView” /> android:layout_width=“wrap_content” android:layout_height=“wrap_content”> _DigitalClock.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle; public class _DigitalClock extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.digitalclcok); setTitle(“DigitalClcok”);} } Android(6)日期選擇控件 TimePicker雙狀態按鈕控件 EditText進度條控件 SeekBar支持自動完成功能的可編輯文本控件 MultiAutoCompleteTextView日期選擇控件--> android:layout_width=“wrap_content” android:layout_height=“wrap_content”> _DatePicker.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle; public class _DatePicker extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.datepicker); // 具體的應用可參見對話框中的示例 setTitle(“DatePicker”);} } 2、TimePicker 的 Demo timepicker.xml 代碼 android:orientation=“vertical” android:layout_width=“fill_parent” android:layout_height=“fill_parent”> android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:textOn=“關閉” android:textOff=“打開” /> _ToggleButton.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.ToggleButton; public class _ToggleButton extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.togglebutton); setTitle(“ToggleButton”); final ToggleButton btn =(ToggleButton)this.findViewById(R.id.toggleButton);// setOnClickListener()雙狀態按鈕的按鈕狀態 txt.setText(“按鈕狀態:” + String.valueOf(btn.isChecked()));} });} } 4、EditText 的 Demo edittext.xml 代碼 android:orientation=“vertical” android:layout_width=“fill_parent” android:layout_height=“fill_parent”> style=“?android:attr/progressBarStyleLarge” android:layout_width=“wrap_content” android:layout_height=“wrap_content” /> android:layout_width=“wrap_content” android:layout_height=“wrap_content” /> style=“?android:attr/progressBarStyleSmall” android:layout_width=“wrap_content” android:layout_height=“wrap_content” /> style=“?android:attr/progressBarStyleHorizontal” android:layout_width=“200px” android:layout_height=“wrap_content” android:max=“100” android:progress=“50” android:secondaryProgress=“75” /> _ProgressBar.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle;import android.view.Window; // 另見對話框中的進度條 public class _ProgressBar extends Activity { @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 設置特性以允許在應用程序的標題欄上顯示進度條(條狀)requestWindowFeature(Window.FEATURE_PROGRESS);// 設置特性以允許在應用程序的標題欄上顯示進度條(圓圈狀)requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); this.setContentView(R.layout.progressbar); setTitle(“ProgressBar”); // 在標題欄上顯示進度條(條狀)setProgressBarVisibility(true);// 在標題欄上顯示進度條(圓圈狀) setProgressBarIndeterminateVisibility(true); // 指定進度條的進度 setProgress(50 * 100);setSecondaryProgress(75 * 100); } } 6、SeekBar 的 Demo seekbar.xml 代碼 android:orientation=“vertical” android:layout_width=“fill_parent” android:layout_height=“fill_parent”> android:layout_height=“wrap_content” android:max=“100” android:progress=“50” android:secondaryProgress=“75” /> android:layout_height=“wrap_content” /> android:layout_height=“wrap_content” /> _SeekBar.java 代碼 package com.webabcd.view; import android.app.Activity;import android.os.Bundle;import android.widget.SeekBar;import android.widget.TextView; public class _SeekBar extends Activity implements SeekBar.OnSeekBarChangeListener { SeekBar mSeekBar;TextView mProgressText;TextView mTrackingText; @Override protected void onCreate(Bundle savedInstanceState){ // TODO Auto-generated method stub super.onCreate(savedInstanceState);this.setContentView(R.layout.seekbar); setTitle(“SeekBar”); mSeekBar =(SeekBar)findViewById(R.id.seekBar);// setOnSeekBarChangeListener()-響應拖動進度條事件 mSeekBar.setOnSeekBarChangeListener(this); mProgressText =(TextView)findViewById(R.id.progress);mTrackingText =(TextView)findViewById(R.id.tracking);} // 拖動進度條后,進度發生改變時的回調事件 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch){ mProgressText.setText(progress + “%”);} // 拖動進度條前開始跟蹤觸摸 public void onStartTrackingTouch(SeekBar seekBar){ mTrackingText.setText(“開始跟蹤觸摸”);} // 拖動進度條后停止跟蹤觸摸 public void onStopTrackingTouch(SeekBar seekBar){ mTrackingText.setText(“停止跟蹤觸摸”);} } 7、AutoCompleteTextView 的 Demo autocompletetextview.xml 代碼 Android編程開發入門學習經驗 首先說一下,之所以選擇android培訓,主要有下面幾個原因:因為我不是計算機專業,一些計算機語言高級的計算機語言也沒學過,只學過c語言,本身想自學,但自學覺得效率太低,自己沒有系統的學習方法,考慮到報班學習,有個老師帶著,這樣效果會好很多,因此決定上個編程培訓班學習。 在看了好多家Android編程開發培訓機構的官方介紹后,也在論壇上搜索了一些評價,之后和咨詢老師進行了一些溝通,同時我還打聽到了一些之前畢業學員的一些就業情況。相比同行業的其他培訓機構,各方面的反饋都還不錯,所以我選擇了千鋒android培訓。四個月android學習過去了,老師給我的印象是非常負責,在課堂上,他們會一一為同學答疑解惑,甚至當看到你帶有疑惑的眼神,他們也會問下你有沒有不懂的地方, 這一點我很感動。這里的課程安排的很合理,從基礎的java,以及培養面向對象的一些細節,白天老師講課,晚上自習有老師輔導,一直到Android編程開發最后的大項目,課程都安排的很有層次,深入淺出。 在學習android編程的這段時間里,我學到很多之前沒有接觸到的知識,過得挺充實的。這里的授課老師講課方式各有特色,但是課后對于我們來說都很親切。劉老師講話風趣幽默,讓我們在輕松環境中掌握java語言基礎,課程中,老師更加注重我們對于代碼的積累,并強調實用性,讓我們自己在項目中理解,很多老師都知識面很廣,親和力又強,讓我們能夠在輕松地氛圍中更好地融會貫通所學android編程知識。 最后,我想對已經或即將在培訓中學習android編程的學弟學妹們說幾句,選擇一家好的android編程培訓機構固然很重要,但是最終還是得靠自己的努力,如果自己不努力,誰都幫不了你,如果,你選擇了像我選擇的這種一流的機構,那剩下的就好好努力吧。如果當你堅持不下去的時候,那就想想你的夢想,你的家人,你今天的努力,不僅僅是為了你自己。相信自己,你一定能成功。 初學者如何提高英語口語 (結合個人學習經驗) 一、大量積累詞匯。詞匯是英語學習的基礎,沒有詞匯的積累,英語學習只能是簡單的重復。大多數中國學生背單詞都只記單詞的讀音、拼寫以及其最常用的中文意思,但要想熟記于心必須要知道單詞的常見搭配和表達。其實,最好的方法是背例句,這樣不僅記住了單詞,還能記住單詞在句子中的表達。 建議: 1、根據個人基礎購買專業書籍,如新概念教材、朗文英語等,在學習課本時背單詞,做好標注; 2、購買四六級英語詞匯表---新東方詞匯大典,從易到難,每天要求自己最少背誦5個,及時復習; 3、下載英語電子詞典---有道詞典,隨時查閱,將單詞帶入句子中閱讀,做好單詞儲存; 4、在生活中學習,學會用英語描述看到的景物,描繪自己正在做的事情,如刷牙時提問自己怎么用英語說牙膏、牙刷、牙杯等。 二、基本了解語法。口語學習一定要學語法,但是不用學得太深,用得太復雜。沒有語法,詞匯就像珍珠,雖美但終難串成項鏈。不用學得太深,是因為入門階段主要強調技能訓練,突出一個“練”字。像游泳一樣,與其坐在海邊反復讀游泳手冊,不如下海撲騰它一兩個小時。語法中多數條條并不難懂難記,但要熟練掌握就要千百次地苦練。 建議:大量閱讀口譯漢英對照(或英漢對照)的小說和其它讀物。首先閱讀英文部分,遇到不懂的單詞或句子根據上下文進行理解,然后與翻譯好的漢語部分進行比較,馬上可以發現我們的理解是否正確,及時做好標注。請注意,開始要選擇較簡單的讀物,如小說、幽默故事或好的短文進行閱讀,使我們有足夠的興趣堅持下去,且應大量閱讀,只閱讀一兩篇效果是不明顯的,開始可能較慢,費時較多,但請堅持。 三、培養良好聽力習慣。說好英語的前提是聽得懂,這也是初級階段最難提高的一項技能。詞匯還是語法,只能算是儲備。但是聽力,因人而異。有的人提高只需短短一個月,有的人可能一年都無明顯進步。但是,大家需要明確,從聽不懂到聽懂,是需要時間反復練習的。作為重要的溝通技能之一的聽力,即使花再多時間去提升都是值得的。這也是為什么即使是高級同傳譯員,也需要定期練習,以免生疏。 建議:要提高聽力,最好的方法就是找準適合自己的材料反復精聽。所謂做適合自己的材料,就是難度略高于現階段水平的,基本上就是你聽第一遍可以聽懂70%的材料。整段材料理解起來不費力,但是里面的一些表達、詞匯甚至連讀、略讀,還是讓你無法全部理解。學習這樣的材料,因為熟悉材料大致內容,不容易產生挫敗心理,而且學習新的知識會消化得更快、記得更牢。 1、養成用音標拼讀單詞的習慣。 2、養成認真聽示范發音(教師、磁帶、光盤等),聽清后再模仿。 3、每天安排一定的時間進行聽力訓練(至少15分鐘左右)。 4、養成充分利用現代資源,課后多聽課文錄音、看英語影視節目、收聽英語廣播、上網學習英語等渠道,感受較規范的英語語音、語調,培養語感。 5、本人喜歡中央英語頻道19:30播放的Dialogue(對話)和23:30播放的Crossover(跨界交流)節目,還有人物訪談、演講等,如馬云、喬布斯演講等。 四、養成敢于開口說的習慣。由于應試教育原因造就了一大批聽得懂但不會開口說的學生,也即所謂的啞巴英語。要做到消除心理障礙,克服怕開口說英語的緊張心理,養成大膽開口說英語的習慣,牢記我們講的Enjoy losing face, Enjoy making mistakes(享受丟臉,享受犯錯)過程。 建議: 1、養成師生間,同學間用英語問候,把所學英語用到日常生活中去,抓住每堂課前20分鐘和外教自由聊天的機會,不要怕犯錯,大膽開口。 2、養成每天朗讀或聽讀英語(20分鐘左右),堅持早晚大聲朗讀背誦英語名言名句、諺語、對話、課文的好習慣。 3、養成以“意群”為單位閱讀英語的良好習慣,選擇合適的材料限時閱讀,提高閱讀速度,閱讀有關英語報刊、雜志等.每周閱讀2—3篇的英語閱讀文章。 4、在俱樂部尋找志同道合的伙伴一起練習口語,在英語聊天室(新浪、skype、facebook)進行聊天,還可以通過自己對自己對話創造英語環境,對自己描述所看到的景物,英語口述自己正在作的事情。 5、本人喜歡睡前閱讀英語小說,有時練習Tongue Twister(繞口令),背誦名言名句等,充分利用與外教碰面機會大膽交流。 五、養成持續寫的習慣。寫是學好英語的一個很重要的過程,因為在寫的過程中是你對前階段所學英語的檢驗,如單詞、語法是否掌握,發音是否正確等。 建議: 1、書寫:養成規范書寫字母、單詞、句子正確的習慣。 2、寫作:寫作訓練要循序漸進。低年級加強單句寫作訓練,如連詞成句練習、造句練習,漢譯英練習,句子改錯練習和簡單的看圖寫句子練習等。高年級加強篇章段落的寫作訓練,如看多幅圖寫段意識連貫的話,根據英語或漢語提示寫篇小短文等。 3、養成每天寫英語日記的習慣。 4、本人書寫主要用于和外教發送Email以及在俱樂部QQ群(318747867)聊天所用。 六、其它學習注意點: 1、養成課前預習的習慣,及時預習老師布置的家庭作業和預留的問題。 2、培養動手記筆記的良好習慣,無論在自學還是課堂上,都要動用身體上所有感官參與學習,用眼看、耳聽、口說、心記,更要動手記,一定要做。 3、養成愛動腦、愛提問,敢于質疑問題的習慣。 4、養成對所學知識點進行整理、歸類的習慣,在英語知識學習一段時間之后,要及時對所學知識的重點、難點、易混點進行梳理歸類,有助于在頭腦中形成英語知識脈絡,形成自已的知識與技能,達到優化記憶的效果。 5、養成及時復習的習慣,人類的遺忘有遞減,遞遠規律,及時復習,及時發現問題,及時解決會更有效地記住、掌握住所學的知識與技能。 安吉外語俱樂部宣 給Java初學者的學習路線建議 在校學生,務必要在學好基礎(比如計算機系統、算法、編譯原理等等)的前提下,再考慮去進行下面的學習。第一部分:對于尚未做過Java工作的同學,包括一些在校生以及剛準備轉行Java的同學。 一、Java基礎首先去找一個Java的基礎教程學一下,或者你也可以去找相應的視頻。學習Java基礎的時候,應該盡量多動手,很多時候,你想當然的事情,等你寫出來運行一下,你就會發現不是這么回事兒,不信你就試試。了解過以上內容以后,你對Java就應該有一個基本的了解了,你可以用Java語言寫出一些簡單的程序,并且你用的是最簡單的編輯器,比如記事本。這個時候,不要急于進入下一部分,留下幾天好好寫一些程序,盡可能熟悉這些基礎內容。 二、Web開發等你寫上幾天程序以后,你往往會比較迷茫,因為你寫的東西似乎看起來毫無用處,比如實現一個簡單的計算器,讀取一個文件等。這個時候你就應該去學著寫一些讓你覺得有意思的東西了,所以你應該學習更多的知識。這些內容主要是Web開發相關的內容,包括HTML/CSS/JS(前端頁面)、Servlet/JSP(J2EE)以及Mysql(數據庫)相關的知識。它們的學習順序應該是從前到后,因此最先學習的應該是HTML/CSS/JS(前端頁面),這部分內容你可以去上面的那個runoob網站上找。 你可以試著自己寫一些頁面,當然,你可以盡你最大的努力讓它變得最漂亮。這部分內容對于后端Java來說,理論上不是特別重要,但至少要達到可以自己寫出一些簡單頁面的水平。接下來,你需要學習的是Servlet/JSP(J2EE)部分,這部分是Java后端開發必須非常精通的部分,因此這部分是這三部分中最需要花精力的,而且這個時候,你要學會使用開發工具,而不能再使用記事本了,可以選擇eclipse。當你下載安裝好eclipse以后,請視頻中的教程一步一步去學習,一定要多動手。關于Servlet/Jsp部分視頻的選擇,業界比較認可馬士兵的視頻,因此推薦給大家。 當然了,我本人并沒有看過他的視頻,所以不好說的太絕對,如果大家自己有更好的選擇,可以堅持自己的,不要被我干擾。最后一步,你需要學會使用數據庫,mysql是個不錯的入門選擇,而且Java領域里主流的關系型數據庫就是mysql。這部分一般在你學習Servlet/Jsp的時候,就會接觸到的,其中的JDBC部分就是數據庫相關的部分。你不僅要學會使用JDBC操作數據庫,還要學會使用數據庫客戶端工具,比如navicat,sqlyog,二選一即可。 三、開發框架當你學會以上內容以后,這個時候你還不足以參加工作,你還需要繼續深造。公司里為了提高開發的效率,會使用一些Java Web框架,因此你還需要學習一些開發框架。目前比較主流的是SSM框架,即spring、springmvc、mybatis。你需要學會這三個框架的搭建,并用它們做出一個簡單的增刪改查的Web項目。你可以不理解那些配置都是什么含義,以及為什么要這么做,這些留著后面你去了解。 但你一定要可以快速的利用它們三個搭建出一個Web框架,你可以記錄下你第一次搭建的過程,相信我,你一定會用到的。還要提一句的是,你在搭建SSM的過程中,可能會經常接觸到一個叫maven的工具。這個工具也是你以后工作當中幾乎是必須要使用的工具,所以你在搭建SSM的過程中,也可以順便了解一下maven的知識。在你目前這個階段,你只需要在網絡上了解一下maven基本的使用方法即可,一些高端的用法隨著你工作經驗的增加,會逐漸接觸到的。 四、找工作當你完成開發框架的學習以后,你就該找工作了,在校的找實習,畢業的找全職。與此同時,在找工作的同時,你不應該停下你的學習,準確的說,是你在以后都不能停下學習。上面這些內容你只是囫圇吞棗的學會了使用,你可以逐步嘗試著去了解更多的東西。 第二部分:對于參加工作一年以內的同學。恭喜你,這個時候,你已經擁有了一份Java的工作。這個階段是你成長極快的階段,而且你可能會經常加班。但是加班不代表你就可以松懈了,永遠記得我說的那句話,從你入行那一刻起,你就要不停的學習。在這一年里,你至少需要看完《Java編程思想》這本書。這本書的內容是幫助你對于Java有一個更加深入的了解,是Java基礎的升級版。這個階段的核心學習思想就是,在工作中實踐,并且更加深入的了解Java基礎。 第二部分:對于參加工作1年到2年的同學。這部分時間段的同學,已經對Java有了一個更加深入的了解。但是對于面向對象的體會可能還不夠深刻,編程的時候還停留在完成功能的層次,很少會去考慮設計的問題。于是這個時候,設計模式就來了。我推薦《大話設計模式》這本書,而設計模式就是你的開端。 請記住,我所提的基本都是最低要求,因此不要有任何松懈的心理,否則五年后,你不要去羨慕別人高于你的工資,也不要去羨慕別人進入了某公司。這一年,你必須對于設計模式了如指掌,《大話設計模式》可以作為你的開端。此外,設計模式并不是你這一年唯一的任務,你還需要看一些關于代碼編寫優化的書。比如《重構 改善既有代碼的設計》,《effective java》。總而言之,這個階段,你的核心任務就是提高你的代碼能力,要能寫出一手優雅的代碼。 第三部分:對于參加工作2年到3年的同學有的同學在這個時候覺得自己已經很牛逼了,于是忍不住開始慢慢松懈。請記住,你還嫩的多。這個階段,有一本書是你必須看的,它叫做《深入理解Java虛擬機》。這本書絕對是Java開發者最重要的書,沒有之一。在我眼里,這本書的重要性還要高于《Java編程思想》。這本書的內容是幫助你全面的了解Java虛擬機,在這個階段,你一定已經知道Java是運行在JVM之上的。所以,對于JVM,你沒有任何理由不了解它。 另外,在過去2年的工作當中,你肯定或多或少接觸過并發。這個時候,你應該去更加深入的了解并發相關的知識,而這部分內容,我比較推薦《Java并發編程實戰》這本書。只要你把這本書啃下來了,并發的部分基本已經了解了十之六七。與此同時,這個階段你要做的事情還遠不止如此。這個時候,你應該對于你所使用的框架應該有了更深入的了解,對于Java的類庫也有了更深入的了解。 因此,你需要去看一些JDK中的類的源碼,也包括你所使用的框架的源碼。這些源碼能看懂的前提是,你必須對設計模式非常了解。否則的話,你看源碼的過程中,永遠會有這樣那樣的疑問,這段代碼為什么要這么寫?為什么要定義這個接口,它看起來好像很多余?由此也可以看出,這些學習的過程是環環相扣的,如果你任何一個階段拉下來了,那么你就真的跟不上了,或者說是一步慢步步慢。而且我很負責的告訴你,我在這個階段的時候,所學習的東西遠多于這里所羅列出來的。 因此千萬不要覺得你已經學的很多了,我所說的這些都只是最低要求,不光是我,很多人在這個時間段所學習的內容都遠超本文的范圍。如果你不能跟上節奏的話,若干年后,如果不是程序猿市場還不錯的話,你很可能不僅僅是工資比別人低,公司沒別人好,而是根本就找不到工作。總而言之,這個階段,你需要做的是深入了解Java底層和Java類庫(比如并發那本書就是Java并發包java.concurrent的內容),也就是JVM和JDK的相關內容。而且還要更深入的去了解你所使用的框架,方式比較推薦看源碼或者看官方文檔。另外,還有一種學習的方式,在2年這個階段,也應該啟用了,那就是造輪子。不要聽信那套“不要重復造輪子”的論調,那是公司為了節省時間成本編造出來的。重復造輪子或許對別人沒有價值,因為你造的輪子可能早就有了,而且一般情況下你造出來的輪子還沒有現存的好。 但是對別人沒有價值,不代表對你自己沒有價值。一個造輪子的過程,是一個從無到有的過程。這個過程可以對你進行系統的鍛煉,它不僅考察你的編碼能力,還考察你的框架設計能力,你需要讓你的輪子擁有足夠好的擴展性、健壯性。而且在造輪子的過程中,你會遇到各種各樣的難題,這些難題往往又是你學習的契機。當你把輪子造好的時候,你一定會發現,其實你自己收獲了很多。所以,這個階段,除了上面提到的了解JVM、JDK和框架源碼以外,也請你根據別人優秀的源碼,去造一個任何你能夠想象出來的輪子。 第四部分:參加工作3年到4年的同學這個階段的同學,提升已經是很難了,而且這個階段的學習往往會比較多樣化。因為在前3年的過程中,你肯定或多或少接觸過一些其它的技術,比如大數據、分布式緩存、分布式消息服務、分布式計算、軟負載均衡等等。這些技術,你能精通任何一項,都將是你未來面試時巨大的優勢,因此如果你對某一項技術感興趣的話,這個時候可以深入去研究一下。這項技術不一定是你工作所用到的,但一定是相關的。而且在研究一門新技術時,切忌朝三暮四。有的同學今天去整整大數據,搞搞Hadoop、hbase一類的東西。過不了一段時間,就覺得沒意思,又去研究分布式緩存,比如redis。然后又過不了一段時間,又去研究分布式計算,比如整整Mapreduce或者storm。結果到最后,搞得自己好像什么都會一樣,在簡歷上大言不慚的寫上大數據、分布式緩存、分布式計算都了解,其實任何一個都只是浮于表面。到時候面試官隨便一問,就把你給識破了。 一定要記住,作為一個程序猿,平日里所接觸的技術可能會很多,但是想要讓一門技術成為你的優勢,那么一定是你對這門技術的了解強過絕大多數人才行。因此在這個階段,你就不能再簡單的去學習前3年的內容了,雖然前面的學習如果還不夠深入的話依舊要繼續,但這個時候你應該更多的考慮建立你的優勢,也可以稱為差異性。差異性相信不難理解,就是讓你自己變得與眾不同。你前面三年的學習足夠你成為一名基本合格的Java開發者,但你離成為一名優秀的Java開發者還有很大的距離。 所謂優秀,即能別人所不能。而你前三年所學習的內容,是很多做過幾年的Java開發都能夠掌握的。那么為了讓自己有差異性,你就需要另辟蹊徑,找一個方向深入研究下去,以期在將來,你能夠成為這個領域的專家,比如分布式計算領域的專家,大數據領域的專家,并發領域的專家等等。此外,你除了建立你的差異性之外,還要去彌補你基礎上的不足,直到現在,我都沒有提及基礎知識。原因是基礎是很枯燥無味的,學的太早不僅容易懵逼,而且懵逼的同時還容易產生心理陰影,以至于以后再不想去研究這些基礎。但基礎又是你深入研究一些領域時所必須掌握的,比如你去研究分布式計算,你不懂算法你玩個毛毛?比如你去做分布式緩存,你對計算機系統的內存不了解,你如何去做緩存? 如果你的基礎本來就非常強,那么恭喜你,相信你在之前的工作中已經充分體會到了這些基礎對你的幫助。但我相信大部分人的基礎都很薄弱,哪怕是科班畢業的人,很多人也不敢說自己當初的基礎學的多么強大,比如算法、計算機系統原理、編譯原理這些。但是每個人時間都是有限的,而且這些基礎的書籍每一本讀下來,沒個一年半載的,還真拿不下來,因此還是要有所抉擇的。雖然藝多不壓身,但問題是藝多是有代價的,是需要你付出時間和精力的,而我個人更贊成在同等代價的情況下獲取最大的收獲。 首先,我比較推崇的基礎書籍有三本,分別是《深入理解計算機系統》,《tcp/ip詳解 卷一、二、三》,《數據結構與算法》。其中TCP/IP有三本書,但我們這里把這三本看成是一本大書。這三本分別適合三種人,《深入理解計算機系統》比較適合一直從事Java Web開發和APP后端開發工作的人群。《tcp/ip詳解 卷一、二、三》比較適合做網絡編程的人群,比如你使用netty去開發的話,那么就要對TCP/IP有更深入的了解。而《數據結構與算法》這本書,則比較適合做計算研究工作的人,比如剛才提到的分布式計算。另外,我要強調的是,這里所說的適合,并不是其它兩本對你就沒有用。比如你做Java Web和APP后端開發,《tcp/ip詳解 卷一、二、三》這本書對你的作用也是很大的。這里只是分出個主次關系而已,你要是時間足夠的話,能把三本都精讀那當然最好不過了。 但如果時間有限的話,那么就先挑對你幫助最大的書去讀。理論上來講,這一年你能把這三本其中一本精讀下來,就已經非常厲害了。有了基礎,有了前面的工作經驗,你就可以去開拓屬于你的領域了。在這一年里,一定要規劃好自己的領域,建立好自己的優勢,制造出差異性。如果你對自己的領域不夠清晰的話,隨著你工作的時間日益增多,你接觸的技術會越來越多,這個時候,你很容易被淹死在技術的海洋里,看似接觸的技術越來越多,會用的也越來越多,但你毫無優勢。有的同學可能會問,“我,我也不知道我的領域是什么啊?怎么辦呢?”對于這種人,我只想說,“臥槽,這還問我?要不干脆我替你學習得了,好不好?” 第五部分:參加工作4年到5年的同學經過前面一年的歷練,相信你在自己所鉆研的領域已經有了自己一定的見解,這個時候,技術上你應該已經遇到瓶頸了。這個時候不要著急提高自己的技術,已經是時候提高你的影響力了,你可以嘗試去一些知名的公司去提高你的背景,你可以發表一些文章去影響更多的人。當然,你也可以去Github創建一個屬于你的開源項目,去打造自己的產品。 技術學到這個階段,很容易遇到瓶頸,而且往往達到一定程度后,你再深入下去的收效就真的微乎其微了,除非你是專門搞學術研究的。然而很可惜,大部分程序猿做不到這一步,那是科學家做的事情。這個時候提高影響力不僅僅是因為技術上容易遇到瓶頸,更多的是影響力可以給你創造更多的機會。程序猿在某種程度上和明星很像,一個好的電視劇和電影就可以成就一批明星,程序猿有的時候也是,一個好的項目就可以成就一群程序猿。比如國內幾個膾炙人口的項目,像淘寶、支付寶、QQ、百度、微信等等。這每一個項目,都成就了一批程序猿。我敢說,這里面任何一個項目,如果你是它的核心開發,光是這樣一個Title,就已經是你非常大的優勢。更何況還不止如此,Title說到底也是個名頭,更重要的是,這種項目在做的時候,對你的歷練一定也是非常給力的。 而你如果想要參與這樣的項目,除了靠運氣之外,影響力也是很重要的一個手段。比如你在分布式計算領域有一定的影響力,那么如果有什么好的關于分布式計算的項目,對方就很可能會邀請你。就算人家不邀請你,你自己主動去面試的時候,對方如果知道你在這個領域的影響力,也肯定會起到很大的作用,而這個作用,甚至可能會超過你現在的技術能力。所以,在這個階段,你最大的任務是提高自己的影響力,為自己未來的十年工作生涯那一天做準備。如果你能夠靠你的影響力和以前積累的技術,參與到一個偉大的項目當中,那么你后面的五年也就有著落了。當然了,我現在滿打滿算,做程序猿也就4年半不到,因此關于4年到5年這一部分,我的見解不一定是對的,就算是對的,也不一定是適合任何人的。 所以,希望大家自己有的判斷力,去決定到底該如何度過這一年。結語本文到此就基本結束了,整篇文章很長,但其實主要就說了兩部分內容,一個是社招面試的準備,一個是Java生涯的學習。關于這兩部分,我已經給出了自己的見解,但是還是那句話,每個人吸收知識的時候,都要有抽取精華,去除糟粕的能力。我所說的,可能有些是對的,有些是錯的,有些是適合你的,有些是不太適合你的,你要自己能夠判斷。其實你在生活和工作當中也是一樣的,你身邊的人形形色色,有的人你喜歡,有的人你很討厭。但其實你喜歡的人也有缺點,你討厭的人也有優點。你要學會從你討厭的人身上學會他的優點,千萬不要一棒子打死,這只會讓你失去很多學習成長的機會。好了,說了這么多了,就到此為止吧,希望本文可以幫助到作為程序猿或即將成為程序猿的你。第三篇:Android編程開發入門學習經驗
第四篇:初學者如何提高英語口語(結合個人學習經驗)
第五篇:給予Java初學者的學習路線建議