自定义博客皮肤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)
  • 收藏
  • 关注

原创 Vue 组件命名及子组件接收参数命名

首字母大写。如 <School></School>。在 vue 开发者工具中默认使用的是该种方式。: 首字母小写。如 <school></school>

2025-04-02 20:26:16 248

原创 AOP面向切面编程

假设有四个方法,需要在每个方法中都输出一个日志,传统发放就需要在每个方法中写一条输出语句,如果有一万个方法,就需要将该输出语句写一万次,那这种方法显然是不可行的。所以需要将这条打印语句抽离封装好,需要用的的方法调用封装好的打印语句就好了。上图所示,将长的椭圆形看成一个个方法,然后在方法上横切一刀,每个椭圆形就会有个横切面,这个横切面就是我们需要抽取出来的业务。我们把全部的横切面都集成一个大的横切面,就类似于将公共模块封装,需要用的时候直接调用即可。

2025-04-02 10:10:17 961

原创 vue 组件之间传递参数

并将数据传递给父组件。父组件可以通过在子组件标签上监听这个自定义事件来接收数据。1. 子组件通过 $emit 定义触发事件,并传递数据。

2025-03-31 20:20:39 929

原创 vue 自定义指令

定义指令// 注册一个全局自定义指令 `v-focus`// 当被绑定的元素挂载到 DOM 中时...// 聚焦元素el.focus()})使用指令指令定义时不加“v-”,但使用时要加“v-”指令名如果是多个单词,要使用kebab-case(-)命名方式,不要用camelCase(驼峰)命名如果想注册局部指令,可在组件中配置 directives 属性来注册局部指令focus: {// 指令的定义el.focus();如下所示。

2025-03-31 14:56:35 423

原创 vue 路由

query 传参跳转:to="/path?参数名=值&参数名2=值"获取:$route.query.参数名param 传参配置动态路由:path: "/path/:参数名"跳转:to="/path/参数值"获取:$route.params.参数名注意:1. 动态路由也可以传多个参数,但一般只传一个。2.使用param 对象写法传参,跳转路由要使用 name 属性,不能使用 path 属性。3.需要在路由配置中设置占位参数。

2025-03-31 14:02:53 1030

原创 基于 vue 做数字滚轮效果

如果某个中间属性为null或undefined,表达式会直接返回undefined,而不会抛出错误。修改start-val 和 end-val 的起始值即可。在需要使用的位置写 <count-to></count-to> 标签。use-easing:是否使用缓动效果,默认为 true。decimals:小数点后保留位数,默认为 0。separator:千位分隔符,默认为逗号 ,。start-val:初始值,默认为 0。prefix:前缀,默认为空字符串。suffix:后缀,默认为空字符串。

2025-03-30 12:31:55 266

原创 vue 权限应用

在 vue 入口文件自定义指令,

2025-03-30 12:10:14 816

原创 前端 vue 项目上线前操作

而通过 CDN 引入,这些库不会被打包到构建文件中,从而显著减少了打包后的文件体积。把大的文件在打包时排除在外,可以缩小打包的大小,保证 js 的加载速度,排除的包可以采用 CDN 的方式链接引入。这个 externals 里面配置的信息是键值对(key-value), key 第三方依赖库的名称,同package.json文件中的 dependencies 对象的key一样。之后可以进入到预览页面,我们可以把 mock 相关给去除,因为这是在开发阶段模拟数据用的,在真实的环境中,是用不到mock的。

2025-03-29 19:34:23 804

原创 封装 axios

封装 Axios 是指将 Axios 这个 HTTP 客户端库进行封装,以便在项目中更方便地使用和管理网络请求。在封装 Axios 时,一般会定义一些公共的配置、拦截器、错误处理等功能,以提高代码的复用性和可维护性。2.请求拦截器,统一注入 token。3. 响应拦截器,结构函数,处理异常。1. 基础地址,超时时间。

2025-03-29 15:06:30 113

原创 vue 脚手架解决跨域问题

一个URL地址是由三部分组成的,分别是域名、端口、协议,只要是两个URL地址有一个部分不是相同的,就是跨域。如下:域名跨域:www.example.com 和 www.anotherexample.com端口跨域:8080 和 8098协议跨域:https 和 http 、 http 和 ftp 等等。

2025-03-29 15:01:10 376

原创 vue 两种路由模式

在vue.js中,路由模式分为两种:hash 模式和 history 模式。这两种模式决定了URL的结构和浏览器历史记录的管理方式。1. hash 模式带 #,#后面的地址变化不会引起页面的刷新。换句话说,hash模式不会将#后面的地址带给服务器。如果是在移动端,带有#地址的链接是无法访问的。2. history 模式,没有#,地址变化会引起页面刷新,这种模式会将整个地址发送给服务器。

