Tomcat组成、架构与配置部署
bin,可执行文件
conf,配置文件
lib,tomcat依赖库
logs,日志
temp,临时文件夹
webapps,默认的应用部署目录
work,供web应用使用
JVM启动参数配置?
环境变量JAVA_OPTS
-server -Xms512m -Xmx512m
如果需要一直生效,就把JAVA_OPTS="-server -Xms512m -Xmx512m"写入 ~/.bashrc文件中
访问日志:
JDBC基础(上)
JDBC
TO 【数据库厂商】:一套标准接口规范。
TO 【JAVA程序员】:也是一套标准接口。
所以,它就是一套接口规范。
示例代码:
import java.sql.*;
public class HelloJDBC {
private static String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static String DB_URL = "jdbc:mysql://39.108.238.110:3306/cloudhos";//39.108.238.110
private static String USER = "cloudhos";
private static String PASSWORD = "cloudhos123#@!";
public static void main(String[] args) throws ClassNotFoundException {
Connection conn = null;
Statement stat = null;
ResultSet resultSet = null;
//1.装载数据库驱动
Class<?> clazz = Class.forName(JDBC_DRIVER);
try {
//2.获取connection
conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
//3.connection -> statement
stat = conn.createStatement();
//4.statement -> resultSet
resultSet = stat.executeQuery("select * from user");
while(resultSet.next()){
System.out.println("Hello!" + resultSet.getString("mbl_no"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {
conn.close();
}
if(stat != null){
stat.close();
}
if(resultSet != null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
JDBC进阶
游标(1)
代码:
import java.sql.*;
public class HelloJDBC2 {
private static String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static String DB_URL = "jdbc:mysql://39.108.238.110:3306/cloudhos";//39.108.238.110
private static String USER = "cloudhos";
private static String PASSWORD = "cloudhos123#@!";
public static void main(String[] args) throws ClassNotFoundException {
Connection conn = null;
PreparedStatement stat = null;
ResultSet resultSet = null;
//1.装载数据库驱动
Class<?> clazz = Class.forName(JDBC_DRIVER);
try {
//2.获取connection
conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
//3.connection -> statement
stat = conn.prepareStatement("select * from user where usr_sts = ?");
stat.setFetchSize(10);
stat.setString(1,"1");
//4.statement -> resultSet
resultSet = stat.executeQuery();
int i = 1;
while(resultSet.next()){
System.out.println("Hello! ["+i+"] " + resultSet.getString("mbl_no"));
i++;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(conn != null) {
conn.close();
}
if(stat != null){
stat.close();
}
if(resultSet != null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
大字段(2)
通过流的方式处理
海量记录处理(3)
代码:
中文乱码(4):
数据池链接
建立连接开销很大
连接池
当 连接 > DB[最大连接数限制]
Too many connections!!!
3个包都是必须,缺一不可!
应用程序线程(Thread)> 最大连接数
Thread进入wait队列,当队列满时,抛异常!
initialSize:初始化连接数:默认值 0
maxTotal:同一时刻可分配最大连接数:默认值 8 ,设置为负数时不做限制
maxIdle:最大空闲连接,默认值 8 ,超出连接将被释放
minIdle:最小空闲连接数,默认值 0
maxWaitMillis:请求连接最大等待时间(毫秒),默认值 无限期 ,超出时间将抛出异常
推荐
minIdle == maxIdle
死锁分析与解决
示例
出现死锁!!!
MyBatis入门
代码:
省略…
MyBatis进阶
Spring JDBC(上)
Spring JDBC