自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 notes 2023

客户端发起http请求,因为http协议里面封装的tcp协议,会首先经过dns解析,找到目标服务器,发起tcp连接进行三次握手,之后连接进入tomcat,tomcat会对连接进行处理,处理完毕之后响应一个html文档给客户端,客户端通过浏览器进行可视化,tcp断开连接的时候进行四次挥手http/1.1 长连接 通过一个tcp连接,可以向服务端发送若干个http请求##请简述一下tcp协议三次握手或四次挥手的过程?1:客户端发送syn包2:服务端接收到syn包之后,回复syn+ack。

2023-08-07 16:02:27 443

原创 Python 生成JWT

【代码】Python 生成JWT。

2023-02-11 17:16:36 325

原创 Java反射常见问题

简单说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制获得类的所有信息。

2023-01-31 21:53:52 310

原创 多线程详解

同一个对象被多个线程同时操作(并发),处理多线程问题是,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程在使用。多个线程各占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形,某一个同步块同事拥有“两个以上对象的锁”时,就可能发生“死锁”的问题。常见子类ThreadPoolExecutor。

2022-11-17 20:39:29 170

原创 封装、继承、多态

子类重写了父类中的某一个方法,隐藏父类中的字段,假如想在子类中访问到父类中被重写的方法和隐藏父类的字段,可以在子类中通过使用关键字super来调用父类中被重写的方法和访问父类中被隐藏的字段。继承就是子类继承父类的特征和行为,使得子类对象具有父类的实力域和方法,或子类从父类继承方法,或子类从父类继承方法,使得子类具有父类相同的行为。当一个子类中一个实例方法具有与其父类中的一个实例方法相同的签名(指名称、参数个数和类型)和返回值时,称子类中的方法“重写”了父类的方法。子类不继承其父类的构造方法。

2022-10-21 00:46:34 97

原创 notes 2021

==和equals==一般比较的是值是否相等如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址equals一般为比较内容是否相同如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。抽象类和接口抽象类可以有构造方法,接口中不能有构造方法。抽象类中可以有普通成员变量,接口中没有普通成员变量抽象类中

2021-07-18 22:49:57 176

原创 JVM总结

jvm位置JVM 上承开发语言,下接操作系统,它的中间接口就是字节码。jvm体系结构类加载器作用:加载class文件JVM中提供了三层的ClassLoader:Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。AppClassLoader:主要负责加载应用程序的主函数类双亲委派机制如

2021-07-08 22:12:15 144

转载 Redis

什么是NosqlNoSQL = Not Only SQL(不仅仅是SQL)Not Only Structured Query Language关系型数据库:列+行,同一个表下数据的结构是一样的。非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。Nosql特点

2021-07-06 21:12:51 152

转载 Swagger

Swagger简介号称世界上最流行的Api框架RestFul Api文档在线自动生成工具=>Api文档与API定义同步更新直接运行,可以在线测试API接口支持多种语言:(Java,Php…)在项目使用Swagger需要springbox;swagger2uiSpringBoot集成Swagger1.新建一个SpringBoot-Web项目2.导入相关依赖<!-- https://mvnrepository.com/artifact/io.springfox/spri

2021-06-22 21:59:30 213

转载 SpringBoot

Hello SpringBoot项目创建方式一:使用Spring Initializr 的 Web页面创建项目1、打开 https://start.spring.io/2、填写项目信息3、点击”Generate Project“按钮生成项目;下载此项目4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。项目创建方式二:使用 IDEA 直接创建项目1、创建一个新项目2、选择spring

2021-06-17 16:13:58 115

转载 整合SSM

