数据库连接池
为什么使用数据库连接池?
线程池:
1.初始化一些线程,提供给程序使用
2.节约了资源,关闭线程的开关资源,节约了内存空间
3.例如初始化五个线程对象,这里有10个线程目标
首先执行五个线程目标,其他五个等待;
当这五个执行完毕时,会执行其他线程,不会关闭线程。
数据库连接池:
现在的代码每执行一次业务都需要申请新的数据库连接,而且运行结束之后都需要关闭资源;会导致资源浪费,数据库压力过大,同时性能非常一般。
而我们希望采用一种共享单车的形式
1.投放一定数量的共享单车
2.用户可以使用,用户使用完毕,【归还】给共享单车平台
3.市场需求非常大,可能会再次投放
数据库连接池的原理
数据库连接池是用于管理数据库连接资源,属性和数据库连接对象。
数据库连接必要的资源:
1.URL
2.user
3.password
4.DriverClass
连接池关于数据库连接对象的管理内容:
1.初始化数量
2.最大容量是多少
3.等待时间
数据库连接归还功能:
该功能是自带的功能,并且润物细无声
依然时调用原始的close方法,实际效果是归还数据库连接池
常见的数据库连接池
1.C3P0
2.DBCP
3.Druid
C3P0使用
使用流程:
1.导包
mchange-commons-java-0.2.19.jar
c3p0-0.9.5.2.jar
2.书写配置文件
3.创建核心类
xml文件:
<!-- c3p0-config.xml需要存储于src目录下 -->
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/nzgp2001?useSSL=true</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池参数 -->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间-->
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/company?useSSL=true</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
package util;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* JDBC工具类,负责数据库连接对象和数据库资源关闭
*
* @author Anonymous 2020/3/24 10:08
*/
public class JdbcUtil {
/**
* 默认加载 default-config配置
*/
private static ComboPooledDataSource pool = new ComboPooledDataSource();
/*
指定选择c3p0配置文件中哪一个配置
private static ComboPooledDataSource pool = new ComboPooledDataSource("otherc3p0");
*/
/**
* 返回数据库连接对象,连接失败返回null
*
* @return java.sql.Connection 数据库连接对象
*/
public static Connection getConnection() {
Connection connection = null;
try {
connection = pool.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/*
以下三个方法实际上都是执行同一个方法,使用这种方式
1. 简化代码结构
2. 规范化所有的操作
*/
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
* @param resultSet java.sql.ResultSet 数据库查询结果集对象
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Druid使用
使用流程:
1.导包
druid-1.0.9.jar
2.书写配置文件
配置文件是一个druid.properties文件
内容:
driverClassName
url
username
password
初始化数据库连接池容量:initialSize
maxActive
maxWait
3.创建核心类
properties类:
# 文件名 druid.properties 存储在src目录下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/nzgp2001?useSSL=true
username=root
password=123456
# 初始化数据库连接池容量
initialSize=5
# 最大容量
maxActive=20
# TimeOut 等待超时时间
maxWait=2000
package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
/**
* JDBC工具类,负责数据库连接对象和数据库资源关闭
*
* @author Anonymous 2020/3/24 10:08
*/
public class JdbcUtil {
/**
* 数据库资源
*/
private static DataSource ds;
static {
try {
// 加载Properties文件
Properties properties = new Properties();
properties.load(new FileInputStream("./src/druid.properties"));
// 已经完成数据库连接池操作
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 返回数据库连接对象,连接失败返回null
*
* @return java.sql.Connection 数据库连接对象
*/
public static Connection getConnection() {
Connection connection = null;
try {
connection = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/*
以下三个方法实际上都是执行同一个方法,使用这种方式
1. 简化代码结构
2. 规范化所有的操作
*/
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
* @param resultSet java.sql.ResultSet 数据库查询结果集对象
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
HTML
HTML简介
什么是HTML?
全程:Hyper Text Markup Language,超文本标记语言
包含内容:
1.超文本:可以包含,图片,视频,音频,连接...
2.标记:采用标签方式编程,并且有固定的规范
3.HTML5是HTML语言的一个标准,是W3C组织制定的
HTML可以用于数据展示,常见的网站都是采用HTML来编程的
最基本的HTML结构
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>标题</title>
</head>
<body>
<!-- 页面展示内容 -->
</body>
</html>
HTML标签要求:
1.W3C规定,不可以自定义,每一个标签都有自己的特定含义
2.标签区别为双边标签和单边标签
<head></head> <meta charset="utf-8" />
3.标签中可以使用属性
charset = "utf-8"
charset属性名 utf-8属性值
属性名 = "属性值"
4.HTML标签不区分大小写,这里建议全小写
HTML基本标签
结构标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>结构标签</title>
</head>
<body text="red" bgcolor="black">
你好HTML
</body>
</html>
属性:
text:文本颜色
bgcolor:背景颜色
background:背景图
颜色的表示方式:
对应颜色的英文:red black...
或者RBG模式:#F25255...
排版标签
注释标签:
<!-- 注释内容 -->
换行标签
<br />
段落标签
<p> </p>
特征:段落之间有留白
水平分割线
<hr />
属性:
width长度,单位是像素
size宽度,单位是像素
color颜色
align对齐方式
块标签
<div></div>
块标签,单独成行,每一个块标签占一行
<span></span>
行内块标签,所有内容都在一行,多个span标签在一行展示
作用:
div和CSS连用,用于页面布局操作
span 用于信息提示
文本标签
基本文本标签
<font></font>
属性:
size 字体大小
color 字体颜色
face 字体样式
标题标签
<h1></h1>~<h6></h6>
数字越大文字越小。字体默认加粗,单独成行
h1标签一般在一个HTML页面中有且只有一个
列表标签
无序列表ul
无序列表:<ul></ul>
属性:circle 空心圆
square 实心方块
none 什么也没有
默认是disc实心圆
元素内容:
<li></li>
案例:
<ul type="none">
<li>小明</li>
<li>小红</li>
<li>小蓝</li>
<li>小绿</li>
</ul>
有序列表ol
<ol></ol>
属性:
type:1 A a I i(数字,英文字母大小写,罗马数字大小写)
start:从几开始
案例:
<!-- 有序号,从3开始 -->
<ol type="1" start="3">
<li>茅台</li>
<li>五粮液</li>
<li>习酒</li>
<li>舍得</li>
<li>彩陶坊</li>
</ol>
列表嵌套
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul type="none">
<li>茶
<ul type="none">
<li>绿茶</li>
<li>红茶</li>
<li>白茶</li>
<li>普洱</li>
<li>花茶</li>
</ul>
</li>
<li>咖啡
<ul type="none">
<li>埃塞尔比亚</li>
<li>印度尼西亚黄金曼特宁</li>
<li>夏瑰</li>
<li>蓝山</li>
</ul>
</li>
</ul>
</body>
</html>
图形标签
<img /> 单边标签
属性:
src 图片路径,可以是本地路径也可以是网络路径
width 图片宽度
height 图片高度
algin 和相邻文本布局有关
alt 图片文本说明,当图片无法显示时,展示文本
border 图像边框
超链接
<a></a>
属性:
href 指定跳转哪一个页面
target
_self 当前页面加载新连接
_blank 新页面加载链接
name 可以用于锚点的使用
锚点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>10-链接标签锚点使用</title>
</head>
<body>
<a href="#middle">去中间</a><br>
<a name="top"></a><br>
<h1>顶部</h1><br>
.........................
<a name="middle"></a><br>
<h1>中间</h1><br>
<a href="#top">回顶部</a><br>
<a href="#bottom">去底部</a><br>
.........................
<a name="bottom"></a> <br>
<h1>底部</h1> <br>
<a href="#top">回顶部</a> <br>
<a href="#middle">去中间</a><br>
</body>
</html>
表格标签
基本表格样式
<table></table>
表格主标签
<tr></tr>
表格的一行
<td></td>
表格的一列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>11-基本表格</title>
</head>
<body>
<table border="1" bordercolor="yellowgreen" cellspacing="5" align="center">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
</body>
表头使用
<th></th>
表头,默认字体加粗,并且居中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>12-表格表头</title>
</head>
<body>
<table border="1" width="600px" align="center">
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
<th>Score</th>
</tr>
<tr align="center">
<td>1</td>
<td>骚磊</td>
<td>16</td>
<td>男</td>
<td>100</td>
</tr>
<tr align="center">
<td>2</td>
<td>老黑</td>
<td>66</td>
<td>男</td>
<td>5</td>
</tr>
</table>
</body>
</html>
表格的列合并
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>13-表格的列合并</title>
</head>
<body>
<table border="1" align="center" width="600">
<tr>
<th colspan="5">学生表</th>
</tr>
<tr align="center">
<td>ID</td>
<td>姓名</td>
<td colspan="3">各科成绩</td>
</tr>
<tr align="center">
<td>1</td>
<td>骚磊</td>
<td>100</td>
<td>95</td>
<td>98</td>
</tr>
<tr align="center">
<td>2</td>
<td>老黑</td>
<td>10</td>
<td>5</td>
<td>3</td>
</tr>
</table>
</body>
</html>
表格的行合并
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>14-表格的行合并</title>
</head>
<body>
<table border="1" width="800" align="center">
<tr>
<th></th>
<th>周一</th>
<th>周二</th>
<th>周三</th>
<th>周四</th>
<th>周五</th>
</tr>
<tr>
<td rowspan="3">
上午
</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
</tr>
<tr>
<td>数学</td>
<td>数学</td>
<td>数学</td>
<td>数学</td>
<td>数学</td>
</tr>
<tr>
<td>英语</td>
<td>英语</td>
<td>英语</td>
<td>英语</td>
<td>英语</td>
</tr>
<tr align="center">
<td colspan="6">午休</td>
</tr>
<tr>
<td rowspan="3">
下午
</td>
<td>音乐</td>
<td>音乐</td>
<td>音乐</td>
<td>音乐</td>
<td>音乐</td>
</tr>
<tr>
<td>体育</td>
<td>体育</td>
<td>体育</td>
<td>体育</td>
<td>体育</td>
</tr>
<tr>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
</tr>
</table>
</body>
</html>
文本格式化标签
<b> 文本加粗
<strong> 文本加粗
<em> 文本斜体
<i> 文本斜体
<small> 小号字体
<sup> 上标
<sub> 脚标
<del> 删除线
<ins> 下划线
表单
表单的作用
提交数据给后台的一种方式
form表单
属性:
action:提交的目标位置,提交数据到服务器进行处理
method:提交方式,get和post
get:
1.通过URL明文传递
2.不安全,密码是明文传递
3.效率高,传输速度快,
4.一般用于搜索操作
post:
1.通过请求实体来传递数据
2.安全性一点点可靠
3.效率低
4.数据大小理论不限制
5.一般用于搜索更新,删除,插入,登陆...
enctype:后面再说
input标签
input输入框
type决定当前inuput标签中的内容是什么样式
属性值:
text:可视化文本,默认属性
password:密文
submit:提交
radio:单选
要求:
1.name属性必须一致,不然无法满足单选要求
2.checked属性为默认选择
checkbox:多选
要求和建议:
1.name属性必须一致
2.建议:可以在name属性中使用[]做标记,区分是否为多选;多选使用[],PHP后台直接解析为PHP数组Array
date 时间日期
reset 重置
file 文件
hidden 隐藏传递数据
select下拉菜单
<select name="city">
<option value="1">安阳</option>
<option value="2">郑州</option>
<option value="3" selected>许昌</option>
<option value="4">开封</option>
<option value="5">邯郸</option>
</select> <br>
文本框
<textarea name="info" cols="30" rows="10"></textarea> <br>
CSS盒子模型
什么是盒子模型
盒子模型是CSS样式修饰之后一个元素占用整个HTML页面的空间大小操作方式,存在外边距,边框,内边距和元素本身
边框,内外边距的界限