自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

先知三日

富贵十年

  • 博客(82)
  • 收藏
  • 关注

原创 @RequestPart和@RequestParam 区别和联系

RequestParam 和 @RequestPart 都是 Spring 框架中用于将 HTTP 请求中的数据绑定到控制器方法参数上的注解,但它们适用于不同的请求数据类型和场景。

2024-07-17 11:00:52 748

原创 拦截器配置及原理

自定义拦截器要实现HandlerInterceptor,如果用户通过输入url直接访问某个页面这样就跳过了登录步骤,因此可以使用自定义拦截器,在请求到达controller之前,执行preHandle方法,在里边自定义逻辑来校验用户是否登录,进而达到登录检查的目的。/*** 登录检查* 1、配置好拦截器要拦截哪些请求* 2、把这些配置放在容器中*/@Slf4j/*** 目标方法执行之前* @return*/@Override。

2024-07-15 11:43:13 377

原创 内容协商源码解析与自定义 MessageConverter

实现多协议数据兼容。如何新增一个自定义的xx-media格式?使用spring boot可以基于配置文件快速修改媒体类型。spring:mvc:# 开启请求参数内容协商模式# 修改parameterName,默认为format# 自定义媒体类型或者如果不修改xml文件,还可以通过重写configureContentNegotiation方法来实现。

2024-07-10 15:57:27 1115

原创 @MatrixVariable注解

MatrixVariable 是 Spring MVC 提供的一个注解,用于处理 URI 路径中的矩阵变量。矩阵变量可以在URL路径段中使用分号(;)分隔键值对(例如 /path;name=value),这种方式可以用来传递额外的数据而不影响URL的层次结构。

2024-07-04 09:30:50 373

原创 DBeaver导入sql脚本报错java.io.IOException: Process failed (exit code = 1). See error log.

编码不一致,sql脚本文件是utf8编码,而mysql默认以gbk编码连接数据库。

2024-07-02 09:21:56 1572 2

原创 v-for中key的原理以及用法

key 的使用是 Vue 中管理动态列表非常重要的一个方面,它确保了列表渲染的性能和正确性。在使用 v-for 时,总是推荐为每个项指定一个唯一的 key 值,通常是每个项的唯一标识符,如 ID 或者其他唯一字段。这样可以帮助 Vue 更有效地更新和管理 DOM。

2024-06-27 14:44:32 842

原创 Springboot中的静态资源配置

spring:resources:静态资源目录不仅可以是classpath下的目录,也可以是本地磁盘目录,使用前缀进行配置,如:还可以配合${}语法,从环境变量、系统属性中读取目录信息,例如,设置应用启动目录下的public目录为静态资源目录:# ${user.dir} 的值也就是 System.getProperty("user.dir")Faviconfavicon.ico 放在静态资源目录下即可。

2024-06-26 17:10:06 1092

原创 一文搞定yaml文件

YAML 是 "YAML Ain't Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。非常适合用来做以数据为中心的配置文件。

2024-06-26 10:45:59 269

原创 Springboot2自动配置原理

虽然我们127个场景的所有自动配置启动的时候默认全部加载。SpringBoot默认会在底层配好所有的组件。但是如果用户自己配置了以用户的优先。使用@import将AutoConfigurationPackages包下的。作为组件导入到容器中,然后使用Registrar中的方法批量完成组件的注册。按照条件装配规则(@Conditional),最终会按需配置。代表当前是一个配置类。指定扫描哪些,Spring注解;

2024-06-25 11:01:54 357

原创 Springboot2容器功能

我们习惯将经常爱变化的东西写在.properties配置文件中,比如与数据库相关的信息(连接池、URL等)配置到配置文件中,为了方便我们会将配置文件中的内容解析到JavaBean中。如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用;下面代码是比较复杂的使用,用ConfigurationProperties可以简化该过程。下面的代码展示的是原来Spring用xml文件的方式配置bean的方式。配置的prefix,是配置文件中前缀对应的属性。

2024-06-24 15:41:47 274

原创 Springboot2依赖管理与自动配置

主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来。

2024-06-24 15:21:05 170

原创 SpringBoot2入门

需求:浏览发送/hello请求,响应 Hello,Spring Boot 2。把项目打成jar包,直接在目标服务器执行即可。直接运行main方法。

2024-06-24 14:58:03 249

原创 聊聊CSS中的Position

