自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

康小庄的博客

成功不分早晚,英雄不问出路

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

原创 对前端限流操作(Redis版本)4种算法

滑动时间窗口算法的核心思想是通过维护一个时间窗口内的请求计数器,并根据时间窗口的滑动来判断是否接受新的请求。具体来说,当一个新的请求到达时,算法会根据当前时间点判断该请求属于哪个时间窗口,并更新对应窗口的计数器。然而,漏桶算法也存在一些缺点,例如请求延迟,可能导致某些请求的响应时间变长;滑动时间窗口算法是一种限流算法,其原理是记录一段时间内的请求数量,并根据时间窗口的滑动来判断是否接受新的请求。在网络中,漏桶算法可以控制端口的流量输出速率,平滑网络上的突发流量,实现流量整形,从而为网络提供一个稳定的流量。

2024-02-18 15:09:20 1511

原创 切面实现自动填充必备字段

采用Aop切面编程实现数据库操作自动填充必备字段。注解传入类型,来判断填充几个字段。

2024-01-30 10:05:05 178

原创 对前端限流操作(无Redis版本)

这里设置一个定时器在每秒清理一下HashMap数据,防止 HashMap 越来越大。用来获取唯一的 HashMap,其中的Value是从 1970-01-01T00:00:00Z(协调世界时,UTC)到当前时间点之间的毫秒数。的时候,解决方法是限流,前端限制请求次数。故通过后端来对前端的请求做限流次数。方法,这里采用通过Aop切面的方式来限制请求次数。获取单例的map对象存放数据。测试接口,内部方法不用纠结。查看日志,请求过于频繁了!

2024-01-30 10:02:11 547 1

原创 PO VO DTO POJO的概念

PO (Persistent Object):持久化对象,通常是表示一个实体对象,与底层数据库表的结构一一对应。PO包含了与数据库存储相关的属性和方法,一般用于ORM(对象关系映射)过程中,用于映射数据库表的行。PO通常与数据库交互,并包含了持久化操作(例如增删改查)的方法。PO的设计目标是将数据库表结构映射到对象模型中,便于进行数据库操作和持久化,通常也称作DO(Data Object)

2024-01-30 09:59:43 545

原创 Mysql高级——Mysql8一主一从,多主多从搭建

修改 /etc/hosts文件。

2023-11-03 14:04:02 670 1

原创 Mysql高级——锁(2)

可以通过performance_schema.data_locks查看事务的锁情况,和MySQL5.7及之前不同,performance_schema.data_locks不但可以看到阻塞该事务的锁,还可以看到该事务所持有的锁。在InnoDB存储引擎中,LOCK_IS,LOCK_IX,LOCK_AUTO_INC都算是表级锁的模式,LOCK_S和LOCK_X既可以算是表级锁的模式,也可以是行级锁的模式。如果是行锁结构的话,在该结构末尾还放置了一堆比特位,比特位的数量是由上边提到的n_bits 属性表示的。

2023-10-20 09:29:15 133

原创 Mysql高级——锁(1)

在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。

2023-10-19 11:57:54 151

原创 Mysql高级——事务(2)

事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。

2023-10-14 21:17:57 153

原创 Mysql高级——事务(1)

命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。

2023-10-12 16:26:14 68

原创 Mysql高级——数据库调优策略(1)

如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源,将会报错。值越大,可以加载到缓存区的索引和数据量越多,需要的磁盘读写就越少,修改参数为64G,磁盘读写次数可以大幅度降低,可以充分利用内存,释放一些CPU的资源。= 8M :表示联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。

2023-09-29 19:26:14 175

原创 Mysql高级——数据库设计规范(2)

刚刚的 ER 模型展示了电商业务的框架,但是只包括了订单,地址,用户,购物车,评论,商品,商品分类和订单详情这八个实体,以及它们之间的关系,还不能对应到具体的表,以及表与表之间的关联。我们设计的案例是电商业务,由于电商业务太过庞大且复杂,所以我们做了业务简化,比如针对SKU(StockKeepingUnit,库存量单位)和SPU(Standard Product Unit,标准化产品单元)的含义上,我们直接使用了SKU,并没有提及SPU的概念。相反,另外一边的实体通过这个关系,则只能对应唯一的一边的实体。

2023-09-26 22:18:14 299

原创 Mysql高级——数据库设计规范(1)

在关系型数据库中,关于数据表设计的基本原则、规则就称为范式可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询在MySQL中,反范式化(Denormalization)是一种优化技术,用于提高数据库查询性能。

