原始文章內容混雜了兩個無關主題:
標題「java加密算法分享」與實際內容不符。以下分別整理兩部分核心內容。
#!/bin/bash
# 匯出 sns_home_user 表指定欄位至檔案
OUTFILE="/var/lib/mysql/hell.txt"
# 刪除舊檔並記錄
if [ -f "$OUTFILE" ]; then
rm -f "$OUTFILE"
echo "delete $OUTFILE" >> hell.log
fi
# 執行查詢匯出(需 MySQL 權限:FILE 權限、secure_file_priv 允許目錄)
mysql -uroot -plab <<EOF
USE home;
SELECT YongHuID, XueYuanID
INTO OUTFILE './hell.txt'
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\r\n'
FROM sns_home_user
WHERE YongHuID < 20;
EOF
注意:MySQL 8.0 預設啟用 `secure_file_priv`,匯出目錄受限;需確認 `SHOW VARIABLES LIKE 'secure_file_priv';` 允許的路徑。
package reflection;
public class User {
private String name;
public User() {}
public User(String name) { this.name = name; }
public void say() {
System.out.println("大家好,我叫" + name + "!");
}
public void say(String str) {
System.out.println("大家好,我叫" + name + "!" + str + ",我是有參方法!");
}
}
package reflection;
import java.lang.reflect.Method;
public class ReflectionDemo {
public static void main(String[] args) throws Exception {
// 1. 取得 Class 物件
Class<?> clazz = Class.forName("reflection.User");
// 2. 取得方法物件
Method m1 = clazz.getMethod("say"); // 無參
Method m2 = clazz.getMethod("say", String.class); // 有參
// 3. 動態呼叫
// 無參建構子實例化
m1.invoke(clazz.getDeclaredConstructor().newInstance());
// 有參建構子實例化後呼叫
m2.invoke(clazz.getDeclaredConstructor(String.class).newInstance("劉顯安"), "哈哈");
}
}
newInstance() 呼叫的是無參建構子,類別必須提供 `public User() {}`。