这时,浏览器会按照源码的顺序,决定每个元素的位置,这称为"正常的页面流"(normal flow)。每个块级元素占据自己的区块(block),元素与元素之间不产生重叠,这个位置就是元素的默认位置。定位的元素会被"正常页面流"忽略,即在"正常页面流"中,该元素所占空间为零,周边元素不受影响。这四个属性一起使用,表示元素的初始位置是基于视口计算的,否则初始位置就是元素的默认位置。表示,相对于上级元素(一般是父元素)进行偏移,即定位基点是父元素。定位,所以子元素的定位基点是父元素,相对于父元素的顶部向下偏移。

2024-06-21 11:42:24 632

原创 JavaScript保留两位小数

2. 舍入规则:toFixed 方法会按照四舍五入的规则进行舍入,这可能会导致一些意外的结果。4. 处理特殊值:在处理特殊值如 NaN 或 Infinity 时,toFixed 方法可能会返回 "NaN" 或 "Infinity" 字符串,需要额外处理。因此,在需要保留小数位的情况下,需要额外的除法操作来得到保留小数位的结果。1. 舍入规则:Math.round 方法会按照标准的四舍五入规则进行舍入,这意味着小数部分大于等于 0.5 时会向上舍入,小于 0.5 时会向下舍入。

2024-06-19 16:31:30 338

原创 浅谈JavaScript中的对象赋值

3. Object.assign() 方法(浅拷贝):this.info = Object.assign({}, this.deviceInfo),使用 Object.assign() 方法将一个或多个源对象的属性复制到目标对象,也是实现浅拷贝的一种方式。2. 对象扩展(浅拷贝):this.info = {...this.deviceInfo},使用对象扩展语法创建一个新对象,包含原对象的所有属性和值,但是它们引用不同的对象。这些是常见的对象赋值方式,每种方式都有不同的特点和适用场景。

2024-06-04 14:40:22 482

原创 实现公网数据传输给内网(使用frp)

如果你想在内网设备2上运行 FRP 服务器端(frps),在内网设备3上运行 FRP 客户端(frpc),并使用公网设备1来完成数据传输,你需要通过公网设备1来访问设备2,然后设备2再转发请求到设备3。这种情况下,公网设备1实际上充当了一个转发或接入点的角色。

2024-03-29 16:50:12 552

原创 shell脚本执行需要sudo权限的命令,如何避免人工输入密码

然而,需要强调的是,这种做法在安全性方面存在明显的风险,特别是在生产环境中。密码以明文形式出现在命令行或脚本中,可能会被恶意用户利用。因此,虽然这种方法在某些场景下看起来方便快捷,但在实际应用中应当尽量避免,特别是在涉及敏感或安全性要求高的环境中。更推荐的做法是使用无密码sudo配置(通过编辑/etc/sudoers文件),或者使用密钥认证等更安全的认证方式。该命令在Unix或Linux系统中用于以超级用户(root)权限执行命令,而不需要通过标准的sudo密码提示手动输入密码。

2024-03-29 14:30:56 752

原创 Linux chown命令详解

命令用于设置文件所有者和文件关联组的命令。Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。。chown 需要超级用户 root 的权限才能执行此命令。只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用命令。: root。

2024-03-29 14:11:07 688

原创 ssh远程如何使用密钥免密码登录(配置过程)

配置完后,就可以在客户端使用密钥ssh服务器了,使用如下方法,还可以使用外部程序,控制服务端的重启、关机功能。但是存放在什么位置呢?我这边是放到了服务端用户目录下的xx目录/.ssh目录下,并将id_rsa.pub(公钥)文件改名为authorized_keys。本博客主要阐述客户端和服务端都是用管理员(不是超级管理员)账号如何配置客户端文件、目录等,以及如何解决一些由于权限问题导致配置失败的问题。生成公钥和私钥,在.ssh/目录下,会新生成两个文件:id_rsa.pub(公钥)和 id_rsa(私钥)。

2024-03-27 22:02:24 275

原创 如何查看zip文件的MD5码

要查看zip文件的MD5码,你可以使用不同的方法,具体取决于你使用的操作系统。

2024-03-20 16:45:55 1068 1

原创 InnoDB存储引擎中的锁(整理)

在数据库中锁是为了解决资源争抢的问题,锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。InnoDB存储引擎区别于MyISAM的两个重要特征就是:InnoDB存储引擎支持事务和行级别的锁,MyISAM只支持表级别的锁。

