自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 问答 (2)
  • 收藏
  • 关注

原创 mysql 在哪些情况下使用了索引,但是索引还会失效

通过合理设计索引、优化查询语句和分析执行计划,可有效避免索引失效问题。:MySQL 需要将索引列转换为与条件匹配的类型,导致无法使用索引。:MySQL 无法同时使用多个索引,若有一个条件无索引,则全表扫描。:索引存储的是列的原始值,函数或运算后的值无法直接匹配索引结构。:联合索引的存储结构要求按索引定义的顺序匹配。:B+树索引无法高效匹配前缀不确定的模糊查询。:范围查询后的列在索引中无序,无法直接匹配。:查询条件中的数据类型与索引列类型不匹配。连接的条件中包含未索引的列。)后的列无法使用索引。

2025-04-21 09:02:08 728

原创 Hyperf (Swoole)的多进程 + 单线程协程、Gin (Go)Go的单进程 + 多 goroutine 解说

Go 的运行时使用 CSP(通信顺序进程)模型,通过通道(channels)实现 Goroutine 间的通信和同步。,Swoole 使用进程级同步机制(如原子计数器和锁)来协调多进程操作。协程通过事件驱动模型处理 I/O 操作,避免了传统异步回调的复杂性。Swoole 的并发模型基于多进程架构,每个进程是单线程的,线程内运行多个协程。Go 的并发模型基于单进程架构,由 Go 运行时管理线程和 Goroutine。:设置为 CPU 核数的 1-2 倍。:根据业务调整(默认 2MB)(即协程调度线程)。

2025-04-17 18:59:47 1127

原创 MySQL 大表优化与分库分表全流程指南

通过系统化的优化路径,结合业务场景选择合适方案,可在保障性能的同时控制技术复杂度。实际落地时,建议通过压测验证每一步优化效果,避免过度设计。:时间戳+机器ID+序列号,需解决时钟回拨问题.:减少存储引擎层到 Server 层的数据传输。:针对大字段(TEXT/BLOB)减少存储占用。基于ProxySQL+Vitess的透明分片。:组合查询字段与条件字段,减少回表扫描。:通过分片键末位基因保证关联数据局部性。使用PolarDB-X的自动分片功能。:双Buffer预取避免ID耗尽。:按时间自动维护分区。

2025-04-17 11:07:52 993

原创 B树、红黑树、B+树和平衡二叉树(如AVL树)的区别

B树、红黑树、B+树和平衡二叉树(如AVL树)的区别及优缺点的总结:TreeMapstd::map[m/2, m]MyISAMInnoDB。

2025-04-16 08:47:13 535

原创 Mysql主从复制有哪些方式

