使用Travis-CI自动部署博客
使用Travis-CI自动部署博客因为在github上面存储的是编译好的html代码,不是hexo博客中的博客源文件,所以如果没有备份源文件的话,丢失了源文件(包括md,一堆配置文件)后就不能继续更新博客了,而且也不能多端部署Hexo。网上看到可以使用Travis-CI来自动部署,同时解决了博客源文件的备份问题。
新建hexo分支来保存源文件新建分支直接在对应的github.io项目上的branch 按钮处点击新建分支 hexo。
官方文档https://help.github.com/en/articles/setting-the-default-branch
12# 克隆项目到本地> git clone https://github.com/BraveY/BraveY.github.io.git
设置默认分支参照官方文档设置https://help.github.com/en/articles/setting-the-default-branch
修改推送hexo分支现将原来的文件BraveY.github.io 修改为BraveY ...
Redis源码阅读——SDS
Redis源码阅读——SDS参考Redis设计与实现 以及网上博客阅读Redis源码。
SDS相关知识点见读书笔记。
创建和销毁为了能够对sds进行相关API的测试,因此把sds模块单独提出来。阅读Redis的Makefile发现,编译sds模块需要的源文件包括sds.c, sds.h zmalloc.c
123test-sds: sds.c sds.h $(REDIS_CC) sds.c zmalloc.c -DSDS_TEST_MAIN $(FINAL_LIBS) -o /tmp/sds_test /tmp/sds_test
但是实际编译后会发现会报很多函数未定义的错。原因是redis源码里面sds的内存分配、释放、重分配这些函数是封装成zmalloc,zfee这些函数的,只单纯的把zmalloc.c提取出来是远远不够的。后面发现redis的作者已经把sds给单独提出来了。包括三个源文件sds.c,sds.h,sdsalloc.h 因此执行如下操作即可单独把redis的sds模块提取出来。
提取sds模块
新建 ...
内存分配的字节对齐
C语言内存分配的字节对齐阅读Redis源码时出现了__attribute__ ((__packed__)) 语句作用是取消字节对齐,而使分配的内存连续。忘记了相关知识。记录下。
简单记录:???
对齐参数。参数满足两个特性:
1.必须是2的幂
2.必须是(void )的整数倍 (void 的大小就是字长,是CPU可以一次读取的字节数)
根据这个原理,在32位和64位的对齐单位分别为8字节和16字节
参考资料https://www.cnblogs.com/Creator/archive/2012/04/05/2433386.html
Redis设计与实现读书笔记——第二章SDS
Redis设计与实现读书笔记——第二章为了做Redis相关实验,在网上粗略看了Redis设计与实现的电子版,感觉收获很多,但是因为是旧版,所以买了第二版,重读第二次。
第二章 简单动态字符串简介
字符串值的键值对在底层都是由SDS实现的。
sds的功能:
存储字符串值
用作缓冲区
AOF模块缓冲区
客户端状态的输入缓冲区
2.1 SDS的定义文件:sds.h/sdshdr 结构体
书中的为3.0版本,4.0版本有较大改动。
version: redis-4.02
参考:https://www.cnblogs.com/chenpingzhao/p/7292182.html
https://www.codesheep.cn/2018/08/09/Redis%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%B1%BB%E5%9E%8B%E5%86%85%E9%83%A8%E7%BC%96%E7%A0%81%E5%89%96%E6%9E%90/
123456789101112131415161718192021222324252627282930313233type ...
ping 无法连接外网
ping 无法连接外网
问题ping外网ping不通
1234yky@hw076:~/tmux> ping www.baidu.comping: unknown host www.baidu.comyky@hw076:~/tmux> ping 8.8.8.8connect: Network is unreachable
ping内网可以ping通
1234567891011hw076:~ # ping 172.18.11.114PING 172.18.11.114 (172.18.11.114) 56(84) bytes of data.64 bytes from 172.18.11.114: icmp_seq=1 ttl=64 time=0.193 ms64 bytes from 172.18.11.114: icmp_seq=2 ttl=64 time=0.216 ms64 bytes from 172.18.11.114: icmp_seq=3 ttl=64 time& ...
shell 脚本遍历redis数据库
使用shell脚本遍历redis数据库中的所有kv对记录下如何使用shell通过redis-cli 命令来操作redis数据库,因为直接在命令行中输入
redis-cli command 的话command必须是单个单词,不能像是KEYS * 这种.
123456789101112#!/bin/bashfilename='redis'`date +%Y-%m-%d_%H:%M`work_path=$(dirname "$0") echo "实例化redis数据文件为:$work_path/$filename"echo "keys *" | redis-cli > key_db.txtecho "将所有key保存到:$work_path/key_db.txt"for line in `cat key_db.txt`do echo "key:$line " > ...
使用YCSB 评测redis性能
使用YCSB 评测redis性能YCSB是雅虎推出的可以评测许多主流数据库性能的基准测试,其中包括Redis。
安装YCSB
安装java和maven
机子已经有了java,所以只用安装maven Ubuntu安装命令为:
sudo apt-get install maven
安装YCSB
123git clone http://github.com/brianfrankcooper/YCSB.gitcd YCSBmvn -pl com.yahoo.ycsb:redis-binding -am clean package
必须是gitclone的源码包才能执行mvn 命令。wget或者curl下来包是已经编译好了的无需执行mvn命令。
mvn -pl com.yahoo.ycsb:redis-binding -am clean package 报错:
123456789[INFO] Scanning for projects...[ERROR] [ERROR] Could not find the selected project ...
apt-get install失败
apt-get install失败
第一阶段
使用perf 报错 内核无法找到perf
12345678910root@hw103:/home/yky/redis-5.0.3# perf WARNING: perf not found for kernel 4.15.0-45 You may need to install the following packages for this specific kernel: linux-tools-4.15.0-45-generic linux-cloud-tools-4.15.0-45-generic You may also want to install one of the following packages to keep up to date: linux-tools-generic linux-cloud-tools-generic
安装此内核的通用工具时错误
1234567891011root@hw103:/home/yky/re ...
Make学习
make学习开始阅读redis源码,都说redis很简单,源码不多。但是源码包下载下来后却发现不知道从何处入手,有那么多文件和源码。后面查找资料才发现阅读源码的第一步就是阅读Makefile,项目如何构建和源码间的关联都写在了Makefile文件中。之前没有接触过Makefile,记录下Make的学习。
makefile的格式
概述
makefile 文件由一系列rules组成 rules的格式为:
12<target> : <prerequisites> [tab] <commands>
“目标”是必需的,不可省略;”前置条件”和”命令”都是可选的,但是两者之中必须至少存在一个。
每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。
target
一个目标(target)就构成一条规则。目标通常是文件名,指明Make命令所要构建的对象,比如上文的 a.txt 目标可以是一个文件名,也可以是多个文件名,之间用空格分隔。(make的时候指定文件名从而对该文件进行构建build)
除了文件名,目标还可以是某个操 ...
Linux命令学习之wc
Linux 命令学习wc命令wc命令
作用:Word Count 功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
格式:
wc [option] filepath
参数
-c 统计字节数
-l 统计行数
-m 统计字符数 标志不能与 -c 标志一起使用。
-w 统计字(单词word)数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
参考网址:http://www.cnblogs.com/peida/archive/2012/12/18/2822758.html