自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 布隆过滤器简介

布隆过滤器能够实现使用较少的空间来判断一个指定的元素是否包含在一个集合中布隆过滤器并不保存这些数据,所以只能判断是否存在,而并不能取出该元素使用情景:凡是判断一个元素是否在一个集合中的操作,都可以使用它布隆过滤器常见使用场景idea中编写代码,一个单词是否包含在正确拼写的词库中(拼写不正确划绿线的提示)公安系统,根据身份证号\人脸信息,判断该人是否在追逃名单中爬虫检查一个网址是否被爬取过…

2022-10-20 09:33:22 862 1

原创 关于Token与JWT

Token:票据,令牌。当用户尝试登录,将请求提交到服务器端,如果服务器端认证通过,会生成一个Token数据并响应到客户端,此Token是有意义的数据,此客户端在后续的每一次请求中,都应该携带此Token数据,服务器端通过解析此Token来识别用户身份!关于Session与Token:Session默认是保存在服务器的内存中的数据,会占用一定的服务器内存资源,并且,不适合集群或分布式系统(虽然可以通过共享Session来解决),客户携带的Session ID只具有唯一性的特点(理论上),不具备数据含义……而

2022-10-12 21:55:02 1215

原创 关于Redis

Redis是一款使用结构的、实现数据存取的。使用Redis的主要目的是“缓存数据”,以提高查询数据的效率,对数据库也有一定的保护作用。需要注意:缓存的数据可能存在“不一致”的问题,因为,如果修改了数据库(例如MySQL)中的数据,而缓存(例如Redis)中的数据没有一并更新,则缓存中的数据是不准确的!但是,并不是所有的场景都要求数据非常准确!反之,某些情况下是不应该使用Redis的,例如:在秒杀商品时,使用Redis记录一些频繁修改的数据!在操作系统的终端下,通过redis-cli。

2022-10-12 21:54:32 864

原创 Spring Security

Spring Security主要解决了认证和授权相关的问题。认证:验证用户提交的登录信息,判断是否可以通过。授权:当认证通过后,给予通过认证的用户一些信息,后续,将根据这些信息来判断此用户是否允许执行某些访问。

2022-10-12 21:54:01 774

原创 Mybatis的缓存机制

通过测试并观察日志【参见下文】,可以看到,第1次执行查询,但是,第2次并没有真正的执行查询,并且,2次查询结果的hashCode值是完全相同的!也就是说:Mybatis只执行了第1次的查询,当执行第2次的代码时,并没有真正连接到MySQL数据库执行查询,而是将第1次的查询结果直接返回了!二级缓存的应用优先级高于一级缓存,也就是说,Mybatis框架将优先从二级缓存中查找数据,如果命中,将返回,如果未命中,则从一级缓存中查找数据,如果命中,将返回,如果仍未命中,将执行真正的查询!,默认是开启的,且无法关闭!

2022-10-12 21:53:31 508

原创 前后端交互

在默认情况下,不允许跨域访问,在前后端分离的模式下,要实现前后端交互,需要在服务器端进行配置,允许跨域访问!框架可以轻松的将JavaScript对象转换为FormData格式!后续,在JavaScript代码中,可以使用。如果控制器中处理请求的方法的参数。如果控制器中处理请求的方法的参数。此注解,则客户端提交的请求参数。此注解,则客户端提交的请求参数。在前端项目中,打开终端,安装。是FormData格式的。在前端技术中,可以使用。然后,需要在主配置文件。

2022-10-09 22:31:37 428 1

原创 关于前后端响应结果

然后,在处理请求的方法中,使用。则在项目的根包下创建。

2022-10-09 22:31:06 269

原创 关于处理异常--Spring的统一异常处理

如果调用的方法抛出了“非关于“处理异常”,需要明确的告诉用户“这次操作失败了,失败的原因是XXXXX,你可以通过XXXXX再次尝试,并避免出现此类错误”!所以,在整个项目,只有Controller才是适合且必须处理异常的组件,因为它可以将错误的描述文本响应到客户端去,而项目中的其它组件(例如Service等)不适合且不应该处理异常,因为它们不可以直接与客户端进行交互,且如果它们处理了异常,则Controller在调用时将无法知道曾经出现过异常,更加无法处理!

2022-10-09 22:30:36 118

原创 Spring Validation对个请求参数的检查