2023-09-23 16:01:38 155

原创 Mysql高级——索引优化和查询优化(3)

前面已经讲过区分度,区分度越高越好。因为区分度越高,意味着重复的键值越少。

2023-09-23 16:00:08 243

原创 Mysql高级——索引优化和查询优化(2)

理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键 包含 SELECT 到 FROM之间查询的列。

2023-09-20 21:46:50 356

原创 Mysql高级——索引优化和查询优化(1)

学员表插50万条, 班级表插1万条。保证每条数据都不同。随机产生班级编号创建往class表中插入数据的存储过程classstu创建存储过程执行存储过程。

2023-09-20 16:49:45 167

原创 Mysql高级——性能分析工具(2)

完整的访问方法如下: system , const , eq_ref , ref , fulltext , ref_or_null ,index_merge , unique_subquery , index_subquery , range , index , ALL。从执行计划的结果中可以看出,MySQL打算将s2作为驱动表,s1作为被驱动表,重点关注s1的访问方法是eq_ref ,表明在访问s1表的时候可以通过主键的等值匹配来进行访问。是访问多次s2 表后累加起来的值,大家主要关注里边儿的。

2023-09-19 15:43:46 472

原创 Mysql高级——性能分析工具(1)

字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。

2023-09-19 15:43:30 112

原创 Mysql高级——索引设计原则

① 冗余索引举例:建表语句如下我们知道,通过idx_name_birthday_phone_number 索引就可以对name 列进行快速搜索,再创建一个专门针对name 列的索引就算是一个冗余索引,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。

2023-09-17 14:24:46 144

原创 Mysql高级——索引创建和使用

MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。按照作用字段个数进行划分,分成单列索引和联合索引。小结:不同的存储引擎支持的索引类型也不一样 InnoDB :支持 B-tree、Full-text 等索引,不支持 Hash索引;MyISAM : 支持 B-tree、Full-text 等索引,不支持 Hash 索引;

2023-09-15 11:13:16 3186

原创 Mysql高级——索引(2)

在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。索引按照物理实现方式,索引可以分为 2 种:聚簇(聚集)和非聚簇(非聚集)索引。我们也把非聚集索引称为二级索引或者辅助索引。

2023-09-14 16:47:50 132

原创 Mysql高级——索引(1)

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2023-09-13 10:45:09 126

原创 Mysql高级——存储引擎

1). 连接层最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2). 服务层第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。

2023-09-12 16:30:34 154

原创 Mysql高级——日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log。查看日志。

2023-09-12 15:27:22 114

原创 SpringBoot完整项目部署流程(软件安装-前后端部署)

使用XTFP工具将jdk的二进制发布包上传到Linux解压安装包解压完毕配置环境变量,使用vim命令修改文件,在文件末尾加入如下配置重新加载profile文件,使更改的配置立即生效,命令为检查安装是否成功,命令为。

2023-09-02 21:57:57 2052

原创 Docker高级——Docker Swarm集群和部署应用

这样做的弊端很明显,如果新部署的服务出现问题,原来的服务删除之后,很难恢复,那么在 Swarm mode 中到底该如何对服务进行滚动升级呢?集群,拥有了一个管理节点,下面我们继续在两个 Docker 主机中分别执行如下命令,创建工作节点并加入到集群中。,当部署服务时,集群会自动的将配置文件分发到运行服务的各个节点中,大大降低了配置信息的管理和分发难度。你可能会想到,先停止原来的服务,再使用新镜像部署一个服务,不就完成服务的 “升级” 了吗。来管理服务的配置信息,我们只需在集群中的管理节点创建。

2023-08-14 15:07:27 654

原创 Jenkins+Gitlab+Maven集成CI/CD

脚本如下/bin/bash # 查找占用7777端口的进程ID # PID=$(sudo lsof -t -i :7777 | awk 'NR==2{print $2}') PID = $( sudo lsof -t -i :7777) if [ -z " $PID " ];

2023-07-27 17:39:37 267

原创 Jenkins+Gitlab集成CI/CD

maven环境java环境git环境。

2023-07-26 09:19:31 112

原创 Jenkins安装——Yum安装和Docker安装

现在,您可以通过在Web浏览器中输入来访问Jenkins的Web界面,并按照屏幕上的指示完成Jenkins的安装设置。请注意,安装Jenkins可能需要一些时间,具体取决于您的互联网连接速度和系统配置。查看密码。

2023-07-25 09:20:41 316