2024-03-20 15:02:54 936

转载 MySQL中如何实现事务提交和回滚

事务是由数据库中一系列的访问和更新组成的逻辑执行单元事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,这段逻辑要么全部执行成功,要么全部执行失败举个最常见的例子,你早上出去买早餐,支付宝扫码付款给早餐老板,这就是一个简单的转账过程,会包含两步从你的支付宝账户扣款10元早餐老板的账户增加10元这两步其中任何一部出现问题,都会导致整个账务出现问题假如你的支付宝账户扣款10元失败,早餐老板的账户增加成功,那你就Happy了,相当于马云请你吃早餐了,O(∩_∩)O哈哈~

2024-03-19 16:25:42 57 1

原创 数据库中DQL、DML、DDL、DCL的概念与区别

数据库语言可以根据其功能被分为几个不同的类别:DQL(数据查询语言)、DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言)。这些类别反映了数据库管理系统中执行的不同类型的操作。

2024-03-18 15:36:50 712

原创 索引相关知识总结

当查询的数据,在索引树中找不到的时候,需要通过非主键索引获取主键,再到主键索引树中去获取所要查询的记录,这个过程叫回表。如:select * from Table where age = 22;通过执行计划(explain)的Extra字段值,可以看到当前sql是否进行了回表,如果Extra字段值为Using index则表示当前查询通过覆盖索引可以获取到,无需通过回表查询记录。select的数据列只用从索引中就能够取得,不必回表,换句话说:查询列要被所建的索引覆盖。最左前缀匹配原则。

2024-03-11 15:24:15 599

转载 聊聊cpu个数、核数、线程数

是只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起,但两核心只能共同拥有一条前端总线,在两个核心满载时,两个核心会争抢前端总线,导致性能大幅度下降,所以早期的PD被扣上了“高频低能”的帽子,要提高封装多核的性能,在多任务的高压下尽量减少性能损失,只能不断的扩大前端总线的总体大小,来弥补多核心争抢资源带来的性能损失,但这样做只能在一定程度上弥补性能的不足,和原生的比起来还是差了很多,而且后者成本比较高,优点在于多核心的发展要比原生快的多。,是CPU最重要的组成部分。

2024-03-05 14:08:26 1209

原创 drop、delete与truncate

truncate, drop是ddl(数据定义语言),操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。(5)当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,delete操作不会减少表或索引所占用的空间。执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。delete可以是table和view。

2024-02-27 17:05:04 391

原创 MySQL表分区技术介绍

分区功能并不是在存储引擎层完成的,因此不是只有 InnoDB 存储引擎支持分区,常见的存储引擎 MyISAM、NDB 等都支持。但也并不是所有的存储引擎都支持,如CSV, FEDORATED, MERGE等就不支持。在使用分区功能前,应该对选择的存储引擎对分区的支持有所了解。MySQL数据库在5.1版本时添加了对分区的支持。分区的过程是将一个表或索引分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。

2024-02-27 14:50:09 1669

原创 InnoDB的逻辑存储结构(表、段、区、页、行)

InnoDB存储引擎是面向列(row-oriented)的,也就是说数据是按行来进行存放的(数据表中的一行),而每个页的存放的行记录也是有硬性定义的,最多允许存放7992数量的行记录(计算公式为16 * 1024 /2 - 200,16是指页的大小为16KB)。其实这是因为,在每个段开始时,会先用32个页大小的碎片页来存放数据,在使用完这些碎片页才会进行区的申请(直接申请4~5个区),这样做的目的在于,对于一些小表,可以在开始时就占用比较少的空间,节省磁盘容量的开销。

2024-02-26 15:04:21 991

原创 InnoDB特性之两次写(Double Write)

在对缓冲池的脏页进行刷新时,并不直接写磁盘,而是会通过memcpy函数将脏页先复制到内存中的doublewrite buffer,之后通过doublewrite buffer再分两次,每次1MB顺序地写入共享表空间的物理磁盘上,然后马上调用fsync函数,同步磁盘,避免缓冲写带来的问题。这样就可以解决上文提到的部分写失效的问题,因为在磁盘共享表空间中已有数据页副本拷贝,如果数据库在页写入数据文件的过程中宕机,在实例恢复时,可以从共享表空间中找到该页副本,将其拷贝覆盖原有的数据页,再应用重做日志即可。

2024-02-22 11:44:53 472

原创 网络编程知识整理