默认情况下,Spring Validation框架会在检查所有的请求参数后再提示可能的失败,即“检查到某个错误时并不会直接中止,而是继续检查”,如果需要实现“快速失败”(即:检查到某个错误时直接视为失败,不会继续后续的检查),需要在配置类中使用。如果处理请求的方法的参数不是封装的数据类型,需要进行检查时,需要先在当前类上添加。关于请求参数的检查,应该在控制器(Controller)中直接执行!使用这种方式检查请求参数时,如果检查不通过,将抛出。类,在此配置类中创建并配置。则在项目的根包下创建。

2022-10-09 22:30:06 160

原创 【框架小结】Spring

Spring框架主要解决了创建对象、管理对象相关的问题。Spring框架在创建了各对象之后,会持有这些对象的引用,相当于“把这些对象管理了起来”,所以,Spring框架也经常被称之为“Spring容器”。

2022-10-09 22:29:34 45

原创 Knife4j框架

完成后,重启项目,打开浏览器,通过 http://localhost:9080/doc.html 即可访问Knife4j的API文档。:添加在处理请求的方法的参数上,当某个参数不需要显示在API文档中,则需要在参数上添加此注解,例如。:添加在控制器类中处理请求的方法上,当有多个参数需要配置时,使用此注解,且此注解的值是。属性,用于指定“是否必须提交此请求参数”(仅用于显示,不具备检查功能),配置其。属性,用于指定请求参数的名称(说明),配置其。属性,指定方法的参数的变量名,配置其。

2022-10-09 22:28:43 63

原创 【框架小结】Spring

Spring框架主要解决了创建对象、管理对象相关的问题。Spring框架在创建了各对象之后,会持有这些对象的引用,相当于“把这些对象管理了起来”,所以,Spring框架也经常被称之为“Spring容器”。

2022-10-09 22:28:13 102

原创 消息摘要算法与密码加密

工具类,此工具类的方法可以轻松实现“使用MD5算法”进行运算,从而,可以实现将原始密码进行加密,得到一个加密后的结果。首先,对密码进行加密后,再存储,是非常有必要的!并且,主要的防范对象通常是内部员工!因为,所有的加密算法都是可以加密,也可以解密的!加密算法的核心价值在于。对需要存储的密码进行加密处理时,应该使用。在Spring Boot项目中,提供了。需要注意,对密码进行加密处理时,,并不保证数据存储的安全!,其本质是一种哈希算法,是。

2022-10-09 12:43:01 86

原创 前端请求并添加在数据库中数据(以添加品牌为例)Spring MVC框架基础

在项目的根包下,创建。在项目的根包下,创建。

2022-10-09 12:42:30 490

原创 关于业务逻辑层和异常属性的定义

