晒晒一天的经历,嘻嘻......
1.class MyThread extends Thread{
1.class MyThread extends Thread{
public void run(){
System.out.println("MyThread run()");
}
public void start(){
System.out.println("MyThread start()");
}
}
class MyRunnabled implements Runnable{
public void run() {
System.out.println("MyRunnabled run()");
}
public void start(){
System.out.println("MyRunnabled start()");
}
}
public class TestKnowleage5<T extends Object> {
public static void main(String[] args){
Thread thread = new Thread(new MyRunnabled());
MyThread myThread = new MyThread();
myThread.start();
thread.start();
}
}
运行结果:
2.
eg:and 0<>(select count(*) from admin) ---判断是否存在admin这张表;
如何防止sql注入:
1)对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等;
2)不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;
3) 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息;
4) 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装;
5) 采用sql注入检测工具
6) 不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
运行结果:
MyThread start()
MyRunnabled run()
继承Exception类编写一个自定义异常类MyException,在自定义异常类中加入一个方法getMyMessage(),此方法无参数,返回值为一个字符串,字符串内容为你的自定义异常信息:"你的姓名:" + Exception的getMessage()方法的返回值.格式如:
(姓名:***Exception***)。
编写一个类ExceptionMaker,在里面定义一个方法throwException(),在这个方法中制造一种异常情况,抛出一个JDK自带的异常,捕捉这个异常,并在catch处理语句中抛出你的自定义异常MyException,抛出的自定义异常要求保留原异常的信息(getMessage()的返回值);
再编写一个类MyExceptionTestCase,测试你编写的前面两个类,调用第二个类中的抛出你自定义异常的方法throwException(),捕捉你的自定义异常,并输出你自定义的异常信息
参考代码:
public class MyFirstException extends Exception{
private String msg;
public String getMyMessage(){
return msg;
}
public MyFirstException(){
super();
}
public MyFirstException(String msg){
super(msg);
}
public MyFirstException(String msg, Throwable cause){
super(msg, cause);
}
public MyFirstException(Throwable cause){
super(cause);
msg = "gavin's" + cause.getMessage();
}
public static void main(String arg[]) {
ExceptionMaker em = new ExceptionMaker();
try {
em.throwException();
} catch (MyFirstException e) {
System.out.println(e.getMyMessage());
}
}
}
class ExceptionMaker {
public void throwException() throws ArithmeticException, MyFirstException {
try {
int i = 3 / 0;
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
throw new MyFirstException(e);
}
}
}
3.
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
eg:and 0<>(select count(*) from admin) ---判断是否存在admin这张表;
如何防止sql注入:
1)对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等;
2)不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;
3) 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息;
4) 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装;
5) 采用sql注入检测工具
6) 不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。