本文目录一览:
- 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类型的默认值是’ ’ 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等着你去解决。