根据业务需求选择合适的方式,并结合监控工具(如。

2025-04-15 20:41:08 917

原创 MySQL主从同步延迟分析到具体解决策略

MySQL主从同步延迟是分布式数据库中常见的问题,可能导致从库数据不一致、查询结果滞后等问题。通过组合硬件优化、架构调整、参数调优和业务改造,可有效降低主从延迟,保障数据一致性。(减少锁竞争): ini。并行复制,减少事务冲突。

2025-04-15 09:51:56 1097

原创 go语言gRPC使用流程

下载地址:https://github.com/protocolbuffers/protobuf/releases。(gRPC 服务)。

2025-04-14 16:55:07 513

原创 Redis 在处理并发请求时,如何保证高效性和数据一致性

Redis 通过单线程模型、原子操作、分布式锁和集群分片等机制,在保证高性能的同时解决并发问题。实际应用中需结合业务场景选择合适方案(如原子命令、Lua 脚本或分布式锁),并注意避免阻塞操作和合理设计数据模型。

2025-04-14 08:46:07 542

原创 Redis 5.0、6.0 和 7.0 版本的核心更新特性总结

【代码】Redis 5.0、6.0 和 7.0 版本的核心更新特性总结。

2025-04-14 08:18:34 687

原创 PHP的垃圾回收机制

PHP的垃圾回收机制在PHP5、PHP7和PHP8中经历了显著改进,尤其在内存管理和循环引用处理上逐步优化。

2025-04-05 10:39:46 829

原创 go垃圾回收机制

Go的GC通过并发、三色标记和混合写屏障等技术,平衡了内存管理效率与低延迟需求,适合高并发场景。开发者需合理管理内存分配,结合性能分析工具优化应用,以充分发挥GC优势。

2025-04-05 10:32:48 479

原创 Gin、Echo 和 Beego三个 Go 语言 Web 框架的核心区别及各自的优缺点分析,结合其设计目标、功能特性与适用场景

Gin、Echo 和 Beego 三个 Go 语言 Web 框架的核心区别及各自的优缺点分析,结合其设计目标、功能特性与适用场景

2025-04-02 18:46:19 1740

原创 Laravel是否足以支持高并发以及为何需要选择Hyperf或Gin

Laravel的定位:适合快速开发和中低并发场景,通过Swoole优化可提升性能,但无法突破PHP语言和FPM架构的限制。Hyperf与Gin的优势:分别代表PHP和Go在高并发领域的解决方案,前者适合PHP生态内的性能升级,后者适合追求极致性能和云原生的新项目。若项目仅需应对数千QPS且团队熟悉PHP,Laravel+Swoole足矣;但若目标为十万级QPS或复杂计算任务,Hyperf或Gin更为合适。

2025-04-01 08:29:21 979

原创 Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并发原理以及技术实现对比分析

Swoole 的 Hyperf 框架和 Go 的 Gin 框架虽然都支持高并发,但它们的实现原理、底层机制和适用场景有显著差异。根据团队技术栈和业务需求权衡,二者均能在高并发场景下表现出色,但底层原理和适用边界截然不同。Hyperf 的高并发能力基于。Gin 的高并发能力基于。

2025-04-01 08:16:05 1190

原创 HTTP请求到达Gin框架,gin支持高并发核心机制

【代码】HTTP请求到达Gin框架,gin支持高并发核心机制。

2025-03-31 08:55:08 1019

原创 Gin框架启动时进程状况

Gin框架启动时默认情况下。net/http。

2025-03-31 08:50:16 389

原创 PHP Swoole 启动时的进程关系

此架构充分利用多核 CPU,通过多进程避免单点阻塞,结合异步非阻塞 I/O 提升性能,适用于高并发场景如实时推送、微服务等。

2025-03-31 08:45:38 311

原创 常见的网络I/O模型及其优缺点分析,涵盖其核心机制和适用场景

理解各模型的机制与适用场景,结合操作系统特性(如Linux的。、Windows的IOCP),可最大化系统性能。

2025-03-31 08:39:34 361

原创 堆与栈 区别

1 ALU理解:在CPU中存在核心模块ALU,主要是进行 数据计算 、逻辑计算对于ALU来说进行简单运算是可以快速得出结果,而复杂的运算需要先记录再运算【寄存器,存储临时结果;过程ALU执行计算,将结果存放在寄存器各个块中,临时存储;利用寄存器可以实现计算机数据分布存储的过程】实际过程上在程序中存在大量的,复杂运算或者处理的时候只利用寄存器是不够的,因此这个需要就使用了内存2 内存的 堆与栈内存:栈,堆栈堆2.1 栈的理解对于栈,特点是先进后出;先进的在底部,后放的在顶部;如桶里放

2021-12-23 23:23:21 581

原创 Openresty + GeoIP2实现IP归属国家查询

为了实现业务系统针对不同地区IP访问,展示包含不同地区信息的业务交互界面。很多情况下系统需要根据用户访问的IP信息,判断用户可能的访问区域,针对不同的区域提供个性化的服务内容。本方案在CentOS7.x环境下基于高性能的Openresty1.13.6.2来实现。方案介绍要通过IP地址确认归属地,通常可以使用一些在线查询服务来实现,比如https://blog.csdn.net/XinTeng2012/article/details/34418117?utm_source=blogxgwz8 介绍的常见提

2021-07-13 16:07:10 2317

原创 MQ 实现信息延迟投递

1.使用延迟插件 rabbitmq_delayed_message_exchange 实现队列信息延迟投递安装步骤1.1 下载插件MQ插件地址:https://www.rabbitmq.com/community-plugins.html下载延迟交换机插件地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.8.0说明选择适应的版本:1.2 下载文件后执行下载完成后是一个zip / e

2021-06-27 22:29:59 586 2

原创 Git常用命令

1.新建创建一个新的 git 版本库。这个版本库的配置、存储等信息会被保存到.git 文件夹中初始化当前项目$ git init新建一个目录,将其初始化为Git代码库$ git init [project-name]在指定目录创建一个空的 Git 仓库。运行这个命令会创建一个名为 directory,只包含 .git 子目录的空目录。$ git init --bare <directory>下载一个项目和它的整个代码历史这个命令就是将一个版本库拷贝到另一个目录中,同时

2021-05-27 18:52:48 226

原创 MySQL的四种事务隔离级别

一、事务的基本要素(ACID)原子性(Atomicity):即不可分割性,事务要么全部被执行,要么全部不执行一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B没有收到。隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束钱,B不能向这张卡转账。持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚

2021-05-10 21:34:45 321 5

原创 php常见设计模式

常见设计模式1.策略模式(使用场景:多种渠道发短信)2.工厂模式(使用场景:多种支付方式)3.单列模式(使用场景:日志,db查询类)4.注册模式(使用场景: laravel 容器)5.适配器模式 (使用场景:mysql类,兼容mysqli和pdo)6.观察者模式各种模式详细说明1.策略模式策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多态性思

2021-05-07 21:47:10 888 7

原创 nginx安装lua+redis

1.安装lua1.1安装LuaJIT[root@localhost ~]# yum install readline-devel[root@localhost ~]# mkdir -p lua-file[root@localhost ~]# cd lua-file/[root@localhost lua_file]# wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz[root@localhost lua_file]# tar -zxvf Lu

2020-11-17 16:28:23 3908 7

原创 redis布隆过滤器原理、安装使用

1.安装redis#下载[root@localhost redis]# /root/redis[root@localhost redis]# wget https://download.redis.io/releases/redis-5.0.5.tar.gz#解压安装[root@localhost redis]# tar -zxvf redis-5.0.5.tar.gz[root@localhost redis]# lsredis-5.0.5 redis-5.0.5.tar.gz[roo

2020-10-21 11:11:24 1213

原创 安装go-mysql-elasticsearch同步mysql数据到elasticsearch

1.安装go[root@localhost ~]# mkdir -p /usr/local/app/go[root@localhost ~]# cd /usr/local/app/go/[root@localhost go]# wget https://golang.google.cn/dl/go1.15.2.linux-amd64.tar.gz[root@localhost go]# tar -C /usr/local -zxvf go1.15.2.linux-amd64.tar.gz配置环境

2020-10-14 17:00:00 2777 1

原创 mysql (MHA)集群安装

1. MHA工作原理保存宕机的master日志(通过mha-node工具保存)在slave节点中识别复制量偏移量最大的slave将识别到复制量最大的slave日志复制到其余的slave节点将宕机master的binlog复制到将要升级为master的slave节点提升slave升级为master,ip切换 (虚拟原宕机的虚拟ip,漂移到新的master)将其它slave的master指向新的master说明:1.mha-manager 心跳检测官和总指挥官2.mha-node 节点

2020-09-25 14:11:42 752

原创 docker 常用命令

1 操作仓库1.1 从仓库上下载镜像资源到本地 docker pull ****1.2 推送本地镜像到仓库docker push ****2 操作镜像2.1 查看所有镜像docker images2.2 删除镜像docker rmi ****2.3 根据dockerfile构建镜像docker build -t [镜像名称] .2.4 强制删除镜像docker rmi -f ****2.5 查看镜像的构建历史docker history [镜像名称]2.6 查

2020-09-04 15:07:04 266

原创 docker 说明及安装

1.理解docker1.1 docker是什么Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。1.2 为什么要使用docker作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。1.2.1 更高效的利用系统资源由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,

2020-09-04 14:47:13 267

翻译 Elasticsearch【7.8】 字段数据类型 (一)

字段类型核心数据类型复杂数据类型地理数据类型专用的数据类型【参考地址:es官网https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html】1 核心数据类型string 字符串字符类型说明text⽤于全⽂索引,搜索时会自动使用分词器进⾏分词再匹配。字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项keyword不分词,搜索时需要匹配

2020-08-06 18:28:31 938

原创 composer开发自定义包(基于git,Packagist)-(方式二)

1.注册composer、github账号2.在github上新增项目,并将项目克隆到本地环境Administrator@DESKTOP-UI8EDNS MINGW64 /d/laravel_www$ git clone [email protected]:Yinjinshui/pack-test-two.gitCloning into 'pack-test-two'...remote: Enumerating objects: 33, done.remote: Counting objects: 1

2020-06-19 12:09:26 942

原创 composer开发自定义包(基于git)-(方式一)

项目中基本都会用到一些公共的组件,比如推送、短信、搜索、队列以及数据库模型等。要是每个项目都单独写一套,那么后期维护就显得力不从心了,所以采用公共组件或者服务的形式,多个项目直接引用。1.首先登录你的github账号,如果没有注册,那么先去注册了吧。然后新建一个项目,项目名字可以任意取也可以或者pack-test2.把github上的pack-test拉取到本地,如下图3.因为是基于自动加载机制,接下来就是composer配置了,首先切换到pack-test目录,然后命令行运行composer ini

2020-06-18 19:45:38 2169

原创 MySQL - percona-toolkit工具 (一)

1.简要说明Percona Toolkit是Percona支持人员使用的高级命令行工具的集合,这些人员可以执行各种MySQL,MongoDB和系统任务,这些任务太难或太复杂而无法手动执行。这些工具是私有或“一次性”脚本的理想替代品,因为它们是经过专业开发,经过正式测试并具有完整文档的。它们也是完全独立的,因此安装快速简便,并且没有安装任何库。Percona Toolkit源自Maatkit和Aspersa,这两个MySQL服务器管理最著名的工具包。它是由Percona开发和支持的。有关更多信息和Per

2020-05-28 12:09:00 393

原创 nginx+consul+半自动平滑升级 实现动态负载均衡

1.nginx-upsync-module安装半自动平滑升级所谓半自动,其实就是在最后迁移的时候使用源码自带的升级命令:make upgrade 来自动完成说明地址:https://github.com/weibocom/nginx-upsync-modulenginx-upsync-moduleNginx C模块,可以同步Consul或其他模块的上游。它动态地修改了后端服务器的属性...

2020-04-20 16:59:14 1108

原创 PHP 中Lua嵌入redis

Lua 嵌入 Redis 优势:减少网络开销: 不使用 Lua 的代码需要向 Redis 发送多次请求, 而脚本只需一次即可, 减少网络传输;原子操作: Redis 将整个脚本作为一个原子执行, 无需担心并发, 也就无需事务;复用: 脚本会永久保存 Redis 中, 其他客户端可继续使用.注意:首先要了解redis事务是不会滚的,所以在lua中嵌入多条redis执行,只是保证多条r...

2020-04-14 15:28:33 439

原创 Openresty+Lua 实现项目灰度发布

1.安装OpenResty【使用yum安装】[root@localhost ~]# yum-config-manager --add-repo https://openresty.org/yum/cn/centos/OpenResty.repo[root@localhost ~]# yum -y install openresty常用命令:【平滑启动】[root@localhost ...

2020-04-13 11:09:01 1678

原创 502,504产生的原因

1.502 网关错误Bab Gateway 502 网关错误,php来说造成502的原因常见的就是脚本执行超过timeout设置时间,或者timeout设置过大,导致php进程长时间不能释放,没有空闲worker进程来执行请求。第一种情况【fpm超时】php-fpm的worker进程 执行php程序脚本时,超过了配置的最长执行时间,master进程将worker进程杀掉,直接返回502.返...

2020-04-05 11:17:30 2878

原创 nginx php-fpm配置优化

1.LNMP运行原理图2.CGI 相关概念CGI 是 Web Server 与 Web Application 之间数据交互的一种协议CGI全称是“通用网关接口(Common Gateway Interface)”,是外部应用程序(CGI)与Web 服务器之间的接口标准,也是Web服务器与其它程序或其它机器上的程序进行“交谈(交互)”的一种工具,其程序一般运行在网络服务器上。CGI可以用...

2020-04-04 12:05:44 659

原创 Redis持久化 - AOF持久化(二)

一、Redis持久化概述持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令) 从内存保存到硬盘。 当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。Redis持久化 分为RDB持久化和AOF持久化,前者将当前数据保存到硬盘,后者则是将每...

2020-01-04 15:11:55 331

空空如也

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

TA关注的人

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