自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【Java】常见的IO模型

文章目录I/O何为 I/O?有哪些常见的 IO 模型?同步阻塞 IO(Blocking IO)同步非阻塞 IO(None Blocking IO)IO 多路复用(I/O multiplexing)异步 IO 模型(asynchronous IO)Java 中 3 种常见 IO 模型BIO (Blocking I/O)NIO (New I/O)AIO (Asynchronous I/O)阻塞和非阻塞IO异步和同步IOI/O何为 I/O?从应用程序的角度来解读一下 I/O。根据大学里学到的操作系统相关的

2021-04-15 15:17:52 545

转载 【Java】代理模式

文章目录代理模式静态代理实现步骤实现实例动态代理1. JDK 动态代理技术实现步骤实现例子2. CGLIB 动态代理机制实现步骤实现例子3. 总结不同点静态代理和动态代理的对比代理模式简单来说:就是使用代理对象来替代对真实对象的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能代理模式的主要作用就是扩展目标对象的功能,比如说在目标对象的某个方法前后你可以增加一些自定义的操作代理模式主要有两种实现的方式:静态代理动态代理(反射的应用静态代理实现步骤创建一

2021-04-15 15:03:05 255

原创 【Java】IO流 (超详细!!)

Java IO流Java IO流IO 流的分类按照流的方向输入流输出流按照数据单位的不同字节流字符流根据功能不同节点流处理流IO 流的架构四个基本抽象类InputStream 字节输入流OutputStream 字节输入流Reader 字符输入流Writer 字符输出流总结IO 流特性IO 流常用对象FileInputStreamFileInputStreamByteArrayInputStreamPipedInputStreamFilterInputStreamBufferedInputStreamDat

2021-04-15 14:55:27 420

原创 【Java】可变参数

可变参数使用方法当方法的参数列表数据类型已经确定,但是参数的个数不确定,那么就可以使用可变参数修饰符 返回值类型 方法名(数据类型...变量名){}底层原理可变参数就是一个数组,根据传递参数个数的不同,会创建不同长度的数组,来存储这些参数传递的参数个数,可以是0个,1个,2个 …例如public class testClass{ public static void mian(String[] args){ int i = add(10,20); }

2021-04-15 11:47:39 162

原创 【Java】增强for的使用

增强for原理:底层使用的也是迭代器。使用for循环进行简化使用范围所有的单列集合都可以使用增强for(只能是集合和数组)单列集合: ArrayList、Linkedlist、Vector使用方法例 1int[] arr = {1,2,3,4,5};for(int i : arr){ System.out.println(i);}例 2ArrayList<String> list = new ArrayList<>();list.add("1

2021-04-15 11:42:06 251

原创 【Mybatis】Mybatis传递多个参数

【Mybatis】Mybatis传递多个参数在使用Mybatis过程中,经常会碰到传入多个参数的情形。1. 多参数基本的多参数传递方式:xxxMapper.classpublic List<XXXBean> getXXXBeanList(String param1, String parm2); xxxMapper.xml<select id="getXXXBeanList" resultType="XXBean">  select t.* from tableN

2021-04-15 11:04:05 489

原创 【Mybatis】传入参数类型为Map

【Mybatis】传入参数类型为Map有时候,我们可以的dao层的方法需要传入两个不同类型的参数进行操作,我们可以借助万能的Map来进行传参。1. 我们对dao层的Mapper方法进行传参,需要注意:需要添加注解例如:public AdminRole isSameNameByRidAndName(@Param("map") Map<String,Object> map);需要特别注意注解@Param(“map”)2. 然后我们在Mapper.xml文件进行编写sql语句<s

2021-04-15 11:02:21 3634

原创 【Mybatis】Mapper文件中sql不等于的写法

【Mybatis】Mapper文件中sql不等于的写法认识误区:在xml文件中,是 不能直接使用 < 、>、& 的。因为会被语法检查而报错。正确使用的两种方法1. 第一种:转义1. 小于 < &lt;2. 大于 > &gt;3. 不等于 <> &lt;&gt;2. 第二种:<![CDATA[]]><![CDATA[]]>这个标记所包含的内容即表示为 纯文本实际例子:sql语句:sele

2021-04-15 11:01:47 3766

原创 【Mybatis】增(insert)删(delete)改(update)查(select)的返回值

【Mybatis】增(insert)删(delete)改(update)查(select)的返回值select<select id="getUserByUserName" resultType="User"> select * from User where username = #{userName}</select>select的返回值即为 resultType 或者 resultMapupdate<update id="resetPassword"

2021-04-15 11:00:18 1142

原创 【Mybatis】Mapper.xml中的${}与#{}的区别

【Mybatis】Mapper.xml中的${}与#{}的区别#{}是预编译处理,而${}则是字符串替换Mybatis在处理#{}时,会将sql中的#{}替换成?号,会自动调用PreparedStatement的set方法来进行赋值。Mybatis在处理时,其实就是将{}时,其实就是将时,其实就是将{}直接替换成变量的值。(有sql注入的风险)使用#{}可以有效的防止sql注入,可以提高系统安全性${}这种写法参数默认是传字符串#{}则可以取Long、Integer之类...

2021-04-15 10:59:21 1476

原创 【springboot】配置interceptor拦截器

【springboot】配置interceptor拦截器springboot如何配置自定义的Filter过滤器?一、实现步骤实现拦截器接口将拦截器注册到spring容器中二、具体实现例子实现拦截器接口,例如登陆拦截器/** * 登陆检查, */public class LoginHandlerInterceptor implements HandlerInterceptor { //在业务处理器处理请求之前被调用 @Override public bool

2021-01-29 16:09:32 396

原创 【springboot】上传文件大小问题

【springboot】org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException问题描述使用springboot实现上传文件功能的时候,由于上传的文件大小较大(Tomcat默认允许上传的文件最大为1MB),超过1MB的文件进行上传程序就会报错:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceede

2021-01-29 16:06:02 906

原创 【springboot】静态资源访问路径配置

【springboot】静态资源访问路径配置简介springboot 默认为我们提供了静态资源处理,使用WebMvcAutoConfiguration中的配置各种属性。在一般情况下,springboot提供的默认配置方式能够满足需求,如果想要完全控制WebMvc,那么就需要在@Configuration注解的配置类上增加@EnableWebMvc,这样WebMvcConfiguration中的配置就无法生效,所有配置都按照你自定义的进行生效。但是,通常情况下,我们都是使用springboot的默认配

2021-01-29 16:02:06 1276

原创 【Mybatis】Parameter ‘username‘ not found. Available parameters are [1, 0, param1, param2\]

Parameter ‘username’ not found. Available parameters are [1, 0, param1, param2]xxxMapper.java存在方法想要接收多个参数,可以使用两种方法可以使用@Param()注解进行制定对应的参数 /* * Mybatis 中对于多个参数,其无法明确对应关系,需要加上@Param注解进行指定 * */ public User getUserByUsernameAndPassword(@Pa

2021-01-29 15:48:19 146

原创 【Mybatis】mybatis如何实现分页

【Mybatis】mybatis如何实现分页mysql分页功能原理实现分页必要条件必须知道某一页从哪里开始到哪里结束必须知道页面的大小,也就是指定每页要显示多少条数据量mysql分页的过程注意:mysql的计数是从0开始的,也就是说第一条数据对应的下标应该为0假设我们现在需要一页显示10条数据,那么第0页的10条数据的编号就是 0 1 2 3 4 5 6 7 8 9那么第1页的数据的编号是10 11 12 13 14 15 16 17 18 19那么第2页的数据编号就是20 21

2021-01-29 15:46:28 630 1

转载 【Mybatis】foreach的使用

【Mybatis】foreach的使用foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符,close表示以什么结束。在使用foreach的时候最

2021-01-29 15:39:11 820 2

转载 【Java】json JavaBean

FastJson中String、Json、JavaBean本文来源为:https://www.cnblogs.com/cdf-opensource-007/p/7106018.htmlFastJson提供的三个主要类JSONfastJson 的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。JSONObjectfastJson提供的json对象。JSONArrayfastJson提供json数组对象。JSONObject与JSONArraySONObject和J

2021-01-29 15:34:42 252

转载 【Java】classpath到底是指什么

classpath类路径到底指的是什么详细解释classpath就是class的path,也就是类文件(*.class)的路径ssm的项目结构如下(为maven项目结构)project |--src | |--main | | |--java | | |--resources | | |--webapp | | |--WEB-INF | | |--views | | |--web.xml | |--test | |--java

2021-01-29 15:27:00 6134 1

原创 【springboot】org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException

【springboot】org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException问题描述使用springboot实现上传文件功能的时候,由于上传的文件大小较大(Tomcat默认允许上传的文件最大为1MB),超过1MB的文件进行上传程序就会报错:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceede

2020-10-19 10:36:13 469

原创 【Mybatis】mybatis如何实现分页

【Mybatis】mybatis如何实现分页mysql分页功能原理实现分页必要条件必须知道某一页从哪里开始到哪里结束必须知道页面的大小,也就是指定每页要显示多少条数据量mysql分页的过程注意:mysql的计数是从0开始的,也就是说第一条数据对应的下标应该为0假设我们现在需要一页显示10条数据,那么第0页的10条数据的编号就是 0 1 2 3 4 5 6 7 8 9那么第1页的数据的编号是10 11 12 13 14 15 16 17 18 19那么第2页的数据编号就是20 21

2020-10-16 17:02:40 1281

原创 【Mybatis】Parameter ‘username‘ not found. Available parameters are [1, 0, param1, param2]

Parameter ‘username’ not found. Available parameters are [1, 0, param1, param2]xxxMapper.java存在方法想要接收多个参数,可以使用两种方法可以使用@Param()注解进行制定对应的参数 /* * Mybatis 中对于多个参数,其无法明确对应关系,需要加上@Param注解进行指定 * */ public User getUserByUsernameAndPassword(@Pa

2020-10-16 17:00:49 3248

原创 【Axios】axios的get请求和post请求的写法

axios的get请求和post请求的写法get请求一般的get请求写法 (在url上进行拼接参数)this.$axios.get('http://localhost:8080/book/delBook?bookId=' + bookId).then(res=>{ console.log(res);}).catch(err=>{ console.log(err);})需要传递对象参数的get请求写法this.$axios.get('http://local

2020-10-06 09:39:17 1576

原创 【Vue】跑通vue项目所需要配置环境和跑通vue项目

文章目录安装环境一、安装node.js1. 到官网进行下载node.js ,推荐下载.msi(一直点next即可)2. 安装成功后,按win + r 输入cmd进入控制台3. 输入 node -v 检查是否安装成功二、安装cnpm1. 安装node.js后,同时也安装了npm。2. 配置cnpm三、安装webpack1. 通过npm来安装webpack、2. 输入webpack -v 来查看是否安装成功四、安装vue-cli1. 通过cnpm来安装vue-cli跑通vue项目一、首先进入项目的根目录安装

2020-06-13 08:58:59 1291

原创 常用mysql命令总结(持续更新中~)

文章目录常用mysql命令总结连接数据库mysql启动和关闭外键约束的方法添加、删除、查看约束添加约束删除约束查看约束创建、查看、删除索引创建索引查看索引删除索引创建、使用、修改、查看视图创建视图使用视图查看视图(与查看基本表一样)更新视图删除视图常见的视图更新限制:授权与取消授权给用户授权移除用户权限查看用户权限查看所有用户常用mysql命令总结连接数据库mysql -u 用户名 -p回车输入密码或者直接在-p后面添加密码例如:用户cc,密码123456进行连接数据库mysql -u cc

2020-06-11 19:49:42 233

原创 如何判断电脑有没有安装mysql

目录如何判断电脑上是否安装了mysql我们可以按Win + r 打开运行窗口,如何判断电脑上是否安装了mysql有些电脑上就算已经安装好了mysql,但是因为环境变量没有配置好,所以在cmd中无法登陆数据库。我们可以按Win + r 打开运行窗口,然后输入services.msc打开服务然后查找Mysql,可以看到可以看到我本地的电脑是MySQL57 ,说明我的电脑已经安装了mysql...

2020-06-10 19:41:14 21285

原创 echarts如何让图表占满整个div

echarts如何让图表占满整个div在配置项中添加 grid 项 grid:{ top:"0px", left:"0px", right:"0px", bottom:"0px" }grid 的四个参数值:top、left、right 、bottom分别是图标距离容器的顶部、左边、右边、底部的距离例如:...

2020-06-06 19:57:57 11633 2

原创 【Vue】vue打包时候报错:Error: No module factory available for dependency type: CssDependency

vue项目在打包的时候报错:Error: No module factory available for dependency type: CssDependency解决方法:在vue.config.js添加以下配置即可module.exports = { css: { extract: false }};问题解决

2020-05-26 15:51:28 1712

原创 数据库原理之数据库安全性(详细知识点)

数据库的安全性1.1 安全性概述1.1.1 数据库的不安全因素非授权用户对数据库的恶意存取和破坏DBMS提供的安全措施:用户身份鉴别、存取控制和视图等数据库中重要或敏感的数据被泄露DBMS提供的安全措施:强制存取控制、 数据加密存储、 加密传输等审计日志1.1.2 安全标准TCSEC标准/TDI标准安全级别划分:A1,B3,B2,B1,C2,C1,D总结:...

2020-05-07 22:56:01 5097

原创 数据库原理sql命令大全(详细解释与总结)

sql命令1、数据定义1.1 模式1,11 创建模式CREATE SCHEMA 模式名 AUTHORIZATION 用户名1.12 删除模式 DROP SCHEMA 模式名 <CASCADE|RESTRICT>CASCADE(级联)删除模式的同时把模式中所有的数据库对象全部删除RESTRICT(限制)如果该模式中定义了下属的数据库对象(比如:表,视图等...

2020-04-29 08:54:46 3090

原创 基于邻接矩阵存储的图的广度优先搜索遍历算法的实现(附C++实现代码)

广度优先搜索算法(BFS)概念: 广度优先搜素算法(BFS) 的实现类似树的层次遍历,我们在实现他的时候一般借助一个队列来进行实现,利用队列的先进先出的特点来对图进行广度优先搜索算法的实现。具体实现思路:1、 同样,先创建一个visited_BFS标记数组来判断顶点是否已经访问过了,并且初始化visited_BFS数组为false,表示图的所有顶点还没有访问。2、 借助队列来实现广度优先...

2020-01-20 17:04:38 1950

原创 基于邻接矩阵存储的图的深度优先搜索(DFS)实现思路以及代码(超级详细)

图深度优先搜索(DFS)深度优先搜索类似于树的前序遍历,而不一样的地方是图的深度优先搜索遍历在遍历的过程中可能会因为图本身的结构原因而反复地访问到一个顶点。这个是不被允许的,所以我们需要对应的解决的方法来针对这个问题。下面是算法实现的主要实现思路:实现深度优先搜索算法我们一般有两种思路:一种是通过递归的方法,一种是借助栈来实现。以下讨论的是借助栈来实现的思路1、首先,由于我们讨论的图结构...

2020-01-16 09:59:05 1817

原创 图的邻接表的实现以及各种基本操作(附C++实现代码)

图图的存储形式有很多,例如邻接矩阵,邻接表,多重邻接表,十字链表这里将介绍图的邻接表存储形式:邻接表的实现思想:邻接表的概念我们就不再进行赘述,主要是将实现邻接表的实现思路捋一捋。首先,邻接表存储的基本思想:对于图的每个顶点vi,我们将所有邻接vi的顶点连接成一个单链表,称为顶点vi的边表(对于有向图则称为出边表),所有边表的头指针和存储顶点信息的一维数组构成了顶点表。而邻接表有着两种...

2020-01-15 17:00:59 4041

原创 用邻接矩阵存储的图的代码实现(创建、遍历以及各种基本操作)(附C++实现代码)

一、图图的定义: 图G由两个集合E和V组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常用来表示顶点集合和边集合。E(G)可以为空集,如果E(G)为空,说明只有顶点而没有边。二、 图的分类1、有向图: 如果E(G)为有向边的集合,则该图就表示为有向图。2、无向图: 如果E(G)为无向边的集合,则该图就表示为无向图。...

2019-12-03 16:43:58 3699 2

原创 栈的实际应用问题----括号是否匹配问题(附c++代码实现)

题目描述:假设一个字符串中可以包含三种括号:( )[ ]{},且这三种括号可以按任意次序嵌套使用(如:“…[…{…}…[…]…]…(…)” 为合法嵌套, “…[…{… )…[…]…]…(…)”为不合法嵌套)。 编写判别给定表达式中所含括号是否正确配对出现的算法,如果是合法嵌套则返回为true,如果是不符合法嵌套则返回为false。题目分析:其实这个是对栈的一个简单的应用无非就是怎么借助栈...

2019-11-20 23:23:32 773

原创 哈夫曼编码的实现(详细思路及c++一步一步代码实现)

哈夫曼编码的两个特殊性质:1、哈夫曼编码是前缀编码。(问:啥是前缀编码? 前缀编码就是在一个编码方案中,任何一个编码度不是其他任何编码的前缀(最左子串),那么这个编码就是前缀编码。)2、哈夫曼编码是最优前缀编码。即对于包括n个字符的数据文件,分别以它们的出现次数为权值来构造哈夫曼树,则利用该树对应的哈夫曼编码对文件进行编码,能使该文件压缩后对应的二进制文件的长度最短。哈夫曼编码的算法实现:...

2019-11-20 16:59:40 14238

原创 哈夫曼树的实现(构建、遍历)(附C++详细实现代码)

哈夫曼树带权路径长度: 设二叉树有n个带权值的叶子结点,从根节点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度。哈夫曼树的定义:带权路径长度最小的二叉树(也称最优二叉树)哈夫曼树的构建思路:1、以权值分别为W1,W2...Wn的n各结点,构成n棵二叉树T1,T2,...Tn并组成森林 S={T1,T2,...Tn},其中每棵二叉树 Ti仅有一个权值为 Wi的...

2019-11-09 15:59:25 9648 3

原创 中序线索二叉树(构建,遍历和找前驱后继节点)附c++详细解释代码!

在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化线索化二叉树的本质,实际上是对原始二叉树中的指向为空(NULL)的指针域进行利用,我们让其指向为NULL的指针域指向前驱(左孩子)或者是后继(右孩子),但是我们怎么来辨别是树节点还是指向其前驱还是后继呢?核心思想:我们为每一个树节点增加两...

2019-11-08 17:56:53 5205 2

原创 程序运行时报错 :0xC0000005: 写入位置 0x000000xx 时发生访问冲突的原因

之前在写代码的时候碰到过这个问题:编译通过,但是在程序运行的时候就会停在某一行代码上,提示这个问题:写入位置 0x0000xxxx 时发生访问冲突一看到的反应自然是:我的代码出现越界问题了。在这里总结一下我碰过的问题:1、第一个就是数组或者指针越界问题例如:定义一个数组 int a[10] ,然后你对a[10]进行操作又比如:你对指针进行操作 p -> value ,这个时...

2019-11-06 17:32:11 7847

原创 VS写代码的时候出现错误: error LNK1120: 1 个无法解析的外部命令(详细解释)

由于自己写代码的时候,代码编写不规范,经常出现这样的错误:error LNK1120: 1 个无法解析的外部命令。这个问题很常见,产生这个错误的原因是:你的代码含有头文件,但是找不到你头文件中的函数的实现。编译链接时就会报错还有可能有以下情形:你的代码中只含有头文件,把函数声明和实现都放在了头文件(.h)文件中,一般声明放在.h文件,实现放在同名的.cpp文件中。 这种情况一般会通过编译,...

2019-11-06 17:16:10 17616 2

原创 如何实现二叉树的非递归先序、中序、后序遍历(附C++详细实现代码)

二叉树的递归遍历算法是比较容易实现的,那如何实现二叉树的非递归遍历算法呢?总体具体实现思路:1、非递归实现二叉树的遍历我们都借助栈来实现2、借用栈的来实现功能是:我们在进行遍历二叉树的时候,总会先遍历左子树,然后才遍历右子树,借助栈来保存左子树的节点,然后借助栈来从左子树进入右子树。3、然后根据访问根节点的先后顺序来进行具体调整即可。一、我们从非递归实现中序遍历开始讲起: 因为非递归...

2019-11-04 16:40:29 1018

空空如也

空空如也

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

TA关注的人

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