关于异常,如果使用现有的异常(例如等),可能会产生歧义,所以,通常会自定义异常,继承自。如果在项目中只使用1种异常类型,不便于不区分同一个业务可能出现的多种“错误”,所以,应该在异常类型中添加某个属性,来区分多种“错误”!关于此属性,可以是int、String}如果仅仅只是以上代码,当尝试输出某个枚举值,输出的结果就是以上名称,例如ERR_INSERT} }} }/*** 业务状态码的枚举} }提示:以上类型创建在项目的根包下的。然后,在项目的根包下的ex包下创建。

2022-10-08 22:30:29 524 1

原创 关于Spring MVC

依赖项后,当启动项目时,默认情况下,就会自动将当前项目编译、打包并部署到内置的Tomcat中,并启动Tomcat,默认占用。在Spring Boot项目中,当需要使用Spring MVC框架及相关的功能时,应该添加。Spring MVC框架主要解决了接收请求、响应结果的相关问题。如果需要修改默认占用的端口号,可以在。,在实际编码时,只需要将。

2022-10-08 22:29:59 141

原创 动态SQL(01)

如果某张表的id被设计为自动编号的,在插入数据时,还可以获取自动编号的id值!在配置SQL的标签上,配置和属性即可:

2022-10-08 22:29:16 693

原创 从数据库中查询列表

通常,查询列表时,与查询单个数据使用的VO类应该是不同的。相对查询最多1个数据,查询列表的区别在于:必须使用。【需求】查询品牌列表,暂不考虑分页,结果按照。类型作为抽象方法的返回值类型,另外,在配置。,在指定封装返回结果的类型时,仍指定。则在项目的根包下创建。

2022-10-08 22:28:45 776

原创 SLF4j日志

变量时,有以上5种级别对应的方法,调用与日志显示级别对应的方法,则输出的日志就是对应的级别,例如调用。在Spring Boot项目中,默认的显示级别是。注解,则Lombok框架会在编译期自动添加名为。依赖项中,默认已经集成了SLF4j日志框架。时,输出的日志就是DEBUG级别的日志,调用。依赖项后,可以在需要输出日志的类上添加。时,输出的日志就是WARN级别的日志。在Spring Boot项目中,可以在。在Spring Boot项目中,在。较低级别的日志不会被输出!在SLF4j中,调用。

2022-10-08 22:28:14 120

原创 Vue相关内容(续)

通常,在设计视图时,在App.vue中不会设计页面元素,只是添加一个即可!在其它的视图中,设计的目标效果中可能存在多“页面”中相同的部分,反之,也可以理解为“某个页面的某个区域(不同的部分)是动态变化的”,则对应的区域(某个页面中会变化的部分)就可以设计为,同时,由于当前视图本身也是显示在App.vue设计的中的,就出现了“嵌套路由”!当项目中多个视图中都使用到了时,某个视图组件到底显示在哪个,取决于路由的配置:如果某个视图的路由配置在的routes常量中,则此视图将显示在App.vue的中。

2022-10-08 20:27:00 58

原创 Vue项目的创建和相关内容

Vue脚手架是一个开发基于Vue框架的前端项目的软件。Vue脚手架的项目是“单页面”的,也就是在这样的项目,只有1个HTML页面,它认为页面是由多个模块组成的,各个模块都是可以随时替换的,从而显示出不同的页面效果。

2022-10-08 20:06:13 86

原创 Idea 中配置连接 MySQL 步骤

在下面窗口中执行 SQL 语句。

2022-10-08 12:31:27 146

原创 数据库-SQL 注入和语句分类和数据类型

用户往输入值的地方输入了 SQL 语句,导致原有 SQL 语句的逻辑发生改变,这个过程称为SQL 注入通过 PreparedStatement 带有预编译效果的执行 SQL 语句的对象,解决 SQL 注入问题如何解决?使用 PreparedStatement,将编译 SQL 语句的时间点提前到创建对象时,此时编译用户输入的内容还没有在 SQL 语句中, 编译后可以理解为将 SQL 语句的逻辑锁死, 用户输入的。

2022-10-08 12:30:11 283

原创 数据库-基本的SQL(3)

select max(sal) from emp where job=‘程序员’;select * from emp where sal>(select max(sal) from emp where job=‘程序员’);select * from emp where job=(select job from emp where name=‘孙悟空’) and name!="孙悟空";select name,sal,5*sal 年终奖 from emp;

2022-10-08 12:27:34 210

原创 数据库-基本SQL(2)

select * from emp where dept_id in(1,2) and job like “市%”;select name,comm from emp where comm>0 and job=‘销售’;select name from emp where job=‘ceo’ or job=‘项目经理’;select name,job from emp where job like “_售%”;select * from emp where job in(‘程序员’,‘销售’);

2022-10-05 20:42:25 412

原创 数据库-基本SQL(1)

格式: create database 数据库名 charset=utf8/gbk;举例格式:show create database 数据库名举例格式:drop database 数据库名举例:使用完数据库之后再执行表相关或数据相关的 SQL 否则会报错: No database selected格式: use 数据库名;举例:​ use db1;

2022-10-05 20:41:53 72

原创 Web-颜色赋值和背景图片和盒子模型及CSS的三大特性

粘连问题: 当元素的上边缘和上级元素的上边缘重叠时, 给元素添加上外边距会出现粘连问题, 给上级元素添加overflow:hidden解决。inline-block: 行内块元素的默认值,特点:共占一行,可以修改元素宽高, 包括:input,img。inline: 行内元素的默认值,特点: 共占一行 不能修改元素宽高, 包括:span,b,i,s,u,a。block: 块级元素的默认值, 特点: 独占一行 可以修改元素宽高. 包括: h1-h6, p,div。

2022-10-05 20:40:57 444

原创 Web-定位方式

当元素的所有子元素全部浮动时,自动识别的高度为0 , 后面元素会顶上来,如果元素中包含文本,文本会被挤出去, 最终导致显示异常, 通过给元素添加overflow:hidden 解决此问题。特点:元素脱离文档流(不占原来的位置), 通过left/right/top/bottom让元素相对于窗口(默认)或某一个上级元素做偏移.特点: 元素脱离文档流,通过left/right/top/bottom让元素相对于窗口做偏移,元素会固定在窗口的某个位置.格式: position:fixed;静态定位又称为文档流定位。

2022-10-05 20:40:26 370

原创 Web-VUE框架

v-model=“变量”,双向绑定,主要用在各种控件中, 变量的值会影响控件的值, 控件的值也会影。个变量进行绑定, 同时会不断的监听变量值的改变,当变量的值发生改变时Vue对象会从绑定关系。此框架在第三阶段中接触到的是一个js文件, 使用此框架时只需要将此文件引入到自己的页。v-text=“变量”: 让元素的文本内容和变量进行绑定。v-html=“变量”: 让元素的标签内容和变量进行绑定。{{变量}}: 插值, 让此处的文本内容和变量进行绑定。中找到变量所对应的页面元素并将元素内容进行改动。

2022-10-05 20:40:03 727

原创 Web-JavaScript

Web-JavaScript

2022-10-05 20:28:16 49

原创 Web-HTML和CSS

外部样式: 在单独的css样式文件中写样式代码, 在html页面中通过link标签引入, 可以实。内部样式: 在head标签里面添加style标签, 标签体内写样式代码, 可以复用但是只能在当。类选择器: 当需要选择页面中多个不相关的元素时,给多个元素添加相同的class,然后通过类。工作中外部引入方式用的多,因为可以多页面复用而且可以将html代码和CSS样式代码分离。内联样式: 在标签的style属性中添加样式代码, 弊端:不能复用。匹配body里面的div里面的p子元素 不包含后代p。

2022-10-05 20:27:45 289

原创 Java:集合

boolean add(E e):向集合中添加一个元素,成功添加则返回trueint size():返回当前集合的元素个数boolean isEmpty():判断当前集合是否为空集.当且仅当size=0时返回true.void clear():清空集合boolean contains(Object o):判断集合是否包含给定元素boolean remove(Object o):从集合中删除给定元素,成功删除返回true.

2022-10-03 13:06:32 75

原创 JavaApi:IO总结

节点流:也称为低级流.节点流的另一端是明确的,是实际读写数据的流,读写一定是建立在节点流基础上进行的.处理流:也称为高级流.处理流不能独立存在,必须连接在其他流上,目的是当数据流经当前流时对数据进行加工处理来简化我们对数据的该操作.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9c8DIGvK-1664773544655)(IO总结.png)]缓冲字符输出流需要记住的是PrintWriter和BufferedReader作用:1:块写或块读文本数据加速。

2022-10-03 13:06:02 260

原创 JavaApi:高级流

节点流:也称为低级流.节点流的另一端是明确的,是实际读写数据的流,读写一定是建立在节点流基础上进行的.处理流:也称为高级流.处理流不能独立存在,必须连接在其他流上,目的是当数据流经当前流时对数据进行加工处理来简化我们对数据的该操作.

2022-10-03 13:05:32 57

原创 Java:多线程并发和同步锁“synchronized”

守护线程与普通线程的区别:守护线程是通过普通线程调用setDaemon(true)设置而来的主要区别体现在当java进程中所有的普通线程都结束时进程会结束,在结束前会杀死所有还在运行的守护线程。

2022-10-03 13:05:02 253

原创 Java:创建线程和sleep

*** 第二种创建线程的方式* 实现Runnable接口单独定义线程任务//实例化任务 Runnable r1 = new MyRunnable1();//创建线程并指派任务 Thread t1 = new Thread(r1);i < 1000;i ++) {System . out . println("你是谁啊?");i < 1000;i ++) {System . out . println("开门!查水表的!");} } }

2022-10-03 13:04:28 609

原创 Java:java的异常处理机制

当一个方法中使用throw抛出一个非RuntimeException的异常时,就要在该方法上使用throws声明这个异常的抛出。上述语法中可在try的"()"中定义的并初始化的对象必须实现了java.io.AutoCloseable接口,否则编译不通过.当我们调用一个含有throws声明异常抛出的方法时,编译器要求我们必须处理这个异常,否则编译不通过。catch用来捕获并处理对应的异常,可以定义多个,也可以合并多个异常在一个catch中。Exception的子类描述的都是程序错误,比如空指针,下表越界等。

2022-10-03 13:03:59 76

原创 JavaApi:IO基础

java.io.InputStream:所有字节输入流的超类,其中定义了读取数据的方法.因此将来不管读取的是什么设备(连接该设备的流)都有这些读取的方法,因此我们可以用相同的方法读取不同设备中的数据java.io.OutputStream:所有字节输出流的超类,其中定义了写出数据的方法.java io可以让我们用标准的读写操作来完成对不同设备的读写数据工作.java将IO按照方向划分为输入与输出,参照点是我们写的程序.输入:用来读取数据的,是从外界到程序的方向,用于获取数据.输出。

2022-10-02 11:56:36 475 1

原创 JavaApi:File类

File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等2:创建和删除文件或目录3:访问一个目录中的子项。

2022-10-02 11:01:02 96

原创 JavaApi:正则和Object和包装类

JavaApi:正则和Object和包装类

2022-10-02 10:51:07 69

空空如也

空空如也

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

TA关注的人

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