器的T C P端口号都是 2 1,每个Te l n e t服务器的 T C P端口号都是 2 3,每个T F T P (简单文件传送协议)服务器的 U D P端口号都是 6 9。在T C P / I P协议族中,网络层协议包括 I P协议(网际协议),I C M P协议(I n t e r n e t互联网控制报文议),以及IGMP协议(Internet组管理协议)。在 T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息。

2024-02-21 10:55:08 931

原创 日期与时间知识分享(时区、本地时间、时刻、夏令时等)

时间、时区、时刻、夏令时等知识分享。

2024-02-20 09:59:17 241

原创 字符串由数字和字母组合如何自定义排序

这段代码首先定义了一个字符串列表,然后使用Collections.sort()方法对其进行排序。在这个比较器中,我们首先使用正则表达式\\D(匹配任何非数字字符)来提取字符串中的数字部分,并将其转换为整数。然后,我们比较这两个数字。如果数字相同,我们就使用字符串的自然顺序(即字典顺序)来比较字母部分。要实现这个功能,你可以使用Java中的Collections.sort()方法,结合自定义的比较器(Comparator)。这个比较器首先会比较字符串中的数字部分,如果数字相同,则会比较字母部分。

2024-02-20 09:39:45 252

原创 序列化和反序列化

序列化(Serialization):将对象状态或数据结构转换成一种格式(如JSON, XML, 字节流等)以便在网络中传输或保存到文件中。反序列化(Deserialization):它是将序列化过的数据格式(如JSON, XML, 字节流等)转换回原来的对象状态或数据结构。

2024-01-31 16:46:32 1161

原创 Web开发中HTTP请求、响应等相关知识

使用"params"来传递数据可能会导致数据暴露在URL中,而且有些服务器或框架可能不支持从"params"中获取POST请求的数据。因此,通常情况下,建议使用"form data"或"request body"来传递POST请求的数据,而不是使用"params",使用"params" 的方式更适合GET请求。如果您想在POST请求中使用"params",通常意味着您将数据附加到URL的查询字符串中,而不是将其作为请求的主体发送到服务器。- GET请求对传输的数据长度有限制,因为URL的长度是有限制的。

2024-01-23 14:49:50 920

原创 MyBatis处理LIKE查询时,如何将传值中包含下划线_和百分号%等特殊字符处理成普通字符而不是SQL的单字符通配符

在XML配置的MyBatis中处理LIKE查询时,如果前端传递的值中包含了下划线_,并且你想要这个下划线被视为普通字符而不是SQL的单字符通配符,你需要在MyBatis的XML映射文件中对这个字符进行转义。在这个例子中,REPLACE(#{pattern}, '_', '\\_')函数将传入的参数中的所有下划线_替换为转义后的下划线\\_。如果这种字符不经过处理,并且你的模糊查询sql语句书写如下,那么在你的前端页面搜索框中输入下划线或者百分号时候,搜索到的数据就是全量数据,未达到我们的预期。

2024-01-18 12:02:54 1241

原创 @PreAuthorize注解

例如,v-hasPermi="['monitor:job:add']"会检查用户是否具有monitor:job:add这个权限,如果有,那么相关的UI元素就会显示。用户此时已经登陆系统,假设用户操作的是角色管理模块的查询按钮,当点击该按钮时,会通过网络映射到后端的接口方法。通过这种方式,RuoYi框架可以实现精细的基于权限的访问控制,确保只有具有相应权限的用户才能访问特定的资源。如果当前用户的权限集合中,包含当前被@PreAuthorize标注的方法的权限,则返回true。等集合信息返回给前端。

2024-01-12 14:44:53 4273

原创 ubuntu18.04修改时区

然后选择亚洲Asia,继续选择中国China,最后选择北京Beijing。

2024-01-11 13:45:26 439

原创 Linux chmod命令详解

Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。: 所有使用者。

2024-01-10 14:29:19 2078

原创 Linux ls命令用法

Linux ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容(

2024-01-10 14:11:15 387

原创 Vue实现版本号输入、删除时光标自动移动到上、下一个输入框前端demo

首先声明,我平时的工作主要是后端JAVA开发,该demo为前端练习,记录一下劳动成果,希望对大家有所帮助,如果有写的不妥的地方,欢迎大家指正,一起学习、共同进步。

2024-01-05 16:26:55 1233

空空如也

空空如也

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

TA关注的人

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