原创 Docker高级——DockerCompose

Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器Docker-Compose是Docker官方的开源项目, 负责实现对Docker容器集群的快速编排。如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了多服务部署的工具。

2023-07-24 08:53:36 339

原创 Docker高级——DockerFile定制镜像

镜像是容器的基础,每次执行docker run的时候都会指定哪个镜像作为容器运行的基础。镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础上加一层作为容器运行时的存储层。我们以定制一个 Web 服务器为例子,来讲解镜像是如何构建的这条命令会用nginx镜像启动一个容器,命名为webserver,并且映射了 80 端口,这样我们可以用浏览器去访问这个nginx服务器。,如果是在虚拟机、云服务器上安装的 Docker,则需要将localhost。

2023-07-21 08:59:14 116

原创 Docker高级——DockerFile详解

VOLUME ["", ""...]或者VOLUME 对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中,后面的章节我们会进一步介绍 Docker 卷的概念。为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在Dockerfile中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。这里的/data目录就会在容器运行时自动挂载为匿名卷,任何向/data。

2023-07-20 09:07:26 219

原创 Docker高级——网络配置

自定义桥接网络,自定义网络默认使用的是桥接网络bridge新建自定义网络新建容器加入上一步新建的自定义网络互相ping测试^C^C自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

2023-07-19 17:44:14 2610

原创 Docker基础——使用网络

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。当使用-P标记时,Docker 会随机映射一个端口到内部容器开放的网络端口。使用可以看到,本地主机的 32768 被映射到了容器的 80 端口。此时访问本机的 32768 端口即可访问容器内 NGINX 默认页面。同样的,可以通过命令来查看访问记录。则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式有。

2023-07-18 15:42:50 385

原创 Docker基础——数据和数据卷管理

Docker容器提供了几种挂载方式,用于将主机上的数据卷与容器内的路径进行关联。绑定挂载(Bind Mount):绑定挂载是将主机上的目录或文件直接挂载到容器内的指定路径。这种方式可以实现主机与容器之间的数据共享,任何一方对数据的更改都会在另一方中反映出来。卷挂载(Volume Mount):卷挂载是将Docker创建的卷(Volume)挂载到容器内的指定路径。卷是Docker管理的一种持久化存储,可以独立于容器进行管理和共享。使用卷挂载可以方便地在不同容器之间共享数据,同时也可以保证数据的持久性。

2023-07-17 09:07:51 123

原创 Docker基础——Web基础实例

我们可以通过 -p 参数来设置不一样的端口;所以你看到跑了两个内部端口都是5000的web实例,新的容器内部的 5000 端口映射到我们本地主机的 5001 端口上。

2023-07-17 09:07:31 266

原创 Docker基础——Centos7安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。

2023-07-14 16:38:03 6982

原创 Docker基础——基础详解

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。可以使用 docker images 来列出本地主机上的镜像。OFFICIAL: 是否 docker 官方发布。DESCRIPTION: 镜像的描述。删除镜像之前先停止容器,再移除容器。AUTOMATED: 自动构建。NAME: 镜像仓库源的名称。现在拉取搜索出的MySQL。

2023-07-14 16:37:28 835

原创 Docker基础——初识Docker

取消docker开机启动:systemctl disable docker。查看docker服务状态:systemctl status docker。设置docker开机启动:systemctl enable docker。它会先检查本地是否有这个镜像,没有的话会先从指定仓库中拉取。重启docker服务:systemctl restart docker。启动docker服务:systemctl start docker。停止docker服务:systemctl stop docker。

2023-07-14 16:34:51 912

原创 Redis高级——批处理优化

第二种方案:串行slot,简单来说,就是执行前,客户端先计算一下对应的key的slot,一样slot的key就放到一个组里边,不同的,就放到不同的组里边,然后对每个组执行pipeline的批处理,他就能串行执行各个组的命令,这种做法比第一种方法耗时要少,但是缺点呢,相对来说复杂一点,所以这种方案还需要优化一下。第三种方案:并行slot,相较于第二种方案,在分组完成后串行执行,第三种方案,就变成了并行执行各个命令,所以他的耗时就非常短,但是实现呢,也更加复杂。这个时候,我们可以找到4种解决方案。

2023-05-02 16:33:54 1769 1

原创 Redis高级——键值对设计

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间。

2023-05-01 17:12:20 1478

Reggie外卖整合代码

Reggie外卖整合代码

2023-09-11

CUCN所学SSM大论文总结MMS项目

CUCN所学SSM大论文总结MMS项目

2023-06-01

空空如也

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

TA关注的人

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