java-从菜鸟到大神

   日期:2024-12-26    作者:7z6om 移动:http://oml01z.riyuangf.com/mobile/quote/52169.html

任务二:新特性

第二十二章 新特性
22.1 Java8的新特性
  • 该版本于2014年3月发布
  • 是自Java5以来最具革命性的版本
  • 这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。
22.1.2 函数式接口
  • 接口中只有一个抽象方法
  • Java8提供@FunctionalInterface注解来定义函数式接口,若定义的接口不符合函数式的规范便会
    报错。
  • Java8中增加了java.util.function包,该包包含了常用的函数式接口,具体如下

点击它

java-从菜鸟到大神

 

运行结果

 
22.1.3 Lambda表达式
  • Lambda 表达式是实例化函数式接口的重要方式,使用 Lambda 表达式可以使代码变的更加简洁
    紧凑。
  • lambda表达式:参数列表、箭头符号->和方法体组成,而方法体中可以是表达式,也可以是语句
    块。
  • 语法格式:(参数列表) -> { 方法体; } - 其中()、参数类型、{} 以及return关键字 可以省略。
22.1.4 方法引用
  • 通过方法的名字来指向一个方法而不需要为方法引用提供方法体,该方法的调用交给函数式接口执行。

    因为函数式接口(Runnable)中的方法(run())和show方法结构类似【都没有参数和返回值】,使用方法引用我们只需要指定要调用的方法名,将调用的任务交给函数式接口(函数式接口怎么调用我们不用理会

  • 方法引用使用一对冒号 :: 将类或对象与方法名进行连接,通常使用方式如下

    • 对象的非静态方法引用 ObjectName :: MethodName
    • 类的静态方法引用 ClassName :: StaticMethodName
    • 类的非静态方法引用 ClassName :: MethodName
    • 构造器的引用 ClassName :: new
    • 数组的引用 TypeName[] :: new
  • 方法引用是在特定场景下lambda表达式的一种简化表示,可以进一步简化代码的编写使代码更加
    紧凑简洁,从而减少冗余代码。

 

运行结果

 
22.1.5 Stream接口
  • 案例题目
    准备一个List集合并放入Person类型的对象,将集合中所有成年人过滤出来放到另外一个集合并打
    印出来。
 

打印结果

 
  • (1)基本概念
    java.util.stream.Stream接口是对集合功能的增强,可以对集合元素进行复杂的查找、过滤、筛选
    等操作。
    Stream接口借助于Lambda 表达式极大的提高编程效率和程序可读性,同时它提供串行和并行两
    种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势。

  • (2)使用步骤
    创建Stream,通过一个数据源来获取一个流。
    转换Stream,每次转换返回一个新的Stream对象。
    对Stream进行聚合操作并产生结果。

  • (3)创建方式
    方式一:通过调用集合的默认方法来获取流,如:default Stream stream()
    方式二:通过数组工具类中的静态方法来获取流,如:static IntStream stream(int[] array)
    方式三:通过Stream接口的静态方法来获取流,如:static Stream of(T… values)
    方式四:通过Stream接口的静态方法来获取流,static Stream generate(Supplier<? extends T>
    s)

  • (4)中间操作

    筛选与切片的常用方法如下

    方法声明 功能介绍
    Stream filter(Predicate<? super T> predicate) 返回一个包含匹配元素的流
    Stream distinct() 返回不包含重复元素的流
    Stream limit(long maxSize) 返回不超过给定元素数量的流
    Stream skip(long n) 返回丢弃前n个元素后的流


    映射的常用方法如下

    方法声明 功能介绍
    Stream map(Function<? super T,? extends R> mapper) 返回每个处理过元素组成的流

    Stream flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
    返回每个被替换过元素组成的流,并将所有流合成一个流


    排序的常用方法如下

    方法声明 功能介绍
    Stream sorted() 返回经过自然排序后元素组成的流
    Stream sorted(Comparator<? super T> comparator) 返回经过比较器排序后元素组成的流

  • (5)终止操作

    匹配与查找的常用方法如下

    方法声明 功能介绍
    Optional findFirst() 返回该流的第一个元素
    boolean allMatch(Predicate<? super T> predicate) 返回所有元素是否匹配
    boolean noneMatch(Predicate<? super T> predicate) 返回没有元素是否匹配
    Optional max(Comparator<? super T> comparator) 根据比较器返回最大元素
    Optional min(Comparator<? super T> comparator) 根据比较器返回最小元素
    long count() 返回元素的个数
    void forEach(Consumer<? super T> action) 对流中每个元素执行操作


    规约的常用方法如下

    方法声明 功能介绍
    Optional reduce(BinaryOperator accumulator) 返回结合后的元素值


    收集的常用方法如下

    方法声明 功能介绍
    <R,A> R collect(Collector<? super T,A,R> collector) 使用收集器对元素进行处理

     

    运行结果

     
     
22.1.6 Optional类
  • 案例题目
    判断字符串是否为空,若不为空则打印字符串的长度,否则打印0。

  • java.util.Optional类可以理解为一个简单的容器,其值可能是null或者不是null,代表一个值存在
    或不存在。

  • 该类的引入很好的解决空指针异常,不用显式进行空值检测。

常用的方法

方法声明 功能介绍
static Optional ofNullable(T value) 根据参数指定数值来得到Optional类型的对象

Optional map(Function<? super T,? extends U> 根据参数指定规则的结果来得到Optional类
mapper) 型的对象

T orElse(T other) 若该值存在就返回,否则返回other的数值。

 
22.2 Java9的新特性
22.2.1 Java9的概述
  • Java9发布于2017年9月发布,带来了很多新特性,其中最主要的变化是模块化系统
  • 模块就是代码和数据的封装体,模块的代码被组织成多个包,每个包中包含Java类和接口,模块的
    数据则包括资源文件和其他静态信息。
  • 项目中可以有多个模块(项目-》模块-》类/接口–》方法/变量

创建模块:在项目上右击——》new–》Module

22.2.2 模块化的使用
  • (1)语法格式
    在 module-info.java 文件中,我们可以用新的关键词module来声明一个模块,具体如下
    module 模块名称 {
    }

------反正在java11中,直接使用快捷键alt+enter直接建立关联成功导入Person类了

 
 
 
  • (2)模块化的优势
    • 减少内存的开销。
    • 可简化各种类库和大型应用的 开发和维护。
    • 安全性,可维护性,提高性能。

什么意思? 可以使用java8运行java11的版本

jdk1.8中有java11

22.2.3 钻石操作符的使用升级
  • 在Java9中允许在匿名内部类的使用中使用钻石操作符。
  • 注意允许了在匿名内部类中使用钻石操作符
22.2.4 集合工厂方法
  • (1)基本概念
    Java9的List、Set和Map集合中增加了静态工厂方法of实现不可变实例的创建
    不可变体现在无法添加、修改和删除它们的元素。
    不允许添加null元素对象。
  • (2)实际意义
    保证线程安全:在并发程序中既保证线程安全性,也大大增强了并发时的效率。
    被不可信的类库使用时会很安全。
    如果一个对象不需要支持修改操作,将会节省空间和时间的开销。
    可以当作一个常量来对待,并且这个对象在以后也不会被改变。
 
22.2.5 InputStream的增强
  • InputStream类中提供了transferTo方法实现将数据直接传输到OutputStream中。
 
22.3 Java10的新特性
22.3.1 Java10的概述
  • Java10于2018年3月发布,改进的关键点包括一个本地类型推断、一个垃圾回收的增强
  • Java10计划只是一个短期版本,因此公开更新将在六个月内结束,9月份发布的Java11将是Java的
    长期支持(LTS)版本,LTS版本的发布每三年发布一次。
22.3.2 局部变量类型推断
  • (1)基本概念
    Java10可以使用var作为局部变量类型推断标识符,此符号仅适用于局部变量,增强for循环的索
    ,以及传统for循环的本地变量。
    它不能使用于方法形式参数,构造函数形式参数,方法返回类型,字段,catch形式参数或任何其
    他类型的变量声明。
  • (2)实际意义
    标识符var不是关键字,只是一个保留的类型名称。这意味着var用作变量,方法名或包名的代码不
    会受到影响但var不能作为类或则接口的名字
    避免了信息冗余。
    对齐了变量名。
    更容易阅读。
 
22.4 Java11的新特性
22.4.1 Java11的概述
  • Java11于2018年9月正式发布,这是 Java 大版本周期变化 后的第一个长期支持版本,非常值得关
    注。
22.4.2 简化的编译运行操作
  • 在Java11中可以使用java命令一次性进行编译和运行操作。
  • 执行源文件中的第一个类必须包含主方法。
  • 不可以使用其它源文件中自定义的类。
22.4.3 String类新增方法

方法声明 功能介绍
boolean isBlank() 判断字符串是否为空或只包含空白代码点
Optional map(Function<? super T,? extends U> 根据参数指定规则的结果来得到Optional类型的对象
mapper)

T orElse(T other) 若该值存在就返回,否则返回other的数值。

第二十三章 在线考试系统
23.1 在线考试系统
23.1.1 软件开发的流程
  • 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级
23.1.2 软件的需求分析

在线考试系统的主要功能分析如下

  • (1)学员系统
    用户模块:登录、修改密码、退出
    考试模块:开始考试、查询成绩、导出成绩(选
  • (2)管理员系统
    学员管理模块:增加学员、删除学员、修改学员、查找学员
    考题管理模块:增加考题、删除考题、修改考题、查找考题、导入考题(选
23.1.3 软件的概要设计

在线考试系统采用C(Client客户端)/S(Server服务器)架构进行设计,具体如下

  • 客户端(Client) - 主要用于提供字符界面供用户选择并将处理结果显示出来。
  • 服务器(Server) - 主要用于针对字符界面的选择实现真正业务功能的处理。
  • 数据库(Database) - 主要用于进行数据的存取。
23.1.4 软件的详细设计
  • 客户端和服务器之间采用基于tcp协议的编程模型进行通信。
    • 客户端的对象输出流连接服务器的对象输入流。
    • 服务器的对象输出流连接客户端的对象输入流。
  • 客户端采用消息的类型作为具体业务的代表,伴随着账户信息等一并发送给服务器。
    • 当客户端发来的消息类型为"managerCheck"时,则表示要实现管理员账户信息的校验功能。
    • 当客户端发来的消息类型为"userCheck"时,则表示要实现学员账户信息的校验功能。
  • 服务器采用消息的类型作为是否校验成功的标志发送给客户端。
    • 当客户端收到的消息类型为"success"时,则表示账户信息正确。
    • 当客户端收到的消息类型为"fail"时,则表示账户信息错误。
23.1.5 软件的编码流程

(1)管理员登录功能
编写基于tcp协议的服务器端,也就是初始化服务器
编写基于tcp协议的客户端,来连接服务器
编写客户端的字符界面并提示客户进行业务的选择
将客户的选择和输入的相关信息通过对象输出流发送给服务器
服务器通过对象输入流接收客户端发来的消息并进行功能处理,将处理结果发送给客户端
客户端通过对象输入流接收服务器的处理结果并给出提示
(2)学员管理系统的功能
当项目启动时,将文件中的所有学员账户信息全部读取出来放到一个List集合中。
客户端输入要增加学员的用户名和密码信息,通过对象输出流发送给服务器。
服务器接收客户端发来的消息,判断集合中是否存在该学员账户信息并实现具体添加功能。
服务器将增加学员功能的处理结果发送给客户端,客户端给出对应的提示。
当项目退出时,将集合中的所有学员账户信息整体写入到文件中

代码实现

服务器初始化和关闭–》服务器测试

客户端初始化和关闭–》客户端测试

客户端主界面绘制和功能实现(界面绘制–》管理员登录(用户+用户信息

​ 管理员登录(引入客户端初始化和关闭(传数据

​ 连接成功后就没有反应了?服务器一直在等待客户端的信息

不报错的错误–>客户端先创建输出流再创建输入流

 

list集合没有初始化之前是null,是不能调用方法的

list集合初始化后,size大小为0,是可以调用方法的


获取数据和保存数据出现序列化和反序列化问题

 

在公司的电脑报这个错误,在自己的电脑报拒绝访问。修改为相对路径就可以访问了


合成复用原则:不能把值传进去了

 

直接传入的话可以传入


什么叫合成复用原则:应该是传的能调方法的,不是让传带有数值的吧

  • 复用的是方法,值穿不进去(例如:集合

客户端关闭出现问题

 

diagrams 图标

查看继承关系图


使用合成复用原则,集合类型中的数据是可以进去的,但是为什么上面的不行呢

  • 使用构造方法的时候创建后,调用的时候可以传进去;没有构建,之前传进去的数据为空
  • 合成复用原则使用的时候感觉应该分为两种情况:1、不带数据的引用 2、带有数据的引用

任务一任务一_MySQL基础&SQL入门

DDL 操作 数据库
 
 
 
 
 

对数据库的操作

  • 创建数据库
  • 创建数据库并指明编码格式
  • 修改数据库编码格式
  • 使用数据库
  • 查看当前正在使用的数据库
  • 查看所有数据库
  • 查看数据库的基本信息
  • 删除数据库
 

 

注意事项

  1. 创建数据库后要对创建的连接刷新后再使用
  2. 编码格式是utf8,不是utf-8
  3. 修改库使用的是alter
  4. 除了使用数据库外,操作数据库的时候都要加上database
  5. 查看正在使用数据库的时候使用的是select,database后要加
  6. 显示所有的数据库,显示的是多个数据库,不要忘记加s

DDL 操作 数据表
 

 

注意事项

  1. 创建表的时候,字段间使用,隔开;名在前,数据类型在后

 
 
 
  • 使用左右外连接,count的选值很重要,使用左连接就先左边表的主键作为,右连接以右边的主键作为
  • count(左id,右id)

 

讲师级别 char类型 高级讲师&首席讲师,使用几个字节合适

  • 使用的是UTF-8

 
  • 已经取了别名,不用再取了

 
  • 不知道为什么要使用子查询

 
  • 要是使用 where e.dept_id=d.id and d.name=‘开发部’ or d.name='财务部’跟上面的实现效果不同

 
  • 判断时间的话,使用‘ ’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yku0h5e7-1602230781456)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200920165811613.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SoKOpaf6-1602230781457)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200920170459457.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6sFSlpm-1602230781459)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200920170827522.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-otxq2ZXW-1602230781461)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200920170900995.png)]


以后笔记重在记载联系的内容


使用事务模拟转账操作
  • 查看态。
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FXdc1ngw-1602230781462)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921225046534.png)]

  • 把 autocommit 改成 off;(手动提交)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KOkFZAsi-1602230781464)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921225207414.png)]