2025-03-29 14:07:28 390

原创 layui动态拼接生成下拉框验证必填项失效问题

利用 jQuery 动态拼接下拉框时,lay-verify="required" 失效了,有以下几种原因。2. 由于这是动态添加的元素,所以在初始化的时候元素没有绑定校验规则,所以必填验证失效了。1. <form></form>标签 加入 layui 类,发现 layui-verify 必填验证生效了。3. 需要在下拉框动态拼接option 时,提交按钮上加自动提交,

2024-12-23 19:25:43 422

原创 【Redis】一人一单秒杀活动

秒杀一人一单业务流程图如下实现代码块如下如果是单线程那上面的逻辑是没有问题的,问题是在多并发的情况就会出现一人购买多次的情况。为什么呢?这里不是已经加了判断吗?当有两个线程同时去订单表查询数据时,都发现没有数据,所以这两个线程都会扣减库存,创建订单,所以还是会出现一人购买多单的情况。所以需要加锁,由于乐观锁适合更新数据控制版本号,而插入数据就没有办法控制版本号了,所以需要使用悲观锁操作。我们可以把实现一人一单的逻辑抽取出来封装成一个方法,然后对这个方法进行加锁。

2024-12-16 15:38:48 1046

原创 【Redis】库存超卖问题解决

一、问题分析出现超卖问题一般都是线程安全引起的问题。正常情况下,是先查询库存,如果库存小于等于0就购买失败,接着第二个线程查询库存,如果库存小于等于0就购买失败。时序图如下所示if (voucher.getStock() < 1) { // 库存不足 return Result.fail("库存不足!");}//5,扣减库存boolean success = seckillVoucherService.update() .setSql("stock= sto

2024-12-16 14:20:14 1051

原创 【Redis】Redis 生成唯一 id

我们让异步线程和变量绑定,每调用一次countDown,内部变量就减1,当内部变量为0时,说明异步线程都执行完毕了,此时await就不在阻塞主线程,这样就能够计算出系统运行时间。每个订单业务都需要有一个唯一的id,如果使用数据库自增id就会暴露规律,同时id会有一个最大的阈值,万一订单超过这个阈值,那就会出现问题。雪花算法是世界上知名的全局唯一id生成策略,采用long类型的64位数字,原理和今天的Redis自增原理差别不大,只是雪花算法的自增是当前机器的自增,需要维护机器ID。如图所示,ID分为三部分。

2024-12-15 13:30:27 791

原创 【Redis】Redis缓存击穿

互斥锁就是在缓存重建的过程,让其他线程进行等待,从而确保数据一致性,但线程需要等待,如果锁没有释放,还会导致服务阻塞,甚至不可用的状态。逻辑过期是保证在缓存重建期间服务依然可用,但不能保证数据一致性。

2024-12-13 17:14:24 1168 1

原创 【Redis】Redis 缓存雪崩

例如我们做缓存预热的时候,批量导入数据到缓存中,因为是同一时刻导入的,那么过期时间ttl也是一样的,那么时间一到大量的key就会失效。我们可以设置随机数,在设置过期时间时加上这个随机数,比如设置标准过期时间是30分,随机数的区间是0至10,那么过期时间就可以设置成标准过期时间加上随机数,过期时间就是在30至40分钟这个区间范围内,可以避免大量的key同一时刻失效。:同一时间内缓存中大量的key失效或者Redis服务器宕机,所有的请求到达数据库中。

2024-12-13 11:17:56 323

原创 【Redis】Redis缓存穿透

当布隆过滤器说数据存在,那不一定真的存在,因为可能会出现哈希冲突。但是并不是到这就结束了,既然将空值写到redis了,就会导致我们从redis中命中时,命中的就不一定是商铺信息了,还有可能是空值,因此命中后还需要对结果做判断。:发送一个请求时,会到布隆过滤器中,如果布隆过滤器判断数据不存在,就会直接拒绝请求。如果缓存中没有命中目标,查询就会达到数据库,数据库中也没有目标数据,永远也不会建立缓存,所以每次请求就会到达数据库。之前的逻辑,如果这个数据在书库中不存在,直接就返回404了,这样会有缓存穿透的问题。

2024-12-13 11:05:42 470

原创 【Redis】Redis 缓存更新策略

缓存更新是redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致缓存中的数据过多,所以redis会对部分数据进行更新,或者把他叫为淘汰更合适。:redis自动进行,当redis内存达到咱们设定的max-memery的时候,会自动触发淘汰机制,淘汰掉一些不重要的数据(可以自己设置策略方式)。这种是默认的。这种策略在一定程度上保证了数据一致性,当redis的内存不够时,会自动淘汰一部分的缓存数据。

2024-12-12 19:18:23 1045

原创 【Redis实战】基于Redis保存验证码登录实例

校验手机号是否正确正确,生成验证码。错误 ,给出提示。保存验证码至redis中发送验证码Controller 层service层接口service实现类定义一个类存放常量。

2024-12-09 14:26:30 368

原创 【Redis】Redis基础——Redis命令

方案一:自定义序列化1. 自定义RedisTemplate2. 修改RedisTemplate的序列化器为GenericJackson2JsonRedisSerializer方案二:手动序列化1. 使用StringRedisTemplate2. 写入Redis时,手动把对象序列化为JSON3. 读取Redis时,手动把读取到的JSON反序列化为对象。

2024-12-08 13:56:12 1092

原创 【Redis】Redis基础——Redis的安装及启动

GitHub上的大神编写了Redis的图形化桌面客户端,不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包。# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,因为之前配置了密码,因此需要通过 -u 来指定密码。当然,在连接redis时指定密码,还能连接后使用 AUTH 指定用户名和密码,这里我没有用户名,直接指定密码就好了。2. 修改redis.conf文件中的一些配置,进入后,输入/,在输入内容回车就能搜索到了。

2024-12-07 10:32:16 3578

原创 分布式搜索引擎Elasticsearch(三)

elasticsearch中分词器(analyzer)的组成包含三部分:character filters(字符过滤器):分词之前对词条进行处理。例如删除字符、替换字符。tokenizer(分词器):指定分词器。tokenizer filter(过滤器):对分词后的词条进行处理。例如大小写转换、同义词处理、拼音处理等。在创建索引库时,通过settings来配置自定义的analyzer(分词器)自定义分词器只能在当前索引下使用PUT /test// 请求路径,创建一个名为 test 的索引。

2024-12-06 18:30:00 780

原创 分布式搜索引擎Elasticsearch(二)

•优点:支持随机翻页•缺点:深度分页问题,默认查询上限(from + size)是10000•场景:百度、京东、谷歌、淘宝这样的随机翻页搜索。

2024-12-03 20:05:57 1173

原创 分布式搜索引擎Elasticsearch(一)

是一款非常强大的开源的分布式的搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK),换句话说 ELK 就是以 Elasticsearch 为核心的技术栈,包括了 kibana、Logsash、Beats。

