![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java✈✈✈
风有点大
good good study!!!
展开
-
JDBC-Spring JDBC之JDBCTemplate对象详解
1.基础概念Spring JDBC * Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发 * 步骤: 1. 导入jar包 2. 创建JdbcTemplate对象。依赖于数据源DataSource * JdbcTemplate template = new JdbcTemplate(ds); 3. 调用JdbcTemplate的方法来完成CRUD的操作 * update():执行DML语句。增、删、改语句 * queryFor原创 2020-07-29 11:24:42 · 448 阅读 · 0 评论 -
JDBC-Druid数据库连接池实现技术详解
基本概括------阿里巴巴提供Druid:数据库连接池实现技术,由阿里巴巴提供的 1. 步骤: 1. 导入jar包 druid-1.0.9.jar 2. 定义配置文件: * 是properties形式的 * 可以叫任意名称,可以放在任意目录下 3. 加载配置文件。Properties 4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory 5. 获取连接:getConnection * 代码: //3.加原创 2020-07-28 21:18:28 · 649 阅读 · 0 评论 -
JDBC-C3P0数据库连接池详解
C3P0:数据库连接池技术 * 步骤: 1. 导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar , * 不要忘记导入数据库驱动jar包 2. 定义配置文件: * 名称: c3p0.properties 或者 c3p0-config.xml * 路径:直接将文件放在src目录下即可。 3. 创建核心对象 数据库连接池对象 ComboPooledDataSource 4. 获取连接: g原创 2020-07-28 15:40:05 · 245 阅读 · 0 评论 -
JDBC-事务的控制详解
JDBC控制事务: 1. 事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败。 2. 操作: 1. 开启事务 2. 提交事务 3. 回滚事务 3. 使用Connection对象来管理事务 * 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务 * 在执行sql之前开启事务 * 提交事务:commit() * 当所有sql都执行完提交事务 * 回原创 2020-07-27 17:22:06 · 536 阅读 · 0 评论 -
JDBC-PreparedStatement类详解(解决SQL注入)
PreparedStatement:执行sql的对象 1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1. 输入用户随便,输入密码:a' or 'a' = 'a 2. sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a' 2. 解决sql注入问题:使用PreparedStatement对象来解决 3. 预编译的SQ原创 2020-07-26 23:28:20 · 454 阅读 · 0 评论 -
JDBC-使用JDBCUtils工具类实现用户登陆案例
需求:1. 通过键盘录入用户名和密码2. 判断用户是否登录成功* select * from user where username = “” and password = “”;* 如果这个sql有查询结果,则成功,反之,则失败1、创建数据库CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(32), PASSWORD VARCHAR(32) );..原创 2020-07-26 22:17:26 · 379 阅读 · 2 评论 -
JDBC-ResultSet类和JDBCUtils工具类的详解及实现【全网最全】
ResultSet:结果集对象,封装查询结果 * boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true * getXxx(参数):获取数据 * Xxx:代表数据类型 如: int getInt() , String getString() * 参数: 1. int:代表列的编号,从1开始 如: getString(1) 2. String:代表列名称。 如: ge原创 2020-07-26 20:36:34 · 753 阅读 · 1 评论 -
JDBC-DriverManager、Connection、Statement类的详解
1. DriverManager:驱动管理对象 * 功能: 1. 注册驱动:告诉程序该使用哪一个数据库驱动jar static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。 写代码使用: Class.forName("com.mysql.jdbc.Driver"); 通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块 static {原创 2020-07-26 12:29:15 · 538 阅读 · 0 评论 -
JDBC怎么学,这样学!!!
概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库* JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。快速入门:步骤:导入驱动jar包 mysql-connector-java-5.1.37-bin.jar1.复制mysql-connector-java-5.1...原创 2020-07-26 09:45:45 · 276 阅读 · 1 评论 -
Java白盒测试、反射、注解【最全总结12764字】
主要内容1. Junit单元测试2. 反射3. 注解Junit单元测试:* 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 2. 白盒测试:需要写代码的。关注程序具体的执行流程。* Junit使用:白盒测试 * 步骤: 1. 定义一个测试类(测试用例) * 建议: * 测试类名:被测试的类名Test CalculatorTest * 包名:xxx.xxx.xx.test cn.itcast.test 2. 定义测试方原创 2020-07-24 18:44:28 · 257 阅读 · 0 评论 -
Java中Stream流详解 和 练习
说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。1.Stream流和集合的对比需求:1. 首先筛选所有姓张的人;2. 然后筛选名字有三个字的人;3. 最后进行对结果进行打印输出。import java.util.ArrayList;import java.util.List;/* 使用传统的方式,遍历集合,对集合中的原创 2020-07-23 11:20:39 · 620 阅读 · 0 评论 -
Java常用函数式接口Supplier、Consumer、Predicate、Function详解
1.Supplierimport java.util.function.Supplier;/* 常用的函数式接口 java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。 Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据 */public class Demo01Supplier { //原创 2020-07-22 18:23:04 · 2062 阅读 · 0 评论 -
JDK 8 函数式编程详解
https://www.cnblogs.com/snowInPluto/p/5981400.html转载 2020-07-22 12:08:08 · 158 阅读 · 0 评论 -
Java函数式接口练习二则
1.函数是接口作为方法参数/* 例如java.lang.Runnable接口就是一个函数式接口, 假设有一个startThread方法使用该接口作为参数,那么就可以使用Lambda进行传参。 这种情况其实和Thread类的构造方法参数为Runnable没有本质区别。 */public class Demo01Runnable { //定义一个方法startThread,方法的参数使用函数式接口Runnable public static void startTh原创 2020-07-22 11:17:27 · 144 阅读 · 0 评论 -
Java函数式接口之Lambda优化日志案例
日志案例 发现以下代码存在的一些性能浪费的问题 调用showLog方法,传递的第二个参数是一个拼接后的字符串 先把字符串拼接好,然后在调用showLog方法 showLog方法中如果传递的日志等级不是1级 那么就不会是如此拼接后的字符串 所以感觉字符串就白拼接了,存在了浪费public class Demo01Logger { //定义一个根据日志的级别,显示日志信息的方法 public static void showLog(i...原创 2020-07-22 10:53:04 · 247 阅读 · 0 评论 -
Java函数式接口及使用
定义函数式接口:有且只有一个抽象方法的接口,称之为函数式接口当然接口中可以包含其他的方法(默认,静态,私有)使用定义一个接口/* @FunctionalInterface注解 作用:可以检测接口是否是一个函数式接口 是:编译成功 否:编译失败(接口中没有抽象方法抽象方法的个数多余1个) */@FunctionalInterfacepublic interface MyFunctionalInterface { //定义一个抽象方法原创 2020-07-22 10:08:38 · 377 阅读 · 0 评论 -
Java网络编程B/S服务器案例分析
需求在项目目录下有一个静态网页,将他在浏览器上浏览代码:package BSTCP;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class TCPServer { public static void main(String[] args) throws IOException {原创 2020-07-21 23:54:36 · 310 阅读 · 0 评论 -
Java网络编程实现文件上传和下载案例详解
客户端:文件上传案例的客户端:读取本地文件,上传到服务器,读取服务器回写的数据明确:数据源:c:\1.jpg目的地:服务器实现步骤:1.创建一个本地字节输入流FileInputStream对象,构造方法中绑定要读取的数据源2.创建一个客户端Socket对象,构造方法中绑定服务器的IP地址和端口号3.使用Socket中的方法getOutputStream,获取网络字节输出流OutputStream对象4.使用本地字节输入流FileInputStream对象中的方法read,读取本地文件原创 2020-07-21 22:17:01 · 862 阅读 · 0 评论 -
Java网络编程TCP通信之Exception in thread “main“ java.net.SocketException: Connection reset解决方案
错误信息:客户端程序不能停止, 人为停止以后打印Exception in thread "main" java.net.SocketException: Connection reset Exception in thread "main" java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:210) at java原创 2020-07-21 21:19:45 · 9957 阅读 · 5 评论 -
Java网络编程之TCP通信程序
1. TCP通信概述TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。两端通信时步骤:服务端程序,需要事先启动,等待客户端的连接。客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。在Java中,提供了两个类用于实现TCP通信程序:客户端:java.net.Socket 类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。服务端:java.net.ServerSocke原创 2020-07-21 18:28:25 · 217 阅读 · 0 评论 -
Java打印流PrintStream类详解
PrintStream相关方法java.io.PrintStream:打印流 PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。 PrintStream特点: 1.只负责数据的输出,不负责数据的读取 2.与其他输出流不同,PrintStream 永远不会抛出 IOException 3.有特有的方法,print,println void print(任意类型的值)原创 2020-07-21 09:11:21 · 2046 阅读 · 0 评论 -
Java序列化集合练习
** 练习:序列化集合**练习:序列化集合 当我们想在文件中保存多个对象的时候 可以把多个对象存储到一个集合中 对集合进序列化和反序列化 分析: 1.定义一个存储Person对象的ArrayList集合 2.往ArrayList集合中存储Person对象 3.创建一个序列化流ObjectOutputStream对象 4.使用ObjectOutputStream对象中的方法writeObj原创 2020-07-21 00:27:28 · 152 阅读 · 0 评论 -
Java序列化InvalidClassException异常原理和解决方案
当JVM反序列化对象时,能找到class文件,但是class文件在序列化对象之后发生了修改,那么反序列化操作也会失败,抛出一个InvalidClassException异常。发生这个异常的原因如下:该类的序列版本号与从流中读取的类描述符的版本号不匹配该类包含未知数据类型该类没有可访问的无参数构造方法Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。public class Employ原创 2020-07-20 23:50:55 · 730 阅读 · 0 评论 -
Java序列化ObjectOutputStream和反序列化ObjectInputStream详解(及关键字transient)
什么是序列化???Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化:ObjectOutputStream类 java.io.ObjectOutputStream extends OutputStre原创 2020-07-20 23:45:20 · 429 阅读 · 0 评论 -
Java转换流OutputStreamWriter和InputStreamReader详解
编码引出的问题FileReader可以读取IDE默认编码格式(UTF-8)的文件FileReader读取系统默认编码(中文GBK)会产生乱码���import java.io.FileReader; import java.io.IOException;public class Demo01FileReader { public static void main(String[] args) throws IOException { FileReader fr原创 2020-07-20 21:23:35 · 721 阅读 · 0 评论 -
Java对文本内容进行排序
练习 对文本的内容进行排序 按照(1,2,3....)顺序文本《出师表》: 3.侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之, 然后施行,必得裨补阙漏,有所广益。 8.愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下 亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏,臣不胜受恩感激。 4.将军向宠,性行淑均,晓畅军事,试用之于昔日,先帝称之原创 2020-07-20 18:13:36 · 1949 阅读 · 4 评论 -
Java字符缓冲区BufferedWriter和BufferedReader详解
1.BufferedWriterjava.io.BufferedWriter extends Writer BufferedWriter:字符缓冲输出流 继承自父类的共性成员方法: - void write(int c) 写入单个字符。 - void write(char[] cbuf)写入字符数组。 - abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组原创 2020-07-20 17:57:57 · 509 阅读 · 0 评论 -
Java字节缓冲区实现对文件的复制
文件复制练习:一读一写明确: 数据源: c:\1.jpg 数据的目的地: d:\1.jpg文件复制的步骤: 1.创建字节缓冲输入流对象,构造方法中传递字节输入流 2.创建字节缓冲输出流对象,构造方法中传递字节输出流 3..原创 2020-07-20 16:47:44 · 211 阅读 · 0 评论 -
Java字节缓冲区BufferedInputString和BufferedOutputString详解
1.BufferedOutputStringjava.io.BufferedOutputStream extends OutputStreamBufferedOutputStream:字节缓冲输出流继承自父类的共性成员方法: - public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 -原创 2020-07-20 16:33:09 · 483 阅读 · 0 评论 -
Java中Properties类方法详解
1.Properties类是什么?java.util.Properties集合 extends Hashtable<k,v> implements Map<k,v>Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。Properties集合是一个唯一和IO流相结合的集合 可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入原创 2020-07-18 21:52:53 · 1717 阅读 · 0 评论 -
Java之IO流异常处理
**jdk1.7之前** 使用try catch finally处理/* 在jdk1.7之前使用try catch finally 处理流中的异常 格式: try{ 可能会产出异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会指定的代码 资源释放 } */import java.io.原创 2020-07-18 20:56:07 · 517 阅读 · 0 评论 -
Java字符流之初识Reader和Writer
由于不同编码的原因: 使用字节流读取中文文件 1个中文 GBK:占用两个字节 UTF-8:占用3个字节所以在使用字节流读取文件的时候容易产生误码,因原创 2020-07-18 20:32:09 · 277 阅读 · 0 评论 -
Java字节流实现对文件的复制
/* 文件复制练习:一读一写 明确: 数据源: c:\\1.jpg 数据的目的地: d:\\1.jpg 文件复制的步骤: 1.创建一个字节输入流对象,构造方法中绑定要读取的数据源 2.创建一个字节输出流对象,构造方法中绑定要写入的目的地 3.使用字节输入流对象中的方法read读取文件 4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中 5.释放资.原创 2020-07-18 18:17:13 · 591 阅读 · 0 评论 -
Java-初识InputStream
java.io.InputStream:字节输入流此抽象类是表示字节输入流的所有类的超类。读取单个字节流/* java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类。 定义了所有子类共性的方法: int read()从输入流中读取数据的下一个字节。 int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 void close() 关闭此输入流原创 2020-07-18 17:42:14 · 300 阅读 · 0 评论 -
Java-初识OutputStream
Io流的概念和分类输出单个字节流/* java.io.OutputStream:字节输出流 此抽象类是表示输出字节流的所有类的超类。 定义了一些子类共性的成员方法: - public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 - public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。 - public void write(byte[] b):将 b.l原创 2020-07-18 16:46:13 · 281 阅读 · 0 评论 -
Java文件过滤器Filter的用法
需求: 遍历c:\abc文件夹,及abc文件夹的子文件夹 只要.java结尾的文件 c:\abc c:\abc\abc.txt c:\abc\abc.java原创 2020-07-17 18:29:06 · 1159 阅读 · 0 评论 -
Java递归打印文件
练习: 递归打印多级目录需求: 遍历c:\abc文件夹,及abc文件夹的子文件夹 c:\abc c:\abc\abc.txt c:\abc\abc.java原创 2020-07-17 11:47:14 · 215 阅读 · 0 评论 -
java中File类的常见方法和使用-2
File中判断功能的方法package com.itheima.demo01.File;import java.io.File;/* File类判断功能的方法 - public boolean exists() :此File表示的文件或目录是否实际存在。 - public boolean isDirectory() :此File表示的是否为目录。 - public boolean isFile() :此File表示的是否为文件。 */pu原创 2020-07-16 20:24:17 · 136 阅读 · 0 评论 -
java中File类的常见方法和使用-1
1.静态方法package com.itheima.demo01.File;import java.io.File;/* java.io.File类 文件和目录路径名的抽象表示形式。 java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作 我们可以使用File类的方法 创建一个文件/文件夹 删除文件/文件夹 获取文件/文件夹 判断文件/文件夹是否存在原创 2020-07-16 18:39:47 · 416 阅读 · 0 评论 -
java中使用Lambda对数组排序
java中使用Lambda对数组排序这里使用ArrayList数组对Person对象进行排序。我们先创建一个Person对象昂:package Lambda2;public class Person { private String name;//姓名 private int age;//年龄 @Override public String toString() { return "Person{" + "name=原创 2020-07-14 21:21:16 · 2182 阅读 · 0 评论