为什么同时打开两个窗口,查询的结果不一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXVIxPFA-1602230781466)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921225522400.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RprTvq1V-1602230781467)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921225945552.png)]

容易出错的地方


 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WeXyL8GL-1602230781470)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921230318923.png)]

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmKFh7qX-1602230781471)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921230417601.png)]

如果事务中,有某条sql语句执行时报错了,我们没有手动的commit,那整个事务会自动回滚


数据并发访问

相同的数据有多个事务进行同时访问呢造成的问题:‘


脏读
  • 一个事务读取到另一个事务尚未提交的数据
  • 查询到的是未提交的数据
  • 解过有回滚了,那查出来的数据就是错误的了
  • 使用的隔离级别:设置隔离级别为最低 读未提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SxyjDVxz-1602230781473)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921232651687.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nYgMneM6-1602230781474)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921232814444.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-waK1c4RY-1602230781476)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921233446634.png)]

  • 回滚前查询的是 修改了但未提交了的数据(太心急了
  • 回滚后查询的是 没有开启事务前的数据
  • 回滚前和回滚后查询的的数据是不一样的

窗口一

 

窗口二

 

解决脏读
  • 脏读非常危险的,比如张三向李四购买商品,张三开启事务,向李四账号转入 500 块,然后打电
    话给李四说钱 已经转了。李四一查询钱到账了,发货给张三。张三收到货后回滚事务,李四的再
    查看钱没了。
    • 张三转钱 李四一看收到了钱—》发货
    • 张三收到货回滚 李四一看钱没有了
  • 解决方案
    将全局的隔离级别进行提升为: read committed
 

​ 查看时候设置成功

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjvaYZsu-1602230781481)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200921235333628.png)]

  • 为什么设置后没有改变呢? 从新打开后设置就可以了,一个窗口设置后要关闭后才能再次设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxwPkYFK-1602230781482)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922000037132.png)]

  • 可以看到,脏读已经解决了