2024-11-25 17:31:26 2078

原创 【微服务】RabbitMQ与SpringAMQP消息队列

提供了模板来发送和接收消息。包含两部分,其中spring-amgp是基础抽象,spring-rabbit是底层的默认实现。

2024-11-24 14:40:27 1161

原创 【Linux】Linux高级——日志管理

日志记录了系统的执行事件,包括登录信息、系统重启信息、系统的安全信息、邮件相关信息等。/var/log/目录就是系统日志文件的保存位置。案例:在/etc/rsyslog.conf中添加一个日志文件/var/log/mytes.log,当有事件发送时(比如sshd服务相关事件),该文件会接收到信息并保存。这里演示重启,登录的情况,看看是否有日志保存。编辑rsyslog.conf 文件,添加自定义日志,如下图重启虚拟机reboot切换到mytes.log所在目录,查看sshd相关服务# 切换目录。

2024-11-21 20:16:11 1509

原创 【Linux】Linux备份与恢复

把需要备份的文件或分区用TAR打包,恢复时解压覆盖即可。:使用dump和restore命令dump [参数] [-f 存放位置+指定备份后文件名] [-T 指定开始备份的时间日期] [待备份文件位置]参数说明:-c : 创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。-0123456789:备份层级,0完整备份所有文件,0级以上的层级备份上次备份后更新部分,到9之后再次轮替,即再次从0开始。-f 备份后文件名 : 指定备份的文件名。

2024-11-21 13:30:52 1600

原创 Shell编程

变量名由字母、数字、下划线组成,开头不能是数字。等号两侧不能有空格。变量名一般为大写,是个规范。将命令的返回值赋值给变量A=`date` , ``表示运行反引号里面的命令,并把结果赋值给变量 A。A=$(date) 等价于 A=`date`Shell设计者事先设计好的变量,可以直接使用。类似于java中的预定义变量。$$ // 当前进程的进程号 PID。// 后台运行的最后一个进程的进程号 PID。// 上一次命令的返回状态,如果值为0表示上个命令正常执行;

2024-11-21 08:49:13 991

原创 【Linux】Linux入门实操——rpm与yum

rpm 用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager (RedHat软件包管理工具)的缩写,类似windows的setup.exe。rpm -qa : // 查询所安装的所有rpm软件包rpm -qa | grep ** // 查询指定rpm软件包rpm -q 软件包名 // 查询软件包是否安装,如 rpm -q firefox。

