d: 訪問D盤java
cd + 文件名 訪問該文件mysql
cd.. 訪問上一級sql
cd\ 返回到當前盤符根目錄下數據庫
cla 清除屏幕apache
dir 顯示當前目錄下的文件和子目錄信息api
如何校驗JDK安裝是否成功的方法。你無需瞭解爲何要這麼作,只須要嚴格按照下面的步驟操做便可:數組
一些經常使用的存儲單位:安全
1B(字節) = 8bit框架
1KB = 1024B工具
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
(1) Java 嚴格區分大小寫
(2) main 是程序的主方法,程序入口
(3) a++ ++,--運算符後置時,先使用變量a原有值參與運算操做,運算操做完成後,變量a的值自增1或者自減1;
++a ++,--運算符前置時,先將變量a的值自增1或者自減1,而後使用更新後的新值參與運算操做
&&還具備短路的功能,即若是第一個表達式爲false,則再也不計算第二個表達式
(4) 【cmd下javac 錯誤: 編碼GBK的不可映射字符】
在cmd窗口下執行javac命令是,寫爲javac -encoding utf-8 -d . 文件名
-encoding utf-8 -d .
(5) 【輸出那裏,不要隨便空格】
(6) 引用數據類型(如Scanner):
1導包:import java.util.Scanner;
2建立對象實例:Scanner sc = new Scanner(System.in);
3調用方法:
int i = sc.nextInt(); 用來接收控制檯錄入的數字
String s = sc.next(); 用來接收控制檯錄入的字符串
(7) continue語句用在循環語句中,它的做用是終止(跳過)本次循環,執行下一次循環。break結束當前循環; contiune 跳出本次循環
(8) switch 沒有break的話,會按順序一直執行
(9) 數字中包含7 : String.valueOf(a).contains("7")
(10) 自定義的引用類型,每次new 都會在堆中開闢一片內存空間
(11) 數組 length ArrayList 集合 .size( ) (數據任意的添加和刪除) 字符串 .length( )
(12) 強制類型轉型 int a = 9; char b = (char)a;
1) Eclipse 快捷鍵:
2) 內容輔助鍵 Alt+/
3) 自動補齊main方法 main 而後 Alt+/
4) 自動補齊輸出語句 syso 而後 Alt+/
5) 格式化Ctrl+Shift+f
6) 代碼區域右鍵 -- Source – Format
7) 自動導包: Ctrl+Shift+o
8) 若是當前類在多個包中都存在,這時候,使用Ctrl+shift+o,進行選擇一個包導入便可。
9) 註釋
10) 單行註釋
11) 加註釋: 先選中須要註釋的內容,而後 Ctrl+/
12) 取消註釋:先選中須要取消註釋的內容, 而後 Ctrl+/
13) 多行註釋
14) 加註釋: 先選中須要註釋的內容,而後 Ctrl+Shift+/
15) 取消註釋:先選中須要取消註釋的內容, 而後 Ctrl+Shift+\
(13) Ctrl + alt + 下箭頭 複製這行代碼
(14) //調用父類已經存在的功能使用super super.showNum(); 在子類重寫這個(和父類的方法是同一個名字)的方法時,在方法類加上(super.方法名() )
(15) 多態:普通,抽象,接口。 運行的都是子類定義的方法
成員變量:定義和引用都看父類
方法運行看子類,可是父類也要有定義
靜態方法看父類 靜態屬於類,和對象無關
(16) 類實現(implements)接口,接口繼承(extends)多個接口
(17) 每一個類都有它的構造方法
(18) Ctrl +t 查看繼承關係
(19) Final 不可變 不能被繼承 除構造方法 都能修飾
(20) 類的方法中沒有 非靜態 就得加靜態static
在類裏面,若是方法沒有涉及到 成員變量,那就應該加靜態 static
靜態變量或方法 直接用接口或者類名 調用
(21) 導包 ctrl shift + o 類的全名帶着包
(22) Protected 權限的類 中的方法 或 參數,只能被子類在子類中用
(23) 咱們想在類中定義一個靜態常量,一般使用public static final修飾的變量來完成定義。此時變量名用所有大寫
如:public static final 數據類型 變量名 = 值;
public static final String COMPANY_NAME = "傳智播客";
使用類的靜態成員時,不須要建立對象,直接使用類名來訪問便可
如:Company.COMPANY_NAME
(24) Instanceof 如: obj instanceof Person 判斷obj是否爲Person 類型
(25) Char 作運算 都是先轉INT 如:97 = ‘A’ char 記得單引號 ‘ ’
(26) StringBuffer 線程安全,但速度慢。因此,咱們用StringBuilder 速度快,無論安全
(27) String 的一些用法:
String1.contains("end") String1中是否包含end
str1.indexOf(str2) str1 中包含 str2 ,str2 在 str1 中的索引位置
(28) 正則: ^ 表示「異或」 . 表示任意字符
Matches split replaceAll()
\\ 表示把後面的 符號 轉爲 正常表示的符號
如:. 在正則中表示任意字符,\\ . 則僅表示爲一個點
(29) 有異常 ctrl 1
(30) 毫秒 1000毫秒 = 1秒
毫秒到天數的換算: 毫秒/1000/60(一分鐘60秒)/60(一小時60分鐘)/24(一天24小時)
轉換爲毫秒值 Date date = new Date();
long time = date.getTime();
(31) 轉 string 直接 String s = I + 「 」 就能夠了
也能夠用 String s3 = String.valueOf(a);
String s2 = Integer.toString(i,2);
String 轉 char char[] c= s.toCharArray();
String 轉 byte 「sfsfsf」.getBytes();
(32) Integer i = 127; Integer j = 127; 這個,若是是127之內的數字,虛擬機不會新new 一個對象,而是讓 j = i
若是是128及以上的數字,就會從新 new 出一個對象
(33) System.arraycopy(arr1, 2, arr2, 1,3);
複製數組:把 arr1 的元素從索引爲2的開始,複製到arr2的索引1的後面,複製3個
(34) 集合存對象的時候:當打印array.get[i] 時,實際上打印的是array.get[i] 這個對象的.toString( ) 咱們能夠在這個對象的類中,改寫toString( )
(35) 加強for循環 For( int I : arr ) 遍歷arr 數組,不改數據
(36) 泛型:像ArrayList<String> arr = new ArrayList<String>(); 這種,後面須要指明類型的
(37) 迭代器:itrator ollection coll = new ArrayList(); Iterator it = coll.iterator();
(38) 泛型的通配符 <?> 限定繼承的父類(上限) <? Extends Person >
限定該子類的父類(下限) <? Super Person >
(39) 數組操做: int[] i = {12,4,34,67,3,43};
String s = Arrays.toString(i);
(40) Set<String> set = new HashSet<String>();
Set 無序,無重複元素,只能用 迭代器 和加強for 循環 來遍歷
(41) String 大小寫轉換 String start = sWord[i].substring(0, 1).toUpperCase();
String end = sWord[i].substring(1).toLowerCase();
(42) 可變參數(本質是數組),隨便傳幾個:Function(int…a){ }
一個方法中只能有一個可變參數;可變參數只能放在參數列表最後
(43) 異常: throw new RuntimeException("run");
RuntimeException 不用在方法的尾巴上加 throws RuntimeException 了
如:public static int get(int[] arr) throws Exception{ }
(44) 遞歸: 構造方法禁止遞歸
(45) 字節流:換行:\r\n (寫在上一句的結尾,或者,下一句的開頭)
字符流:換行:FileWriter fw.newLine(); (具備平臺無關性)
(46) 字節流的異常處理:
FileOutputStream fos = null;
try{
fos = new FileOutputStream("d:\\a.txt");
fos.write('p');
byte[] b = "asdf".getBytes();
fos.write(b);
}catch(IOException ex){
System.out.println(ex);
throw new RuntimeException("文件寫入失敗");
}finally{
try {
if(fos!=null)
fos.close();
} catch (IOException e) {
throw new RuntimeException("關閉資源失敗");
}
}
(47) fos = new FileOutputStream("d:\\a.txt",true); 給該文本文件續寫數據
fos.write('p');
(48) 轉換嗎?轉換流。InputStreamReader OutputStreamWriter
高效嗎?緩衝區對象。BufferedXXX
InputStream
FileInputStream
BufferedInputStream
OuputStream
FileOutputStream
BufferedOuputStream
Writer
OutputStreamWriter
FileWriter à fw.flush();
BufferedWriter
Reader
InputStreamReader
FileReader
BufferedReader à 特有功能:br.readLine() 能夠讀出文件的一行
(49) 靜態方法不容許 訪問 非靜態。靜態方法裏面不能寫,this,super
(50) MySQL auto_increment 自動增加
(51)
JDBC操做數據庫的步驟
1.註冊驅動
告知JVM使用的是哪個數據庫的驅動
Class.forName("com.mysql.jdbc.Driver");
2.得到鏈接
使用JDBC中的類,完成對MySQL數據庫的鏈接
url:"jdbc:mysql://localhost:3306/day07"
Connection con = DriverManager.getConnection(url, username, password);
3.得到語句執行平臺
經過鏈接對象獲取對SQL語句的執行者對象
PreparedStatement pst = con.prepareStatement(sql);
4.執行sql語句
使用執行者對象,向數據庫執行SQL語句
獲取到數據庫的執行後的結果
ResultSet rs = pst.executeQuery(); 或者 pst.executeUpdate();
5.處理結果
rs.close();
stat.close();
con.close();
6.釋放資源 一堆close()
使用 properties 配置時,該文件要放在src 下面
(52) Alt + shift + m 把抽取的代碼放進一個方法中
(53) Ctrl + 2 調用的一個新的方法,左邊「 類名 本身取的名字「 會自動出現
(54) 用 resourceBundle 取properties 文件中的值,properties 的key命名首字母小寫
塊編輯 alt + shift + a 全變大寫 Ctrl + shift + x 全變小寫 Ctrl + shift + y
(55) Class 裏面的常量 命名要所有大寫
(56) 127.0.0.1 本機地址
(57) Tomcat 部署
發佈:在底下server部分中,右鍵選 add and remove
(58)
(59)
(60)
(61)
(62)
(63)
(64)
(65)
(66)
(67)
導包:mysql-connector-java-5.1.39-bin.jar |
步驟一:建立Java項目,引入mysql的驅動包. 步驟二:編寫程序 步驟三:註冊驅動 步驟四:得到鏈接 步驟五:執行SQL 步驟六:釋放資源 |
配置文件 (jdbc.properties) |
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///day07 (或url=jdbc:mysql://localhost:3306/base1) username=root password=root |
步驟:註冊驅動à獲取鏈接à釋放驅動 |
JDBCUtils類 |
1,定義 |
static final String DRIVERCLASS; static final String URL; static final String USERNAME; static final String PASSWORD; |
2,從jdbc.properties獲取數據 |
static{ //獲取數據 ResourceBundle rb = ResourceBundle.getBundle("jdbc"); DRIVERCLASS = rb.getString("driverClassName"); URL = rb.getString("url"); USERNAME = rb.getString("username"); PASSWORD = rb.getString("password"); } |
3,獲取驅動 |
static{ try { //獲取驅動 Class.forName(DRIVERCLASS); } catch (ClassNotFoundException e) { e.printStackTrace(); } } |
4,鏈接數據庫 |
public static Connection getConnection(){ try{ //鏈接數據庫 Return DriverManager.getConnection(URL,USERNAME,PASSWORD); }catch(Exception ex){ System.out.println(ex+".222"); throw new RuntimeException(); } } |
5,釋放鏈接,關閉 |
/** * 釋放鏈接,關閉 * @param con * @param pre * @param rs */ public static void close(Connection con,PreparedStatement pre,ResultSet rs){ conClose(con); preClose(pre); reClose(rs); }
/** * 釋放Connection鏈接 (其餘兩個與這個相似) * @param con */ public static void conClose(Connection con){ if(con != null){ try{ con.close(); }catch(Exception ex){ ex.printStackTrace(); } } }
|
測試:
Connection con = JDBCUtils.getConnection(); String sql = "select * from student"; PreparedStatement pre = con.prepareStatement(sql); ResultSet re = pre.executeQuery(); while(re.next()){ System.out.println(re.getString("name")); } |
1.導入jar包:commons-dbcp-1.4.jar和commons-pool-1.5.6.jar |
2.使用api a.硬編碼 //建立鏈接池 BasicDataSource ds = new BasicDataSource();
//配置信息 ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql:///day07"); ds.setUsername("root"); ds.setPassword("1234"); b.配置文件 實現編寫一個properties文件 //存放配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("src/dbcp.properties")); //設置 //prop.setProperty("driverClassName","com.mysql.jdbc.Driver"); //建立鏈接池 DataSource ds = new BasicDataSourceFactory().createDataSource(prop); |
導包: c3p0-0.9.1.2.jar |
ComboPooledDataSource bs = new ComboPooledDataSource("mydemo"); Connection conn = bs.getConnection(); String sql = "insert into student values(?,?)"; PreparedStatement pre = conn.prepareStatement(sql); pre.setInt(1,8); pre.setString(2, "bob"); int i = pre.executeUpdate(); System.out.println(i); |
配置文件:c3p0-config.xml |
<c3p0-config> <!-- 默認配置,若是沒有指定則使用這個配置 --> <default-config> <!-- 基本配置 --> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property> <property name="user">root</property> <property name="password">root</property>
<!--擴展配置--> <property name="checkoutTimeout">30000</property> <property name="idleConnectionTestPeriod">30</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> </default-config>
<!-- 命名的配置 --> <named-config name="mydemo"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property> <property name="user">root</property> <property name="password">root</property>
<!-- 若是池中數據鏈接不夠時一次增加多少個 --> <property name="acquireIncrement">5</property> <property name="initialPoolSize">20</property> <property name="minPoolSize">10</property> <property name="maxPoolSize">40</property> <property name="maxStatements">20</property> <property name="maxStatementsPerConnection">5</property> </named-config> </c3p0-config>
|
DBUtils: QueryRunner QueryRunner
update(String sql, Object... params) ,執行更新數據
query(String sql, ResultSetHandler<T> rsh, Object... params) ,執行查詢
重要的結果集處理類:BeanHandler,BeanListHandler,MapListHandler,ScalarHandler
closeQuietly(Connection conn) 關閉鏈接,若是有異常try後不拋。
是apache組織的一個工具類,jdbc的框架,更方便咱們使用
使用步驟: 1.導入jar包(commons-dbutils-1.4.jar) 2.建立一個queryrunner類 queryrunner做用:操做sql語句 構造方法: new QueryRunner(Datasource ds); 3.編寫sql 4.執行sql query(..):執行r操做 update(...):執行cud操做 |