# tcbd1017 **Repository Path**: tangcco/tcbd1017 ## Basic Information - **Project Name**: tcbd1017 - **Description**: 课工场TCBD1017高级阶段课上代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-11-18 - **Last Updated**: 2022-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TCBD1017 #### 介绍 课工场TCBD1017高级阶段课上代码 #### 课程架构 课程架构说明 #### JavaSE ``` java标识符及标识符命名规则 1. javaseDay01 开发环境搭建 maven项目 junit javadoc lombok插件 2. javaseDay02 方法的重载 面向对象复习之封装 构造方法 this关键字 代码块、静态代码块 面向对象复习之继承 super关键字 Object类 面向对象复习之多态 抽象类 接口 内部类 lombok插件 3. javaseDay03 包装类 包装类之Integer Character ArrayList初体验并使用迭代器遍历集合 集合中泛型的作用 在重载方法中使用集合作为参数的时候注意泛型的擦除 4. javaseDay04 Arrays类 单例模式 恶汉单例模式 懒汉单例模式 枚举单例模式 String类 StringBuilder类 commons-lang3 5. javaseDay05 ArrayList、LinkedList差异 Vector 线程安全的 Comparable接口 Set HashSet LinkedHashSet SortSet TressSet Map HashMap LinkedHashMap TreeMap HashTable 线程安全的 日期类之Date 时间类之LocalDate LocalDateTime Time Instant LocalDateTime工具类的封装 6. javaseDay06 多线程初体验之Thread和Runnable 线程类的常用方法 synchronized 7. javaseDay07 BIO 文件类 字节流 8. javaseDay08 BIO 缓冲字节流 文件或目录的复制 ObjectStream、SequenceInputStream NIO RandomAccessFile、Paths、Path、Files、commons-io 9. javaseDay09 Optional 反射 Properties 单例+工厂模式 10. javaseDay10 Socket xml dom4j初体验 Fastjson初体验 json-lib、Jackson、Gson、Fastjson差异性简介 11. javaseDay11 SpringIOC容器的封装 MVC+SpringIOC ``` #### 关系型数据库之MySQL ``` 01. MySQL Day01 MySQL安装 MySQL DDL DML DCL 02. MySQL Day02 DQL 03. MySQL Day03 DQL 04. MySQL Day04 视图 存储过程 触发器 事务 ``` #### JDBC ``` 01. jdbcDay01 mysql5.x mysql8.x 工具类 02. jdbcDay02 工具类 事务 分页 连接池 Apache DBUtils JDBC API提供以下接口和类 - DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一 个驱动程序将用于建立数据库连接。 Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它还提取与使用Driver对象相关的信息。 Connection:此接口具有用于联系数据库的所有方法。 连接(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。 Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。 ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。 SQLException:此类处理数据库应用程序中发生的任何错误。 ``` ``` DiverManager.class里有个属性drivers,它实际上是一个vector(向量)。可在列表中加入很多驱动,当DriverManager去取连接的时候,若果drivers里有很多驱动,它会把drivers里面的各个驱动的url和创建连接时传进来的url逐一比较,遇到对应的url,则建立连接。 注册驱动的三种方式: (一)DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。 具体来说就是: 1,加载的时候注册一次驱动(原因请看第三中注册方式),实例化的时候又注册一次。所以两次。 2,由于实例化了com.mysql.jdbc.Driver.class,导致必须导入该类(就是要把这个类import进去),从而具体驱动产生了依赖。不方便扩展代码。 (二)System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver"); 通过系统的属性设置注册驱动 如果要注册多个驱动,则System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:com.oracle.jdbc.Driver"); 虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。 (三)Class.forName("com.mysql.jdbc.Driver"); 推荐这种方式,不会对具体的驱动类产生依赖(就是不用import package了)。 其实这个只是把com.mysql.jdbc.Driver.class这个类装载进去,但是关键就在于,在 这个类中,有个静态块,如下: static{ try{ java.sql.DriverManager.registerDriver(new Driver()); }catch(SQLException e){ throw new RuntimeException("can't register driver!"); } } 就是因为这个代码块,让类在加载的时候就把驱动注册进去了! ``` #### 连接池 ``` DBCP 开源免费 由Apache负责维护 c3p0 商用收费 几乎所有的持久层框架都支持 druid 附加监控 由阿里巴巴开发目前最好的国产数据库连接池 HikariCP 自称世界上最快的连接池 springboot默认使用 ``` #### H5C3 ```html 01. htmlDay01 基本标签、表格、表单 QQ邮箱登录页面 sublime visual studio code hbuilder (eclipse+插件) 什么是 Viewport? viewport 是用户网页的可视区域。 viewport 翻译为中文可以叫做"视区"。 手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。 设置 Viewport 一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下: width:控制 viewport 的大小,可以指定的一个值,如 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。 height:和 width 相对应,指定高度。 initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。 maximum-scale:允许用户缩放到的最大比例。 minimum-scale:允许用户缩放到的最小比例。 user-scalable:用户是否可以手动缩放。 01. htmlDay02 CSS样式、课工场主页 CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。 CSS box-model 不同部分的说明: Margin(外边距) - 清除边框外的区域,外边距是透明的。 Border(边框) - 围绕在内边距和内容外的边框。 Padding(内边距) - 清除内容周围的区域,内边距是透明的。 Content(内容) - 盒子的内容,显示文本和图像。 ``` #### javaScript ``` 01. jsDay01 ecmaScrtpt5.1 ecmaScrtpt6 BOM DOM OOP json JSON.stringify()与JSON.parse() sessionStorage、localStorage与cookie 02. jsDay02 原生AJAX ajax+json+sessionStorage 异步登录并实现页面间传值 ``` #### jQuery ``` jQueryDay01 jQuery实现AJAX jQusry.cookie.js 使用localStorage、cookie分别实现记住密码 jQueryDay02 Base64加密解密、与图片转换 百度Echarts、百度地图 jQueryDay03 bootStrap、Layui ``` #### javaEE ``` 01. javaeeDay01 开发环境搭建 maven项目 dynamic web project maven project jetty-maven-plugin tomcat7-maven-plugin maven热部署到远程tomcat服务器 简单页面传值,实现登录功能 02. javaeeDay02 AJAX AJAX+JSON+Servlet+JDBC实现完整登录跳转页面并在前端页面传值 03. javaeeDay03 http协议 Servlet生命周期 04. javaeeDay04 Servlet生命周期 ServletConfig ServletContext 请求转发与网页重定向 05. javaeeDay05 Session与Cookie Filter与Listener BaseServlet封装 JSP JSTL 06. javeeDay06 jsonp cors 方式解决ajax跨域 BaseServlet封装 07. javeeDay08 图片上传至ftp服务器 使用http方式读取 百度图片插件webupload 08. javeeDay08 百度地图 09. javeeDay09 百度图表echarts ``` 传统JSP方式案例 ``` 01. cinderellaDay01 项目主主体结构 实现登录功能 实现登录前验证、登录后跳转页面并显示操作者信息、退出系统功能、登录失败后的页面处理 02. cinderellaDay02 将jsp页面修改为html所有传值方式修改为ajax 登录成功后验证该用户是否存在如果不存在或者已离职都视为不存在 03. cinderellaDay03 RBAC之基于部门的权限管理 显示部门列表 04. cinderellaDay04 RBAC之基于部门的权限管理 分页显示该员工所在部门的其他员工简略信息 05. cinderellaDay05 RBAC之基于部门的权限管 显示登录者自己详情信息,家庭地址使用百度地图显示 06. cinderellaDay06 RBAC之基于部门的权限管理 员工使用百度地图自助修改个人信息+ajax异步验证 07. cinderellaDay07 RBAC之基于部门的权限管理 显示登录者本部门其他员工详情信息,家庭地址使用百度地图显示 08. cinderellaDay08 使用ajax异步验证账号和手机号是否注册过+短信验证实现员工自助注册 09. cinderellaDay09 RBAC之基于部门的权限管理 人事部门删除员工 10. cinderellaDay10 RBAC之基于部门的权限管理 人事部门使用百度地图查看员工详细信息 11. cinderellaDay11 RBAC之基于部门的权限管理 人事部修改员工信息 12. cinderellaDay12 RBAC之基于部门的权限管理 人事部门使用百度地图添加员工信息 13. cinderellaDay13 ajax跨域的解决方案 封装BaseServlet实现前后端分离架构 ```