# kjde1021 **Repository Path**: tangcco/kjde1021 ## Basic Information - **Project Name**: kjde1021 - **Description**: 课工场KJDE1021高级阶段课上代码 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-03 - **Last Updated**: 2022-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # kjde1021 #### 介绍 课工场KJDE1021高级阶段课上代码 #### MySQL ```shell 01. day01 数据库安装 数据库简介 操作库 约束 02. day02 操作表 单表查询 03. day03 表关联查询 视图 事务 04. day04 05. day05 ``` #### jdbc ![jdbc](./img/jdbc04.png) ![jdbc](./img/jdbc.png) ![1561212287381](./img/1561212287381.png) ![1561212287381](./img/jdbc01.jfif) ```shell 01. day01 基本CRUD 02. day02 1. getUseServerPreparedStmts()主要是从connection properties中提取useServerPrepStmts变量的 设置(useServerPrepStmts=true/false) 2. prepareStatement使用代码,也是在ConnectionImpl.prepareStatement方法中 针对特定的sql,CREATE TABLE/SET操作,不使用预编译 prepStmtCacheSqlLimit长度限制,默认256。超过该长度后,不使用预编译 cachePrepStmts设置是否对预编译使用local cache prepStmtCacheSize指定了local cache的大小,使用了LRU进行逐出 最后使用com.mysql.jdbc.ServerPreparedStatement和db server的建立映射 3. 如果不开启(useServerPrepStmts=fa在创建PreparedStatement时,resultSetType参数设置的是TYPE_SCROLL_INSENSITIVE或TYPE_SCROLL_SENSITIVE,  这两个参数的共同特点是允许结果集(ResultSet)的游标可以上下移动。而默认的TYPE_FORWARD_ONLY参数只允许结果集的游标向下移动。 如果PreparedStatement对象初始化时resultSetType参数设置为TYPE_FORWARD_ONLY,在从ResultSet(结果集)中读取记录的时,对于访问过的记录就自动释放了内存。而设置为TYPE_SCROLL_INSENSITIVE或TYPE_SCROLL_SENSITIVE时为了保证能游标能向上移动到任意位置,已经访问过的所有都保留在内存中不能释放。所以大量数据加载的时候,就OOM了。  statement = conn.prepareStatement(querySql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); resultSetType是设置ResultSet对象的类型标示可滚动,或者是不可滚动。取值如下: ResultSet.TYPE_FORWARD_ONLY 只能向前滚动(这是默认值) ResultSet.TYPE_SCROLL_INSENSITIVE  这两个方法都能够实现任意的前后滚动,使用各种移动的ResultSet指针的方法。二者的区别在于前者对于修改不敏感,而后者对于修改敏感。 Result.TYPE_SCROLL_SENSITIVE  resultSetConcurency是设置ResultSet对象能够修改的,取值如下: ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。 ResultSet.CONCUR_UPDATABLE 设置为可修改类型的参数。 com.mysql.jdbc.PreparedStatement进行本地SQL拼 装,最后送到db上就是已经替换了?后的最终SQL 注意几个参数即可: useServerPrepStmts=true/false prepStmtCacheSqlLimit=256 cachePrepStmts=true/false prepStmtCacheSize=256 预编译cache在链接池层面都已经有类似的实现,可以不开启driver的cache参数。 在创建PreparedStatement时,resultSetType参数设置的是TYPE_SCROLL_INSENSITIVE或TYPE_SCROLL_SENSITIVE,  这两个参数的共同特点是允许结果集(ResultSet)的游标可以上下移动。而默认的TYPE_FORWARD_ONLY参数只允许结果集的游标向下移动。 如果PreparedStatement对象初始化时resultSetType参数设置为TYPE_FORWARD_ONLY,在从ResultSet(结果集)中读取记录的时,对于访问过的记录就自动释放了内存。而设置为TYPE_SCROLL_INSENSITIVE或TYPE_SCROLL_SENSITIVE时为了保证能游标能向上移动到任意位置,已经访问过的所有都保留在内存中不能释放。所以大量数据加载的时候,就OOM了。 statement = conn.prepareStatement(querySql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); resultSetType是设置ResultSet对象的类型标示可滚动,或者是不可滚动。取值如下: ResultSet.TYPE_FORWARD_ONLY 只能向前滚动(这是默认值) ResultSet.TYPE_SCROLL_INSENSITIVE 这两个方法都能够实现任意的前后滚动,使用各种移动的ResultSet指针的方法。二者的区别在于前者对于修改不敏感,而后者对于修改敏感。 Result.TYPE_SCROLL_SENSITIVE resultSetConcurency是设置ResultSet对象能够修改的,取值如下: ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。 ResultSet.CONCUR_UPDATABLE 04. day04 apache-commons-DBUtils 详解 和 二次封装 ``` #### javaee ![login_jsp](./img/login_jsp.png) ```shell 01. day01 完整登录 02. day02 servlet生命周期 http协议 请求和响应 UA工具 二维码 03. day03 网页重定向 请求转发 04. day04 ServletConfig ServletContext Session Cookie 05. day05 Filter Listener 使用cookie记住密码 06. day06 07. day07 文件上传 08. day08 图形验证码 09. day09 分页 10. day10 bootstrap ```