自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mirrodance的专栏

行足以为仪表,智足以决嫌疑,信可以使守约,廉可以使分财,此人之豪也。

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

转载 关于epoll的用法的说明

以下文章转在网络,对epoll说明比较详细epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epol

2011-07-20 17:47:03 385

转载 关于洗牌算法的一点思考

最近在做梭哈这个游戏,于是自然而然会用到洗牌算法。洗牌算法网上讲的也不少了,归结起来有如下两种形式。第一种是每次找一个随机的位置,将54个数依次放到找到的位置中,其思路大概这样的:1、用一个Bool型数组记录各个位置是否已经放置了数,如果放置则置true,没有则为false。在算法开始时数组初始化为false。2、每次产生一个0~53的随机数,看这个位置是否已经放置了数,如果已经放置了,则继续用同样的方法找一个随机位置判断;如果这个位置还未放置,则设置此位置,并标记其已经放置。3、反复执行(2)直到所有的位

2011-06-01 10:59:00 524

转载 面向对象编程中的继承和组合的简单比较

<br /><br />继承(inheritance),是类 D 的对象可以使用仅对类C的对象有效的方法或者属性的特性,它使得这些方法和属性就好像是由类 D 定义的。这时,C 是 D 的父类,D 是 C 的子类。在继承结构中,父类的内部细节对于子类是可见的。所以我们通常也可以说通过继承的代码复用是一种“白盒式代码复用”。<br />组合(composition),是通过对现有的对象进行拼装(组合)产生新的、更复杂的功能。因为在对象之间,各自的内部细节是不可见的,所以我们也说这种方式的代码复用是“黑盒式代码复

2011-05-19 16:24:00 364

原创 关于bss段的疑问

<br />最近在看程序员的自我修养,关于bss发现了一点疑问<br />bss段存放的是未初始化的全局变量和局部静态变量。<br />但是我用readelf -s SimpleSection.o查看elf文件时发现已经初始化的全局变量被放在了BBS段,不解<br />可执行程序中并没有为BBS段分配空间,那初始化的信息岂不是丢失了?

2011-04-15 11:24:00 415 1

原创 sd卡虚拟化函数跟踪记录

dump_stack();打印调用堆栈 mmc_blk_probe-->add_disk-->register_disk-->device_add-->put_device                                                                   /-->blkdev_get-->__blkdev_get-->rescan_pa

2011-03-28 17:38:00 1160

原创 sd卡读文件过程分析(二)(内核2.6.29,驱动goldfish)

<br /> <br /> <br />块设备部分现在还没有涉及,先来分析goldfish驱动吧。<br />goldfish驱动MMC设备的代码在driver/mmc/下,一共有三个层次:host,core,card。<br />card层:对应具体的设备驱动,如MMC/SD卡块设备驱动,SDIO UART<br />core层:为上次设备驱动实现提供操作接口,和下层host注册提供机制<br />host层:具体MMC/SD/SDIO控制器驱动层。如S3C2440 MMC/SD控制器驱动<br />这里

2011-03-28 17:11:00 1085

转载 More Effective C++:自增和自减

<br /> <br />从你开始做C程序员那天开始,你就记住increment的前缀形式有时叫做“增加然后取回”,后缀形式叫做“取回然后增加”。这两句话非常重要,因为它们是increment前缀与后缀的形式上的规范。 <br />// 前缀形式:增加然后取回值<br /><br />UPInt& UPInt::operator++()<br />{<br /> *this += 1; // 增加<br /> return *this; // 取回值<br />}<br /><br />

2011-03-27 09:33:00 317

原创 Linux 驱动相关文件系统

<br />1. /dev 设备文件目录,存放所有系统中device(设备)的相关信息。<br />    /dev/snd:声卡设备<br />2. /etc 系统配置文件<br />3. /opt 表示可选择,自定义软件安装的地方<br />4. /proc 操作系统运行时,进程相关信息,由系统动态生成。<br />    /proc/ioports:可以查看I/O端口使用情况。<br />    /proc/modules:系统加载的模块。<br />5. /sys Linux 2.6内核支持的sys

2011-03-02 11:10:00 340

转载 解密module_init幕后的故事

<br />在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。<br />1.在MODULE没有定义这种情况下,module_init定义如下:<br /><br />#define module_init(x)        __initcall(x);<br />因为<br />#define __initcall(fn)            

2011-03-01 10:43:00 582

原创 GIT使用笔记

 分布式的工作流程假设Alice现在开始了一个新项目,在/home/alice/project建了一个新的git 仓库(repository);另一个叫Bob的工作目录也在同一台机器,他要提交代码。Bob 执行了这样的命令:$ git clone /home/alice/project myrepo这就建了一个新的叫"myrepo"的目录,这个目录里包含了一份Alice的仓库的 克隆(clone). 这份克隆和原始的项目一模一样,并且拥有原始项目的历史记 录。Bob 做了一些修改并且提交(commit)它们

2011-01-12 10:31:00 1662

转载 free内存大小的问题

<br /><br />我们知道malloc的调用形式如:type* p = (type *)malloc(n*sizeof(type))<br />free的调用形式如:free(p)<br />好了,问题来了,free函数,我们只给传入一个指针,没有传入内存块的大小n,那么编译器怎么知道要释放多少字节的内存,如果让你来实<br />现怎么实现?<br />当时,蒙了,郁闷(丢人)。。。<br />之前自己都看过类似的代码的。。。<br />无非就是当申请内存的时候,p指向的内存的起始字节有几个存放着这块

2011-01-10 18:04:00 1843 1

转载 c文件操作函数

<br /><br />c文件操作函数<br /> <br /> <br />clearerr(清除文件流的错误旗标)  <br />相关函数  feof<br />表头文件  #include<stdio.h> <br />定义函数  void clearerr(FILE * stream); <br />函数说明  clearerr()清除参数stream指定的文件流所使用的错误旗标。 <br />返回值  <br /> <br />  <br />fclose(关闭文件)  <br />相关函数  c

2011-01-10 10:23:00 335

原创 sd卡读文件过程分析(一)(内核2.6.29,驱动goldfish)

这段时间想弄懂mmc驱动的读写原理,一直在goldfish的驱动代码中乱撞。某天突然灵光一闪,要从文件系统开始分析。眼前一篇豁然开朗。跟踪过程记录如下:首先是file的读操作。因为sd卡是fat32文件系统,找到fat32的file_operations:const struct file_operations fat_file_operations = {         .llseek         = generic_file_llseek,         .read           = do

2010-11-12 16:03:00 1051

转载 关于struct device_driver结构中的probe探测函数的调用(内核版本:2.6.29)

<br />最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用。但从来就没有想过具体的驱动注册并调用probe的过程。<br /><br />于是

2010-11-11 14:56:00 618

原创 domain create分析

<br />struct domain *domain_create(domid_t dom_id, unsigned int cpu)<br />分配一个struct domain空间,并初始化此空间<br />之后执行construct_dom0<br /><br />int construct_dom0(struct domain *d,<br />                    unsigned long guest_start, unsigned long guest_size,<br /

2010-08-20 10:14:00 957 1

Golang 代码规范

Golang 代码规范,目录 基础规范 gofmt 项目目录结构 包管理器 注释 命名 错误处理 单元测试 进阶规范 在项目中不要使用相对路径引入包,要用绝对路径 声明slice 非空slice检查 ......

2018-03-28

空空如也

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

TA关注的人

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