本文目錄一覽:
- 1、用JAVA 編程 一輛以固定速度行駛的汽車,清晨司機看到里程錶上從左到右的讀數和從右到左的計數
- 2、如何快速地學習JAVA
- 3、求Java基礎,練習題。
- 4、初學java,我怎麼去練習?
- 5、JAVA 練習題
- 6、關於如何學好java!
用JAVA 編程 一輛以固定速度行駛的汽車,清晨司機看到里程錶上從左到右的讀數和從右到左的計數
package demo;
public class SpDemo {
public static void main(String[] args) {
for (int num=95859;num100000; num++) {
String s = Integer.toString(num);
if (s.substring(0, 1).equals(s.substring(4, 5))
s.substring(1, 2).equals(s.substring(3, 4))) {
// System.out.println(s.substring(0, 1));
// System.out.println(s.substring(1, 2));
// System.out.println(s.substring(2, 3));
// System.out.println(s.substring(3, 4));
// System.out.println(s.substring(4, 5));
// System.out.println(s);
int m = Integer.parseInt(s);
int v = (m-95859)/7;
System.out.println(“里程數:”+m+”時速:”+v);
}
}
}
}
輸出結果:
里程數:95859時速:0
里程數:95959時速:14
里程數:96069時速:30
里程數:96169時速:44
里程數:96269時速:58
里程數:96369時速:72
里程數:96469時速:87
里程數:96569時速:101
里程數:96669時速:115
里程數:96769時速:130
里程數:96869時速:144
里程數:96969時速:158
里程數:97079時速:174
里程數:97179時速:188
里程數:97279時速:202
里程數:97379時速:217
里程數:97479時速:231
里程數:97579時速:245
里程數:97679時速:260
里程數:97779時速:274
里程數:97879時速:288
里程數:97979時速:302
里程數:98089時速:318
里程數:98189時速:332
里程數:98289時速:347
里程數:98389時速:361
里程數:98489時速:375
里程數:98589時速:390
里程數:98689時速:404
里程數:98789時速:418
里程數:98889時速:432
里程數:98989時速:447
里程數:99099時速:462
里程數:99199時速:477
里程數:99299時速:491
里程數:99399時速:505
里程數:99499時速:520
里程數:99599時速:534
里程數:99699時速:548
里程數:99799時速:562
里程數:99899時速:577
里程數:99999時速:591
如何快速地學習JAVA
java作為注重實操和邏輯的熱門計算機語言,所需學習的內容是比較多的,需要系統性學習。
想要學好Java,需要有正確的學習路線,有堅持不懈的學習毅力,也需要有專業老師的指導,這樣才能學得更好。那麼,學習Java需要掌握哪些知識和技能呢?這裡簡單列舉一些。
Java學習需要掌握的知識與技能:
1、Java SE部分 初級語法,面向對象,異常,IO流,多線程,Java Swing,JDBC,泛型,註解,反射等。
2、數據庫部分,基礎的sql語句,sql語句調優,索引,數據庫引擎,存儲過程,觸發器,事務等。
3、前端部分, HTML5 CSS3 JS, HTML DOM Jquery BootStrap等。
4、Java EE部分,Tomcat和Nginx服務器搭建,配置文件,Servlet,JSP,Filter,Listener,http協議,MVC等。
5、框架部分,每個框架都可以分開學,在去學如何使用SSM 或者SSH框架,如何搭建,如何整合。開發中為什麼會用框架,Rest是啥?Spring為啥經久不衰,底層如何實現等。
6、23種設計模式,掌握常用的,比如單例模式的多種實現,責任鏈模式,工廠模式,裝飾器模式等,了解常用場景。
7、基礎算法和數據結構,八大排序算法,查找算法。
8、熟練使用maven等構建工具,git等版本控制工具,熟悉常用linux命令,log4j,dubug,junit單元測試,日誌打印工具,Redis等NoSql。
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟件學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
求Java基礎,練習題。
選擇題 (25道)
1. 下列選項中,不屬於Java語言特點的一項是( C )。
A:分布式 B:安全性 C:編譯執行 D:面向對象
2. Java語言的特點與 C/C+ +語言的比較中說法錯誤的是:( D )
A:簡單性Java繼承了 C/C+ +的語法 ,丟棄了其中不常用又容易引起混淆的功能。
B:Java是一種純面向對象的語言 ,具有封裝、繼承 ( Inheritance)和多態( Polymorphism)的特點。
C:Java應用程序可憑藉URL打開並訪問網絡上的對象。
D:解釋型Java寫成的源代碼需要被編譯成高階的字節碼 ,它們與機器架構有關。
3. 閱讀下列代碼,選出該代碼段正確的文件名( C )。
class A{
void method1(){
System.out.println(“Method1 in class A”);
}
}
public class B{
void method2(){
System.out.println(“Method2 in class B”);
}
public static void main(String[] args){
System.out.println(“main() in class B”);
}
}
A: A.java B:A.class C: B.java D: B.class
4. 如果一個類的文件名為Student.java,但是類的代碼為:
public class Student {
public static void main(String[] args) {
System.out.println(82);
}}
那麼下列說法正確的是:( B )
A:程序運行結果為8; B:程序運行結果為2;
C:程序運行結果為0; D:程序編譯錯誤,不能運行;
5. 符合對象和類的關係的是( D )。
A:教師和學生 B:書和房子
C:狗和貓 D:飛機和交通工具
6. 關於垃圾回收機制描述不正確的是( B )
A:垃圾回收機制不須通過程序員調用相應方法,也能自動啟動。
B:java程序員用System.gc()方法一定能進行垃圾回收;
C:垃圾回收機制屬於jvm自動操作,java程序員可以不進行垃圾回收操作。
D:垃圾回收機制並不是由操作系統自動執行。
7. 編譯下面源程序會得到哪些文件( D )?
class A1{
}
class A2 exdends A1{
}
public class B{
public static void main(String[] args){
}
}
A: 只有B.class文件 B:只有A1.class和A2.class文件
C: 編譯不成功 D:A1.class、A2.class和B.class文件
8. 下列關於基本數據類型的說法中,不正確的一項是( D )。
(A)boolean類型變量的值只能取真或假
(B)float是帶符號的32位浮點數
(C)double是帶符號的64位浮點數
(D)char是8位Unicode字符
9. 下列(D )是合法的標識符?
A:12class B:void C:-5 D:_blank
10. 在編寫Java程序時,如果不為類的成員變量定義初始值,Java會給出它們的默認值,下列說法中不正確的一個是( D )。
A:byte的默認值是0 B:boolean的默認值是false
C: char類型的默認值是’\0’ D: long類型的默認值是0.0L
11. 下列程序執行的結果是:( B )
public class News {
public static void main(String[] args) {
System.out.println(1+2+ “aa”+3);
}}
A: “12aa3” B: “3aa3 ” C: “12aa” D: “aa3”
12. 表達式(12==0) (1/0 1)的值為( B )。
A: true B: false C: 0 D: 運行時拋出異常
13. 下列循環體執行的次數是( C )。
int y=2, x=4;
while(–x != x/y){ }
A : 1 B: 2 C : 3 D : 4
14. 已知如下代碼:
switch(m){
case 0: System.out.println(“Condition 0”);
case 1: System.out.println(“Condition 1”);
case 2: System.out.println(“Condition 2”);
case 3: System.out.println(“Condition 3”);break;
default:System.out.println(“Other Condition”);
}
當m的值為( D )時,輸出“Condition 3”
(A)2 (B)0、1 (C)0、1、2 (D)0、1、2、3
15. 下列語句輸出的結果是:( C )
public class X3 {
public static void main(String[] args) {
for(int i=0; i10; i++){
if(i==5) break;
System.out.print(i);
}
}
}
A:編譯錯誤; B:1234;C:01234;D:12345;
16. 下列語句輸出的結果是:( D )
public class Lx1 {
public static void main(String[] args) {
for(int i=0;i5;i++){
switch(i){
case 0:System.out.print(“B”);
case 1:System.out.print(“e”);break;
case 2:System.out.print(“g”);
case 3:System.out.print(“!”);break;
case 4:System.out.print(“!”);break;
default:System.out.print(“!”);
}
}
}
}
A:Beg!!! B:Beeg! C:Beg! D:Beeg!!!
17. 下面foreach循環的程序輸出結果是( D )。
public class Lx1{
public static void main(String[] args) {
String s1[]={“歡迎您”,”3″,”G”,”同”,”學”,};
Arrays.sort(s1);
for(String s0:s1)
System.out.print (s0);
}
}
A:歡迎您3G同學 B:3G歡迎您同學 C:同學歡迎您3G D:3G同學歡迎您
18. 閱讀以下程序,選擇正確的運行結果:( B )
public class Lx1 {
public static void main(String[] args) {
byte d[]=”YOUIHE你我他”.getBytes();
String s=new String(d,6,2);
System.out.println(s);
}
}
A:HE; B:你; C:我; D:他
19. 設有下列數組定義語句:
int a[][]= {{1, 2}, {3}};
則對此語句的敘述正確的是( D )。
A: 定義了一個名為a的一維數組 B: a數組 a[1][1]為0
C: a數組元素的下標為1~3 D: 數組中每個元素的類型都是整數
20. 下列程序輸出的結果是:( B )
public class Lx1 {
public static void main(String[] args) {
String a[][] ={{“”,””,””,””},{“”},{“”,””}};
System.out.println(a[2].length);
}
}
A:1 B:2 C:3 D:4
21. 關於以下程序的說明,正確的是( C )
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
A、4行與9行不能通過編譯,因為缺少方法名和返回類型
B、9行不能通過編譯,因為只能有一個靜態初始化器
C、編譯通過,執行結果為:x=5
D、編譯通過,執行結果為:x=3
22. 給出下面代碼,關於該程序以下哪個說法是正確的?( C )
public class Person{
static int arr[] = new int[5];
public static void main(String a[]) {
for(int i=0;i
System.out.print(arr[0]);
}
}
A、編譯時將產生錯誤 B、編譯時正確,運行時將產生錯誤 C、輸出零 D、輸出空
23. 下面程序中類ClassDemo中定義了一個靜態變量sum,分析程序段的輸出結果。( C )
class ClassDemo {
public static int sum=1;
public ClassDemo() {
sum = sum + 5;}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);}
}
A: 0 B: 6 C: 11 D: 2
24. 下面關於方法的說法,不正確的是( C )。
A: Java中的構造方法名必須和類名相同
B: 方法體是對方法的實現,包括變量聲明和合法語句
C: 如果一個類定義了構造方法,也可以用該類的默認構造方法
D: 類的私有方法不能被其他類直接訪問
25. 在Java中下列說法正確的是( C )
A) 一個子類可以有多個父類,一個父類也可以有多個子類
B) 一個子類可以有多個父類,但一個父類只可以有一個子類
C) 一個子類可以有一個父類,但一個父類可以有多個子類
D) 上述說法都不對
初學java,我怎麼去練習?
曾經有段時間很沉迷,每天都要刷幾題。不過這個練習更像是針對算法來解題。印象很深的是一題處理文字的,自己寫了很久,看了下大神寫的,一句正則表達式秒殺。因為好的解決方案會被頂在上面,所以代碼風格還是挺Geek的。
如果是初學java的話我覺得還是不要做這種題目了,因為它們都不是針對java的特性來的,你用其它語言也能做出來。
1’少做練習題,多跟實戰項目,考試和做項目兩個概念
2’循序漸進,由淺入深,主動放棄
3’多交流,多討論,多參考,多總結
所以修真院就按照以上原則設計任務了
1,設計學員報名的db,單元測試跑通增刪改查。
2’提供rest接口
多看視頻多看書多練習,遇到問題先自己用現有的知識解決,解決不了再百度,看看別人的答案然後自己動手實現一遍!學習途徑推薦:慕課網。網易雲課堂等慕課網站,segmentfault社區,CSDN社區都不錯!視頻馬士兵的java的一整套視頻都不錯,還有網易雲課堂浙江大學老師翁凱的視頻講得也很棒!很適合小白!
如果是刷算法題,建議去leetcode,現在也有中文官網了。而你說的很多面向對象的特性,刷題是不夠的,Java本身也是工程性比較強的語言,很多東西需要在項目中用到才能加深理解。
所以建議去github找一些入門級項目跟着看一看練練手,Java項目大多都是Web項目,可能需要同時學習一些前端的知識。熟悉一點後可以看看業界比較流行的Java框架源碼,比如spring、junit等。順便有空看一下設計模式相關的書籍,個人覺得真正的面向對象的思維都體現在設計模式中了。
一點淺見希望可以幫到題主,所有的成功都不是一蹴而就的,題主加油。
JAVA 練習題
public class JavaExos {
public static void charInt(String chaine){ //1044
String[] charInt = new String[2];
int count = -1;
char maxChar = ‘A’;
int[] letterCount = new int[26];
String word = chaine.toLowerCase();
for (int i=0;iword.length();i++) {
int indexOfChar = (byte)word.charAt(i)-97;
letterCount[indexOfChar]++;
if (letterCount[indexOfChar]count || (letterCount[indexOfChar]==count word.charAt(i)maxChar)){
count = letterCount[indexOfChar];
maxChar = word.charAt(i);
}
}
charInt[0] = String.valueOf(maxChar);
charInt[1] = “”+count;
System.out.println(charInt[0]+” “+charInt[1]);
}
public static void getDate(int n){ //1047 這題如果給1,其實是指2000年1月2號.
n++;
int[] getYear = getYear(n);
int year = getYear[0];
int[] getMonth = getMonth(year,getYear[1]);
int month = getMonth[0];
String monthString ;
if(month10) monthString = “0”+String.valueOf(month);
else monthString = String.valueOf(month);
int day = getMonth[1];
System.out.println(year+”-“+monthString+”-“+day+” “+getDayOfWeek(n));
}
private static boolean isBissextile(int n){
if (n%4==0 !(n%100==0n%400!=0))
return true;
else
return false;
}
private static int[] getYear(int n){
int[] getYear = new int[2];
int year = 2000;
while(n0){
if(isBissextile(year)) n -= 366;
else n -= 365;
if (n0) year++;
}
if(isBissextile(year)) n+=366;
else n += 365;
getYear[0] = year;
getYear[1] = n;
return getYear;
}
private static int[] getMonth(int year, int n){
int[] getMonth = new int[2];
int month = 1;
while(n0){
if(month=7 month%2 != 0) n -= 31;
else if (month==2 isBissextile(year) ) n -= 29;
else if (month==2 !isBissextile(year)) n -= 28;
else if(month=7 month%2==0) n -= 30;
else if(month%2==0) n-=31;
else n -= 30;
if (n0) month++;
}
if(month=7 month%2 != 0) n += 31;
else if (isBissextile(year) month==2) n += 29;
else if (!isBissextile(year) month==2) n += 28;
else if(month=7 month%2==0) n += 30;
else if(month%2==0) n+=31;
else n += 30;
getMonth[0] = month;
getMonth[1] = n;
return getMonth;
}
private static String getDayOfWeek(int n){
int quotient = n/7;
int remainder = n -= quotient*7;
switch(remainder){
case 0 : return “Sunday”;
case 1 : return “Monday”;
case 2 : return “Tuesday”;
case 3 : return “Wednesday”;
case 4 : return “Thursday”;
case 5 : return “Friday”;
case 6 : return “Saturday”;
default : return “Never arrive”;
}
}
public static void getCode(String chaine){ //1048
chaine = chaine.toUpperCase();
System.out.println(“START”);
System.out.println(chaine);
System.out.println(“END”);
System.out.println();
for(int i=0;ichaine.length();i++){
System.out.print((changChar(chaine.charAt(i))));
}
System.out.println();
}
private static char changChar(char c){
if(c=65 c=90 c-565) return (char)(c+26-5);
else if(c=65 c=90) return (char)(c-5);
else return c;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JavaExos.charInt(“adfadffasdfda”);
JavaExos.getDate(1751);
JavaExos.getCode(“NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX”);
關於如何學好java!
Java學習前的一些準備
JDK – (Java SE Development Kit)
JDK是Java開發所需要的環境,就跟我們想玩某個網遊一樣,玩之前一定是需要先安裝相應的程序包的。 那這個JDK就是我們準備登陸Java大陸前需要安裝的一個程序包。
下載地址 : Java SE – Downloads
IDE – (Integrated Development Environmen)
IDE是集成開發環境,一般集成開發環境都會帶有JDK,可以使用自帶的JDK也可以使用我們下載的JDK,不同的IDE配置不同。Java常用的IDE有Eclipse、MyEclipse、IntelliJ IDEA。IDE具備代碼分析、補全、變異、調試等常用功能,可以大大的提高開發人員的編程效率。
eclipse下載地址 : MyEclipse下載地址 : MyEclipse官方中文網 IntelliJ IDEA : IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains
書籍推薦
《Head First Java(中文版)(第2版)(涵蓋Java5.0)》 塞若, 貝茨【摘要 書評 試讀】圖書《Java編程思想(第4版)》 埃史爾, 陳昊鵬【摘要 書評 試讀】圖書
階段大致細節
1、入門基礎
Java簡介
了解什麼是Java;代碼語法基本格式;輸出表達式。
了解Java大致的編譯以及執行過程
Java語言基礎、循環、數組 ; 了解類和對象
掌握Java的基本數據類型和引用數據類型有哪些;
掌握強制數據類型轉換和自動類型提升規則;
常量如何聲明及賦值;
循環的語法及作用;
數組的聲明及定義;
掌握類的概念以及什麼是對象。
OOP封裝、繼承、多態
面向對象的三大特徵,本節內容非常重要也相對來說較為難以理解,一定要耐下心來好好理解。
java.util.*包下的常用類
util包下的Collection、Comparator、Iterator、List、Map、Set接口都很重要,着重看一下他們的實現類,如:ArrayList、LinkedList、HashSet、HashMap、Hashtable、TreeMap、TreeSet等。
java.lang.*包下的常用類
lang包下的基本數據類型對應的包裝類(Byte、Short、Integer、Long、Double、Float、Character、Boolean);
字符串相關的類String、StringBuffer、StringBuilder。
IO流操作,多線程及Socket
掌握IO讀寫流相關的類,了解字節流,字符流和字符流緩衝區;
掌握線程的概念,多線程的創建、啟動方式,鎖和同步的概念及運用;
掌握Socket通信的概念,如何聲明客戶端服務端,如何完成雙端數據通信。
泛型、數據庫基礎(Mysql)及JDBC
到了數據庫前,我們可以看看泛型以及反射的一些基礎案例
掌握數據庫的基本概念,Mysql的安裝、啟動與停止
Mysql數據庫客戶端的安裝與使用
JDBC的概念,在Java中使用Mysql驅動包連接Mysql
Mysql社區版下載 : Download MySQL Community Server 客戶端連接工具 Navicat for Mysql下載 : MySQL Database Administration and Development Tool
通過第一階段的學習掌握Java語法和常用類,數據庫入門技術相關知識。讓自己對於存儲,IO,這些有個大概的了解。這時候,暫時不需要花大量的精力以及篇幅去學習多線程和Socket,當然這裡不是說他們不重要,而是對於現階段的你,或許很難非常清晰的明白以及了解他們具體的作用。這裡第一節忽略掉了Swing,Swing章節的內容可以不學,因為在實際的工作中基本上沒有用武之地。
使用第一階段的技術完成一個小型的系統,找一個自己做容易理解的系統練練手,比如超市管理系統、成績管理系統等等這類需求簡單卻能講整章內容結合起來使用的項目。當然這個時候可能會有人覺得沒有圖形界面沒法完成系統操作。實際上我們可以通過Console的輸入輸出來做系統界面。
新手在第一階段的學習時,是最難熬的,因為這個時候需要背的東西特別多,且不再像看小說一樣,什麼東西都能看明白。路就變成了前面熟悉,左右陌生。這個時候人的求知慾作祟,往往會把自己帶着偏移了方向,因為我們自己也不知道這樣走對不對。漸而遠之,也就慢慢放棄了。而這樣的放棄,是最不值得的。所以,學習Java一定要按照某一個大綱,一直往下不要往其他地方偏,先走完一遍之後,再回頭慢慢撿。
2、前端基礎
HTML基本標籤、表格、表單和框架;
掌握網頁的基本構成;
掌握HTML的基本語法;
表格的作用以及合併行、合併列;
表單標籤的使用,提交方式get/post的區別;
框架布局的使用
CSS樣式表;
掌握CSS的語法及作用,在html中的聲明方式;
掌握CSS布局的函數使用;
掌握CSS外部樣式的引入。
JavaScript;
掌握JS的語法及作用,在HTML中的聲明方式;
掌握JS的運行方式;
掌握JS中的變量聲明、函數聲明、參數傳遞等;
掌握HTML中的標籤事件使用;
掌握JS中的DOM原型
上述三節都可以查看w3school : HTML 系列教程
jQuery
了解如何使用jQuery,下載最新版或者老版本的jQuery.js
掌握選擇器、文檔處理、屬性、事件等語法及使用;
能夠靈活使用選擇器查找到想要查找的元素並操作他們的屬性;
動態聲明事件;
動態創建元素。
jQuery文檔 : jQuery API 中文文檔 | jQuery API 中文在線手冊 | jquery api 下載 | jquery api chm
BootStrap;
掌握BootStrap的設計理念,以及使用方式。這是我們需要接觸的第一個前端框架,使用起來也很簡單;
掌握BootStrap的柵格系統、表單、全局樣式、分頁工具欄、模態框等。
Servlet
掌握Java中的Web項目目錄結構;
掌握Java Web項目的重要中間件Tomcat;
掌握Servlet中的Request和Response;
掌握Servlet的基本運行過程。
掌握Servlet的聲明周期
動態網頁技術
JSP在Java Web中的角色;
JSP的編碼規範,以及JSPServlet;
JSP顯示亂碼的解決辦法等。
JSP數據交互
JSP中如何編寫Java代碼,如何使用Java中的類;
JSP中的參數傳遞。
狀態管理Session和Cookie
掌握Session的作用及作用域;
掌握Cookie的作用及作用域;
掌握Session及Cookie的區別,存儲位置,聲明周期等;
掌握Session及Cookie分別在JSP和Cookie中的使用
JSTL和EL表達式
使用EL表達式輸出page、request、session、application作用域中的值
使用JSTL來做邏輯判斷或循環控制
JNDI數據庫連接池
JNDI的作用以及如何使用JNDI連接數據庫
分頁和文件上傳
掌握在JSP中如何使數據達到分頁的目的;
掌握在JSP表單中如何上傳文件,Servlet如何處理上傳請求(Commons-Fileupload、Commons-IO)。
Ajax
掌握Ajax的基本概念;
掌握jQuery中的Ajax請求;
掌握JSON
Filter、Listener;
掌握Filter和Listener
掌握Session過濾器和編碼過濾器
通過第二階段了解前端相關的技術,如果你喜歡前端各種酷炫的效果,那麼就深入學習JS、CSS。不大感興趣的話,就淺嘗輒止,並重點學習Servlet、Filter、Listener。重點學習,重點學習,重點學習。 重要的話說三遍!
學習完第二階段的內容之後,就可以進行B/S版本的系統開發了。這個時候我們可以挑選個稍微複雜點兒的項目來練練手,能找到商業項目練手的那是最好不過的,沒有的話,就寫寫學生管理系統,檔案管理系統,人事管理系統之類的練練手吧。
最後說一下本階段的前端知識,如果將jQuery和Bootstrap學的差不多了的話,再看EasyUI這之類的前端框架也基本上都是照着API用就行了。別害怕看API,看API將是你以為的整個職場生涯必不可少的一個技能。
3、 主流技術應用
Mybatis的應用
Mybatis的Mapping與實體映射;
Mybatis中的SQL語句寫法;
Mybatis的緩存。
Spring應用
Spring容器的作用;
Spring的AOP和IOC;
Spring託管Mybatis事務;
SpringMVC的應用
SpringMVC中的控制器註解、請求註解、參數註解、響應註解等;
SpringMVC中的靜態資源處理;
SpringMVC的容器。
Spring+SpringMVC+Mybatis整合
SSM的整合使用;
Spring容器和SpringMVC容器
Redis+Mysql的查詢優化設計
Redis的安裝與連接;
Redis常用命令及各命令使用場景;
Redis存儲機制;
Redis的持久化機制。
任務處理相關
HttpClient模擬請求
Quartz定時任務
常用工具
ExcelWorld導入導出
短信郵件發送
Maven
Maven的作用
Maven項目的創建
Maven的生命周期
Maven中央倉庫及私服
Log4J2日誌
FastDFS的使用
什麼是分布式文件系統;
分布式文件系統解決的問題是什麼;
FastDFS的使用
通過第三階段了解目前Java領域比較經典的三大框架,了解他們的大概功能,並加以使用。通過使用SSM開發一個簡易CRM之類的項目來加強了解,理清楚框架的大致原理。搞清楚這三個框架之間的作用域以及角色。理解Redis作為內存數據庫與MySQL這類關係型數據庫的區別,並能使用常用的Jar包完成模擬請求,定時任務等相關係統常用功能的開發。並能夠通過Maven創建SSM項目,整合Log4j或其他的日誌包。了解FastDFS的作用,並理解圖片上傳至文件服務器和上傳到tomcat之間的區別
在第三階段的內容學習完了之後,就應該對整個系統研發有個大概的印象,實際上這個時候,獨立完成一個系統之後,再回過頭來仔細思考下Servlet+JDBC+JSP與SSM實現項目的相同點及區別。這樣會讓你更加的有收穫。並能夠理解非關係型數據庫Redis的性能優勢以及使用場景。
4、模擬實際項目開發
SpringBoot 2.0的應用
了解SpringBoot的起源及優勢
了解SpringBoot項目的格式以及創建方式
yaml語法特性
application配置文件及靜態資源處理
Thymeleaf模板引擎
SpringBoot核心之WebMVCConfigurer
Spring自定義錯誤處理
SpringBoot日誌引用及切換
SpringBoot數據源和Mybatis
SpringBoot-redis應用
Struts2應用(了解即可)
通過學習Struts,了解什麼是MVC;
掌握Struts是如何完成界面控制的;
掌握Struts的參數接收及傳遞;
掌握Struts的攔截器;
掌握Struts的OGNL和標籤使用。
Hibernate應用(了解即可)
Hibernate在項目中的作用及優勢;
Hibernate中的hbm與實體類之間的關係;
什麼是HQL,什麼是關係映射(一對一,多對一,多對多);
了解Hibernate的事務、懶加載和緩存。
Redis哨兵模式的搭建
Linux操作系統
Linux中的常用命令;
Linux下的JDK、tomcat安裝;
Linux下的項目部署方式。
Nginx的使用
Nginx的作用;
反向代理和正向代理分別是什麼;
Nginx實現tomcat代理。
Mysql集群方案
Mysql集群的常用方案有哪些;
Mycat中間件的概念
Mycat的使用準則;
了解數據庫的主從複製;
了解數據庫的主備切換;
為什麼需要主從和主備。
Solr入門
什麼是全文檢索;
Solr做搜索的優勢是什麼;
Lucene、ElasticSearch、Solr之間的關係;
Solr的安裝與使用。
JVM
回顧所有所學習到的知識,聯繫所有框架中的自定義容器、上下文來理解變量及對象的存儲
理解垃圾回收是怎麼一回事
理解集中回收算法
完全理解整個堆棧模型
通過第四個階段了解更簡單易用的SpringBoot,微服務應用和存儲集群相關的概念及實現方案。讓自己具備一個設計高可用,可擴展的項目框架視野。這樣對於後面繼續專研SpringCloud / Dubbo、zookeeper這些RPC相關的框架有很大的好處。
第四階段的內容更加偏向於互聯網技術棧,通過這一節的內容能夠脫離出基本的增刪改查,了解出了增刪查改之後,需要了解的集群、系統性能優化、外部緩存服務器使用、集群負載等概念。這些思維對於後面的提高以及學習會很有好處。
我提到的這些東西都能搜到對應的資料,無非多踩點坑罷了。但是,看文檔or項目永遠進步不了。一定要上手敲,想再多也不如動手。有機會聯繫一名優秀學長,有個走在前面的人給你指路肯定比你自己走要快得多。
最後,一定要動手,一定要動手,一定要動手。把代碼敲爛,你才會有收穫,不要被視頻誘導,敲一遍之後誤認為你自己會了,如果第二天你起來時已經忘了昨天學習了什麼的話,那說明你還是沒學會。好好加油吧。
在所有的學習過程中,每一個節點都應該有相應的練習或者項目來進行練手,看再多的博文和視頻都是不行的, 不能讓自己的雙手停下來,只有不停的敲打鍵盤,寫出自己的項目,然後在實際的開發中學會如何使用debug,總結所有遇到的bug及解決思路,這樣才叫做學習技術。所以,希望有興趣的同學,能夠好好努力,不要因為一點點難度就懈怠、放棄。開發這條路途,無論你工作多久,都會遇到各種奇奇怪怪的問題,以及形形色色的bug等着你去解決。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/286871.html