整合SSM1.数据库环境CREATE DATABASE ssmbuild;USE ssmbuild;CREATE TABLE `books`(`bookID` INT NOT NULL AUTO_INCREMENT COMMENT '书id',`bookName` VARCHAR(100) NOT NULL COMMENT '书名',`bookCounts` INT NOT NULL COMMENT '数量',`detail` VARCHAR(200) NOT NULL COMMENT '描

2021-06-07 16:46:30 130

原创 SpringMVC

SpringMVCMVC:模型(dao,service),视图(jsp),控制器(Servlet)MVC框架要做的事情将url映射到java类或java类的方法封装用户提交的数据处理请求–调用相关的业务处理–封装响应数据将响应的数据进行渲染.jsp/html等表示层数据HelloMVC配置版新建一个maven项目 , 添加web的支持!导入了SpringMVC 的依赖!配置web.xml , 注册DispatcherServlet<?xml version

2021-06-01 21:26:41 83

原创 Spring整合Mybatis

整合MybatisMybatis-Spring编写数据源配置sqlSessionFactorysqlSessionTemplate<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop

2021-05-26 22:18:33 69

原创 SPRING

1.Spring官网 : https://spring.io/projects/spring-framework/官方下载地址 : https://repo.spring.io/libs-release-local/org/springframework/spring/GitHub : https://github.com/spring-projects<!-- https://mvnrepository.com/artifact/org.springframework/spring-w

2021-05-25 22:58:09 242

原创 Mybatis

1.Mybatis简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射如何获得Mybatis?maven仓库<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactI

2021-05-20 16:14:54 173

原创 SQL注入问题

SQL注入的问题sql存在漏洞,会被攻击导致数据,SQL会被拼接orpackage com.qi.lesson02;import com.qi.lesson02.utils.JdbcUtils;import sun.security.util.Password;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;pub.

2021-04-19 16:33:14 78

原创 statement对象

jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。Statement对象的executeUpdate方法,用于数据库发送增、删、改得sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。Statement.executeQuery方法用于数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。CRUD操作-create使

2021-04-19 16:32:53 431

原创 JDBC

1.数据库驱动程序会通过数据库驱动和数据库打交道2.JDBCJDBC:java操作数据库的操作规范掌握JDBC操作接口java.sqljavax.sql还学要导入一个数据库驱动包3.第一个jdbd程序创建测试数据库CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci;USE jdbcStudy;CREATE TABLE users( id INT PRIMARY KEY, NAME VAR

2021-04-18 22:34:52 86

原创 三大范式

第一范式(1NF)原子性:保证每一列不可再分第二范式(2NF)前提:满足第一范式每张表只描述一件事情第三范式(3NF)前提:满足第一范式和第二范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关(规范数据库的设计)规范性和性能问题关联查询的表不得超过三张表考虑商业化需求和目标,数据库的性能更加重要在规范性能的问题的时候,需要适当的考虑一下规范性故意给某些表增加一些冗余的字段,(从多表查询中变为单表查询)故意增加一些计算列(从大数据量降低为小数据量的查询:索引)

2021-04-18 13:42:21 98

原创 权限管理和备份

用户管理SQL命令操作用户名:mysql.user本质:读这张表进行增删改查-- 创建用户 CTEATE USER 用户名 IDENTIFIED BY '密码'create user qi identified by '123456'-- 修改密码(修改当前用户密码)set password = password('123456')-- 修改密码(修改指定用户密码)set password for qi = password('111111')-- 重命名rename us

2021-04-17 21:31:11 90

原创 索引

MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。1.索引的分类在一个表中,主键索引只有一个,唯一索引可以有多个主键索引(PRIMARY KEY)唯一标识,主键不可重复,只能有一个列为主键唯一索引(UNIQUE KEY)避免重复的列出现,唯一索引可以重复,多个列都可以标识位 唯一索引常规索引(KEY/INDEX)默认的,index,key关键字来设置全文索引(FullText)在特定的数据库引

2021-04-16 19:00:00 67

原创 事务

事务原则:ACID原则 原子性,一致性,隔离性,持久性原子性(Atomicity)要么都成功,要么都失败一致性(Consistency)事务前后的数据完整性要保持一致持久性(Durability)事务一旦提交则不可逆,被持久化到数据库中隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离....

2021-04-15 17:17:05 45

原创 MySQL函数

1.常用函数-- 常用函数-- 数学运算SELECT ABS(-8) -- 绝对值SELECT CEILING(9.4) -- 向上取整SELECT FLOOR(9.4) -- 向下取整SELECT RAND() -- 返回0-1之间的随机数SELECT SIGN(-5) -- 判断一个数的符号 1 0 -1-- 字符串函数SELECT CHAR_LENGTH('即使再小的帆也能远航') -- 字符串长度SELECT CONCAT('你','们','好') -- 拼接字符串SEL

2021-04-13 22:41:21 53

原创 DQL查询数据(重点)

1.DQL查询数据(最重点)(data query language:数据库查询语言)所有的查询操作都用它Select简单的查询,复杂的查询它都能做数据库中最核心的语言,最重要的语句使用频率最高的语句2.制定查询字段-- 查询全部的学生 SELECT字段 FROM 表SELECT * FROM student-- 查询制定字段SELECT `StudentNo`,`StudentName` FROM student-- 别名,给结果起一个名字 ASSELECT `Studen

2021-04-13 17:53:45 126

原创 MySQL数据管理

MySQL数据管理1.外键方式1:在创建表的时候,增加约束(麻烦,比较复杂) CREATE TABLE `grade`( `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id', `gradename` VARCHAR(50)NOT NULL COMMENT '年级名称', PRIMARY KEY (`gradeid`))ENGINE=INNODB DEFAULT CHARSET=utf8-- 学生表的gradeid字段 要

2021-04-11 14:56:29 80

原创 创建一个数据库

– 目标:创建一个school数据库– 创建学生表(列,字段) 使用SQL创建– 学号 int 登陆密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email– 注意点,使用英文(), 表的名称 和 字段 尽量使用 括起来– AUTO INCREMENT 自增– 字符串使用 单引号括起来– 所欲语句后面加,(英文的),最后一个不用加– PRIMARY KEY 主键, 一般一个表只有一个唯一的主键-- 目标:创建一个school数据库-

2021-04-08 14:26:50 435

原创 File类的使用

File的使用1.File类的一个对象,代表一个文件或一个文件目录(文件夹)2.File类声明在java,io包下3.File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法并未涉及到写入或读取文件内容的操作,如果需要服务写入文件内容,必须使用IO流来完成4.后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点"。如何创建File类实例File(String filePath)File(String parentPath,String chil

2021-04-06 11:41:52 169

原创 Collection工具类常用方法和测试

reverse(List):反转List中元素的顺序shuffle(List):对List集合元素进行随机排序sort(List):根据元素的自然顺序制定List集合元素按升序排序sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序swap(List,int, int):将制定list集合中的i处元素和j处元素进行交换Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素Object max(Colle

2021-04-01 14:17:22 113

原创 Map中的常用方法

/*总结:常用方法 添加:put(Object key,Object value) 删除:remove(Object key) 修改:put(Object key,Object value) 查询:get(Object key) 长度:size() 遍历:keySet()/values()/entrySet() */import org.junit.Test;import java.util.*;public class MapTest {

2021-03-30 17:50:16 354

原创 Map实现类结构以及HashMap底层实现原理

一,Map实现类的结构Map:双列数据,存储key-value对的数据 类似于函数y=(x)HashMap:作为Map的主要实现类:线程不安全的,效率高:存储null的key和valueLinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素对于频繁的遍历操作,此类执行效率高于HashMap。TreeMap:保证按照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排序

2021-03-30 15:48:22 1397

原创 List接口中的常用方法和测试

package com.collectiontest.Demo01;/* Collection接口:单列集合,用来存储一个一个对象 List接口:存储有序的,可重复的数据 ——->>"动态"数组,替换原有的数组 ArrayList:作为list接口的主要实现类,线程不安全的,效率高:底层使用Object[] elementData存储 LinkedList:对于频繁的插入,删除操作,使用此类效率比Arraylist高:底层使用的双向链表存储 Vecto

2021-03-28 16:28:41 191

原创 Collection接口中声明的方法和测试

package com.collectiontest.Demo01;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.List;/* Collection接口中声明的方法和测试 向Collection接口的实现类的对象中添加数据时,要求obj所在类要重写equals() */publi

2021-03-28 16:27:07 468

原创 构造器

构造器:1.和类名相同2.没有返回值作用:1.new 本质在调用构造方法2.初始化对象的值注意点:1.定义有参构造之后,如果使用无参构造,显示的定义一个无参的构造 ***Alt + Insert 生成构造函数 ****this. = package com.qi.oop.Demo02;//java->classpublic class Person { //一个类,即使什么都不写,他也会存在一个方法 //显示的定义构造器 String n

2021-03-20 15:07:46 48

原创 值传递和引用传递

值传递package com.qi.oop;import com.qi.method.Demo06;//值传递public class Demo04 { public static void main(String[] args) { int a = 1; System.out.println(a); //1// Demo04.change(a); new Demo04().change(a); System

2021-03-19 15:42:32 48

原创 稀疏数组

代码展示package com.qi.Array;public class ArrayDemo08 { public static void main(String[] args) { //1.创建一个二维数组11*11 0:没有旗子 1:黑棋 2:白子 int [][] array1 = new int[11][11]; array1[1][2]=1; array1[2][3]=2; //输出原始的数组

2021-03-18 18:37:22 42

原创 冒泡排序

package com.qi.Array;//冒泡排序//比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置//每一次比较,都会产生出一个最大或者最小的数字//下一轮则可以减少一次排序//依次循环,直到结束import java.util.Arrays;public class ArrayDemo07 { public static void main(String[] args) { int[] a = {1,2,3,45,6,7,8,89

2021-03-18 16:52:01 169

原创 Array类几个常用功能

代码展示package com.qi.Array;import com.qi.method.Demo06;import java.util.Arrays;public class ArrayDemo06 { public static void main(String[] args) { int[] a = {1,2,3,4,4564,4488,456487445,45648,63,4}; System.out.println(a);/

2021-03-18 15:36:17 135

原创 顺序结构和 if选择结构 switch选择结构

顺序结构代码展示package com.qi.stuct;//顺序结构public class sequence { public static void main(String[] args) { System.out.println("hello1"); System.out.println("hello2"); System.out.println("hello3"); System.out.println("hello4

2021-03-15 19:18:45 128

原创 Scanner举例:求输入数的个数、总和与平均数

package com.qi.Scanner;import java.util.Scanner;public class Demo05 { public static void main(String[] args) { //输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果 Scanner scanner = new Scanner(System.in); //和 double s

2021-03-15 16:12:57 782

原创 JavaDoc生成文档

package com.qi.base;/** * @author Qi * @version 1.0 * @since 1.8 */public class Doc { String name; /** * @author Qi * @param name * @return * @throws Exception */ public String tesr(String name)throws Exception

2021-03-15 12:25:08 51

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除