自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++概述1

C++由C语言发展而来,增加了面向对象的机制,并且与C语言兼容,用C语言编写的程序可以不加修改用于C++.面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率(不是执行效率)1 C++引入命名空间 Namespace,为了避免命名冲突指定所使用的变量时需使用::操作符,::操作符是域解析操作符除了直接使用域解析操作符,还可以使用using声明,using声

2017-11-06 15:14:34 238

原创 C++的学习(战略篇)

读王垠《如何掌握所有的程序语言》笔记1 重视语言特性,而不是语言语言都有通用的特性,掌握一种语言,用清晰简单的思维模型写出好的代码。开始用一种新的程序语言,并不需要先去看大部头手册或者书籍,而是先有一个需要解决的问题。然后浏览下语言的手册,接着拿起一段代码来修改,把代码改成自己想要的样子。在这个过程中,他很快掌握这个语言。随着需求出现,可能的问题这个语言“变量定义”是什么语法,需要

2017-11-03 15:26:01 207

原创 Kernel BitMap 使用小例子

/*BitMapTest.c*/#include #include #define BIT_CNT 65static int __init test_init(void){ long unsigned int * my_bitmap; int arr_size = (BIT_CNT - 1) / 64 + 1; int i; printk("init %d bit, %d

2017-08-15 22:06:33 415

原创 大端小端测试代码

#include #include union { int number; char s;}test;bool testBigEndin(){ test.number = 0x01000002; return (test.s == 0x01);} int main(){ if (testBigEndin()) printf("big"); else pri

2017-08-15 20:29:38 787

原创 如何使用linux下载到正确的安装包1(软件源更新)

昨天实验室新来的学妹说ubuntu安装某Hadoop测试工具老是提示出错,缺这少那。这种问题我以前也经常遇到,网上找到的安装包和Linux版本不兼容。不过后来装的多了,慢慢有了经验。 已经使用apt-get install / yum (whatever类似的命令) 之后,显示没有可以更新的资源包,但是别处用到改资源还是提示版本不够?那就是时候更新软件源了。所谓软件源,我理解是下载

2017-07-22 09:26:49 7002

转载 Linux 系统下 init 进程的前世今生

http://blog.jobbole.com/111610/

2017-07-02 10:07:03 252

原创 raid5_cache.c数据结构之r5l_io_unit

