JAVA基础笔记整理
JAVA核心知识点
喵言喵语~
这个作者很懒,什么都没留下…
展开
-
Java基础29--JDBCTools&ThreadLocal类
Java基础29–JDBCTools为什么要工具类:每次·连接数据库有些操作都是必写的,会有很多重复或者相似的代码,将这些代码提出来一般都用连接池JDBCTools第一个版本public class JDBCToolsV1 { private static DataSource ds;//ds创建要么直接声明时初始化,要么static代码块里初始化,这里后面一种 static{ try { //静态代码块 Properties pro = new Properties();原创 2020-10-15 08:34:33 · 189 阅读 · 1 评论 -
Java基础29--JDBC获取自增长键值&批处理&处理事务、连接池
Java基础29–JDBCJDBC获取自增长键值在使用PreparedStatement添加数据时,获取自增长的键值。例如:购物时,结算时,会产生新订单,会返回新的订单,而一般订单编号都是自增长或随机生成的,保证这个订单编号的唯一。举例:在添加一个部门后,立刻返回这个部门的新的编号,而这个编号是自增长的。如何让PreparedStatement执行完insert的sql后,带回自增长的键值?(1)在创建这个PreparedStatement对象时,就要指明需要返回自增长的键值,否则mysql原创 2020-10-15 08:34:14 · 273 阅读 · 0 评论 -
Java基础28--JDBC概念、编写步骤、增删查改
Java基础28–JDBC概念JDBC:Java Database Connectivity Java连接数据库的技术。JDBC通常指的是SUN为各大数据库厂商Java程序如何连接和操作它这个DBMS软件指定的统一的标准,即公共接口。这个公共接口由各大数据库厂商提供实现类,这些实现类就构成了数据库驱动。Java程序员编写Java代码时,只要面向接口编程就可以了,运行时把驱动实现类加到项目中即可。Java程序员只要学习SUN公司提供的JDBC的公共接口就可以了。如果自己新开发了一款数据库,想要J原创 2020-10-13 21:29:01 · 218 阅读 · 0 评论 -
Java基础25--Stream的概述及使用
Java基础25–Stream的概述Java8中有两大最为重要的改变,一个是Lambda表达式,另一个是Stream API。Stream API(java.util.stream)把真正的函数式编程风格引入到Java中,这是目前为止对Java最好的补充,因为Stream API可以极大的提高java程序员的生产力,让程序员写出高效、干净、简洁的代码。StreamAPI:StreamAPI是用来处理数据,处理集合等容器中的数据,处理操作有:查询、筛选、删除、过滤、统计、映射等。希望能够用类似于SQ原创 2020-10-13 19:17:09 · 255 阅读 · 0 评论 -
Java基础28--mysql-用户、权限及mysql经典问题
Java基础28–mysql-用户、权限mysql环境下1、身份认证:(1)IP+用户名作为身份验证(用户名root在不同的IP登录,识别为不同的用户) 例如:root@localhost:只允许在本机使用root用户登录(root用户名,localhost主机名) root@%:允许在任意机器上使用root用户登录 root@192.168.11.56:只允许在192.168.11.56主机上使用root用户登录 chailinyan@%:允许在任意机器上使用chailin原创 2020-10-13 19:16:37 · 389 阅读 · 0 评论 -
Java基础28--mysql-事务对DDL无效
Java基础28–mysql-事务对DDL无效事务对DDL无效SQL:分三类1、DDL2、DML3、DCL事务的commit等是属于DCL事务回滚和提交只对insert, update,delete有效。对create,drop等DDL语句是无效的。(事务对数据的结构(表结构)无效,事务只对数据有效)delete from 【数据库名.]表名称 【where 条件】;如果没有where条件,表示删除整张表的数据;事务可以回滚若是用truncate会发现事务不可以回滚tru原创 2020-10-13 19:16:20 · 565 阅读 · 0 评论 -
Java基础28--mysql-事物的概述与事务的开启、提交、回滚
Java基础28–mysql-事物的概述与事务的开启、提交、回滚package com.atguigu.thread;public class TestThread { public static void main(String[] args) { Ticket t1 = new Ticket("窗口一"); Ticket t2 = new Ticket("窗口二"); t1.start(); t2.start(); }}class Ticket extends Thr原创 2020-10-13 19:16:03 · 553 阅读 · 0 评论 -
Java基础28--mysql-子查询
Java基础28–mysql-子查询原创 2020-10-13 19:15:41 · 275 阅读 · 0 评论 -
Java基础27--mysql-select的6大子句
Java基础27–mysql-select的6大子句select语句有6大子句:(1)from子句(2)where子句(3)group by子句(4)having子句(5)order by子句(6)limit子句强调:每一个select的6大子句的顺序是(1)-(6)(1)from子句,后面跟表,视图,多行多列的二维表的结构from意思从哪里筛选数据(2)where子句:后面跟条件where意思取哪几行,要哪些行(3)group by:后面跟字段group by意思是分组s原创 2020-10-13 19:15:23 · 1217 阅读 · 0 评论 -
Java基础27--mysql-联合查询7种结果和联合查询分类
Java基础27–mysql-联合查询7种结果和联合查询分类(多张表查询)关联查询七种结果:(1)A∩B(2)A(3)A - A∩B(4)B(5)B - A∩B(6)A ∪ B(7)A ∪B- A∩B 或者 (A - A∩B) ∪ (B - A∩B)如何实现?(1)内连接(2)外连接:左外连接、右外连接、全外连接(mysql使用union代替全外连接)1、内连接:inner join(1)A∩B2、外连接(1)左外连:left join(2)A(3)A原创 2020-10-13 19:15:05 · 494 阅读 · 0 评论 -
Java基础27--mysql-分组函数
Java基础27–mysql-分组函数什么是分组函数分组函数作用于一组数据,并对一组数据返回一个值。组函数类型AVG()SUM()MAX()MIN()**COUNT() **可以对数值型数据使用AVG 和 SUM 函数。SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)FROM employeesWHERE job_id LIKE '%REP%';可以对任意数据类型的数据使用 MIN 和 MAX原创 2020-10-13 19:14:47 · 213 阅读 · 0 评论 -
Java基础27--mysql-单行函数
Java基础27–视频—可视化工具原创 2020-10-13 19:14:27 · 251 阅读 · 0 评论 -
Java基础27--Mysql-约束与索引
Java基础27–Mysql–约束与索引关系型数据库设计规则遵循ER模型和三范式 (Java中有时也叫O-R,Object,对象关系)E entity 代表实体的意思 对应到数据库当中的一张表R relationship 代表关系的意思三范式:1、列不能拆分(越细冗余程度越低) 2、唯一标识 (表中不能出现两条一摸一样的记录) 3、关系引用主键(多个表之间引用)具体体现将数据放到表中,表再放到库中。一个数据库中可以有多个表,每个表都有原创 2020-10-10 22:13:44 · 214 阅读 · 0 评论 -
Java基础26--sql规范&sql的分类&sql的分类
Java基础26–Mysqlsql规范SQL语句的规范:1、mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写show databases;SHOW DATABASES;至于表中的数据是否区分大小写,和字符编码,和数据类型,和校对规则有关。ci:不区分大小写 (case ignore) mysql一般默认cics:区分大小写bin:最严格,区分大小写,以二进制值存储2、在sql语句中的值,除了数值类型(整数、小数),其他的类型,都使用’ ’ (单引号)引原创 2020-10-10 22:13:27 · 420 阅读 · 0 评论 -
Java基础26--Mysql的客户端的连接mysql服务&mysql的数据类型&mysql运算符
Java基础26–Mysql的客户端的连接mysql服务mysql数据库管理软件:C/S(1)服务器必须先启动(安装时启动)可以查看是否启动(2)客户端连接服务器端一、连接的方式一:用命令行客户端连接服务器mysql -hlocalhost -P3306 -uroot -p回车Enter password:密码说明:(1)如果你连接的是localhost本地的mysql,那么可以省略-hlocalhost(2)如果你连接的mysql服务的端口号就是默认的3306,那么可以省略-P原创 2020-10-10 22:13:08 · 427 阅读 · 0 评论 -
Java基础26--Mysql概述&安装卸载
Java基础26–Mysql概述在运行Java项目时,从键盘输入的数据存储在内存里,不管是数组、集合等都是存在内存里,当程序结束以后数据就会消失,被清空掉。为了让数据不消失,永久保存,下次再运行时还能使用,要数据持久化为什么使用数据库1:持久化(persistence):永久保存,把数据保存到可掉电式存储设备中以供之后使用。持久化的大多数时候是将内存中的数据存储在数据库中,当然也可以存储在磁盘文件、XML数据文件中。2:方便管理数据(例如:快速的检索等):存储在普通的文件中,对文件的读取,再数据的原创 2020-10-10 22:12:40 · 305 阅读 · 0 评论 -
Java基础25--方法引用和构造器引用
Java基础25–方法引用和构造器引用lambda表达式是用来简化匿名内部类的一种函数式编程的语法。只有SAM接口才能使用lambda表达式方法引用和构造器引用是用来简化lambda表达式。只有当lambda表达式满足一些特殊情况时,才能使用方法引用和构造器引用。方法引用条件:(1)当Lambda体的实现是通过调用一个现有的方法来完成功能时(2)要求函数式接口的抽象方法返回值类型与该方法的返回值类型要对应。(3)要求函数式接口的抽象方法的形参列表与该方法的形参列表对应或者要求原创 2020-10-08 21:02:41 · 208 阅读 · 0 评论 -
Java基础25--自定义函数式接口及Lambda表达式的代码是怎样运行的
Java基础25–自定义函数式接口及Lambda表达式的代码是怎样运行的自定义函数式接口自定义函数式接口:1、声明一个接口,只能包含一个抽象方法2、给这个接口加@FunctionalInterface例1://1、定义一个函数式接口IntCalc,其中抽象方法int cal(int a , int b),使用注解@FunctionalInterface@FunctionalInterfaceinterface IntCalc{ int cal(int a , int b);} //原创 2020-10-08 21:02:22 · 1262 阅读 · 0 评论 -
Java基础25--Lambda表达式的语法&使用演示
Java基础25–Lambda表达式的语法Lambda表达式的语法Lambda表达式是给函数式接口(SAM接口)的变量或形参赋值的表达式。Lambda表达式替代了原来使用匿名内部类的对象给函数式接口(SAM接口)的变量或形参赋值的形式。匿名内部类:实现了这个接口,重写了接口的抽象方法,同时创建了对象。Lambda表达式也要实现这个接口,重写接口的抽象方法,隐含的创建了对象。既然Lambda表达式是SAM接口的变量或形参赋值的,那么实现接口这部分语法可以省略,SAM接口的抽象方法只有一个,因此方法原创 2020-10-08 21:01:29 · 222 阅读 · 0 评论 -
Java基础25--Java8新增的函数式接口
Java基础25–Java8新增的函数式接口Java8新增的函数式接口的介绍Java8增加了大量的函数式接口给我们使用,而且基本上能满足常规的所有情况。这些函数式接口集中在java.util.function包中。四大类:(1)消费型接口它的抽象方法有一个特征: 有参无返回值 例如:void accept(T t)(2)供给型接口它的抽象方法有一个特征: 无参有返回值 例如:T get()(3)判断型接口它的抽象方法有一个特征: 有参有返回值,但是返回值类型是boo原创 2020-10-08 21:01:08 · 242 阅读 · 0 评论 -
Java基础25--Lambda表达式入门
Java基础25–Lambda表达式 Java8于2014年3月14日发布,可以看成是自Java5以来最具革命性的版本。虽然有很多新的版本,但企业里还是用Java8比较多 Java5新特性: 1:可变参数... 2:枚举 3:注解 4:泛型 5:foreach ....... Java8新特性: 1:接口:默认方法和静态方法 2:日期时间API 3:Lambda原创 2020-10-08 21:00:08 · 149 阅读 · 0 评论 -
Java基础24--代理设计模式
Java基础24–代理设计模式原创 2020-10-08 14:02:01 · 112 阅读 · 0 评论 -
Java基础24--工厂设计模式
Java基础24–工厂设计模式(了解)设计模式:1、模板设计模式(了解):抽象类2、单例设计模式(重点):多线程时3、装饰者设计模式(IO流体系结构就体现了)4、迭代器设计模式(集合,在集合的内部设计迭代器类型)5、工厂设计模式(了解)6、代理设计模式(了解)一、工厂设计模式:为了解耦合,把对象的创建者与对象的使用者分开。生活中:批量生产产品Java中:批量生产对象生活中:最早没有工厂,自给自足,男耕女织作坊大工厂Java:没有工厂,需要对象,自己new分工:把生产(创建原创 2020-10-07 20:53:10 · 120 阅读 · 0 评论 -
Java基础24--反射的应用6:动态的读取子类的泛型父类的泛型实参
Java基础24–反射的应用6反射的应用6:动态的读取子类的泛型父类的泛型实参6、在运行时读取某个类的泛型实参步骤:(1)获取Class对象(2)获取泛型父类Type type = clazz.getGenericSuperclass();ParameterizedType type = (ParameterizedType) clazz.getGenericSuperclass();(3)获取类型实参Type:代表Java的所有类型(1)Class:代表的是普通的类型,没有泛型信息的原创 2020-10-07 19:09:50 · 152 阅读 · 0 评论 -
Java基础24--反射的应用4&5:动态的调用任意对象的任意方法&动态的读取注解
Java基础24–反射的应用4&5反射的应用4:动态的调用任意对象的任意方法4、在运行时可以调用任意对象的任意方法 Method: invoke(对象,实参列表) 步骤:(1)获取Class对象(2)得到方法Method对象 @Test public void test01()throws Exception{ //(1)获取Class对象:四种方式之一 Class clazz = Class.forName("com.atguigu.ext.demo.AtGuig原创 2020-10-07 19:09:30 · 232 阅读 · 0 评论 -
Java基础24--反射的应用2&3:动态创建对象&动态的设置或获取属性的值
Java基础24–反射的应用2反射的应用2:动态创建对象2:在运行时能够创建任意引用数据类型的对象**方式一:使用Class对象直接new对象步骤:(1)获取某个类型的Class对象(2)通过Class对象来创建这个Class所代表的类型的对象@Test public void test01() throws ClassNotFoundException, InstantiationException, IllegalAccessException{ //(1)获取某个类型的Clas原创 2020-10-07 19:06:26 · 195 阅读 · 0 评论 -
Java基础24--反射的应用1:获取类的详细信息
Java基础24–反射的应用反射的应用:获取类的详细信息物理:光的反射、声音的反射光的反射,例如;镜面反射反射:原来:声明类 --》 创建对象现在反射: 获取Class对象 --> 创建对象获取类的详细信息Class对象比喻为镜子中的那个影像。反射的作用: 运行时(区别与,编译时,状态不一样)1、在运行时能够获取任意类型的详细信息2、在运行时能够创建任意引用数据类型的对象3、在运行时可以为任意对象的任意属性赋值,或者获取任意对象的任意属性的值4、在运行时可以调用任意对象原创 2020-10-07 19:05:50 · 130 阅读 · 0 评论 -
Java基础24--类加载过程概述
Java基础24–原创 2020-10-06 20:38:04 · 163 阅读 · 0 评论 -
Java基础23--网络协议概述
Java基础23–网络协议概述网路通信的三个要素:(1)地址:IP地址,定位到一台设备(2)端口号定位到一个应用程序(进程)(3)网络协议对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。通俗的讲:保证如何准确的到达对方那里,能够正确的解析出数据出来。OSI(Open System Interconnection)开放系统互连参考模型。它把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层。物理层:建立、维护、断开物理连接数据链路层:建立逻辑原创 2020-10-06 20:37:32 · 283 阅读 · 1 评论 -
Java基础23--NIO的工具类
Java基础23–NIO的工具类io:阻塞式IOnio: JDK1.4–>JDK1.7非阻塞式的IO,速度效率更高nio–APIPath(接口):类似于File,用路径名表示一个目录或文件Paths:工具类,用来创建Path接口的对象@Test public void test01(){ Path file = Paths.get("testIO", "java" ,"1.txt");//避免/ int count = file.getNameCount();//路径原创 2020-10-06 20:37:15 · 256 阅读 · 0 评论 -
Java基础23--JDK1.7新增的try...catch
Java基础23–JDK1.7新增的try…catchJDK1.7中新增了一种try…catch处理的方式,称为try…with…resource,它是为资源关闭专门设计的try…catch的语法try(需要关闭的资源对象){可能发生异常的逻辑代码}catch(异常类型 e){异常处理代码}catch(异常类型 e){异常处理代码}凡是在try()中声明的资源对象,都会自动关闭,无论是否发生异常。案例:public class test { public static void原创 2020-10-06 20:36:49 · 482 阅读 · 0 评论 -
Java基础23--PrintStream和PrintWriter
Java基础23–打印流:PrintStream和PrintWriter打印流:输出流(1)PrintStream:经典代表:System.outSysetm.err@Test public void test01(){ PrintStream out = System.out; out.println("hello"); // out.print();//print没有无参方法 out.println(); }new PrintStream(文件名)new Pri原创 2020-10-06 20:36:26 · 376 阅读 · 0 评论 -
Java基础23--序列化接口:Serializable和Externalizable
Java基础23–序列化接口:Serializable和Externalizable复习:File的API序列化接口1、java.io.Serializable接口:类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。如果实现Serializable接口,对象如何序列化,各个属性序列化的顺序是什么,都是默认的,程序员无法指定,原创 2020-10-06 20:35:54 · 229 阅读 · 0 评论 -
Java基础22--对象序列化和反序列化
Java基础22–对象的输出与输入对象序列化和反序列化序列:排队、把对象转为字节序列,序列化的过程ObjectOutputStream:用于输出对象,把对象转成字节数据输出,对象的输出过程称为序列化。ObjectOutputStream比OutputStream多了很多方法,其中一个是 writeObject(obj)只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从原创 2020-09-27 21:19:16 · 1136 阅读 · 0 评论 -
Java基础22-【Buffered缓冲流&DataInputStream&DataOutputStream】
Java基础22-Buffered缓冲IO流Buffered缓冲IO流缓冲IO流:是处理流,负责在其他IO流基础上增加缓冲功能。提高效率BufferedReader —> ReaderBufferedWriter —> WriterBufferedInputStream —> InputStreamBufferedOutputStream —> OutputStreamBufferedReader除了继承了Reader的那些读的方法,还增加了一个:`String re原创 2020-09-27 19:42:04 · 596 阅读 · 0 评论 -
Java基础22--用文件字节流读写文件:FileInputStream和FileOutputStream
Java基础22–11用FileReader和FileWriter复制纯文本文件原创 2020-09-27 15:28:05 · 414 阅读 · 0 评论 -
Java基础22--Scanner的next()和nextLine()的区别
Java基础22–Scanner的next()和nextLine()的区别Scanner:(1)next():遇到空白符就认为输入结束(2)nextLine():遇到换行符认为输入结束public class TestNextLine { public static void main(String[] args) { Scanner input = new Scanner(System.in); String str = input.nextLine(); System.out.pr原创 2020-09-27 11:48:03 · 139 阅读 · 0 评论 -
Java基础22--IO概述
Java基础22–IO概述1、IO:I:input,输入O:output:输出(1)如果对于File对象来说,输入和输出操作只能针对文件,不能针对目录。(2)IO操作不仅仅是针对文件,它可以从网络中输入和输出…(3)输入:输出:参照物是当前程序例如:把数据写到文件中:输出操作 把数据从程序中输出到文件从文件读取数据: 输入操作例如:服务器端发送数据给客户端:对于服务器来说是输出对于客户端来说是输入2、IO的分类(1)方向输入流和输出流(2)操作数据的单位字节流和字符原创 2020-09-27 11:33:42 · 147 阅读 · 0 评论 -
Java基础22-文件过滤器FileFilter
Java基础22-文件过滤器FileFilterFileFilter:是一个接口,不能直接初始化对象,只能弄成内部类,实现接口的方法文件或目录过滤器File类中File[] listFiles(FileFilter f)@Test public void test01(){ //列出D:\atguigu\javaee\JavaSE20190513\code\day01_code目录下的所有的.java文件 File dir = new File("D:/atguigu/javaee/J原创 2020-09-27 10:19:56 · 354 阅读 · 0 评论 -
Java基础22--递归
Java基础22–递归例题1:package com.atguigu.test02;import org.junit.Test;public class TestDiGui { /* * 4.通项公式如下:f(n)=n + (n-1) + (n-2) + .... + 1, * 其中n是大于等于5并且小于10000的整数,例如:f(5) = 5 + 4 + 3 + 2 + 1, * f(10) = 10 + 9 + 8 + 7+ 6 + 5 + 4 + 3 + 2 + 1, *原创 2020-09-27 10:14:21 · 218 阅读 · 0 评论