Redis笔记(0)
#是否为守护进程运行 daemonize no #配置pid的存储位置 pidfile /var/run/redis.pid #默认监听端口 port 6379 #客户端限制多少秒后自动断开连接 timeout 300 #日志显示级别 loglevel verbose #指定日志输出文件名,也可指定到标准输出 logfile stdout #设置数据库数量,默认连接数据库为0,可以通过select N来连接不同的数据库 databases 16 #保存数据到disk的策略 ##当有一条Keys数据被改变是,900秒刷新到disk一次 save 900 1 ##当有10条Keys数据被改变时,300秒刷新到dis 一次 save 300 10 ##当有1w条keys数据被改变时,60秒刷新到disk一次 save 60 10000 #当dump .rdb数据库的时候是否压缩数据对象 rdbcompression yes #dump数据库的数据保存的文件名 dbfilename dump.rdb #Redis 的工作目录 dir ./ ########### Replication ##################### #Redis 的复制配置 # slaveof <masterip> <masterport> # masterauth <master-password> ############## SECURITY ########### # requirepass foobared ############### LIMITS ############## #最大客户端连接数 # maxclients 128 #最大内存使用率 # maxmemory <bytes> ########## APPEND ONLY MODE ######### #是否开启日志功能 appendonly no # 刷新日志到 disk 的规则 # appendfsync always appendfsync everysec # appendfsync no ################ VIRTUAL MEMORY ########### #是否开启 VM 功能 vm-enabled no # vm-enabled yes vm-swap-file /tmp/redis.swap vm-max-memory 0 vm-page-size 32 vm-pages 134217728 vm-max-threads 4 ############# ADVANCED CONFIG ############### glueoutputbuf yes hash-max-zipmap-entries 64 hash-max-zipmap-value 512 #是否重置 Hash 表 activerehashing yes
elvalad@earth:~$ redis-server ./桌面/redis-2.2.12/redis.conf
elvalad@earth:~$ netstat -an -t Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 117.22.87.81:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:47711 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:39491 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
总结
下午正在床上睡觉,阿里的一个大哥打电话过来谈实习的事,现在想想还是好人多啊,只是和几个前辈们聊了下工作的事,大家都特别热心的帮助我,无论结果如何,在此都需要谢谢大家。
正则表达式笔记
------------------------------------------------------ 元字符 | 含义 ------------------------------------------------------ [] |字符集合,至少匹配集合中的一个字符 ------------------------------------------------------ [^] |对字符集合求非 ------------------------------------------------------ \ |转义字符 ------------------------------------------------------ \b |回退符(匹配单词边界) ------------------------------------------------------ \B |不匹配单词边界 ------------------------------------------------------ \f |换页符 ------------------------------------------------------ \n |换行符 ------------------------------------------------------ \r |回车符 ------------------------------------------------------ \t |制表符 ------------------------------------------------------ \v |垂直制表符 ------------------------------------------------------ \d |任意单个数字 ------------------------------------------------------ \D |任意非数字单个字符 ------------------------------------------------------ . |除换行符以外的任意字符 ------------------------------------------------------ \w |等价于[a-zA-Z0-9_] ------------------------------------------------------ \W |等价于[^a-zA-Z0-9_] ------------------------------------------------------ \s |等价于[\f\n\r\t\v] ------------------------------------------------------ \S |等价于[^\f\n\r\t\v] ------------------------------------------------------ \x |匹配十六进制数 ------------------------------------------------------ \0 |匹配八进制数 ------------------------------------------------------ + |匹配一个或多个字符集合 ------------------------------------------------------ * |匹配0个或多个字符集合 ------------------------------------------------------ ? |撇配0个或1个字符 ------------------------------------------------------ {} |重复匹配 ------------------------------------------------------ \< |只匹配单词的开头(很多工具不支持) ------------------------------------------------------ \> |只匹配单词的结尾(很多工具不支持) ------------------------------------------------------ ^ |匹配字符串的开始 ------------------------------------------------------ $ |匹配字符串的结束 ------------------------------------------------------ () |子表达式 ------------------------------------------------------ ?= |向前查找,查找出现在匹配文本之后的内容 ------------------------------------------------------ ?<= |向后查找,查找出现在匹配文本之前的内容 ------------------------------------------------------ | |逻辑或操作 ------------------------------------------------------ \E |结束\L或\U转换 ------------------------------------------------------ \L |把后面的字符转换为小写直到遇到\E ------------------------------------------------------ \l |把下一个字符转换为小写 ------------------------------------------------------ \U |把下一个字符转换为大写直到遇到\E ------------------------------------------------------ \u |把下一个字符转换为大写 ------------------------------------------------------ ------------------------------------------------------
我不适合PH.D
这几天,没事就会想想关于未来的问题,有时候希望自己可以潜下心来,好好搞搞学术,读个硕士然后再争取个PH.D,有时候又希望自己可以赶紧去工作,过上自己最向往的流浪的生活,因为我从来都不是一个安分的人。
中午,我专门看了些PH.D的东东:
http://matt.might.net/articles/phd-school-in-pictures/ 这篇有趣而发人深思的文章告诉了我什么样的人才能算作一个合格的PH.D,而我再用中文搜索计算机PH.D,得到的有用的信息不是很多,不少是在谈论国内PH.D能干嘛,PH.D如何找工作等等我并不是太感兴趣的话题。
接着,我做了个MBTI的测试:
http://www.apesk.com/mbti/dati_en2.asp 得出的结果是ISTP型,哈哈,测试结果表明适合俺的职业有计算机程序员或者软件工程师是我非常中意的,其中并不包含纯正的科学工作者,也就是科学家。
通过这些基本调查,我发现自己非常不适合向PH.D奋斗,一个很大的原因是个人追求问题,纯正的科研工作者需要地是对未知事物的敏锐洞察力以及超强的抽象分析能力,记得前阵子,邓中翰来学校演讲时讲了他的求学经历,这种人就是我认为可以称为计算机科学家的人。而对未知事物敏锐的洞察力和非常抽象的分析能力都是我比较欠缺的(比如我不喜欢纯数学,不喜欢对明了的事物喋喋不休地使用公理,定理证明),这些都会阻挠我希望科研的道路,我个人比较崇尚的是务实主义,也就是一个engineer或者hacker比较喜欢的东西,而且我这辈子最大的梦想是可以不停的行走,且行且思考,我不想安分的呆在一个地方为了一些很崇高的目标把一辈子都搭上,或许有一天我累了,会开一个小小的书店或者一个小酒吧,没事的时候可以写写程序,自娱自乐。
记得前一阵子,我和jiejie兄(http://lijiejie.com/)谈到未来的问题,他告诉我,活着就该让生活充满乐趣,让自己开心,让自己的家人过的快乐。而这几天刚好又看到了一些性情中的程序员所追求的生活,比如冰河离开网易,Jamie Zawinski窝在旧金山卖啤酒,没错这种日子才是我所追求的。
和爸爸妈妈谈了一些这个问题,虽然从小到大我的一切事都是自己作主,但这次他们给我的保守建议是好好读书,先争取读个硕士,然后向PH.D奋斗。因为他们都是普普通通的中学老师,对于生活的领悟用的是他们自己的思维,比如他们希望平静,他们喜欢安定...而这些恰恰都和我的追求不符合,或许有一天当我在生活中撞墙的时候我会想到他们今天说过的话,但希望在我做出这个决定之后自己不会后悔,也希望他们可以谅解我。
所以,我仅仅想做一个coder,可以不停地coding,我仅仅想做一个行者,可以不停地行走。
python input()和raw_input()
在python中input()和raw_input()函数均可以从终端输入,但二者存在一定区别,例如如下代码:
#!/usr/bin/python # -*- coding: utf-8 -*- # guess.py import random guessesTaken = 0 print ('Hello! what is your name') #myName = raw_input() myName = input() number = random.randint(1, 23) print ('well, ' + myName + ', i am thinking of a number between 1 and 23.') while guessesTaken < 7: print ('Take a guess') guess = input() #guess = int(guess) guessesTaken = guessesTaken + 1 if guess < number: print ('your guess is too low') if guess > number: print ('your guess is too high') if guess == number: break if guess == number: print ('good job! you guess in %d guesses!' %guessesTaken) if guess != number: print ('sorry! your guess is wrong')
在第10行中使用了input()函数,此时如果终端直接输入xxx,则会显示NameError: name 'xxx' is not defined的错误,如果输入"xxx"或'xxx'则可正确运行。
如果使用raw_input()函数,可直接输入xxx。
这两个函数的区别为如果直接键入数字,input()返回一个数值类型,比如int,float,而raw_input()则会返回字符串类型;如果键入非数字,则input()函数要求以字符串引用的形式输入,比如"xxx",而raw_input()可以直接输入为xxx,二者均返回字符串。
C语言数据类型在IA32中的大小
这个主要是一些常识问题,以及在使用AT&T语法汇编时会使用的编码后缀:
C声明 | Intel数据类型 | 汇编后缀 | 大小(byte) |
char | 字节 | b | 1 |
short | 字 | w | 2 |
int | 双字 | l | 4 |
long int | 双字 | l | 4 |
long long int | - | - | 4 |
char* | 双字 | l | 4 |
float | 单精度 | s | 4 |
double | 双精度 | l | 8 |
long double | 扩展精度 | t | 10/12 |
小常识:long double是在ISO C99中引入,用于扩展浮点精度,它的大小不仅和机器体系结构有关,同时和编译器也有关系,在除X86以外的平台上一般用8个字节表示,在X86机器上一般为10个字节,而GCC将其存储为12个字节。
保证生活品质
这几天过的很累,今天所有的不良反应都表现出来了:
0:看到代码想吐
1:听到或看到python这个单词想吐
2:头晕晕乎乎
3:下午两点才起床
4:浑身无力,肌肉酸痛
5:见到人都懒得打招呼
...
综上,我觉得我最近的生活品质出了很大的问题,究其主要原因就是连续10天,几乎每天在电脑前10小时加,晚上睡觉3点以后,早上起床很少有超过11:30分的,这几天把《Beginning Linux Programming 3rd Edition》大概翻了一遍,同时每天还会抽出2个小时以上学习python,今天突然发现我看到任何python的书都想吐,看到代码都恶心了,所以我觉得因该有所改变。
首先,我觉得每天可以累一点,但必须过的快乐,虽然每天学点新东西,我会觉得很开心,但这样把自己搞得这么累,这么辛苦是没必要的。而且,在这种情况下,我自己也发现头脑不清醒,思维不活跃,人没精神。所以,特立定以下暑假基本计划以保证生活品质,让自己每天不仅开心,而且高效。
0:早上8点之前起床
1:每天保证3顿饭,如果天太热可自行调节
2:每天抽出6个小时准备下学期的考试
3:保质保量的完成CSAPP和算法导论的学习,每天至少3个小时在这两本书上
4:坚持python的学习,如果有闲心可以看看scheme,为学习SICP打打基础
5:坚持半小时的锻炼,可以跑步、散步...
6:有空多和人聊聊天
7:晚上1点以前必须无条件上床睡觉
8:有空可以一个人出去喝点儿小酒,爽快爽快
为了保证生活乐趣可以坚持每天在网上看看美女图片,和美女搭讪聊天,还可以打打dota玩玩photoshop什么的。
总之,生活很美好,生命很短暂,不仅仅只有程序。
最后,以庄子《养生主》中的“吾生也有涯,而知也无涯。以有涯随无涯,殆已;已而为知者,殆而已矣。”提醒自己,学会享受生活,而不仅仅是一味地追求知识。