不可重复读演示

不可重复读: 同一个事务中,进行查询操作,但是每次读取的数据内容是不一样的

  • 同一事务中两次查询结果不一致的情况
  • 我们可以考虑这样一种情况:
    比如银行程序需要将查询结果分别输出到电脑屏幕和发短信给客 户,结果在一个事务
    中针对不同的输出目的地进行的两次查询不一致,导致文件和屏幕中的结果不一致,银
    行工作 人员就不知道以哪个为准了
  • 不可重复读的情况
    • 窗口二:开启事务,查询数据
    • 窗口一:开启事务,修改数据,再提交数据
    • 窗口二:再次查询数据,查询的结果与第一次不一样

笔记还不够完善,以后会更加完善!谢谢导师

第二阶段模块二

jdbc:
  • 为Java语言访问数据库提供一套标准的规范,可以为多种关系型数据库提供统一的访问
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wu8yF8p1-1602230781484)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922215346570.png)]


为什么是注册驱动?–>jdbc3后就可以省略了

 

创建工具类(JdbcUtils

因为获取数据库连接对象和关闭连接经常要用到(要重复的使用

 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Zezq5S7-1602230781485)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922220826874.png)]


SQL注入演示
  • 造成的原因:用户输入的内容拼接到了SQL语句上
  • 用户输入的内容作为了 SQL 语句语法的一部分,改变了 原有
    SQL 真正的意义
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-57L7Mcti-1602230781487)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922223401268.png)]

 

