Posts
All the articles I've posted.
-
夯实基础:Redis 的数据结构介绍
使用 Redis 这么久,发现自己还没写过一篇有关 Redis 数据结构的文章,从构造 Redis 整个知识体系来说,显示是不完整的。故这篇文章再次让自己回归到 Redis 的五种基本数据结构,除了描述这些数据结构的特点,也介绍如何使用 Redis 命令来操作这些数据结构。 Redis 支持的...
-
Hiredis 实现 Redis 流水线
Pipelining(流水线)允许 Redis 客户端一次向 Redis 发送多个命令,Redis 在接收到这些命令后,按顺序进行处理,然后将请求的处理结果一次性返回给客户端。流水线可以减少客户端与 Redis 之间的网络通信次数来提升 Redis 客户端在发送多个命令时的性能,可谓提升客户端...
-
Python 使用 ElementTree 模块来处理 XML
最近使用 Python 来发送 SOAP 请求以测试 Web Service 的性能,由于 SOAP 是基于 XML 的,故免不了需要使用 Python 来处理 XML 数据。在对比了几种方案后,最后选定使用 xml.etree.ElementTree 模块来实现。 这篇文章记录了使用 xml...
-
SOAP Web Services 简介
SOAP(Simple Object Access Protocol)是一种基于 XML 的 web 服务协议。SOAP 是平台独立的,不依赖于特定的语言,例如,我们可以使用 C#,C/C++,或者 Java 语言来实现 SOAP web 服务。 SOAP 的优点 SOAP 的优点有: WS ...
-
Redis 图形化监控方案 RedisLive 介绍
作为一款开源的 Redis 图形化监控工具,RedisLive 提供对 Redis 实例的内存使用情况,接收的客户端命令,接收的请求数量以及键进行监控。RedisLive 的工作原理基于 Redis 的 INFO 和 MONITOR 命令,通过向 Redis 实例发送 INFO 和 MONIT...
-
Redis 事务学习笔记
Redis 为了支持事务,提供了 5 个相关的命令,他们分别是 MULTI,EXEC, WATCH,UNWATCH 和 DISCARD。我们先介绍 MULTI 和 EXEC 的用法,MULTI 和 EXEC 支持了 Redis 的基本事务的用法。接下来介绍 WATCH,UNWATCH 和 DI...
-
I/O多路复用之 epoll 系统调用
I/O多路复用除了之前我们提到的和外,epoll 也可以检查多个文件描述符的就绪状态,以达到I/O多路复用的目的。 epoll 系统调用是 Linux 系统专有的,在 Linux 内核 2.6 版本新增,epoll 的主要优点有: 当检查大量的文件描述符时,epoll 的性能比和高很多 epo...
-
Redis 性能测试记录
虽然 Redis 本身也提供工具来对 Redis 的性能进行测试,但为了对测试维度自由定制,我们还是通过自己编写脚本的方式来测试。 Redis 的官方文档也提到了,简单的起一个循环,然后在循环中向 Redis 发送操作命令,其实不是对 Redis 进行性能测试,而是对网络延迟进行测试。为了真正...
-
Redis C 语言客户端 hiredis 的使用
最近需要使用C++来访问 Redis,查找了一些开源C/C+的 Redis 客户端,发现 hiredis 目前的社区活跃度较高,且比较轻量级,就决定选用这款客户端了。 安装 以 Mac OS 为例,说明如何安装 hiredis。 1. 下载 hiredis 的代码 2. 编译安装 第一个例子 ...
-
Web 服务架构类型
根据 Web 应用架构设计的风格,可以将 Web 服务划分为以功能为中心的服务以及以资源为中心的服务。 以功能为中心的服务 以功能为中心的 Web 服务历史由来已久,它是指能够调用远程机器上的功能或者对象方法,而无须知道这些功能或者对象是如何实现的。 我们了解的 CORBA(公共对象请求代理体...
-
在阿里云部署 Hexo 网站
一开始自己的网站 leehao.me 托管在 GitHub 上面,考虑到 GitHub 的访问可能不稳定,另外,也是抱着学习的目的,就将网站迁移到阿里云上面来了。 网站的总体结构如下图所示: 域名 leehao.me 指向负载均衡 SLB(Server Load Balancer)的 IP,在...
-
gSOAP 初体验
由于工作调动关系,需要了解 gSOAP 的使用,写个文章记录一下学习的心得,免得以后忘记。 安装 由于本人使用的是 Mac OS 系统,故以 Mac OS 为例说明如何安装 gSOAP。 1)下载 gSOAP 可以在 https://sourceforge.net/projects/gsoap...
-
Terminal折腾记
闲逛网上文章时,发现可以对Mac的终端进行改造。之前自己一直使用默认的Mac终端 ,并没有过多的配置,使用起来并不是很便捷,这也更加坚定了自己对终端进行改造的决心。 开门见山,先直接上一幅改造后终端的最终效果图: 为了达到上图改造后的效果,需要安装以下几个软件: iTerm2 Z Shell(...
-
tmux:终端复用利器
什么是终端复用(terminal multiplexer)?终端复用可以让你在同一个终端同时打开不同的程序并观察输出,同时允许你方便地退出和恢复这些程序的使用。 使用tmux可以达到终端复用的目的,下图为tmux在同一个终端窗口中同时打开不同程序的一个示例: 安装 对于 Mac OS,使用简单...
-
博客使用上了网易云跟贴
本来对于多说不支持 HTTPS 就不太满意,早就想换一个评论系统了。昨天上去多说的官网一看,发现多说竟然要在今年6月1号关闭了。 可能是多说没有找到赚钱的路子吧,这样的话自己只能默默祝福一下了。 多说的关闭也坚定了自己将博客的评论跟换成网易跟贴的决心。 说干就干。
-
make命令与makefile文件
一、多个源文件带来的问题 在编写c/c++测试程序时,我们习惯每次修改一处代码,然后就马上编译运行来查看运行的结果。这种编译方式对于小程序来说是没有多大问题的,可对于大型程序来说,由于包含了大量的源文件,如果每次改动一个地方都需要编译所有的源文件,这个简单的直接编译所有源文件方式对程序员来说简...
-
epoll 水平触发与边缘触发
epoll也是实现I/O多路复用的一种方法,为了深入了解epoll的原理,我们先来看下epoll水平触发(level trigger,LT,LT为epoll的默认工作模式)与边缘触发(edge trigger,ET)两种工作模式。 使用脉冲信号来解释LT和ET可能更加贴切。Level是指信号只...
-
I/O多路复用之POLL系统调用
函数类似于函数,也可以实现I/O多路复用。函数的声明如下: 第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个结构,用于指定测试某个给定描述符的条件。 要测试的条件由成员指定,函数在相应的成员中返回该描述符的状态。和都由某个特定条件的一位或多位构成。下面表格列出了用于指定标志以...
-
I/O多路复用之select系统调用
I/O多路复用模型允许我们同时等待多个套接字描述符是否就绪。Linux系统为实现I/O多路复用提供的最常见的一个函数是函数,该函数允许进程指示内核等待多个事件中的任何一个发生,并只有在一个或多个事件发生或经历一段指定的时间后才唤醒它。 作为一个例子,我们可以调用,告知内核仅在下列情况发生时才返...
-
多线程并发服务器
在多进程并发服务器的应用程序中,父进程一个连接,一个子进程,该子进程负责处理与该连接对端的客户之间的通信。 尽管多进程的编程模型中,各进程拥有独立的地址空间,减少了出错的概率,然而,调用却存在一些问题: 是昂贵的,要把父进程的内存映像复制到子进程,并在子进程中复制所有描述符,这个操作是较重量级...