02 查询与函数
SQL 的分类DDL 数据定义语言。CREATE \ ALTER \ DROP \ RENAME \ TRUNCATE
DML 数据操作语言。INSERT \ DELETE \ UPDATE \ SELECT
DCL 数据控制语言。COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
SQL 语言的基本规则
SQL 可以写在一行或者多行,为了提高可读性,各子句子分行写,必要时使用缩进
每条命令以 ; 或者 \g 或者 \G 结束
关键字不能被缩写也不能被分行
关于标点符号
必须保证所有 ()、单引号、双引号成对出现
必须使用英文状态下的输入方式
字符串和日期类型的数据可以使用单引号表示
列的别名,尽量使用双引号,而且不建议省略as
SQL 大小写规范
数据库名、表名、表别名、字段名、字段别名等使用小写
SQL 关键字、函数名、绑定变量等使用大写
MySQL三种注释方式12345678-- 单行注释,使用--单行注释时要加空格# 单行注释/* 多行注释 多行注释*/
导入数据在命令行窗口登录 mysql,执行如下命令
1source d: ...
01 安装和配置
MySql 安装包下载官网:https://www.mysql.com/
我们点击官网进入后点击 download
点击后页面往下滑选择
选择 Community Server
接着点击
点击下载后需要登录,我们选择不登录下载
选择一个下载位置点击下载即可
MySql 安装和配置首先找到我们下载好的安装包双击打开
系统默认选中默认安装,我们现在采用自定义安装,选择 Custom
点击 next 后我们看到的左侧列出的是产品列表,我们展开 MySQL Servers 选择最里面的选项,然后点击箭头移动到右侧
移动到右侧后,我们在右侧栏选中 MySQL Server 8.2.27 - X64,选中后下方会出现 Advanced Options
我们点击 Advanced Options 会出现一个弹框,用来设置 MySQL 软件和数据库文件的安装目录
修改完后点击OK,系统会弹出一个警告框,我们点击OK关闭即可,之后点击nezxt
这里我们可以看到安装的版本和路径,点击next
系统警告,点击 yes
点击Execute
完成之后点击 next 出现如下界面 ...
Base64,Blob,File 之间互转
Base64转Blob1234567891011121314base64ToBlob(base64Data) { let arr = base64Data.split(','), fileType = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), l = bstr.length, u8Arr = new Uint8Array(l) while (l--) { u8Arr[l] = bstr.charCodeAt(l) } return new Blob([u8Arr], { type: fileType, })}
Blob转File123blobToFile(blob, fileName) { return new File([blob], `${fileName}.png`)},
Blob转临 ...
19Java9,10,11等新特性
模块化系统在Java9版本中,推出了模块化概念。可以让我们编写代码时分模块来开发,避免代码逻辑变得复杂。提高系统的安全性和可维护性。
首先新建两个 Module,分别右键 src 新建 module-info.java 文件
新建完成结构如下
我们将 main2 模块下的 Person 导出,在 main 模块中引入。编写 main2 模块下的 module-infpo.java 文件如下
123module main2 { exports com.songzx.java9test;}
然后在main 模块的 module-infpo.java 文件中导入 main2
123module main { requires main2;}
导入后我们就可以在 main 模块中使用另外一个模块的自定义类
1234567891011121314package com.songzx.java;import com.songzx.java9test.Person;/** * @author songzx * @create 2022-02 ...
18动态代理和Java8新特性
代理设计模式原理使用一个代理将对象包装起来,然后用该代理对代替原始对象。任何对原始对象的调用都要通过代理对象。代理对象决定是否以及何时调用转到原始对象上。
动态代理是指客户通过代理类来调用其他对象上的方法,并且是在程序运行时根据需要来动态创建目标类的代理对象。
动态代理的使用场景:
调试
远程方法调用
动态代理相较于静态代理的优点:
抽象角色中(接口)声明的所有方法都被转移到调用处理器集中的方法中处理,这样我们可以更加灵活和统一的处理众多方法。
静态代理方法12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package com.songzx.proxy;/** * @author songzhengxiang * @create 2022-01-18 21:44 */public class StaticProxyTest { // 静态代理举例 public static void main(String[] args) ...
17Java反射
Java反射机制概述
Reflection(反射)是被视为动态语言的关键,反射机智允许程序在执行期间通过 ReflectionAPI 取得任何类内部信息,并能直接操作任意对象的内部属性及方法
加载完类之后,在堆内部的方法区中就产生了一个Class类型的对象,一个类只有个一个Class对象,这个对象就包含了完整类的结构信息。我们通过这个对象看到类的内部结构。这个对象就像一个镜子,透过镜子看到类的内部结构,所以形象的称为“反射”
两种方式:
正常方式:引入需要的包类名称 -> 通过new实例化 -> 取得完整的实例
反射方式:实例化对象 -> getClass 方法 -> 得到完整的包类名称
Java反射机制提供的功能
在运行时判断任意一个对象的所属类
在运行时判断任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时获取泛型信息
在运行时调用任意一个对象的成员变量和方法
在运行时处理注解
生成动态代理
反射类的使用1234567891011121314151617181920212223242526272829303132 ...
16网络编程
网络编程中两个主要问题
如何准确的定位网络上一台或者多台主机:定位主机上特定的应用
找到主机后如何高效可靠的进行信息传输
网络编程中的两个要素
IP和端口号
提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路)
InetAddress 类的使用
InetAddress.getLocalHost(); 获取本机IP地址
InetAddress.getByName("baidu.com"); 根据域名解析对应的IP地址
12345678910111213141516171819202122package com.songzx.javahttp;import java.net.InetAddress;import java.net.UnknownHostException;public class InterAddressTest { public static void main(String[] args) { InetAddress localHost = null; try & ...
15IO流
流的分类
按操作数据的单位不同,可以分为:字节流(8bit)、字符流(16bit)
按数据流的流向不同,可以分为:输入流、输出流
按流的角色不同,分为:节点流、处理流
抽象基类
字节流
字符流
输入流
InputStream
Reader
输出流
OutputStream
Writer
Java的IO流设计40多个类,实际上都非常规则。都是从上面的4个基本派生的
由这四个类派生出来的子类都是以其父类的名称作为子类的后缀
IO流体系
流的体系结构
抽象基类
节点流(文件流)
缓冲流(处理流的一种)
InputStream
FileInputStream
BufferedInputStream
OutputStream
FileOutputStream
BufferedOutputStream
Reader
FileReader
BufferedReader
Writer
FileWriter
BufferedWriter
FileReader 类读取文件
read() 方法的理解:返回读取到的一个字符,返回-1时表示读取完毕
文件流必须 ...
14泛型和File
什么是泛型所谓的泛型,就是允许在定义类,接口时通过一个标识表示类中某个属性的类型或者某个方法的返回值或者参数的类型。这个类型参数可以在使用时(例如:继承或者实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。
泛型的概念是在 jdk5.0 之后提出来的概念。
使用泛型初体验12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576package com.songzx.generic;import org.junit.Test;import java.util.*;public class Exer1 { @Test /** * 不使用泛型 * @author Songzx * @date 2022/1/6 */ public void test1(){ ...
13Java集合
集合框架概述集合、数组都是对多个数据进行存储操作的结构,简称 java 容器。此时的存储只是在内存层面的存储,不涉及到持久化的存储
数组在存储多个数据时的特点:
一旦初始化长度后,长度就固定了
数组一旦定义好,其元素的类型也就确定了。我们只能操作指定的数据类型
比如:String[],int[],Object[]
数组存储数据的缺点:
一旦初始化后,长度固定不可变
数组中提供的方法有限,对于增删改查操作不方便,效率不高
获取数组中元素的个数需求,数组没有现成的方法
数组存储数据的特点:有序、可重复、对于无序,不可重复的需求不能满足。
集合框架
Collection接口:单列集合,用来存储一个一个的对象
list 接口:存储有序的,可重复的数据
Arraylist,LinkedList,Vector
Set 接口:存储无序的,不可重复的数据
HashSet,LinkedHashSet,TreeSet
Map 接口:双列接口,用来存储一对(kay-value)一对数据
HashMap,linkedHashMap,TreeMap,Hashtable,Propert ...