abc’ or ‘1’='1


预处理对象
  • 防止依赖注入
  • 提高SQL的执行效率
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JfaQZA0-1602230781489)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922224832377.png)]


事务相关API
  • 6.3 开发步骤
    1. 获取连接
    2. 开启事务
    3. 获取到 PreparedStatement , 执行两次更新操作
    4. 正常情况下提交事务
    5. 出现异常回滚事务
    6. 最后关闭资源
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eA6cLR5M-1602230781491)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922230822903.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WTYPojxy-1602230781493)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200922230832347.png)]


连接池
DBCP连接池
 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x6xyh2Cs-1602230781494)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923213557615.png)]

出错的原因:没有导入驱动包

mysql-connector-java-5.1.37-bin


运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUnqQoPJ-1602230781496)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923214145971.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dXFq5DBR-1602230781497)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923214200173.png)]


为什么会出现这种情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsKD68UN-1602230781500)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923214430836.png)]


出现的原因:数据库添加数据的时候换行了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHywadqZ-1602230781501)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923215103351.png)]


C3P0连接池:
 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yB6o3spk-1602230781503)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923221313224.png)]


显示不出的数据的原因

  • 插入数据的时候换行了
 

这样也不行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7EtcDZsJ-1602230781504)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923221700792.png)]