2024-11-19 23:30:00 948

原创 【Linux】Linux入门实操——进程管理(重点)

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd 防火墙等),因此我们又称服务为守护进程,是Linux中非常重要的知识点。service 服务名 [start | stop | restart | reload | status]在CentOS7.0后很多服务不再使用service ,而是systemctlservice指令管理的服务在/etc/initd查看top 与ps 命令很相似。

2024-11-19 21:45:00 1163

原创 【Linux】Linux入门实操——磁盘分区、挂载

Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构, Linux 中每个分区都是用来组成整个文件系统的一部分。Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

2024-11-18 19:15:00 1081

原创 【Linux】Linux入门实操——定时任务调度

at 命令是一次性定时计划任务,at 的守护进程 atd会以后台模式运行,检查作业队列来运行。默认情况下,atd 守护进程每60秒检查作业队列,有作业时,会检查作业预设的执行时间,如果预设执行时间与当前时间匹配,则运行此作业。at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。可以理解为购物车,购买之后购物车里待购清单就消失了。在使用 at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看 atd 是否在运行。

2024-11-18 10:20:06 1138

原创 【Linux】Linux入门实操——用户管理、组管理、权限管理

Linux 系统是一个多任务多用户的操作系统,想要使用系统资源的用户,需要项系统管理员申请一个账号,以这个账号的身份进入系统。

2024-11-16 20:45:53 1499

原创 【Linux】Linux入门实操——实用指令

0: 关机1: 单用户【找回丢失密码]2: 多用户状态没有网络服务4: 系统未使用保留给用户6: 系统重启常用运行级别是3和5,也可以指定默认运行级别,后面演示init [0-6] # 0 -6 任意一个级别如:init 3;init 6。

2024-11-16 13:57:05 960

原创 三种网络模式固定IP

上图所示,Vmnet8(虚拟交换机) 把所有的虚拟机搭建在同个局域网内,但虚拟机是不能直接访问到主机网卡的,因为它们不在同一个网段内,要借助虚拟机的Net设备才能访问到主机网卡。如果禁用宿主机上的 Vmnet8, 宿主机还想访问虚拟机,可以在net设备中设置端口转发以达到访问目的。在虚拟网络编辑器找到 Net 模式,选择 Net设置,在端口转发里添加端口。这样设置之后,即使宿主机上的Vmnet 8 网卡禁用了,宿主机也可访问虚拟机。1. 打开虚拟机,编辑-----> 虚拟网络编辑器。查看NAT模式下的网关、

2024-11-15 11:27:20 904

原创 mybatis一对多映射中相同数据合并只显示一条数据的问题解决方案

假设有三个表A,B,C。表A是主表,表A嵌套了表B, 表B嵌套了表C。表A和表B的关系是一对多;表B和表C是多对多关系。现今需要关联查询三张表的结果。

2024-11-14 16:25:32 377

原创 Spring 定时任务@Scheduled

1. 在SpringBoot 启动类添加 @EnableScheduling2. 在启动类的定时任务方法添加注解 @Scheduled每隔10秒在控制台打印当前时间从左到右的顺序值是:否corn可以用${ } 获取配置文件的值。而不用在@ Scheduled 中设置具体的。如@Scheduled(corn = "${sc.value}")】多个值。如在“周”上设置 “1,2,3“ 表示每周一周二周三都会执行。【-】区间值。如在”周“上设置”1-3“表示每周一至周三都会执行。【*】所有值。

2024-11-11 19:15:26 908

转载 下载yum出现Loading mirror speeds from cached hostfileCould not retrieve mirrorlist http://mirrorlist.ce

经查阅资料发现是centos7和centos8 均在 2024年6月30号停止维护了,导致默认镜像不能使用。只要修改默认镜像地址即可。按照如下步骤设置镜像后即可重新下载yum了。One of the configured repositories failed (未知),下载yum出现,检查网络后发现虚拟机是可以上网的。已加载插件:fastestmirror, langpacks。

2024-11-11 11:10:32 962 5

原创 【Linux】Linux找回密码

2. 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的。(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码((注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter)可,密码修改成功后,会显示passwd.....的样式,说明密码修改成功。(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。1. 启动系统进入开机界面,在界面中按“e”进入编辑界面。),完成后,系统会自动重启,

2024-11-09 16:00:14 156

Linux版本 redis 安装包

Linux版本 redis 安装包

2024-12-07

redis客户端操作软件

redis客户端操作软件

2024-12-07

微服务Docker 容器化

微服务Docker 容器化

2024-11-06

xlsx.full.min.js第三方库

利用SheetJS在前端解析Excel读取数据并赋值给组件

2024-11-04

空空如也

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

TA关注的人

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