结构体代码struct r5l_log { struct md_rdev *rdev; u32 uuid_checksum; sector_t device_size; /* log device size, round to * BLOCK_SECTORS */ sector_t max_free_space; /* reclaim run if free spac

2017-06-08 19:03:04 399

原创 list.h

1 list_for_each_entry(pos, head, member)函数功能:遍历链表,查找指定类型参数定义:pos-循环游标;head-链表头节点;member-头节点在结构体中的名称返回结果:/** * list_for_each_entry - iterate over list of given type * @pos: the type * to use

2017-06-08 16:03:44 208

原创 raid5_cache.c数据结构之r5l_io_unit

1 r5l_io_unit/* * an IO range starts from a meta data block and end at the next meta data * block. The io unit's the meta data block tracks data/parity followed it. io * unit is written to log di

2017-06-08 10:40:08 500

原创 bio.c

1 bio_add_page函数功能:把page加入bio的bio_vec链表参数:bio-目标bio;page-待加入的page;len-加入长度;offset-在页中偏移地址;            注意到bio->bi_vec的结构,后三个参数用来给bio->bi_vec赋值/*include/linux/blk_types.h*/struct bio_vec {

2017-06-08 10:11:16 1149

原创 kmap_atomic/kunmap_atomic

/* *drivers/md/raid5-cache.c *r5l_write_stripe */ for (i = 0; i disks; i++) { void *addr; if (!test_bit(R5_Wantwrite, &sh->dev[i].flags)) continue; write_disks++; /* checksum is alread

2017-06-01 19:12:39 1079

原创 void*

指针有两个属性:指向变量/对象的地址和长度——指针存储地址,指针类型决定长度,编译器根据指针类型从指针指向的地址向后寻址,比如int* 从地址向后寻找4字节,double*从指针向后寻找8字节。void*是一种特别的指针,表示它没有类型/类型不能判断出指向对象的长度;任何指针都能赋值给void*,但只能获得变量/对象的地址,不知道大小;void*赋值给其他类型指针时,要指明转换类型,即说明存储

2017-06-01 18:57:58 447

原创 extern 变量/函数

一 extern作用声明函数或者全局变量的作用范围,其声明的函数和变量可以在本模块和其他模块使用(注意是声明不是定义)。例如,模块B(编译单元)引用模块A定义的全局变量或函数,只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数值或变量,但它会在连接是从模块A生成的目标代码中找到此函数。二 例子/*main.c*/#include #include "main.h"

2017-05-29 17:19:17 344

原创 VMware-tools安装

环境搭建 federa 14 + linux 2.6.35.6安装VMware-tools按照:http://pubs.vmware.com/workstation-12/index.jsp?lang=en_US&topic=/com.vmware.ws.using.doc/GUID-08BB9465-D40A-4E16-9E15-8C016CC8166F.html出错1bas

2017-04-26 22:07:49 648

原创 驱动开发-1 模块hello world

本文介绍在内核编译模块、加载和卸载模块的过程。        首先开发环境是Linux-4.4.0+两份代码,hello.c+Makefile。        这两份代码放到哪里呢?答案是哪里都可以,不过要注意放在一个文件夹下。这个文件夹的位置就是Makefile中的CURRENT_PATH,编译终端在这个文件夹打开就行。hello.c/*编写一个helloworld向内核输出*/

2017-04-25 14:29:06 239

原创 SSD+RAID优点以及存在问题

研究生期间研究在离硬件很近的软件层做优化,不管是SSD还是新研究的PCM存储,都是基于“软件提升提供丰富的服务,硬件改变却是革命性的颠覆”的大基础,当有独特特点的、更高性能的硬件出现后,上层的软件也必须随之改变,充分发挥其性能,而不是成为整个系统的瓶颈。         SSD因为更快的速写速度而逐渐取代磁盘,但SSD也有固有缺陷,比如1 bit error,因为对存储系统容错性要求高;2 擦

2017-04-17 11:31:02 20452

原创 数据结构-二叉树(递归前序、中序、后序遍历;栈实现中序变量;二叉树镜像)

* *前序、后序、中序变量二叉树(递归解法) *中序 栈实现 *深度遍历 队列实现 *应用:二叉树镜像(剑指offer) */ typedef struct BiTNode *BiTree;//结点指针 //前序遍历 void preOrderTraverse(BiTree T) { if(NULL == T) return; printf("%c", T-

2017-04-15 11:17:17 609

原创 C++ Primier学习笔记2-虚函数

虚函数        多态(继承关系的多个类型)通过虚函数实现。        关键字virtual告诉编译器不应当完成早绑定,而是自动实现晚绑定/运行时绑定所必须的所有机制。动态绑定只有当通过指针或者引用调用虚函数时才会发生。        补充:析构函数可以是虚函数,所有的派生类的析构函数都将自动变为virtual型,不会出现由于析构函数未被调用而导致的内存泄漏(虚

2017-04-14 14:37:58 346

原创 c++ Primer学习笔记1-前言

C++语言可以看做三部分组成:低级语言,大部分继承自C;现代高级语言特性,定义自己的类型+组成大规模程序和系统;标准库,利用高级特性提供有用的数据结构和算法。

2017-04-13 09:17:31 209

原创 double计算

在《剑指offer》里看到两个double不能直接使用 == 符号判断大小,有的资料也说double不能使用++。所以接下来这道单选题改怎么办呢?       在c语言中,要求运算必须是整型的运算符是:/++!=%        不妨写个简单的程序测试一下,#include int main(){ double a,b; a =

2017-03-29 17:12:21 923

转载 C语言基础-函数调用栈

程序的执行流程,实际是连续的函数调用。函数调用通常使用堆栈实现,每个用户进程对应一个调用栈(call stack)结构。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。1 寄存器寄存器用于存放程序执行中用到的数据和指令

2017-03-01 23:15:32 644

原创 Linux md raid5 - mdadm创建软RAID5(模拟出错和出错恢复)

最近按教程创建了RAID5,遇到一点小问题,希望记录下来,能对大家有点帮助。         实验环境         Ubuntu 16.04.1 + VMware Workstation 12 Player        实验目的        使用mdadm创建软raid5,模拟故障测试,了解raid5是怎样工作的。         首先配置好基础的环境,在虚拟机中添加四

2017-02-28 17:16:59 11476

原创 C语言基础-局部变量和全局变量的区别

局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量,在函数体内引用变量会用到同名的局部变量而不是全局变量。        具体来说,全局变量和局部变量的区别有:1 作用域:全局变量的作用域为整个程序,局部变量则是当前函数或循环;2 内存存储方式:全局变量存储在全局数据区,局部变量存储在栈区;3 生命期:全局变量的生命期和主程序一样,随程序的销毁而销毁;局部变量在函数内部或循环内

2017-02-26 12:53:23 735

数据结构讲解

华科副教授交接严蔚敏数据结构,有经典例子,形象易懂,自学必备。

2014-05-21

空空如也

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

TA关注的人

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