==================== javaSE部分開始 ==============
JDK與JRE跟JVM的關係
JDK就是java開發工具包,其中包含了JRE其中裏面bin目錄包含了java.exe,跟javac.exe一個運行一個編譯的還有一個javadoc編譯成文檔
JRE是java運行時環境,裏面包含了JVM,如果普通用戶使用的話,只需要一個JRE就可以了
JVM也就是java虛擬機JVM是java跨平臺的核心
JDK > JRE > JVM
java關鍵字(瞭解 不記那麼多)
數據類型
數據類型分爲兩大類
- 基本數據類型
整數類型:byte、short、int、long
浮點類型:float、double
字符型:char
布爾型:boolean - 引用數據類型
類:class
接口:interface
數組
String
數據類型默認初始值
從測試可以看出他們的默認值
== 與 equals的區別
== 是一個運算符比較,而equals是一個方法,底層源碼就有 ==
對於基本類型和引用數據類型作用效果是不同的
基本類型比較的值是否相同
引用類型:比較的引用是否相同
演示代碼
public static void main(String[] args) {
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
}
因爲 x 和 y 指向的是同一個引用,所以 == 也是 true,而 new String()方法則重寫開闢了內存空間,所以 == 結果爲 false,而 equals 比較的一直是值,所以結果都爲 true。
final在java中有什麼作用
final 修飾的類叫最終類,改類不能被繼承
final 修飾的方法不能被重寫
final 修飾的變量叫常量,常量必須初始化,初始化值後就不能被修改
Java操作字符串有哪些類?他們之間有什麼區別?
操作字符串的類有String、StringBuffer、StringBuilder,都實現了序列化接口
區別是:String : final修飾,String類的方法都是返回new String。即對String對象的任何改變都不影響到原對象,對字符串的修改操作都會生成新的對象。
StringBuffer : 對字符串的操作的方法都加了synchronized,保證線程安全。
StringBuilder : 不保證線程安全,在方法體內需要進行字符串的修改操作,可以new StringBuilder對象,調用StringBuilder對象的append、replace、delete等方法修改字符串。
StringBuffer的安全性能高,適合多線程使用;Stringbuider性能更低適合單線程操作。
參考鏈接地址
String str="i"與 String str=new String(“i”)一樣嗎
不一樣,因爲內存的分配方式不一樣。String str="i"的方式,java 虛擬機會將其分配到常量池中;而 String str=new String(“i”) 則會被分到堆內存中。
面向對象
java是一種面向對象的語言
- 什麼是對象
在我剛學習Java的時候,就有這麼一句話蹦出來,萬物皆對象,可以理解爲我們所看到的一切當成一個對象,比如桌子是一個對象,椅子,電腦等等 - 什麼是面向對象
人關注的一切都是對象,從程序設計的角度出發:面向對象就是把一個對象描述,設計出其中的屬性跟方法 - 什麼是類
從生活的角度出發:比如人是一個類(Person),自己本身就是一個對象,別人也是對象,類中描繪了面向對象,其中的屬性,方法 - 類和對象的關係
對象是類的實例,類就是對象的類型
5.什麼是屬性和方法
屬性:對象的特徵,比如人這個類有我這個對象,我有名字(name),年齡(age),身高(height)
方法:對象具有的各種動態行爲,就是我這個對象能做什麼,我能喫東西對吧這個方法,看電影等等,也就是我能幹什麼
============================= 代碼實現上述 ==============================
/**
5. Created with IntelliJ IDEA.
6. 7. @Auther: Adger
8. @Date: 2020/06/08/19:06
9. 這是一個人(Person)類
*/
public class Person {
//屬性:姓名、年齡、體重、
String name;
int age;
int height;
//方法
public void eat(){
System.out.println("喫飯");
}
public void watchMovie(){
System.out.println("看電影");
}
}
/**
10. Created with IntelliJ IDEA.
11. 12. @Auther: Adger
13. @Date: 2020/06/08/19:14
*/
public class PersonTest {
public static void main(String[] args) {
//實列化對象
Person person = new Person();
person.name = "劉傑";
person.age = 19;
person.height = 168;
System.out.println(person.name);
System.out.println(person.age);
System.out.println(person.height);
person.eat();
person.watchMovie();
}
}
如果你要搞成誰喫飯,誰看電影就得重載了,這裏爲什麼會寫兩個類執行,不在一個類執行,下面原則清楚的說了
單一職責原則
簡單來說就是一個類最好只幹一個功能,如果一個類中功能越多,耦合性會越高,能被複用的可能性越低,就比如過馬路的時候,一邊玩手機一邊打電話,現在就是把不同類中的職責封裝到不同類當中
其他原則還有
面向過程與面向對象的區別
面向過程(POP)和麪向對象(OOP)兩者本質區別在於一個在於面向過程在於實現這個方法,依次調用而面向對象就相當於有很多人去幹這件事,這也是 java分佈式的積澱
面向對象三大特徵(封裝、繼承、多態)
- 什麼是封裝(重點)
將類的某些信息隱藏在類內部,不允許外部程序直接訪問,通過該類提供的公開方法來實現對隱藏信息的操作與訪問
- 什麼是繼承(重點)
從生活角度很容易理解:比如我繼承我爸的億萬財產😂,從程序的角度出Person類,人這個類,都有姓名,年齡,身高,能喫飯,劉傑有這些屬性跟方法,朱次斌(我朋友)也有這些屬性跟方法,都可以繼承這個類(父類)降低了代碼冗餘,利於代碼複用,需要注意的是:java沒有多繼承,C我記得好像是有多繼承的 - 什麼是多態
封裝和繼承都是爲了多態準備的
什麼是多態
每個人都有姓名,身高,年齡,喫飯會喫不同的飯,程序角度出發:父類型的引用指向子類型的對象。用一句比較通俗的話:同一操作作用於不同的對象,可以產生不同的效果。這就是多態。
多態在程序設計中的優勢
提高了代碼的維護性(繼承能看出來)
提高了代碼的擴展性(多態看出) 向上轉型,向下轉型
static 關鍵字
方便在沒有創建對象的情況下進行調用(方法/變量),在以後自己的DbUtils會被用到,一個數據庫鏈接,裏面自己定義的方法基本是靜態的方法,方便調用
特點:是一個修飾符,可以修飾成員變量和成員函數(方法),隨着類的加載而加載,隨着類的消失而消失,生命週期最長
靜態代碼塊:隨着類的加載而加載,並且執行一次,並優先於主函數的執行
靜態方法只能訪問靜態變量和靜態成員方法
靜態方法不可以定義this super關鍵字
冒泡排序
直接來代碼吧
/**
1. Created with IntelliJ IDEA.
2. 3. @Auther: Adger
4. @Date: 2020/06/09/18:56
5. 冒泡排序
*/
public class TheBubbling {
/**
6. 冒泡排序原理:就是比較數組中,兩個相鄰的元素,如果第一個數比第二個數大,就交換他們兩個的位置
7. 每一次比較,都會產生一個最大,或者最小的數
8. 下一輪可以少一次排序
9. 依次循環,直到結束
10. @param args
*/
public static void main(String[] args) {
int[] a= {1,10,3,2,5,9,5,7,8};
int[] sort = sort(a);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] arr){
//臨時變量
int temporary = 0;
//外層循環,判斷我們要走多少次 其中 -1 是爲了數組訪問越界
for (int i = 0; i < arr.length-1; i++) {
//內層循環 如果第一數比第二數大,則交換位置
for (int j = 0; j < arr.length-1-i ; j++) {
//如果 arr[j+1] 後面的一位數 大於arr[j] 當前位置
if(arr[j+1] < arr[j]){
//臨時變量裝載
temporary = arr[j];
//值給arr[j]
arr[j] = arr[j+1];
//兩個交換位置
arr[j+1] = temporary;
}
}
}
return arr;
}
重寫和重載(面試可能會問)
Overload是重載的意思、表示同一個類中、允許存在一個以上同名的方法,只要他們的參數個數不同或者參數類型不同就可以了
Override代表重寫的意思、他與返回值類型無關,只看參數列表
範圍不同
overload在相同的類範圍內內執行,override發生在兩類具有繼承(繼承)的關係。
參數不同
overload參數必須不同。 override參數必須相同。
抽象類
抽象類的特點:
1、抽象方法和抽象類使用 abstract 修飾、
2、抽象類不能實例化。
3、抽象方法只有只有方法名字沒有實現
4、抽象類中可以寫普通方法
5、抽象方法必須在抽象類中,相當於一個約束
接口(重點)
以後會經常聽到面向接口編程
接口是什麼:在我的腦海裏面,我更感覺他是一個約束
接口的特點:
1.接口中所有的定義其實都是抽象的
2.接口不能實列化
3.類實現接口不是繼承,而是 實現,可以多實現幾個接口
4.接口關鍵字:interface
5.實現的關鍵字:implements
異常
什麼是異常從這個字面意思來說就是意外的意思,從程序的角度出發就是程序出現了錯誤,這裏的異常可以分爲兩類:編譯時異常、運行時異常
程序當中是通過Throwable進行描述的,他是異常的根類,重要的兩個子類是Error、Exception,Error指代是程序無法處理的錯誤,表示運行應用程序中比較嚴重的問題,比如VirtualMachineError(JVM虛擬機錯誤)、OutOfMemoryError(內存溢出)、ThreadDeath(線程死鎖),Exception代表程序本身可以處理的異常,異常處理通常指針對這種類型異常的處理,有一個編譯時的異常,運行時異常,RuntimeException裏面又很多異常,比如空值異常,數組下標越界異常,算數異常,類型轉換異常
內部類
什麼是內部類:可以將一個類定義在另一個類裏面或者一個方法裏面,這樣稱之爲內部類
特點:內部類隱藏在外部類之內,更好的實現了隱藏信息
內部類的分類:
1.成員內部類
2.靜態內部類
3.方法內部類
4.匿名內部類
包裝類
爲什麼有包裝類:基本數據類型沒有屬性、方法、無法對象化交互,通過包裝類擁有屬性、方法、可以對象化交互
包裝類:
拆箱與裝箱
裝箱: 基本數據類型 變成包裝類。
拆箱:包裝類變成基本數據類型
集合(重點 面試問爛的)
什麼是集合:在我的印象裏面集合是一個裝載數據的容器,以後用的非常多
集合的分類:主要爲兩類Collection、Map,在Collection就會存儲類的對象,Map的話就是以鍵值對的形式來存儲信息
Collection是一個接口,他的下面主要有三個子接口List(序列)、Queue(隊列)、Set(集)
List和Queue存放的數據要求是有序的,並且允許重複的,而Set存放的數據是無序的,不允許重複的,每個接口下面又有各自的實現類、List下面有一個常用的實現類ArrayList(長度動態增長的數組),Queue下面的實現類LinkedList,這個實現類同時也實現了List接口,表示的是鏈表的內容,Set的實現類主要是HashSet,也就是hash集,Map的主要實現類是HashMap
List 屬於java.util包中
List是元素有序並且可以重複的集合,稱爲序列
List可以精確的控制每個元素的插入位置,或刪除某個位置的元素
List主要兩個實現類是ArrayList和LinkedList,其中ArrayList底層是數組實現的
ArrayList中的元素可以爲空
Set
Set是元素無序並且不可以重複的集合、被稱爲集
重要的實現類是HashSet,HashSet是Set的一個重要實現類,稱爲哈希集
HashSet中元素無序,並且不可以重複,HashSet中只允許一個Null元素
Map
是以鍵值對的形式存儲(Key,Value),這個在我用用戶登錄註冊的時候用的比較多
其中主要的實現類是HashMap,基於哈希表的Map接口的實現,允許使用null值和null鍵
key值不允許重複
HashMap中的Entry對象是無序排列的
Iterator
Iterator接口以統一的方式對各種集合元素進行遍歷
多線程(重點)
什麼是線程:就比如你用的QQ是一個進程,但是你會在QQ這個進程裏面,跟很多人聊天很多窗口,每個窗口就相當於一個線程
線程的創建
創建線程的方式有三種
- 創建一個Thread類,或者一個Thread字類的對象
- 創建一個Runnanble接口的類的對象
- 實現Callable接口,接口中要覆蓋的方法是 public call() 注意:此方法可以拋異常,而前兩種不能 而且此方法可以有返回值
Runnable接口
只有一個方法Run();Runnable是java中實現線程的接口,任何實現線程功能的類都必須實現該接口
IO
Java中IO是以流爲基礎進行輸入輸出的
輸入輸出流,就比如下面代碼段
System.out.println()
向控制檯輸出一個你寫的內容,輸出到控制檯上,通常輸出流是以流的方式輸出過去,中間是以流(stream)的方式寫出write,流就是指一連串流動的字符串,以先進先出的方式發送信息的通道,System.out輸出流
輸入流,比如
Scanner sc = new Scanner(System.in)
System.in輸入流
文件輸入------- 讀
文件輸出--------寫
字節流
字節輸入流:InputStream
字節輸出流:OutputSteam
字符流
字符輸入流Reader
字符輸出流Writer
註解
註解是jdk1.5引入過來的新特性,一種特殊的接口類型,在interface加上一個@符號,註釋是給人看到,註解是給程序看的,可以聲明在類上、方法上、屬性上、
反射
反射是框架設計的靈魂,將類的各個組成部分封裝爲其他對象,這就是反射機制
================== javaWeb ===================
Tomcat
tomcat容器是如何創建servlet類實例?用到了什麼原理?
當容器啓動時,會讀取在webapps目錄下所有的web應用中的web.xml文件,然後對xml文件進行解析,
並讀取servlet註冊信息。然後,將每個應用中註冊的servlet類都進行加載,並通過反射的方式實例化。
(有時候也是在第一次請求時實例化)在servlet註冊時加上如果爲正數,則在一開始就實例化,
如果不寫或爲負數,則第一次請求實例化
參考鏈接
javaWeb三大組件
Servlet、Filter、Listener
他們的區別與作用可以看這個鏈接
生命週期與區別 詳細參考
Servlet的生命週期
大致分三部分生命週期
- 第一個階段:Servlet 通過調用 init () 方法進行初始化。
- 第二個階段:Servlet 調用 service() 方法來處理客戶端的請求。
- 第三個階段:Servlet 通過調用 destroy() 方法終止(結束)。
- 第四個階段:最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
詳細瞭解
Servlet執行的原理
1.當服務器接受到客戶端瀏覽器的請求後,會解析這個請求的URL路徑,獲取訪問的Servlet的資源路徑
2.查找web.xml文件是否有對應的<url-pattern>標籤體內容
3.如果有則在找到對應的<servlet-class>全類名
4.tomcat會將字節碼文件加載進內存,並且創建其對象
5.調用其方法
Servlet與Jsp的區別
Jsp經過編譯後就成了Servlet,Servlet沒有內置對象,Jsp有內置對象,Jsp更側重於視圖,Servlet更重於邏輯,就像一個控制器
Servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat)識別的規則
JSP的本質就是Servlet,
JSP九大內置對象
- request 請求對象
- response 響應對象
- session 會話對象
- application 頁面上下文對象
- out 輸出對象
- pageContext 頁面上下文對象
- config 配置對象
- page 頁面對象
- exception 列外對象
重定向與轉發
轉發forward()
- 地址欄不發生變化,顯示的是上一個頁面的地址
- 請求次數:只有1次請求
- 請求域中數據不會丟失
重定向sendRedirect()
5. 地址欄發生變化
6. 請求次數:2次
7. 請求域中的數據會丟失,因爲是2次請求
Cookie和Session
這兩個都是會話技術,什麼是會話:一次會話中包含多次請求和響應
一次會話指的是:瀏覽器訪問服務器,第一次給服務器資源發送請求,會話建立,直到一方斷開爲止
學習會話技術能幹嘛:在一次會話範圍內、共享數據
由於HTTP是一種無狀態的協議,
客戶端會話技術:Cookie
服務端會話技術:Session
大概不同,我覺得跟面試官說出這些應該夠了,記不到太多,詳細以後自己看下面
1.存儲方式不同
2.存儲位置不同
3.存儲容量不同
區別參考地址
應用場景等參考地址
================= 框架部分(SSM) ==================
Spring中的IOC跟AOP(面試問到爛)
什麼是IOC:控制反轉,IOC是一種設計思想,他只能幹一件事就是解耦合,其中的他底層的設計模式是:工廠模式,是Spring的核心,在有的時候也叫依賴注入
什麼叫IOC中的控制反轉其中的控制指的是:控制對象的創建和銷燬,指對象的生命週期
什麼叫IOC中的反轉:之前我們創建對象都是new出來的,有了IOC之後,對象的控制權交給了IOC容器
什麼是AOP:面向切面編程,是OOP(面向對象)的一種延續,AOP在不修改源碼的方式上,在主幹功能上添加功能
Spring中的IOC屬於哪種設計模式
SpringIOC中的設計模式是工廠
Spring中的AOP屬於哪種設計模式
Spring中AOP底層模式是:代理模式
談談Spring IoC 和 DI 的理解,它們有什麼區別?
簡單談談 IoC 容器的原理。
springmvc執行的流程(問到機率很高)
mybatis中的緩存
PageHelper
mybatisplus
mybatisplus是一個mybatis的擴展
#{}和${}的區別是什麼?
#{}是預編譯處理,${}是字符串替換。
Struts2(瞭解)
hibernate(瞭解)
mybatis逆向工程
這個是什麼,這個是可以幫我們快速搭建出許多實體類,跟封裝了一些對增刪改查的操作,但是隻針對單表的增刪改查非常有用
Springcloud
SpringBoot常用的註解有哪些
1.@SpringBootApplication 標註SpringBoot啓動類
2. @Service: 註解在類上,表示這是一個業務層bean
3. @Controller:註解在類上,表示這是一個控制層bean
4. @Repository: 註解在類上,表示這是一個數據訪問層bean
5. @Component: 註解在類上,表示通用bean ,value不寫默認就是類名首字母小寫
6. @Autowired:按類型注入
7. @Configuration:註解在類上,表示這是一個IOC容器,相當於spring的配置文件
8. @Bean: 註解在方法上,聲明當前方法返回一個Bean
9. @Value:註解在變量上,從配置文件中讀取。
10.@SpringBootTest 測試類註解
Springboot啓動過程
=============== 數據庫跟中間件 ===================
redis
Redis是一個非關係型的數據庫,以key,value的形式存儲,其中五種類型有:String,Hash,List,Set,Zset
什麼是Redis持久化
持久化就是把內存的數據寫道磁盤中去,防止服務器宕機丟失了內存數據,Redis提供了兩種持久化方式:RDB形式,這個是Redis默認的和AOF其中AOF是寫入保存
rabbitmq
rabbitmq是實現了高級消息隊列代理軟件,一般叫爲中間件
使用rabbitmq的好處
- 解耦和,程序的設計思想就是,高內聚,低耦合,
- 異步,將消息寫入消息隊列,非必要的業務邏輯以異步的方式進行,加快響應速度
- 削峯:併發量大的時候,所有的請求直接訪問數據庫,造成數據庫連接異常
消息基於什麼傳輸
由於TCP的創建和銷燬開銷比較大,併發數手系統資源限制,會造成性能瓶頸,RabbitMq使用信道的方式來傳輸數據,信道是建立在真實的TCP連接內的虛擬連接,,並且每條TCP連接信息上沒有數量限制
使用了消息隊列有什麼缺點
1.系統可用性降低,如果消息隊列掛了,其他也就沒了
2.系統複雜性變高,會考慮到很多方面,一致性問題,消息不被重複消費
Oracle
oracle是一個關係型數據庫
Oracle中的表中間的概念
表空間是一個邏輯概念,但屬於表空間的數據文件是存於磁盤上的物理文件,用戶的數據存在於表中,而表就存在於表空間中,一個表空間可以有多個屬於自己的數據文件,但一個數據文件只能屬於一個表空間
Oracle的體系結構
- 數據庫實例,包括:系統全局區(SGA),和後臺進程(數據寫入進程,重做日誌進程,檢查點進程,用戶監控進程等),實例在啓動時首先到初始化參數文件中找到控制文件,再從控制文件中找到日誌文件和數據文件
- 數據庫文件,包括:數據文件(.dbf)日誌文件(.log)控制文件(.ctl)
其中數據文件又分 系統數據文件 用戶數據文件 臨時數據文件和回滾數據文件
日誌文件可以有多組,一組寫滿換另一組,在切換時有檢查點進程保證數據的完成性
控制文件是二進制文件,最大可以爲64M
Oracle中表空間和數據文件有什麼關係
一個表空間可以有多個屬於自己的數據文件,但一個數據文件只能屬於一個表空間
MySQL
Mysql存儲引擎都有哪些?
1)InnoDB存儲引擎
InnoDB 是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵, InnoDB 是默認的 MySQL 引擎。
2)MyISAM存儲引擎
MyISAM 基於 ISAM 存儲引擎,並對其進行擴展。它是在 Web、數據倉儲和其他應用環境下 最常使用的存儲引擎之一。MyISAM 擁有較高的插入、查詢速度,但不支持事物。
3)MEMORY存儲引擎
MEMORY 存儲引擎將表中的數據存儲到內存中,未查詢和引用其他表數據提供快速訪問。
推薦這篇文章
============== Linux ==========================
Liunx
說出十個Linux命令
- 查找文件
find / -name 文件名 - 查看一個程序是否運行
ps -ef|grep 程序名(tomcat) - 終止線程
kill -9 線程數 - 查看文件 包括隱藏文件
ls -al - 查看當前工作目錄
pwd - 創建文件夾
mkdir 文件夾名字 - 刪除文件夾
rmdir 文件夾 - 刪除文件包括子文件
rm -rf 文件 - 切換用戶
su -用戶名 - 修改文件權限
chmod 777 文件名 - 壓縮命令
tar -czf 壓縮文件名 - 解壓縮文件
tar -xvzf test.tar.gz - 查看ip地址
ifconfig - 啓動Vi編輯器
vi
================== 前端部分 ====================
常用CSS選擇器有哪些
- 標籤選擇器(重要)
- id選擇器(重要)
- 類選擇器(重要)
- 子選擇器(重要)
演示列子:
div > p
- 包含選擇器(重要)
div p
- 兄弟選擇器
- 相鄰選擇器
- 通配符選擇器
- 羣選擇器(重要)
div,p
- 屬性選擇器
- 僞類選擇器
Javascript
javascript是一個腳本語言
javascript中的變量類型:分爲基本數據類型和引用數據類型
1.基本數據類型:Undefined、Null、Boolean、Number、String
2.引用數據類型:稱爲Object對象,主要包括對象、數組和函數
基本類型和引用數據類型的區別
基本類型和引用類型存儲於內存不同的位置、基本類型直接存儲在棧中、而應用類型的對象存儲在堆中、與此同時棧中存儲了指針
undefined和not defined在JavaScript中有什麼區別?
not defined::未定義;一個未定義的變量是沒有聲明的變量,這樣的變量在使用時會直接報錯誤。
undefined::不明確的,一個定義了但未賦值的變量
什麼是JavaScript中的“閉包”?
閉包就是指能夠讀取其他函數內部變量的函數
Bootstarp
Bootstarp是一個前端樣式框架
Bootstarp的優點
1:響應式設計
2:非常容易上手
什麼是BootStarp的柵格系統
系統最多自動分爲12列,柵格系統用於通過一行一列的組合來創建頁面佈局,你的內容就會放如這些創建好的佈局裏面
Bootstarp的原理
其中他的原理是媒體查詢
jquery
jquery是一個javascript的庫,不是框架
JQuery有哪些經典應用
文檔選擇,文檔操作,動畫, ajax, json, js擴展等.
node.js
node是什麼
node是一個運行javascript的環境
Vue
對於Vue中的MVVM理解
其中M是Model層,就是模型層,V代表View視圖的意思嘛,然後就是VM這是一個比較頭疼的問題,就是數據模型發生改變的時候視圖層也會去改變,數據雙向綁定,在我做後端用Vue的時候就是一個感覺,通過js中的數據,去渲染數據
Vue中的生命週期
這篇文章不錯
=============== 版本控制工具(git) ===============
git
常用的git命令
- git init需要一個乾淨的倉庫初始化,該目錄下會新增一個隱藏的.git文件夾
- git add添加緩存區
- git commit -m “要提交的信息”
- git checkout 將單個文件代碼回滾到上個版本
- git clone url克隆遠程倉庫
- git push 推送到遠程本地倉庫
- git pull如果push的時候,本地和文件和遠端文件有衝突,就要先pull、然後手動解決衝突,才能繼續push,先拉取到遠程倉庫到本地倉庫,就比如遠程倉庫你有初始化的.md文件,本地倉庫卻沒得,就會發生衝突
- git checkkout 分支 切換分支
- git add . 代表所有文件提交其中注意是 . 點
Swagger2
swagger2是什麼
Swagger是一個RESTFUL 接口的文檔在線自動生成和功能測試的框架。
經常使用的註解有
- @EnableSwagger2 啓用Swagger2
- @Api:用在類上,說明該類的作用
- @ApiOperation:用在方法上,說明方法的作用
- @ApiParam 定義在參數上
- @ApiModel 描述一個數據模型類的信息
- @ApiModelProperty 描述數據模型的屬性
到後面的東西太多了,寫不完,如果你願意看到最後,說明你可以的😂