自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

susershine的专栏

市井小虾

  • 博客(14)
  • 收藏
  • 关注

原创 外壳模式(shell)

《系统程序员成长计划》这本书中提到了外壳模式的概念。所谓的外壳模式的作用就是:不需要修改原来的应用程序,而控制它的输入和输出(即用户界面),同时应用程序也不知道外壳的存在。当然这样理解会比较麻烦,我们就举个简单的例子,比如已经存在一个应用程序,我们想给该应用程序增添一个新的用户界面,这里有两种选择:1. 根据该应用程序的内部实现重新编写一个用户界面,但是如果原来的应用程序的用户界面和内部实现没有很

2013-12-22 17:54:33 976

转载 编写你的第一个垃圾收集器

原文链接: Bob Nystrom   翻译: 伯乐在线 - deathmonkey译文链接: http://blog.jobbole.com/53376/每当我倍感压力以及有很多事情要做的时候,我总是有这样一种反常的反应,那就是希望做一些其他的事情来摆脱这种状况。通常情况下,这些事情都是些我能够编写并实现的独立的小程序。一天早上,我几乎要被一堆事情给整疯了——我得写我

2013-12-22 12:47:46 700

原创 linux内存模型

最近在看李先静老师的《系统程序员成长计划》的书,李老师也在他的博客中写了有关内容:http://blog.csdn.net/absurd。当然这里所说的linux内存模型也是李老师博客中提到。这里自己再写出来,不是说自己写的比李老师好,而是为了增加自己的理解,习惯性的将东西写出来。在说linux中内存模型之前,我们先了解几个数据存放的概念:1.  .bss段BSS(Block

2013-12-21 22:28:37 886

原创 字节对齐

为什么要写有关字节对齐的东西呢?字节对齐应该是最基础的问题了,我原以为对字节对齐比较了解了。但是最近遇到了字节对齐的麻烦事。说麻烦其实也不麻烦,总而言之是自己对字节对齐没有理解透彻。所以就查查了字节对齐的具体定义和使用,发现自己对字节对齐的了解是很肤浅的。那么为什么要字节对齐呢?因为各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些构架

2013-12-21 21:54:26 610

原创 线程局部存储TLS

进程和线程实现并发,它们各自都有优缺点。进程是因为具有独立的进程地址空间,所以在创建进程和销毁进程时需要额外的开销,但是由于进程间的数据是独立的,因此一般情况下当一个进程出现意外死去的时候,是不会影响到其它线程的。但是线程和父线程共享全局变量,它只具有独立的堆栈空间和寄存器,虽然在创建线程和销毁线程时需要的开销比进程小很多,但是一般情况下当一个线程意外死去的时候,会导致整个主线程的崩溃。但是TLS

2013-12-20 14:08:48 773

原创 exit,_exit,return 的区别

exit和_exit 两个函数有一定的区别,在某些情况下是不能混用的。首先先看下exit在glibc-2.16.0中是什么定义的?voidexit (int status){ __run_exit_handlers (status, &__exit_funcs, true);}它是通过调用一个叫做__run_exit_handlers的函数实现的。那么__run_exit_handl

2013-12-18 23:21:08 2432

原创 共享内存mmap()和CreateFileMapping()

共享内存是进程间的一种通信机制,而且它的作用不止于此。它的主要作用包括:提高I/O效率,匿名内存映射,内存共享进程通信。两个不同进程共享内存的意思是,同一快物理内存映射到该两个进程的进程地址空间。使用共享内存可以通过mmap()返回的指针直接操作文件中的内容,省去了read,write以及lseek等文件读写的操作,提高了I/O效率。并且共享内存是一中效率较高的进程间的通信机制,因为当通信建立时,

2013-12-18 22:42:52 5432

转载 GCC 命令详解

GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。Gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译

2013-12-16 16:20:49 9046

原创 嵌套锁与读写锁

互斥锁(mutex)是实现线程或进程同步与互斥的一种通信机制。它在不同平台下具有不同的实现形式。我们先介绍下linux和windows下的互斥锁的实现。

2013-12-16 14:57:44 5403

转载 ubuntu基本命令整理

sudo:如何设定/改变/启用 root 使用者的密码:sudo passwd root当你使用完毕后屏蔽 root 帐号 使用:    sudo passwd -l root这个将锁住 root 帐号. 如何在终端机模式下切换到 root 身份:  sudo -s -H在线安装程序:sudo apt-get install g++pt-get最常用参数:update 

2013-12-12 16:35:09 771

原创 C语言编写无类型的快速排序和归并排序

C语言编写无类型的快速排序和归并排序

2013-12-12 11:25:40 887

原创 Linux下的静态库,共享库的创建和使用

编译程序一般要经过:预处理,编译,汇编和链接这几个步骤。在我们写程序的时候,会存在一些公共的代码。如果为每个程序都要重写这些代码,那么势必会造成太多的麻烦。我们可以将这么公共代码生成库文件,在编译程序的链接步骤中,可以静态地或者动态地将这些公共代码与我们的程序链接,这样就避免了重写这些代码的麻烦了。库文件可以分为静态库和共享库;其使用方式可以分为静态链接和动态链接两种类别。静态库: 在Linu

2013-12-10 17:53:12 911 2

转载 makefile的详细介绍

概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写m

2013-12-09 22:36:38 564

转载 vimtutor

文章来源: gvim7.0中自带的官方版本================================================================================      欢     迎     阅     读   《 V I M  教  程 》   ——     版本 1.5      ==========================

2013-12-01 20:22:07 541

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除