Java-JDBC连接池、JDBCTemplate
1. 数据库连接池
2. Spring JDBC : JDBC Template数据库连接池1. 概念:其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
2. 好处:
1. 节约资源
2. 用户访问高效
3. 实现:
1. 标准接口:DataSource javax.sql包下的
1. 方法:
* 获取连接:getConnection()
* 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接
2. 一般我们不去实现它,有数据库厂商来实现
1. C3P0:数据库连接池技术
2. Druid:数据库连接池实现技术,由阿里巴巴提供的
4. C3P0:数据库连接池技 ...
Java-JDBC
title: Java-JDBCdata: 2020-07-25 11:30:00tags: [Java,JDBC]id: 1category: Java
2. 1. JDBC基本概念
2. 快速入门
3. 对JDBC中各个接口和类详解JDBC:1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库
* JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2. 快速入门:
* 步骤:
1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
2.右键-->Add As Library
2. 注册驱动
3. ...
MySQL-约束
1. DQL:查询语句
1. 排序查询
2. 聚合函数
3. 分组查询
4. 分页查询
2. 约束
3. 多表之间的关系
4. 范式
5. 数据库的备份和还原DQL:查询语句1. 排序查询
* 语法:order by 子句
* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
* 排序方式:
* ASC:升序,默认的。
* DESC:降序。
* 注意:
* 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。
1. count:计算个数
1. 一般选择非空的列:主键
2. count(*)
2. max:计算最大值
3. min:计算最小值
4. sum:计算和
5. avg:计算平均值
* 注意:聚合函数的计算,排除null值。
解决方案:
...
MySQL-基础
数据库
数据库的基本概念
MySQL数据库软件
安装
卸载
配置
SQL
数据库的基本概念1. 数据库的英文单词: DataBase 简称 : DB
2. 什么数据库?
* 用于存储和管理数据的仓库。
3. 数据库的特点:
1. 持久化存储数据的。其实数据库就是一个文件系统
2. 方便存储和管理数据
3. 使用了统一的方式操作数据库 -- SQL 4. 常见的数据库软件 * 参见《MySQL基础.pdf》
MySQL数据库软件1. 安装
* 参见《MySQL基础.pdf》
2. 卸载
1. 去mysql的安装目录找到my.ini文件
* 复制 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
2. 卸载MySQL
3. 删除C:/ProgramData目录下的MySQL文件夹。
3. 配置
* MySQL服务启动
1. 手动。
2. cmd--&g ...
Java-反射、注解
Junit测试:
测试分类
黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值
白盒测试:需要写代码.关注程序具体的执行流程
Junit使用: 白盒测试
步骤
定义一个测试类(测试用例)
建议:
测试类名使用被测试类+Test
包名:xxx.xxx.xxx.test
定义测试方法: 可以独立运行
建议:
方法名: test+测试方法名
返回值: void
参数列表: 空参
给方法加注解@Test
点击小灯泡导入Jnuit环境依赖
判定结果
红色: 失败
绿色: 成功
一般使用断言操作处理结果,Assert类中的assertXXX方法 assertEquals(期望的结果,程序运算的结果),若两个数不同显示红色
注解@Before 被修饰的方法会在测试方法之前被自动执行,常用于初始化资源
注解@After 被修饰的方法会在测试方法之后被自动执行,常用于释放资源
反射框架设计的灵魂
反射:将类的各个部分封装成其他对象,这就是反射机制
好处:
可以在程序的运行过程中,操作这些对象
可以解耦,提高程序的可扩展性
获取class类对象的三种方式
...
Java-Stream流
Stream流用于解决已有集合类库既有的弊端,用来对集合和数组进行简化操作
当使用一个流的时候,通常包含三个基本步骤:获取一个数据源(source)->数据转换->执行操作获取想要的结果->每次转换原有Stream对象不改变,返回一个新的Stream对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道
12345678910111213141516171819202122/* * Stream是1.8之后出现的,关注的是做什么,而不是怎么做 * 过滤集合,只要张开头,长度为3的 * */public class TestStream { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("张无忌"); list.add("周芷若"); list.add("赵敏"); list.add("张强") ...
Java-函数式接口
函数式接口有且仅有一个抽象方法的接口,叫做函数式接口即适用于函数式编程场景的接口,也就是使用Lambda编程
12345格式: 修饰符 interface 接口名称{ public abstract 返回值类型 方法名称(可选参数信息); //其他非抽象方法内容,默认方法,静态方法,私有方法 }
语法糖:指使用更加方便,但是原理不变的代码语法,例如使用for-each语法,其实底层实现的原理仍然使迭代器,这便是”语法糖”,从应用层面来讲,Java的Lambda可以被当作使匿名内部类的”语法糖”,但使二者在原理上是不同的,匿名内部类会创建一个.class文件,而使用Lambda表达式就不会
12345678910/** 注解:检测所写代码是否符合要求,若不符合,则编译报错* @FunctionalInterface:检测接口是否为一个函数式接口* 是:编译成功* 否:编译失败(抽象方法的个数不为一个)* */@FunctionalInterfacepublic interface Function { pu ...
Java-网络编程
网络编程UDP
用户数据报协议(User Datagram Protocol),UDP是无连接协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接
耗资小,通信效率高,通常用于音频,视频,和普通数据的传输,因为这种情况偶尔丢失一两个数据包,也不会对接收结果产生太大的影响,但是使用UDP不保证数据的完整性.
特点:数据被限制在64KB以内,超出这个范围就不能发送了
TCP
传输控制协议(Transmission Control Protocol) TCP是面向连接的通信协议,传输数据之前.在发送端和接收端会建立逻辑连接,可靠无差错的数据传输
三次握手
第一次握手 客户端向服务器端发出连接请求,等待服务器确认
第二次握手 服务器端向客户端回送一个响应,通知客户端接收到了连接请求
第三次握手 客户端再次向服务器端发送确认信息,确认连接
服务器端
12345678910111213141516171819202122232425262728293031323334/**TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据,给客户端回写数据* 表示服务器的类:* j ...
Java-File、IO流
File类java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作,File是一个与系统无关的类,任何的操作系统都可以使用类中的方法,
记住三个词: file:文件 directory :文件夹/目录 path :路径
静态变量
static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
windows 为”;”
Linux 为”:”
static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 文件名称分隔符
windows 为”\“
Linux 为”/“
构造方法
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, Str ...
Java-Lambda表达式
lambda表达式
jdk8发布
12345678910111213141516171819202122232425262728293031/*lambda的标准格式 由三部分组成 一些参数 一个箭头 一段代码 (参数列表) -> {一些重写方法的代码};*/public static void main(String[] args) { //普通多线程方式 new Thread(new Runnable() { @Override public void run() { System.out.println("线程创建"); } }).start(); //使用Lambda表达式实现多线程 //大括号就是重写run方法的大括号 new Thread(() -> { System.out.println("lambda实现多线程"); ...