编写快速安全bash脚本建议
看到网上非常好的一篇bash脚本编写建议,转载供自己学习使用。 昨天我和一些朋友聊起Bash,我意识到:即使我已经使用Bash十多年了,现在还有一些基础的杂项,我理解的并不是很清晰。 像往常一样,我认为我应该写一个博文。会包含下面几个方面:
看到网上非常好的一篇bash脚本编写建议,转载供自己学习使用。 昨天我和一些朋友聊起Bash,我意识到:即使我已经使用Bash十多年了,现在还有一些基础的杂项,我理解的并不是很清晰。 像往常一样,我认为我应该写一个博文。会包含下面几个方面:
学习了emacs一段时间,走完了从入门到放弃这条路,这条路走得很折腾,记录一下自己的心得体会。首先展示一下我的成果lemon-emacs。
vim是我使用了很久的编辑器,在不同的开发机上折腾了很多次,有了很多经验,这里记录一下我常用到的内容。
这边文章主要列举常用的markdown语法,使用这些语法足够满足平时90%的写作需求,需要详细需求请参考详细指南。需要注意一点,markdown兼容html语法,可以直接在markdown中添加html语句。
这里将记录一下我进行网络程序调试的一些经验。主要包括进程状态的查看,网络状况查看,日志查看,调试程序。
工欲善其事,必先利其器。我平时非常喜欢寻找有意思的插件。下面介绍几款我喜欢的chrome插件分享给大家。
一些Linux平台上开源的C或者C++项目,当你编译这些项目的时候,只需./configure、 make和make install就可以把程序编译完成并安装到系统中。这些开源的项目的编译和安装怎么如此的干净利落,主要通过automake相关工具实现的。
linux多机通信的一些方法记录。
简介
git的基本原理介绍。
在linux系统下面编程,慢慢发现了shell scripts的重要性。使用shell脚本编程,可以让很多问题自动化,无需自己去敲繁琐的命令,大大的解放了生产力。所以对于一个linux程序员来说,脚本编程非常重要。下面将介绍一些我的学习经验,也作为自己的笔记用来时常查看。
gtest是googletest的简称,它是一款google内部使用的测试驱动(当编写一个程序单元时,要先对这个程序单元编写其测试代码,然后再编写这个程序单元,这就是测试驱动)开发工具。gtest是一套单元测试框架,使用起来非常的方便,能很好地帮助编写测试代码。
讲到utf8,就要说一下unicode,unicode是一个标准,几乎包含了世界上所有的字符,每一个字符在unicode中都有一个对应的码点,用U+表示,如汉字林的码点就是U+6797,数字是16进制表示。在将unicode的码点保存到计算的时候,又有了不同的实现方法如utf8,utf16,utf32等等。这里主...
看coolshell上的文章一些总结。
在c语言程序中,如linux内核和其它开源代码中,经常可以看到下面的代码:
HTTP是非常重要的网络协议,在实际工作中很多时候都需要学习和理解HTTP协议。比如为系统设计HTTP服务器,处理客户端的HTTP协议请求,模拟客户端发送HTTP请求等等。因此,这里将简单介绍一下HTTP的相关知识。
记录一些C语言相关的问题。
最近忙于找工作,看完了《剑指offer》这本书,深入思考其中的问题,感觉自己收获颇丰。回想自己的几次面试,总结经验和教训供大家思考。
Tcmalloc是谷歌开发的一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,tcmalloc号称要比它快。一次malloc和free操作,ptmalloc需要300ns,而tcmalloc只...
列式数据库是面向OLAP场景的,所谓OLAP,更多是用来进行数据分析时使用,比如应用于数据仓库系统,列式数据库中的数据按列存储的话,并能够很好地分析一列数据的特性。本文将介绍一下一种内存列式数据库的索引方案,名字叫做GroupKey。主要是用来进行数据的索引工作。
对于C++的学习,我觉得有几个阶段,首先,明白C++的基本语法,通过看C++ Primer就可以知道,并做很多的练习,让自己熟悉C++的基本语法使用,了解基本的语句,如控制语句,循环语句等等,这一部分,主要是C部分的学习。在此基础上,使用C++的面向对象,使用类编写程序,可以尝试编写一个简单的String类,明白...
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。其优点是语言中立...
记录阅读BigTable论文时思考的一些问题。
在设计存储系统时,磁盘是最常用的存储介质,了解磁盘的各种特性才能高效的管理磁盘,提高系统性能。这篇文章准备介绍磁盘的基本知识,特性,优化技巧,和常见设计方法。
最近看了一些分布式一致性算法的相关文章,有basic-paxos相关的文章和multi-paxos相关的文章,结合自己前期学习的raft论文,总结一下它们的关系记录一下。
这里主要记录自己最近思考的一些分布式系统相关的知识。
Paxos算法是Lamport于1990年提出的一种基于消息传递的一致性算法,它是非常重要的分布式一致性算法。由于Chubby系统和Zookeeper都基于paxos算法实现,因此该算法名声大噪,被许多学习分布式系统的人学习。
TCP是一个非常复杂的协议,网络编程中要用到很多TCP的知识,更好的理解TCP有利于分析程序运行,发现问题,掌握TCP协议是一个网络编程人员的必备技能。
存储技术一直在不断地发展,从磁带,磁盘,闪存,SSD,内存,硬件的发展十分的快速。目前,数据还主要存储在磁盘中,但随着硬件的发展,基于闪存的存储系统,基于内存的存储系统也被广泛的研究,不久的将来,硬盘也会像磁带一样成为历史,新的存储硬件将有更快的访问速度,更高的带宽,更快的寻址,软件技术也将受此影响。
简单介绍一下数据库的基本原理。