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

原创 堆与栈 区别

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

2021-12-23 23:23:21 471

原创 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 1561

原创 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 485 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 164

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

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

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

原创 php常见设计模式

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

2021-05-07 21:47:10 763 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 3739 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 1127

原创 安装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 2656 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 524

原创 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 180

原创 docker 说明及安装

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

2020-09-04 14:47:13 186

翻译 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 785

原创 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 841

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

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

2020-06-18 19:45:38 1877

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

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

2020-05-28 12:09:00 313

原创 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 1031

原创 PHP 中Lua嵌入redis

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

2020-04-14 15:28:33 368

原创 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 1460

原创 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 2622

原创 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 532

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

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

2020-01-04 15:11:55 251

原创 Redis持久化 - RDB持久化(一)

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

2020-01-04 12:33:04 224

原创 Redis优化及配置(二)

Redis所有的数据都在内存中,而内存优势非常宝贵的资源。常用的内存优化方案有如下几个部分:1. 配置优化2. 缩减健值对象3. 命令处理4. 缓存淘汰方案二 缩减健值对象降低redis内存使用最直接的方式就是缩减键(key)和值(value)的长度。key长度;如在设置键时,在完整描述业务情况下,键值越短越好。value长度,值对象缩减比较复杂,常见需求是把业务对象序列化二进制...

2020-01-04 11:57:49 235

原创 Redis优化及配置(一)

Redis所有的数据都在内存中,而内存优势非常宝贵的资源。常用的内存优化方案有如下几个部分:1. 配置优化2. 缩减健值对象3. 命令处理4. 缓存淘汰方案一 配置优化linux 配置优化:目前大部分公司都会将web服务器,数据库服务器等部署在Linux操作系统上,Redis优化也需要考虑操作系统,所以介绍Linux操作系统如何优化Redis1.内存分配vm.overcommi...

2020-01-02 23:12:00 704

原创 docker-compose 编排方式安装redis cluster集群 【redis 集群的收缩】(三)

收缩集群意味着缩减规模,需要从现有集群中安全下线部分节点,下线节点过程如下1)首先需要确定下线节点是否有负责的槽,如果是,需要把槽迁移到其他节点,保证节点下线后整个集群槽节点映射的完整性。2)当下线节点不再负责槽或者本身是从节点时,就可以通知集群内其他节点忘记下线节点,当所有的节点忘记该节点后可以正常关闭。1、下线迁移槽【此处要下线 192.168.11.43:6397 -》redis-ma...

2019-12-11 18:38:09 181

原创 docker-compose 编排方式安装redis cluster集群 【redis 集群的扩容】(二)

扩容操作扩容是分布式存储最常见的需求,Redis 集群扩容操作可分为如下步骤:1)准备新节点。2)将节点加入集群。3)迁移槽和数据。4)配置迁入节点主从关系...

2019-12-11 14:55:34 503

原创 docker-compose 编排方式安装redis cluster集群【redis-trib 自动安装】(一)

redis trib安装redis cluster集群构建流程:1.准备节点(docker-compose 编排构建redis主从节点)2.使用redis-trib.rb安装 (自动执行节点握手,自动操作节点主从配置,自动给主节点分配槽)1.安装前准备[root@localhost ~]# mkdir -p /usr/local/docker-compose-redis-trib [ro...

2019-12-11 14:31:06 1127

原创 docker-compose 编排方式安装redis cluster集群(手动安装)

