Linux
文章平均质量分 78
cdai
这个作者很懒,什么都没留下…
展开
-
Linux Mint从HDD升级到SSD
Linux Mint从HDD升级到SSD两年前的黑五,几乎不到五折入手了Thinkpad P50,一款非常不错的个人工作站。可因为当时预算有限,所以买的是“乞丐版”配置,处理器、内存、屏幕、背光键盘都还是次要的,最主要的是没有固态硬盘。之后便一直嫌麻烦没有升级。最近恰逢打折,于是直接买了三星的970 Pro固态硬盘,又从联想官网买了支架,准备折腾一下。1.拆机安装首先要感慨的一点就是这SS...原创 2019-07-16 13:52:42 · 816 阅读 · 2 评论 -
六星经典CSAPP-笔记(11)网络编程
六星经典CSAPP-笔记(11)网络编程参照《深入理解计算机系统》简单学习了下Unix/Linux的网络编程基础知识,进一步深入学习Linux网络编程和TCP/IP协议还得参考Stevens的书。1.网络基础(略过,待补充)2.IP地址2.1 IP地址的表示IP地址是一个无符号的32位整数。Linux网络程序使用下面这种IP地址结构存储IP地址:/* Internet address structu原创 2015-05-15 21:48:54 · 4194 阅读 · 0 评论 -
Linux Mint 17一周使用体验
1 Win7下安装Mint双系统Linux Mint支持直接从Win7硬盘引导安装,非常方便,不用制作U盘引导,更不用刻盘安装了。Mint有Cinnamon和Mate两种桌面,听说Mate更加简洁节省资源,所以就选择了Linux Mint 17 Mate版。安装过程主要参考百度经验。1.1 清理磁盘空间为Mint清理出空间。例如我的机器之前有C、D、E、F四个盘符,备份好E和F盘中的重要数据后,右原创 2015-04-30 21:37:39 · 39810 阅读 · 11 评论 -
六星经典CSAPP笔记(1)计算机系统巡游
CSAPP即《Computer System: A Programmer Perspective》的简称,中文名为《深入理解计算机系统》。相信很多程序员都拜读过,之前买的旧版没有读完,如今恰好第二版出版,就入手影印版重读经典。一读果然,经典依然是经典,CMU卡内基梅隆大学的本科教材,堪比另一本SICP的六星佳作啊!1.A Tour of Computer System1.1 Programs Ar原创 2014-12-06 21:44:11 · 4125 阅读 · 1 评论 -
Nginx Upstream模块源码分析(上)
Upstream模块是一个很重要的模块,很多其他模块都会使用它来完成对后端服务器的访问,达到反向代理和负载均衡的效果。例如Fastcgi、Memcached、SessionSticky等。如果自己实现这部分功能,采用传统的实现方式,很可能会阻塞Nginx降低其性能,因为Nginx是全异步非阻塞的。所以要想不破坏其优美的架构,就得按照其规范实现很多回调函数,注册这些钩子到Ngin原创 2013-10-27 22:22:30 · 7738 阅读 · 0 评论 -
Linux常用网络命令整理
Linux上有一些非常常用的命令,来帮助我们监控网络状况。1.Tcpdump命令tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。1)所有参数及含义:-A 以ASCII格式打印出所有分组,并将链路层的头最小化。-c 在收到指定原创 2013-09-23 20:26:22 · 2808 阅读 · 0 评论 -
开发Nginx模块Helloworld
#include #include #include static ngx_int_t ngx_http_mytest_handler(ngx_http_request_t *r){ // Only handle GET/HEAD method if (!(r->method & (NGX_HTTP_GET | NGX_HTTP_HEAD))) { return NGX_HTTP原创 2013-08-11 23:04:06 · 4468 阅读 · 2 评论 -
CentOS上PHP完全卸载
想把PHP卸载干净,直接用yum的remove命令是不行的,需要查看有多少rpm包,然后按照依赖顺序逐一卸载。 1.首先查看机器上安装的所有php相关的rpm包[root@localhost nginx]# rpm -qa | grep phpphp-cli-5.3.3-22.el6.x86_64php-pdo-5.3.3-22.el6.x86_64原创 2013-07-27 06:10:24 · 51013 阅读 · 3 评论 -
PHP(PHP-FPM)手动编译安装
1安装PHP1.1下载解压wget http://museum.php.net/php5/php-5.3.5.tar.gztarxzvf php-5.3.5.tar.gzcdphp-5.3.51.2配置生成Make ./configure--prefix=/usr/local/php --with-mysql=../mysql-5.1.54-li原创 2013-07-27 06:19:56 · 21199 阅读 · 0 评论 -
Nginx+PHP-FPM的域Socket配置方法
1什么是域Socket“Unix domain socket 或者 IPCsocket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流数和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain原创 2013-07-15 21:01:39 · 19298 阅读 · 0 评论 -
学习Emacs的理由
对一些Emacs评价文章中有趣观点的小汇总,持续收集中。给你个理由学习Emacs,希望总有个理由适合你!===============================================================================Emacs是什么?说说我认为的这个黑客专用文本编辑器http://mtoou.info/emacs-why/原创 2013-03-02 22:10:55 · 4926 阅读 · 0 评论 -
用Org-mode实践《奇特的一生》
《奇特的一生》《奇特的一生》是一本传记体小说,描述了俄罗斯科学家柳比歇夫如何运用 时间统计法 度过了他的一生。所谓时间统计法,说起来实在不起眼:统计自己做 每件事情 的纯时间, “工作中的任何间歇,我都要创除。我计算的是纯时间,”柳比歇夫写道,“纯时间要比毛时间少得多。所谓毛时间,就是你花在这项工作上的时间。 ” 柳比歇夫典型的时间统计日记是这样的:乌里扬诺夫斯克。一九转载 2013-02-28 21:24:31 · 26701 阅读 · 7 评论 -
Emacs+Lisp环境搭建
1准备工作:安装SBCL和Slime如果Linux上Emacs也没有安装的话,可以直接下载LispBox(Emacs+SBCL+Slime)安装。 # yum installsbcl emacs-slime 2成为Lisper:配置Emacs开始上手新建~/.emacs文件,输入下面最简单的Emacs个性化配置 ; 关闭菜单栏和工具栏(menu-bar-mode原创 2013-02-26 14:13:06 · 7125 阅读 · 0 评论 -
六星经典CSAPP-笔记(10)系统IO
六星经典CSAPP-笔记(10)系统I/O1.Unix I/O所有语言的运行时系统都提供了高抽象层次的I/O操作函数。例如,ANSI C在标准I/O库中提供了诸如printf和scanf等I/O缓冲功能的函数;C++中则重载了<<和>>用来支持读写。在Unix系统中,这些高层次的函数基于Unix的系统I/O函数来实现,多数时候我们都无需直接使用底层的Unix I/O。但学习Unix系统I/O能更好地原创 2015-05-16 22:40:06 · 2959 阅读 · 0 评论 -
六星经典CSAPP-笔记(7)加载与链接(上)
六星经典CSAPP-笔记(7)加载与链接1.对象文件(Object File)1.1 文件类型对象文件有三种形式:可重定位对象文件(Relocatable object file):包含二进制代码和数据,能与其他可重定位对象文件在编译时合并创建出一个可执行文件。可执行对象文件(Executable object file):包含可以直接拷贝进行内存执行的二进制代码和数据。共享对象文件(Sh原创 2015-05-22 22:15:46 · 7387 阅读 · 3 评论 -
程序员的自我修养:(1)目标文件
程序员的自我修养:(1)目标文件1.目标文件1.1 编译与链接在使用像Visual Studio或Qt Creator等IDE时,通常有一个叫做“构建”的按钮。当编辑完成要运行和测试时点一下它,程序就能跑起来了,所以我们很少关心编译和链接。其实,编译和链接合并在一起就称为 构建(Build)。简单的一次按键,实际背后却是异常复杂的过程:预编译(Preprocessing)编译(Compilati原创 2015-06-05 21:59:02 · 8119 阅读 · 2 评论 -
用SSH连接VirtualBox中的Ubuntu
本文地址:http://cdai.sinaapp.com/archives/781. 设置虚拟机网络连接方式为桥接模式,共享本机的网卡。2. 关闭本机操作系统(Win7或者XP)的防火墙。3. 设置本机和虚拟机IP到同一网段,或者都设置成DHCP自动获取,让路由器去分配。 在本机和虚拟机中进行ping测试,看网络是否互通。 并查询各自IP...原创 2011-11-19 21:25:37 · 469 阅读 · 0 评论 -
对程序员技术练级攻略的补充
本文地址:http://cdai.sinaapp.com/archives/49,欢迎访问~ 1. 并发编程 随着单机上CPU核数的不断增多,以及互联网中大型网站每天产生的海量数据,并发编程将会成为程序员必不可少的技能。 学习《Erlang程序设计》和Scala,理解函数式编程,搞清Actor模式以及并发编程的消息传递方式。 2. 汇编语言 懂一...原创 2011-11-13 08:54:01 · 280 阅读 · 0 评论 -
Bochs 2.4.5 调试版本的安装
准备工作,安装bochs依赖的软件:sudo apt-get install build-essentialsudo apt-get install xorg-devsudo apt-get install bison 1. 下载安装包 bochs-2.4.5.tar.gz2. 解压 tar vxzf bochs-2....2011-02-27 16:53:19 · 281 阅读 · 0 评论 -
当Linux Mint遇上Thinkpad
当Linux Mint遇上Thinkpad1.再谈好工具的重要性大概两年前开始使用Linux Mint,从此无法自拔,真的太方便了!但真正进入Linux世界之前,笔者也是经历了小心翼翼在虚拟机里用Ubuntu、安装Cygwin模拟等一系列的过程,大概也有个两三年的适应之后,才真正在真机上安装Linux Mint的。安装过程出奇的简单,真后悔没早点弄个双系统。以下便是之前整理关于Linux系统安装、开原创 2016-12-19 03:19:24 · 8320 阅读 · 5 评论 -
操作系统内核的绝佳学习材料——JOS
操作系统内核的绝佳学习材料——JOS前言:关于JOS和一些经验之谈这一学期的操作系统课使用的是MIT用于教学的JOS操作系统,并且StonyBrook在其基础上做了大量改动,最重要的变化就是从32位移植到了64位。因为个人之前曾系统学习过Linux 0.11内核(《操作系统内核Hack:(四)内核雏形》,实现到时钟中断部分停下了),深知自己从零开始实现内核的工作量。即便是如我个人实原创 2016-06-23 07:20:14 · 14487 阅读 · 3 评论 -
Linux Mint 18升级失败记
Linux Mint 18升级失败记上月末看到Linux Mint 18发布的消息,非常期待,但官方迟迟没有给出具体的升级办法,于是就没敢轻举妄动。今天看到官方终于发布升级手册了,于是简单备份了一下系统(大部分重要资料都保存在DropBox了)就开始动手升级了。结果不出所料,失败了,千小心万小心,还是没躲开这一劫……1.升级失败满心欢喜按照升级Instruction一步步来,结果在最后一步升级各种包原创 2016-07-15 09:37:23 · 8342 阅读 · 1 评论 -
操作系统内核Hack:(四)内核雏形
操作系统内核Hack:(四)内核雏形在本系列的前一篇文章《操作系统内核Hack:(三)BootLoader制作》中,我们制作出了一个两阶段引导BootLoader,并进入了一个内核的空壳main函数。本文我们继续完善引导程序和内核,让内核的内容一点点充实起来。本文的代码可以参考GitHub上的MiniOS分支kernel_prototype。1.周边代码修改1.1 常量和宏提取像各个模块的内存这种常原创 2015-10-25 16:32:19 · 3500 阅读 · 0 评论 -
操作系统内核Hack:(二)底层编程基础
操作系统内核Hack:(二)底层编程基础在《操作系统内核Hack:(一)实验环境搭建》中,我们看到了一个迷你操作系统引导程序。尽管只有不到二十行,然而要完全看懂还是需要不少底层软硬件知识的。本文的目的就是跟大家一起学习这一部分知识,本着够用就行的原则,不会完全铺开来,只要能让我们顺利走完未来的操作系统内核Hack之旅就可以了。1.开篇:“古怪”的80386如果大家跳过这一部分直接看本文后面的部分,或原创 2015-10-09 21:22:54 · 7546 阅读 · 0 评论 -
操作系统内核Hack:(三)引导程序制作
操作系统内核Hack:(三)BootLoader制作关于本文涉及到的完整源码请参考MiniOS的v1_bootloader分支。1.制作方法现在我们已经了解了关于BootLoader的一切知识,让我们开始动手做一个BootLoader吧!但真正开始之前,我们还要做出一个选择,在之前的讨论中我们曾说过,有两种学习和制作引导程序和操作系统内核的路线:1)《Orange’s:一个操作系统的实现》书中的路线原创 2015-10-25 16:23:03 · 6910 阅读 · 0 评论 -
操作系统内核Hack:(一)实验环境搭建
操作系统内核Hack:(一)实验环境搭建三四年前,心血来潮,入手《Orange’s:一个操作系统的实现》学习操作系统内核,还配套买了王爽的《汇编语言(第二版)》和《80X86汇编语言程序设计教程》,虽然Orang’s只看了不到三分之一,但当时还是很认真的,练习也做了不少。唯一遗憾的就是没有留下文字记录,导致现在忘得差不多一干二净了,后悔不已!如今想再捡起来,弥补当时的懒惰,虽然困难重重,但这么优秀的原创 2015-09-13 12:11:33 · 6110 阅读 · 3 评论 -
六星经典CSAPP-笔记(12)并发编程(上)
六星经典CSAPP-笔记(12)并发编程(上)1.并发(Concurrency)我们经常在不知不觉间就说到或使用并发,但从未深入思考并发。我们经常能“遇见”并发,因为并发不仅仅是操作系统内核的“绝招”,它也是应用开发中必不可少的技巧:访问慢I/O设备:就像当应用程序等待I/O中的数据时内核会切换运行其他进程一样,我们的应用也可以用类似的方式,将I/O请求与其他工作重叠从而挖掘并发的潜能。推迟工作原创 2015-07-18 14:19:02 · 2960 阅读 · 0 评论 -
负载均衡LVS(DR模式)安装实战
1.编译安装ipvsadm首先从LVS官网下载tarball,解压后make && make install即可。要注意的是LVS的依赖有:popt-static、libnl、kernel。如果yum源里有就直接安装,如果没有就自行下载,但一定要对应上已有软件如popt或Linux内核的版本。$ tar -xzvf ipvsadm-1.26.tar.gz$ cd ipvsadm-1.26$ ma原创 2015-08-08 10:30:47 · 3966 阅读 · 0 评论 -
shell 脚本编程的10 个最佳实践
每一个在UNIX/Linux上工作的程序员可能都擅长shell脚本编程。但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令 的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶段的程序员来说,遵循一些恰当的做法可以帮助你更快、更好的学习这些编程技巧。下面, 我们就来讨论这些能帮助你学习shell脚本编程的方法吧1、多动手你想学习 shell脚本转载 2013-02-26 15:04:31 · 2305 阅读 · 0 评论 -
征服SVN命令行常用命令
1 svn info获取当前本地代码库的基本信息。 取当前本地代码的版本号svn info trunk/| awk -F ':' '{ if($1 ~ /^Revision$/) {print $2} }' | tr -d " " 2 svn log获取某次修订版的提交内容。-v显示具体提交修改的文件列表,-r指定版本号。 3 svn diff比较两原创 2013-02-25 13:52:53 · 16389 阅读 · 0 评论 -
《Shell脚本学习指南》第三章 查找与替换
3.1 查找文本grep:使用POSIX定义的基本正则表达式(BRE)。egrep:使用扩展正则表达式(ERE)。fgrep:快速grep。使用优化的算法,匹配固定字符串而非正则表达式。1992 POSIX标准将这三个改版整合成一个grep程序。$ who | grep -F austen使用-F选项查找固定字符串。事实上,只要匹配的模式里未含有原创 2012-02-11 17:10:23 · 2804 阅读 · 0 评论 -
《Shell脚本学习指南》第二章学习笔记
2.1 脚本编程语言与编译型语言的差异编译型语言从源代码转换成目标代码,便能直接通过计算机执行。好处是高效,但运作于底层。例如,在C++里,很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。脚本编程语言通常是解释型(Interpreted)的。由解释器读入程序代码,并将其转换成内部的形式,再执行。解释器本身是一般的编译型程序。2原创 2012-01-01 15:29:30 · 5824 阅读 · 0 评论 -
《Shell脚本学习指南》第一章 背景知识
1.1 Unix简史Unix第一版诞生于1970年,也就是贝尔实验室退出Multics项目不久。在Unix广受欢迎的功能中,有许多是来自Multics操作系统。其中最著名的有:将设备视为文件,以及特意不将命令解释器或Shell整合到操作系统中。简单、务实、优雅Unix是在面向研究的环境下开发的,因而没有必要生产或销售成品的盈利压力。系统由用户自行开发原创 2011-12-30 21:26:40 · 2136 阅读 · 0 评论 -
学习编程的方法、软件和工具
编程的学习跟许多其他技艺的学习一样,首先必不可少的就是理论基础,其次就是需要大量的、不断地练习。老生常谈,这也许是每个人都懂得的道理,但说起来容易做起来难。所以想要学好编程,还需要些方法和毅力才行。对于编程来说,理论阶段的学习相对比较抽象。过早地就希望一口气掌握所有理论知识然后再开始实践,往往会越学越迷茫。因此从大的方面来说,比较好的方法是理论学习-实践-总结-理论学习-实践.....原创 2011-12-13 21:28:42 · 7383 阅读 · 6 评论 -
理解inode
从inode的角度理解软链接和硬链接的区别。转载自:http://www.ruanyifeng.com/blog/2011/12/inode.html一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取转载 2011-12-11 22:27:47 · 1689 阅读 · 0 评论 -
初级程序员的书单
今年开始很少买书了,开始省钱看电子书了(去年花了一千多 ...)。下面分类总结了下我的书单。一. Java基础Java编程思想:对基础知识讲解比较深入,像容器一章不仅是介绍API还对实现容器的数据结构进行了解析。Core Java:上下两册很厚很全面,其中像JDBC4、操作XML还有一些JDK6特性为《Java编程思想》提供了补充。原创 2011-12-01 21:33:53 · 4783 阅读 · 2 评论 -
Bochs 2.4.5 调试版本的安装
为了学习《Orange's 一个操作系统的实现》,先要准备好环境。准备工作,安装bochs依赖的软件: sudo apt-get install build-essentialsudo apt-get install xorg-devsudo apt-get install bison 1. 下载安装包 bochs-2.4.5.tar.g原创 2011-12-01 21:38:07 · 3012 阅读 · 1 评论 -
Ubuntu上LAMP环境搭建
1. 安装Apache 2sudo apt-get install apache2测试:firefox 127.0.0.12. 安装PHPsudo apt-get install php5 //安装PHP5sudo /etc/init.d/apache2 restart //重启APACHE测试:首原创 2011-11-27 15:15:18 · 1810 阅读 · 0 评论 -
Linux常用命令之文件管理
1. ls -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)-l 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出-r 将档案以相反次序显示(原定依英文字母次序)-t 将档案依建立时间之先后次序列出-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)-F 在列出的档案名称后加一符号;原创 2011-11-27 14:58:25 · 1752 阅读 · 0 评论 -
《Linux C一站式编程》第八章 数组
1. 数组的基本概念数组(Array)也是一种复合数据类型,它由一系列相同类型的元素(Element)组成。int count[4];和结构体成员类似,数组count的4个元素的存储空间也是相邻的。结构体成员可以是基本数据类型,也可以是复合数据类型,数组中的元素也是如此。根据组合规则,我们可以定义一个由4个结构体元素组成的数组:struct complex_stru原创 2011-11-27 14:57:45 · 3241 阅读 · 0 评论