Java中的小知识 ---- 数据库连接池和HTML

数据库连接池

为什么使用数据库连接池?

线程池:
    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页面的空间大小操作方式,存在外边距,边框,内边距和元素本身

边框,内外边距的界限

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值