自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pythonluo的专栏

天真岁月不忍弃,青春荒唐我不负你

  • 博客(28)
  • 问答 (2)
  • 收藏
  • 关注

转载 windows php7 apache2.4 整合

php7正式版已经发布,性能是php5.4的2倍。博主入手php7 新鲜了一把,下面是解决问题之后成功启动php7的记录。 ( 电脑必须win7 sp1, .netframework4 ) Windows7安装php7,Win7+php7+apache2.4,成功启动。     (另外楼主提供了1个php7集成环境打包: http://pan.baidu.com/s/1qXwjpF2  ...

2018-11-26 00:07:24 589

转载 TCP/IP 原理详解

协议实际上就是一种解决某些问题的策略和模式,在经典的TCP/IP协议中就有很多策略和模式值得学习。归纳起来有以下一些(随着学习深入逐步添加):分层 封装和分用 可靠连接分层分层是TCP/IP乃至网络通信最核心的策略和模式,分层使得所有的网络应用程序不用关心底层链路传输的细节,也使得不同类型的网络有效地互通。这是一种典型的化繁为简,把复杂的事情分解到不同层面的策略,层与层之间是服务与被...

2018-11-22 13:47:57 163

转载 Redis 主从复制(读写分离)————哨兵(主从切换)配置(转载)

当数据量变得庞大的时候,读写分离还是很有必要的。同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能。redis提供了一个master,多个slave的服务。         准备三个redis服务,依次命名文件夹子master,slave1,slave2.这里为在测试机上,不干扰原来的redis服务,我们master使用6000端口。...

2018-11-21 13:34:12 162

原创 Redis 哨兵模式

摘要:Redis的哨兵模式,这几天对哨兵模式也花了不少时间来弄清楚它的原理,其中也参考了其它人的一些理解,自己在一步一步看源码才写出下面自己对哨兵模式的一些理解,方便以后在日常工作中可以更好的使用REDIS的哨兵模式。Redis哨兵也是单个redis服务实例,只是在启动的时候和处理的命令跟普通redis服务器不同,配置的时候只需要配置需要监控的master服务器配置,因为slaves和其他...

2018-11-21 09:47:19 503

转载 Redis 哨兵模式的源码(转载)

建议阅读:1、Sentinel的理论部分见:Redis之SentinelI、上帝视角1、Sentinel也是Redis服务器,只是与普通服务器职责不同,其负责监视Redis服务器,以提高服务器集群的可靠性。Sentinel与普通服务器共用一套框架(网络框架,底层数据结构,订阅与发布机制),但又有其独立的运行代码。为维护Sentinel系统的正常运行,我们先来看Redis为Sentin...

2018-11-20 21:52:13 507

转载 Redis 哨兵模式的理论(转载)

Sentinel是Redis的高可用性解决方案,本文主要介绍Sentinel的初始化过程及其与一般Redis服务器的区别。并说明Sentinel监视服务器的方法和原理,说明Sentinel如何判断一个服务器是否在线,并介绍故障转移过程。I、上帝视角看Sentinel由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并...

2018-11-20 17:46:05 323

转载 Redis 主从同步原理(转载)

Redis的主从同步机制可以确保redis的master和slave之间的数据同步。按照同步内容的多少可以分为全同步和部分同步;按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数据修改同步;本文将对这两种机制的流程进行分析。全备份过程中,在slave启动时,会向其master发送一条SYNC消息,master收到slave的这条消息之后,将可能启动后台进程进行备份,备份完...

2018-11-20 13:55:41 164

原创 Redis 并发原子性原理

Redis原子性原理摘要:1、Redis是单进程单线程的网络模型,用的是epoll网络模型,网络模型都是单线程异步非阻塞处理网络请求2、Redis的单线程处理所有的客户端连接请求,命令读写请求。(有些任务比如rdb和aof等操作是fork子进程处理的,不会影响redis主线程处理客户端的命令)3、Redis提供的所有API操作,相对于服务端方面都是one by one执行的,命令是...

2018-11-20 11:58:57 27131 14

原创 Redis 网络请求处理模块

Redis 网络请求处理模块一、关联的文件列表SOCKET只是TCP/IP协议的抽象软件层,提供简单的API给用户操作TCP/IP协议来进行网络请求处理,UINX一切皆文件的理念,所以SOCKET只是一个特殊的文件描述符。 摘要:redis的用TCP协议,socket来监听和读写网络请求,将需要监听的事件放入epoll事件管理里面,然后收集触发的事件,然后进行相应的命令处理。R...

2018-11-19 13:58:53 863

转载 Socket通信原理

Socket通信原理    对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1.         什么是TCP/IP、UDP?2.         Socket在哪里呢?3.         Socket是什么呢?4.         你会使用它们吗?什么是TCP/IP、UDP?         TCP/IP(T...

2018-11-19 12:14:32 570

原创 Redis epoll事件模型

Redis的事件模型在这里我们用ae_epoll.c,epoll详细工作原理  https://blog.csdn.net/luolaifa000/article/details/84190836一、redis对原始的epoll数据结构进行了封装 二、监听的入口函数 三、aeprocessevents 四、ae_epoll里面的事件触发处理...

2018-11-17 21:32:03 867

转载 epoll详细工作原理

开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢? 先简单回顾下如何使用C库封装的3个epoll系统调用吧。 ...

2018-11-17 17:31:12 3545

原创 Redis AOF原理

AOF 写入键值对过程Redis 分别提供了 RDB 和 AOF 两种持久化机制:RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。 AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件,以此达到记录数据库状态的目的。本章首先介绍 AOF 功能的运作机制, 了解命令是如何被保存到 AOF 文件里的, 观察不同的 AOF ...

2018-11-17 12:07:40 20883 3

转载 Redis 通讯协议的格式

协议说明Redis协议在以下几点之间做出了折衷:简单的实现 快速地被计算机解析 简单得可以能被人工解析 网络层 Redis在TCP端口6379上监听到来的连接,客户端连接到来时,Redis服务器为此创建一个TCP连接。在客户端与服务器端之间传输的每个Redis命令或者数据都以\r\n结尾。请求Redis接收由不同参数组成的命令。一旦收到命令,将会立刻被处理,并回复给客...

2018-11-17 09:26:19 1187

原创 Redis rdb数据结构 源码详解

记录下来以后方便回忆,需要时随时翻阅一、Redis  RDB文件的数据结构 二、Redis  RDB文件的十六进制码和对应的字符 三、Redis  save和bgsave命令处理过程 四、Redis  save和bgsave命令处理过程 统一调用的save函数,写数据到dump.rdb文件里面 五、Redis  备份 是 先生成临时文件在替换旧的文件...

2018-11-16 23:41:27 356

原创 Redis订阅与发布原理

记录下来以后方便回忆,需要时随时翻阅Redis 订阅与发布 原理client->pubsub_channels 是客户端维护的一个以dict结构的维护的订阅频道哈希表,VAL是NULL,不需要值。server->pubsub_channels 是服务端维护的一个以dict结构的维护的订阅频道哈希表,VAL是以client维护的双向链表adlist。一、订阅订阅流程:...

2018-11-15 20:43:05 1227

转载 Redis底层数据结构--SDS

这是一种用于存储二进制数据的一种结构, 具有动态扩容的特点. 其实现位于src/sds.h与src/sds.c中, 其关键定义如下:typedef char *sds;/* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here to document the layo...

2018-11-15 14:05:42 281

转载 Redis底层数据结构--链表

这是普通的链表实现, 链表结点不直接持有数据, 而是通过void *指针来间接的指向数据. 其实现位于 src/adlist.h与src/adlist.c中, 关键定义如下:typedef struct listNode { struct listNode *prev; struct listNode *next; void *value;} listNode;...

2018-11-15 14:05:03 187

转载 Redis底层数据结构dict

dict是Redis底层数据结构中实现最为复杂的一个数据结构, 其功能类似于C++标准库中的std::unordered_map, 其实现位于 src/dict.h 与 src/dict.c中, 其关键定义如下:typedef struct dictEntry { void *key; union { void *val; uint64_t u...

2018-11-15 14:04:21 513 1

转载 Redis内部数据结构详解(6)——skiplist

本文是《Redis内部数据结构详解》系列的第六篇。在本文中,我们围绕一个Redis的内部数据结构——skiplist展开讨论。Redis里面使用skiplist是为了实现sorted set这种对外的数据结构。sorted set提供的操作非常丰富,可以满足非常多的应用场景。这也意味着,sorted set相对来说实现比较复杂。同时,skiplist这种数据结构对于很多人来说都比较陌生,因为大...

2018-11-15 13:57:09 133

转载 Redis内部数据结构详解(5)——quicklist

本文是《Redis内部数据结构详解》系列的第五篇。在本文中,我们介绍一个Redis内部数据结构——quicklist。Redis对外暴露的list数据类型,它底层实现所依赖的内部数据结构就是quicklist。我们在讨论中还会涉及到两个Redis配置(在redis.conf中的ADVANCED CONFIG部分):  list-max-ziplist-size -2 li...

2018-11-15 13:49:00 174

原创 Redis源码架构图

 

2018-11-14 21:51:44 1005

转载 Redis内部数据结构详解(4)——ziplist

本文是《Redis内部数据结构详解》系列的第四篇。在本文中,我们首先介绍一个新的Redis内部数据结构——ziplist,然后在文章后半部分我们会讨论一下在robj, dict和ziplist的基础上,Redis对外暴露的hash结构是怎样构建起来的。我们在讨论中还会涉及到两个Redis配置(在redis.conf中的ADVANCED CONFIG部分):  hash-max-z...

2018-11-13 20:44:08 115

转载 Redis内部数据结构详解——intset

本文是《Redis内部数据结构详解》系列的第七篇。在本文中,我们围绕一个Redis的内部数据结构——intset展开讨论。Redis里面使用intset是为了实现集合(set)这种对外的数据结构。set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。Redis里的set结构还实现了基础的集合并、交、差的操作。与Redis对外暴露的其它数据结构类似,set的底层实现,随着元素类型是否...

2018-11-13 17:48:13 395

转载 SDS 与 C 字符串的区别

根据传统, C 语言使用长度为 N+1 的字符数组来表示长度为 N 的字符串, 并且字符数组的最后一个元素总是空字符 '\0' 。比如说, 图 2-3 就展示了一个值为 "Redis" 的 C 字符串:C 语言使用的这种简单的字符串表示方式, 并不能满足 Redis 对字符串在安全性、效率、以及功能方面的要求, 本节接下来的内容将详细对比 C 字符串和 SDS 之间的区别, 并说明 S...

2018-11-12 23:10:45 172

转载 跳跃表Skip List的原理和实现(Java)

转   https://blog.csdn.net/derrantcm/article/details/79063312为什么要有跳跃表我们在实际开发中经常会有在一堆数据中查找一个指定数据的需求,而常用的支持高效查找算法的实现方式有以下几种:有序数组。这种方式的存储结构,优点是支持数据的随机访问,并且可以采用二分查找算法降低查找操作的复杂度。缺点同样很明显,插入和删除数据时,为了保持元...

2018-11-11 09:40:47 198

转载 Lucene学习总结之一:全文检索的基本原理

Lucene学习总结之一:全文检索的基本原理 转  https://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623594.html一、总论根据http://lucene.apache.org/java/docs/index.html定义:Lucene是一个高效的,基于Java的全文检索库。所以在了解Lucene之前...

2018-11-08 14:04:55 236

原创 CENTOS7 elasticSearch安装配置

CentOS 7 安装 JDK whereis java   which java如果centos有自带的JRE,首先要删除自带的rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el...

2018-11-07 14:43:19 285

空空如也

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

TA关注的人

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