摘要: Docker若未安装Docker,可参考以下资料进行安装:https://books.studygolang.com/docker_practice/install/ Nginx1. 拉取镜像 docker pull nginx 2. 运行容器(1)创建项目程序根目录,编写一个简单测试的html文件 阅读全文
posted @ 2020-06-11 20:43 疯一样的狼人 阅读(3599) 评论(0) 推荐(0) 编辑
摘要: 本文将分五个部分来分析和总结Redis的内部机制,分别是:Redis数据库、Redis客户端、Redis事件、Redis服务器的初始化步骤、Redis命令的执行过程。 首先介绍一下Redis服务器的状态结构。Redis使用一个类型为“redisServer”的数据结构来保存整个Redis服务器的状态 阅读全文
posted @ 2018-06-23 21:40 疯一样的狼人 阅读(10075) 评论(2) 推荐(2) 编辑
摘要: 不同的文件系统存储文件的方式是不同的,所以其结构也是不同的。本文要介绍的是Linux最传统的文件系统EXT2的结构。 EXT2文件系统的主要组成结构有:inode table(inode表格)、data block(信息区块)、superblock(超级区块)、filesystem descript 阅读全文
posted @ 2017-10-29 22:13 疯一样的狼人 阅读(2711) 评论(0) 推荐(0) 编辑
摘要: 由于以前学习Linux的时候没有做比较全面的总结笔记,而且平时大部分工作都在windows上进行,所以关于Linux的一些知识点有所遗忘。近期难得空闲,翻阅书籍,学习《鸟哥的Linux私房菜》,重温Linux知识,借此机会想把Linux的相关知识做一个总结笔记。首先要总结的是Linux文件相关知识— 阅读全文
posted @ 2017-10-28 15:24 疯一样的狼人 阅读(1840) 评论(0) 推荐(0) 编辑
摘要: 一、为什么需要依赖注入 首先我们先不管什么是依赖注入,先来分析一下没有使用依赖注入会有什么样的结果。假设我们有一个gmail邮件服务类GMail,然后有另一个类User,User类需要使用发邮件的功能,于是我们在User类中定义一个成员变量$mailServer,并且在声明这个变量的时候就给它赋值一 阅读全文
posted @ 2017-09-14 13:10 疯一样的狼人 阅读(4513) 评论(0) 推荐(2) 编辑
摘要: 一、MySQL查询执行基础 1. MySQL查询执行流程原理 <1> 客户端发送一条查询给服务器。 <2> 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。 <3> 服务器进行SQL解析、预处理,再由优化器生成对应的执行计划。 <4> MySQL根据优化器生成的 阅读全文
posted @ 2017-02-13 21:12 疯一样的狼人 阅读(903) 评论(0) 推荐(0) 编辑
摘要: 一、索引基础 1. B-Tree索引 <1> 所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。 <2> 顺序组织存储,很适合查找范围数据,效率会非常高。 <3> 可以有效使用B-Tree索引的查询:全值匹配、匹配最左前缀、匹配列前缀、匹配范围值、精确匹配某一列并范围匹配另一列、只访问索引的 阅读全文
posted @ 2017-02-11 21:48 疯一样的狼人 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 一、基本原理 1. 工作原理 搭建 RabbitMQ 集群以后,尽管交换器和绑定关系能够在单点故障问题上幸免于难,但是队列及其存储的消息却不行,这是因为队列进程及其内容仅仅维持在单个节点之上,所以一个节点的失效表现为其对应的队列不可用。 引入镜像队列(Mirror Queue)的机制,可以将队列镜像 阅读全文
posted @ 2022-10-12 16:50 疯一样的狼人 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 一、消息存储机制 不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。持久化的消息在到达队列时就被写入到磁盘,非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。这两种类型的消息的落盘处理都在 RabbitMQ 的“持久层”中完成。 持久层是一个逻辑上的概念,实际 阅读全文
posted @ 2022-10-12 16:03 疯一样的狼人 阅读(300) 评论(0) 推荐(0) 编辑
摘要: RabbitMQ 可以通过 3 种方式实现分布式部署:集群、Federation 和 Shovel。这 3 种方式不是互斥的,可以根据需要选择其中的一种或者以几种方式的组合来达到分布式部署的目的。Federation 和 Shovel 可以为 RabbitMQ 的分布式部署提供更高的灵活性,但同时也 阅读全文
posted @ 2022-10-12 14:44 疯一样的狼人 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 一、插件管理 RabbitMQ 提供了很多的插件,默认存放在 $RABBITMQ_HOME/plugins 目录下。 1. rabbitmq-plugins 语法 rabbitmq-plugins [-n node] {command} [command options...] 2. 启动插件 ra 阅读全文
posted @ 2022-10-08 23:05 疯一样的狼人 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 一、集群迁移 RabbitMQ 中的集群迁移更多的是用来解决集群故障不可短时间内修复而将所有的数据、客户端连接等迁移到新的集群中,以确保服务的可用性。迁移过程包括元数据重建、数据迁移,以及与客户端连接的切换。 1. 元数据重建 元数据重建是指在新的集群中创建原集群的队列、交换器、绑定关系、vhost 阅读全文
posted @ 2022-10-08 16:53 疯一样的狼人 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 一、集群搭建 RabbitMQ 集群对延迟非常敏感,应当只在本地局域网内使用。在广域网中不应该使用集群,而应该使用 Federation 或者 Shovel 来代替。 1. 安装 RabbitMQ 在各个节点正确安装 RabbitMQ。安装过程参考:https://www.cnblogs.com/w 阅读全文
posted @ 2022-10-08 15:55 疯一样的狼人 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 一、持久化 持久化可以提高 RabbitMQ 的可靠性,以防在异常情况(重启、关闭、宕机等)下的数据丢失。 RabbitMQ 的持久化分为三个部分:交换器的持久化、队列的持久化和消息的持久化。 1. 交换器持久化 交换器的持久化是通过在声明交换器时将 durable 参数置为 true 实现的: c 阅读全文
posted @ 2022-09-30 16:36 疯一样的狼人 阅读(30) 评论(0) 推荐(0) 编辑
摘要: RPC,是 Remote Procedure Call 的简称,即远程过程调用。它是一种通过网络从远程计算机上请求服务,而不需要了解底层网络的技术。RPC 的主要功用是让构建分布式计算更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 一般在 RabbitMQ 中进行 RPC 是很简单的 阅读全文
posted @ 2022-09-30 11:19 疯一样的狼人 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 一、mandatory 和 immediate 生产者发送消息的方法 Channel.Publish() 各个参数解析如下: err := ch.Publish( "helloEx", //exchange:源交换器名称,如果设置为空字符串,则消息会被发送到RabbitMQ默认的交换器中。 "hel 阅读全文
posted @ 2022-09-30 11:01 疯一样的狼人 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 一、安装 go-amqp 库 go get github.com/streadway/amqp 二、连接 RabbitMQ 一个 Connection 可以用来创建多个 Channel 实例,但是 Channel 实例不能在线程间共享,应用程序应该为每一个线程开辟一个 Channel。 多线程间共享 阅读全文
posted @ 2022-09-06 22:56 疯一样的狼人 阅读(75) 评论(0) 推荐(0) 编辑