1. 程式人生 > >開發過程中遇到的一些知識點

開發過程中遇到的一些知識點

這些知識點都是開發過程中遇到的並且瞭解的,也許不是太詳細,記錄下來留作筆記,感興趣的朋友可以再深入的查詢下。

一:SLF4J的應用(整合了log4j)

SLF4J全稱是Simple Logging Facade For Jave,即簡單的日誌門面。SLF4J並不是具體的日誌框架,而是作為一個簡單的門面服務於各類日誌框架,如java.util.logging,logback和log4j。

SLF4J提供了統一的記錄日誌介面,對不同的日誌系統的具體實現進行了抽象化,只要按照其提供的方法記錄即可,最終的日誌格式,記錄級別,輸出方式等通過繫結的具體日誌系統來實現。

語法:private static final logger Logger=loggerFactory.getLogger(類名.class)

Logger.info("字串{}",變數)  SLF4J支援{}作為佔位符

二:程式入口

什麼是程式入口?如果你自己寫了main方法,那麼main方法就是程式入口。但是一個完整的java程式是沒有main方法的。所以當你的專案中沒有main方法時,啟動tomcat時,執行tomcat中的main方法作為入口,然後等請求過來時,tomcat接受請求,直接從專案檔案中把那個沒有主函式的應用接進來,執行其中的方法。相當於只有一個main方法,其他都是等請求過來的時候,根據請求呼叫的相應方法。

三:判斷兩時間先後的方法

1.Date a;Date a1;   可以直接進行比較

if(a.before(a1)){如果a<a1,如何}else{如a>a1,如何}

Date a=new Date();Date a1=new Date();
		if(a.before(a1)) {
			System.out.println("輸出a<a1");
		}else {
			System.out.println("輸出a>a1");
		}

2.運用Date.getTime();返回該時間到1970年之間的毫秒數

Date date =weldList.get(0).getCreateDate();
			Date date1 =weldList.get(1).getCreateDate();
if (date.getTime() > date1.getTime()) {
				System.out.println("dt1 在dt2前");
		        } else if(date.getTime() < date1.getTime()) {
				System.out.println("dt1在dt2後");
			}

3.運用Date與String型別間的轉換,轉化為字串後在做比較

                Date a=new Date();
                Date a1=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd HH:mm:SS");
		String aa=sdf.format(a);
		String aa1=sdf.format(a1);
		if(aa.compareTo(aa1)<0) {
			System.out.println("aa<aa1,如何");
		}else {
			System.out.println("aa>aa1,如何");
		}

字串轉化為時間

String b="2018-9-30 10:42:256";
		SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd HH:mm:SS");
		Date a=sdf.parse(b);
		System.out.println(a);

輸出資料:

Sun Dec 31 10:42:00 CST 2017

四:時間日曆的操作

1.如何根據一個時間獲取另一個時間

               Date a=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd HH:mm:SS");
		Calendar c=Calendar.getInstance();//用來操作日曆時間欄位的抽象類
		c.setTime(a);
		c.add(c.YEAR, -1);
		Date b=c.getTime();//時間型別時間
		String b1=sdf.format(b);//字串型別時間
		System.out.println("輸出a:"+a);
		System.out.println("輸出b1:"+b1);

輸出資料:輸出a:Tue Nov 13 10:52:06 CST 2018                  輸出b1:2017-11-13 10:52:971 

通過這種方式  可以對年月日時分秒進行時間修改操作

2.運用Calendar計算時間

計算2017年8月的天數

Calendar c=Calendar.getInstance();//用來操作日曆時間欄位的抽象類
		int year=2017;
		int month=8;
		c.clear();//對日曆時間值進行初始化
		c.set(c.YEAR, year);//設定日曆年份
		c.set(c.MONTH, month-1);//設定日曆月份,預設一月為0月
		int day=c.getActualMaximum(c.DAY_OF_MONTH);
		System.out.println("輸出:"+day);

輸出天數:31    

計算2018年9月19號是該年或該月的第幾個星期

int year=2018;
		int month=9;
		int day=19;
		c.clear();//對日曆時間值進行初始化
		c.set(c.YEAR, year);//設定日曆年份
		c.set(c.MONTH, month-1);//設定日曆月份,預設一月為0月
		c.set(c.DAY_OF_MONTH,19);//設定日曆天數
		int num=c.get(c.WEEK_OF_YEAR);
		System.out.println("設定時間是該年的第幾個星期:"+num);
		int num1=c.get(c.WEEK_OF_MONTH);
		System.out.println("設定時間是該月的第幾個星期:"+num1);

輸出資料:設定時間是該年的第幾個星期:38

                 設定時間是該月的第幾個星期:4

五:java基礎筆記

1.List,set 實現了collection 介面的子介面,map是另一個集合的介面。

List中的元素  有序   可重複   可為空;

set中的元素   無序   不重複   只能有一個空元素(可用於去重複)

map中的元素 無序   鍵不重複值可重複   可有一個空鍵多個空值 

List中包含  ArrayList   LinkedList

set中包含   HashSet   LinkedHashSet  TreeSet   SortedSet等

map中包含 HashMap  TreeMap  WeakHashMap  LinkedHashMap 等

2.String 字串常量   是不可變的,當對String進行改變時,等同於生成了一個新的String物件,然後指向新的String物件,所以如果需要經常的去修改字串內容時,不要用String,因為當記憶體中無用引用過多時,JVM的GC(垃圾處理機制)就會啟動導致速度變慢。

StringBuffer  字串常量(執行緒安全)是對字元本身進行操作,當字元拼接時String快於StringBuffer;當字串拼接時StringBuffer快於String

用法:StringBuffer a=new StringBuffer ();

a.append();這個會將拼接的字元直接放在末尾

a.insert(1,2);1的位置是拼接字元的位置  2是需要拼接的字元

StringBuilder 字串常量(非執行緒安全)是5.0新增的  用於單執行緒   方法與StringBuffer相同  但是速度更快

3.Arrays類的使用

3.1   fill(填充陣列)

                int []arr=new int[5];
		Arrays.fill(arr, 2);

給陣列內所有值賦值為2

                int []arr=new int[5];
		Arrays.fill(arr,1,3,8);

給第一位到第三位賦值為8  輸出結果[0,8,8,0,0]  不包含第三位   (陣列位數是  0  1  2  3  4)

3.2  sort(陣列元素排序)  從小到大

Arrays.sort(陣列);正常排序

Arrays.sort(陣列,1,3);陣列中的第一位到第三位進行排序

3.3   equals(比較陣列元素是否相等)

                int []arr= {1,2,3};
		int []arr1={1,2,3};
		Arrays.equals(arr, arr1);//返回ture  它們比的是陣列內的元素
		arr.equals(arr1);//返回false  因為它們比較的是兩個物件的地址

Arrays.equals重寫了equals方法

4.正則表示式

定義一個正則表達書    var  a=正則;

a.test(字串);如果字串的內容滿足正則規則,則返回true,否則返回false

字串.match(正則):在字串中搜索符合規則的內容,成功則返回內容,格式位陣列。失敗則返回null

再JS中運用時,不能用“ ”,要寫在/   /  之間