redis cluster集群构建流程:1.准备节点(docker-compose 编排构建redis主从节点)2.节点握手(通过Gssip[流言协议]握手)–>(cluster meet IP port–>cluster meet 192.168.1.9 6391)–>(redis-cli客户端执行)3.配置节点的主从关系(redis-cli -h ip port[从节点...

2019-12-11 11:46:31 915

原创 docker-compose 编排方式安装redis 集群(主从复制与哨兵)

1.安装前准备[root@localhost ]#mkdir -p /usr/local/docker-compose-redis-sentinel将准备文件全部上传到docker-compose-redis-sentinel目录下准备好redis的主配置文件(redis.conf),从的配置文件(redis.conf),哨兵的配置文件(redis-sentinel.conf)文件地址...

2019-12-11 10:35:28 884

原创 PHP Redis 监听过期的 key 事件

一、使用发布订阅测试1.在 redis.conf 设置notify-keyspace-events Ex # x代表过期2.重启redis[root@localhost redis-5.0.5]# ls00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-mo...

2019-11-06 12:32:43 2478 4

原创 linux 环境下swoole的安装

1.首先安装好PHPphp安装地址:https://blog.csdn.net/yinjinshui/article/details/1013723512.手动编译安装#下载swoole[root@localhost ~]# wget https://github.com/swoole/swoole-src/archive/v4.4.5.tar.gz3.解压[root@localho...

2019-10-16 16:48:59 170

原创 php rabbimq 案例demo2

1.composer安装php rabbitmq包新建composer.json文件,composer install 安装{ "require": { "php-amqplib/php-amqplib": ">=2.6.1" }}2.创建生成者 rabbit_publish.php<?phprequire_once __DIR__ . '...

2019-10-16 15:33:52 311

原创 php rabbimq 案例demo1:

创建生产者 publish.php<?php//配置信息 $conn_args = array( 'host' => '127.0.0.1', 'port' => '5672', 'login' => 'guest', 'password' => 'guest', 'vhost'=>'/' ); ...

2019-10-16 15:10:44 119

原创 高并发的情况,如何防止库存超卖

1.创建数据表#1.商品库存表DROP TABLE IF EXISTS `orders`;CREATE TABLE `orders` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `number` int(11) DEFAULT NULL COMMENT '总库存', `sale` int(11) DEFAULT '0' COM...

2019-10-16 12:31:48 4688

原创 linux 环境下redis 哨兵机制 (六)

1.Sentinel 实现原理Sentinel 的实现原理,主要分为以下4个步骤:检测问题,主要讲的是三个定时任务,这三个内部的执行任务可以保证出现问题马上让 Sentinel 知道发现问题,主要讲的是主观下线和客观下线。当有一台 Sentinel 机器发现问题时,它就会主观对它主观下线,但是当多个 Sentinel 都发现有问题的时候,才会出现客观下线。找到解决问题的人,主要讲的是领导...

2019-10-15 17:27:30 290

原创 redis客户端通过哨兵获取主机、从机信息

Master可能会因为某些情况宕机了,如果在客户端是固定一个地址去访问,肯定是不合理的,所以客户端请求是请求哨兵,从哨兵获取主机地址的信息,或者是从机的信息。可以实现一个例子1、随机选择一个哨兵连接,获取主机、从机信息2、模拟客户端定时访问,实现简单轮训效果,轮训从节点3、连接失败重试访问vim client.phpinclude 'Round.php';$sentinelConf...

2019-10-15 16:50:38 2455

原创 docker安装redis

1.创建dockerfile[root@localhost var]# pwd/var[root@localhost var]# mkdir -p docker-redis[root@localhost var]# mkdir -p Dockerfile[root@localhost var]# vim Dockerfile/Dockerfile【注意】Dockerfile的文件内容...

2019-10-15 10:06:34 159

原创 linux 环境下redis 哨兵机制 (五)

一.主从复制的问题Redis 复制有一个缺点,当主机 Master 宕机以后,我们需要人工解决切换,比如使用slaveof no one 。实际上主从复制并没有实现,高可用, 高可用侧重备份机器, 利用集群中系统的冗余,当系统中某台机器发生损坏的时候,其他后备的机器可以迅速的接替它来启动服务如下图所示:一旦主节点宕机,写服务无法使用,就需要手动去切换,重新选取主节点,手动设置主从关系那...

2019-10-14 17:06:21 712

原创 linux 环境下redis 主从复制常见问题 (四)

一.主从复制常见的问题及解决方案读写分离主从配置不一致规避全量复制规避复制风暴1 读写分离读流量分摊到从节点。这是个非常好的特性,如果一个业务只需要读数据,那么我们只需要连一台 slave 从机读数据。虽然读写有优势,能够让读这部分分配给各个 slave 从机,如果不够,直接加 slave 机器就好了。但是也会出现以下问题:1.1 复制数据延迟可能会出现 slave 延迟导致...

2019-10-14 16:23:56 212

空空如也

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

TA关注的人

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