特别注意:插入数据的时候不要换行,否则会发生意想不到的错误


Druid连接池

Druid(德鲁伊)是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功
能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。

 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDPo44Rd-1602230781506)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923231813426.png)]

第一次:直接复制进去,不发执行;不知道什么原因

配置文件的路径要怎么写呢


使用文件输入流也可以获取文件,为什么还要使用反射机制要获取输入就对象呢


DBUtils工具类的使用

简化代码+使用连接池+不会对性能造成影响

1.创建QueryRunner(手动或自动)
2.占位符方式 编写SQL
3.设置占位符参数
4.执行

5.关闭资源

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FuXs62Dh-1602230781508)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200923234259242.png)]


实现批处理
 
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrWWfOy4-1602230781509)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200924000342294.png)]

  • 特别注意,写对了是粗体,写错 了不是粗体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRkKCOMv-1602230781511)(C:UsersAdministratorAppDataRoamingTypora ypora-user-imagesimage-20200924000420430.png)]

插入十万条数据还不到一秒


MySql元数据

除了表之外的数据都是元数据,可以分为三类


DTD约束

引入DTD

  • 外部DTD
  • 内部DTD

第三阶段模块一


DOM操作

为了方便查找元素

大树(启发)—》顺藤摸瓜–》文档对象模型(提出

DOM访问

  1. getElementById:通过id属性获得元素节点对象

  2. getElementsByName:通过name属性获得元素节点对象集

  3. getElementsByTagName:通过标签名称获得元素节点对象集

    tag : 标签

DOM修改

修改 HTML DOM 意味着许多不同的方面

  1. 改变 HTML 内容
  2. 改变 CSS 样式
  3. 改变 HTML 属性
  4. 创建新的 HTML 元素
  5. 删除已有的 HTML 元素
  6. 改变事件(处理程序

1.改变 HTML 内容
注意:.innerHTML=“

”; 是等号;不是

 
 
 

2.改变 CSS 样式

 
 

3.改变 HTML 属性

有空的时候可以试试

  1. 创建新的 HTML 元素
  2. 删除已有的 HTML 元素
  3. 改变事件(处理程序

添加节点

点击按钮,添加一张图片

 
 

删除节点

 
 

4.3.5 事件冒泡

点击子div,先子后父

点击父div,只会触发父div

 

取消冒泡事件

 

4.3.6 事件捕获

点击子div,先父后子

点击父div, 只有父

 

事件冒泡和事件捕获的区别:在事件的后面加上true;


4.4 面向对象OOP(三种创建对象的方式)

1、使用Object创建通用对象

 

2、使用构造函数

 

3、使用直接量

 

4.5 JSON

传递数据的习惯(方式)—》方式的不同,解析会比较麻烦,不知道用哪种方式解析—》Json格式

json格式

{
属性1:值1
属性2:值2
。。。。
}

 

  1. BOM操作

    就是javascript对浏览器的一些常规操作的方法

5.1 window对象

 

5.1.1 screen屏幕对象

我想知道我的电脑屏幕多大?实际上,得到的就是分辨率

 

5.1.2 location定位(location的三种用法)

 

5.1.3 history浏览器历史
history对象会记录浏览器的痕迹

 

5.1.4 navigator 导航(了解
window.navigator 对象包含有关访问者浏览器的信息;

例如:浏览器的名称,浏览器的版本。

 

5.1.5 存储对象
用起来和我们在java中map很相似,都是键值对的方式存数据

5.1.5.1 本地存储 localStorage
在关闭窗口或标签页之后将会删除这些数据

  • 保存数据
  • 提取数据
  • 删除数据
    localStorage.setItem(“name”,“curry”);
    localStorage.getItem(“name”);
    localStorage.removeItem(“name”);

三种存、取方式

 

5.1.5.2 会话存储 sessionStorage
会话,就是保持浏览器别关闭。
关闭浏览就等于结束了一次会话。
开启浏览器就意味着创建了一次会话。

从新打开一个标签页,数据接着加

 

案例:记录点击了几下按钮

 

会话:只要浏览器不关闭,刷新后(刷新之前就会将值记录下来;点击加一:不会从新开始


5.2 计时操作
5.2.1 周期性定时器 setInterval
setInterval(1,2):周期性触发代码exp (常用
1:执行语句
2:时间周期,单位为毫秒

  • 案例:闪烁的字体 (1秒1变色
 
  • 案例:在闪烁字体的基础上扩展,闪烁的电子时钟

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号