随笔分类 - Linux
摘要:redis 在底层中会把long long转成string 再做存储。 主个功能是在sds模块里。 下面两函数是把long long 转成 char 和 unsiged long long 转成 char。 大致的思路是: 1 把数值从尾到头一个一个转成字符, 2 算出长度,加上结束符。 3 把字符
阅读全文
摘要:redis的内部数据结构主要有:字符串,双端链表,字典,跳跃表。 这里主要记录redise字符串的设计。相关的源码位于:src/sds.h 和 src/sds.c。 一 字符串 sds的结构体 struct sdshdr { int len; // buf 已占用长度 int free; // bu
阅读全文
摘要:linux环境下查看redis的版本: 查看redis的版本有两种方式:1. redis-server --version 和 redis-server -v 得到的结果是:Redis server v=2.6.10 sha=00000000:0 malloc=jemalloc-3.2.0 bits
阅读全文
摘要:一 Redis 支持写的指令 Redis大概的命令如下:set setnx setex appendincr decr rpush lpush rpushx lpushx linsert lset rpoplpush saddsinter sinterstore sunion sunionstore
阅读全文
摘要:一 redis数据类型redis支持5种类型的数据类型,它描述如下的:1. 字符串 Redis字符串是字节序列。Redis字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以存储任何东西,512兆为上限。2. 哈希 Redis的哈希是键值对的集合。 Redis的哈希值是
阅读全文
摘要:Redis的安装相对来的不难,以下主要是centos系统做为环境。 1. 下载地址 这是redis的官网http://redis.io/。 这是下载页面http://redis.io/download。 我自已的百度云地址:http://pan.baidu.com/s/1kVGSiI7 2. 安装
阅读全文
摘要:git 中关于LF 和 CRLF 的转换问题注意: Windows下编辑器设置中,建议调整设置为Unix风格。(具体设置位置各种编辑器上不同,需要找找) 使用Git Bash进行命令行操作时,运行一下这个命令检查一下输出结果,确认输出为false: $ git config --get core.a
阅读全文
摘要:一 全局配置 git config --gobal core.autocrlf false git config --global user.name "carlos" git config --global user.email "1447675994@qq.com" git init // 初始
阅读全文
摘要:环境是centos6.x。 关于团队对代码管理,相信大部分人习惯于svn。不过我个人比较喜欢git的。这个blog git 常用命令 就是介绍git的基本用法。现部署svn服务端方式如下: 1. 用yum安装如下: yum install subversion2. 输入 svn --help可以查看
阅读全文
摘要:环境是centos6.x。相信其他的也大同小异。相对来说这种方式我用的比较多。 一些环境依赖表库: yum install perl yum install libaio 1)下载:在mysql的网站上,下载 mysql-5.6.13-linux-glibc2.5-x86_64.tar.gz我的百度
阅读全文
摘要:程序运行的过程中,可能会因为一些隐藏的bug导致崩溃,为了在出问题时,及时记录所在环境的情况,所以要设置core文件的产生。其实其本质就是把进程的内存保存到文件中去。 1.core文件的生成开关和大小限制1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会
阅读全文
摘要:一 单步执行和跟踪函数调用 先给出一段代码,可以用下面介绍的例子。 #include <stdio.h> int add_range(int low, int high) { int i, sum; for (i = low; i <= high; i++) sum = sum + i; retur
阅读全文
摘要:一 为什么要使用信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问 代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线...
阅读全文
摘要:一 消息队列的介绍消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。◆影...
阅读全文
摘要:一管道的局限性管道有两个局限性:(1)他是半双工(即数据只能在一个方向上流动)。(2)它只能在具有公共祖先的进程之间使用。一个管道由一个进程创建,然后该 进程调用fork,此后父子进程之间就可该管道。二 管道的创建 用函数pipe创建:#includeint pipe(int files[2]);参...
阅读全文
摘要:有名管道(FIFO)命名管道也被称为FIFO文件,是一种特殊的文件。由于linux所有的事物都可以被视为文件,所以对命名管道的使用也就变得与文件操作非常统一。(1)创建命名管道用如下两个函数中的其中一个,可以创建命名管道。#include #include int mkfifo(const char...
阅读全文
摘要:一 什么是XSI IPC 有三种 IPC我们称作XSI IPC,即消息队列、信号量以及共享存储器(共享内存),它们之间有很多相似之处。二 标识符和键 每个内核中的 IPC结构(消息队列、信号量或共享内存)都用一个非负整数的标识符加以引用。 无论何时创建IPC结构(调用 msgget、semget ...
阅读全文
摘要:一 进程间通信有如下的目的:1、数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间;2、共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到;3、通知事件,一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情;4、资源共享,多个进程...
阅读全文
摘要:1.进程★进程,就是运行中的程序。一个可执行程序是一具机器指令及其数据的序列。一个进程是程序运行时的内存空间和设置。★shell是一个管理进程和运行程序的程序。Shell主要有三个功能:(1)运行程序(2)管理输入和输出(3)可编程。(1)greplsecho都是一些用C编写并被编译成机器语言的程序...
阅读全文
摘要:一共享内存介绍共享内存可以从字面上去理解,就把一片逻辑内存共享出来,让不同的进程去访问它,修改它。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地...
阅读全文