自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Shell脚本语言学习1

子bash和当前bash,可以使用type source.我们执行ps -f 可以查看当前bash环境,创建一个子bash,在当前子bash环境下,依然可以运行shell文件。最后一次执行命令状态,如果结果是0,证明上面执行的命令都是正确的,如果结果不是0,则证明上面命令不正确。中,变量是没有类型的,或者我们理解为全部都是字符串类型如果变量的值需要做数值运算,可以使用。$n 其代表接受参数,n是数字,代表在执行脚本时候传递的参数数量,例如$1-@非常相似,都代表命令行所有的参数,但是。

2024-05-21 17:43:25 528

原创 ngixn 准备

确认yum可用,确认防火墙,确认SELinux一项安装参数:gcc:编译依赖gcc环境pcre:PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl 兼容的正则表达式库。zlib:zlib库提供了很多种压缩和解压缩的方式,Nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

2023-12-10 22:14:52 868

原创 Linux打包压缩与搜索命令

size 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件)-ctime -n +n 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前)-mtime -n +n 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前)-atime -n +n 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前)-perm 匹配权限(mode 为完全匹配,-mode 为包含即可)-nouser 匹配无所有者的文件。

2023-12-03 21:33:30 503

原创 自定义指令基础

蓝色效果blue:{

2023-11-17 22:22:39 709

原创 组合式API_模板引用

虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作,但在某些情况下,我们仍然需要直接访问底层 DOM 元素。要实现这一点,我们可以使用特殊的 ref attribute,组合式API的实现更为简洁。选项式API_模板引用。组合式API_模板应用。

2023-11-17 22:04:00 419

原创 组合式API_生命周期

选项式API_生命周期。组合式API_生命周期。

2023-11-17 22:01:08 95

原创 组合式API_侦听器

选项式API_侦听器。组合式API_侦听器。

2023-11-17 21:57:52 261

原创 组合式API_事件处理

选项式API_事件处理。组合式API_事件处理。

2023-11-17 21:55:17 30

原创 基于 Redis 实现的分布式锁

Redisson - 是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象,Redisson、Jedis、Lettuce 是三个不同的操作 Redis 的客户端,Jedis、Lettuce 的 API 更侧重对 Reids 数据库的 CRUD(增删改查),而 Redisson API 侧重于分布式开发。删除锁的时候要判断,是不是自己的,如果是再删除。Redis分布式锁误删除问题解决方案。超时释放:获取锁时设置一个超时时间。编写Redis分布式锁工具类。

2023-11-14 22:53:14 277

原创 分布式锁介绍

分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。

2023-11-14 22:31:12 173

原创 VUE 组合式API

data。

2023-11-13 22:48:03 357

原创 VUE选项式API,组合式API

使用选项式 API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 data、methods 和 mounted。优点:功能逻辑复杂繁多情况下,各个功能逻辑代码组织再一起,便于阅读和维护。缺点:代码组织性差,相似的逻辑代码不便于复用,逻辑复杂代码多了不好阅读。通过组合式 API,我们可以使用导入的 API 函数来描述组件逻辑。在 vue2.x 项目中使用的就是 选项式API 写法。优点:易于学习和使用,写代码的位置已经约定好了。缺点:需要有良好的代码组织能力和拆分逻辑能力。

2023-11-13 22:35:12 255

原创 VUE项目从哪里开始?

应用实例必须在调用了 .mount() 方法后才会渲染出来。该方法接收一个“容器”参数,可以是一个实际的 DOM 元素或是一个 CSS 选择器字符串。我们传入 createApp 的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。在src目录下的assets文件夹的作用就是存放公共资源,例如:图片、公共CSS或者字体图标等。每个 Vue 应用都是通过 createApp函数创建一个新的 应用实例。

2023-11-12 20:34:26 132

原创 VUE组件存活,异步组件

当使用 来在多个组件间作切换时,被切换掉的组件会被卸载。我们可以通过组件强制被切换掉的组件仍然保持“存活”的状态。

2023-11-12 20:29:11 210

原创 VUE动态组件

有些场景会需要在两个组件间来回切换,比如 Tab 界面。

2023-11-12 20:20:51 26

原创 VUE组件的生命周期

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。

2023-11-12 20:07:08 335

原创 VUE Slot

在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段.元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。

2023-11-12 19:43:09 147

原创 VUE基础

const的作用就是将变量声明为一个常量,不能被修改,不可以再次赋值,它的指向是不可以改变的,只能指向某处固定区域,不能再指向其它地方。cnpm install --save vue-i18n@next vue3需要安装最新版本。1.声明后必须初始化赋值,如:const name=‘aaa’,不可以 const name;2.常量的含义是指向的对象不能修改,但是可以修改对象中的属性。element-plus按需加载。安装element-plus。

2023-11-12 18:28:27 75

原创 RabbitMQ 死信队列

在MQ中,当消息成为死信(Dead message)后,消息中间件可以将其从当前队列发送到另一个队列中,这个队列就是死信队列。而在RabbitMQ中,由于有交换机的概念,实际是将死信发送给了死信交换机(Dead Letter Exchange,简称DLX)。死信交换机和死信队列和普通的没有区别。2 消费者拒签消息,并且不把消息重新放入原队列。3 消息到达存活时间未被消费。1 队列消息长度到达限制。

2023-11-06 22:40:14 481

原创 RabbitMQ(高级特性)优先级队列

假设在电商系统中有一个订单催付的场景,即客户在一段时间内未付款会给用户推送一条短信提醒,但是系统中分为大型商家和小型商家。比如像苹果,小米这样大商家一年能给我们创造很大的利润,所以在订单量大时,他们的订单必须得到优先处理,此时就需要为不同的消息设置不同的优先级,此时我们要使用优先级队列。优先级越高,越先被消费。

2023-11-06 22:27:53 423

原创 RabbitMQ(高级特性)设置单条消息存活时间

在以上案例中,i=5的消息才有过期时间,10s后消息并没有马上被移除,但该消息已经不会被消费了,当它到达队列顶端时会被移除。2 消息过期后,并不会马上移除消息,只有消息消费到队列顶端时,才会移除该消息。1 如果设置了单条消息的存活时间,也设置了队列的存活时间,以时间短的为准。设置单条消息存活时间。

2023-11-06 22:05:35 828

原创 RabbitMQ(高级特性) 设置队列所有消息存活时间

RabbitMQ可以设置消息的存活时间(Time To Live,简称TTL),当消息到达存活时间后还没有被消费,会被移出队列。RabbitMQ可以对队列的所有消息设置存活时间,也可以对某条消息设置存活时间。

2023-11-06 21:56:47 527

原创 RabbitMQ(高级特性)利用限流实现不公平分发

【代码】RabbitMQ(高级特性)利用限流实现不公平分发。

2023-11-06 21:45:34 390

原创 RabbitMQ(高级特性):限流

在rabbitmq中,使用消费端限流必须开启。

2023-11-06 21:09:54 509

原创 RabbitMQ消息可靠性投递

RabbitMQ消息投递的路径为:生产者 —> 交换机 —> 队列 —> 消费者在RabbitMQ工作的过程中,每个环节消息都可能传递失败,那么RabbitMQ是如何监听消息是否成功投递的呢?确认模式(confirm)可以监听消息是否从生产者成功传递到交换机。退回模式(return)可以监听消息是否从交换机成功传递到队列。消费者消息确认(Consumer Ack)可以监听消费者是否成功处理消息。

2023-11-06 20:50:20 339

原创 VUE重学

vue默认按照 就地更新 的策略更新通过v-for渲染的列表,当数据项顺序改变时,vue不会随之移动dom元素顺序,而是就地跟新每个元素,确保他们在原本指定的索引位置上渲染。v-if是按条件渲染,因为他确保在切换时,条件区块内的事件监听器和子组件都会被销毁和重建,也是惰性的,如果初次渲染条件为false,则不会做任何事,只有true才会渲染。为了给vue一个提示,以便跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的key :key。

2023-10-27 23:35:00 220

原创 一个小需求:给定一些xls文件还有一个带有学生名称的xls单个文件,根据后者xls中提供的学生名称和学生所在班级去前者一堆xls文件中找到相关信息,并将前者一堆xls文件中的信息补充到后者哪个单一的x

【代码】一个小需求:给定一些xls文件还有一个带有学生名称的xls单个文件,根据后者xls中提供的学生名称和学生所在班级去前者一堆xls文件中找到相关信息,并将前者一堆xls文件中的信息补充到后者哪个单一的x。

2023-08-29 22:00:30 37

原创 SpringSecurity同时整合短信登录验证和邮箱登录验证

【代码】SpringSecurity同时整合短信登录验证和邮箱登录验证。

2023-08-02 21:56:40 629

原创 SpringSecurity自定义认证

创建一个自定义的认证令牌,继承自UsernamePasswordAuthenticationToken,用于封装用户的邮箱和验证码信息。自定义一个实现UserDetails接口的类,用于表示用户信息。创建一个自定义的过滤器,用于处理邮箱验证码登录逻辑。这个过滤器将在用户登录时验证邮箱和验证码,并完成用户认证过程。创建一个自定义的AuthenticationProvider,用于处理邮箱验证登录的认证逻辑。创建一个实现UserDetailsService接口的类,用于根据邮箱查询用户信息。

2023-08-02 20:45:59 235

原创 volatile 2

对于volatile变量具备可见性,jvm只是保证从主内存加载到线程工作内存的值是最新的,也仅是数据加载时是最新的。但是多线程环境下,数据计算和数据赋值操作可能多次出现,若数据在加载之后,若主内存volatile修饰变量发生修改之后,线程工作内存中的操作将会作废去读主内存最新值,操作出现写丢失的问题,即各线程私有内存和主内存公共内存中变量不同步,进而导致数据不一致。由此可见volatile解决的是变量读时的可见性问题,但无法保证原子性,对于多线程修改主内存共享变量的场景必须使用加锁同步。

2023-06-26 23:04:11 276

原创 volatile

内存屏障其实就是一种jvm指令,java内存模型的重排规则会要求java虚拟机在生成jvm指令时插入特定的内存屏障指令,通过这些内存屏障指令,volatile实现乐java内存模型的可见性和有序性,但volatile无法保证原子性。当第一个操作为volatile读时,不论第二个操作是什莫,都不能进行重排序,这样操作保证了volatile读之后的操作不会被重排到volatile读之前。读屏障:处理器在读屏障之后的读操作,都在读屏障之后执行。内存屏障之后的所有读操作都能获得内存屏障之前的所有写操作的最新结果。

2023-06-25 22:09:19 321

原创 JMM(内存模型)

本身是一种抽象的概念并不真实存在它仅仅描述的是一组约定或规范,通过这组规范定义了程序中(尤其是多线程)各个变量的读写访问方式并决定一个线程对共享变量的写入何时以及如何变成对另一个线程可见,关键技术点都是围绕多线程的原子性,可见性,有序性展开。可见性:(cpu的缓存一致性协议保证可见性)当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道该变更,jmm规定了所有的变量都存储在主内存中。屏蔽各个硬件平台和操作系统的内存访问差异以实现让java程序在各种平台下都能达到一致的内存访问效果。

2023-06-14 20:55:21 47

原创 搭建Kafka集群

firewall-cmd --zone=public --add-port=2000-40000/tcp --permanent //开放端口。echo 1 > myid // 在每台zookeeper的zkdata里,echo 2 > myid ,echo 3 > myid。systemctl start firewalld.service //开启防火墙。systemctl stop firewalld.service //关闭防火墙。将jdk压缩包解压并安装在/usr/lib/jvm目录下。

2023-06-02 22:39:15 558

原创 Locksupport

其中的park()和unpark()方法。分别是阻塞线程和解除阻塞线程。park:除非许可证可用,否则禁用当前线程以进行线程调度。线程等待唤醒机制:1.Object的wait和notify方法实现线程的等待和唤醒。2.Condition接口中的await和signal方法实现线程的等待和唤醒。3.LockSupport类中的park等待和unpark唤醒。用于创建锁和其他同步类的基本线程阻塞原语。

2023-06-01 23:15:40 30

原创 docker学习

docker数据卷技术住哟啊解决数据持久化和同步操作,容器间也是数据共享的。如果目录不存在则会自动创建。

2023-05-20 21:43:07 41

原创 docker命令

docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,docker会尝试先从默认镜像仓库下载(默认使用docker hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义镜像仓库。处于终止状态的容器,可以通过docker start命令来重新启动。一上是镜像命令,容器是靠镜像创建的。列出本地主机上已有的镜像。从容器拷贝文件到主机上。

2023-05-20 21:07:59 51

原创 Docker安装

测试docker是否安装成功。设置docker自启动。安装docker引擎。

2023-05-20 19:12:23 39

原创 kafka消息队列的两种模式

kafka中的主题始终是多生产者和多订阅者:一个主题可以N个向其写入事件的生产者,以及订阅这些事件的N个消费者。主题中的事件可以根据需要随时读取雨传统的消息传递系统不同,事件被消费后不会被删除,相反,您可以通过每个主题的配置设置来定义kafka应该将你的事件保存多久,之后老的事件被丢弃。2.消息被消费以后,queue中不再有存储,所有消息消费者不可能消费到已经被消费的消息。3.队列支持多个消费者,但对一个消息而言,只有一个消费者可以消费。2.同时有多个消息消费者订阅消费该消息,消费数据后不会被删除。

2023-05-07 13:37:12 1008

原创 netty学习1

【代码】netty学习1。

2023-04-09 22:37:51 41

原创 Mysql远程连接服务器报错:null, message from server: “Host ‘xxx‘ is blocked because of many connection errors

超过了mysql数据库max_connection_errors的最大值。共用服务器上的数据库,连接错误超出ip错误次数导致报错.同一个ip在短时间内产生太多中断的数据库连接而导致的阻塞。

2023-02-25 23:13:30 1331

空空如也

空空如也

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

TA关注的人

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