自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (3)
  • 收藏
  • 关注

原创 谈谈对计算机专业的层次化理解: 计算机专业如何入门(问题 引导 学习思路)

转载请注明出处: 这段时间,一直在看《深入理解计算机系统》。渐渐发现爱不释手,欲罢不能。有种相见恨晚的感觉。这使得自己回首自己本科时候,为什么总觉得入不了计算机的门?这本书也促使自己思考一下 计算机专业到底学什么,为什么要学这些?有什么联系?                本人2007年入学本科,专业计算机,当时就读于一所211学校。 可能有些人在本科或者研究生期间已经接触到了这本书,

2015-08-10 17:58:09 4785

原创 如何在程序中写log日志(定义log级别:error,warn, info, debug; 宏定义打印不同级别的日志; 程序中引用宏定义即可)

#include #include #define global_debug 2#define global_progname "MYLOG"enum{ ERROR, WARN, INFO, DEBUG,};#define debug(OUT, STR, ARGS...) \ if (global_debug >= DEBUG) \ fprintf(stdou

2015-06-01 10:51:27 3080

原创 linux C 线程间通信-信号量机制

1. 线程间通信-互斥锁互斥锁,适用于共享资源只有一个的情况下。用简单的加锁方法控制对共享资源的原子操作  只有两种状态:上锁、解锁可把互斥锁看作某种意义上的全局变量  在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作  若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。互斥锁保证让每个线程对共享

2015-04-20 17:01:49 3610

原创 Set up git server on ubuntu using ssh protocol(已经测试可以)

Set up git server on ubuntu using ssh protocol0.     basisOS:ubuntulinuxUse X.X.X.X as git server;Use my virtualbox VM host1 as git client. Host1 has twousers: one is jwx (as git admin), and

2015-03-30 17:27:25 755

转载 fstab 介绍

转载:      http://forum.ubuntu.org.cn/viewtopic.php?t=58468  主要翻译自http://www.tuxfiles.org/linuxhelp/fstab.html,根据自己的理解做了修改和补充 可能玩Linux的朋友都知道fstab这个文件,如果要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab

2015-02-12 14:09:38 807

转载 内存管理和内存池(转载两篇博客)

http://blog.chinaunix.net/uid-20807528-id-2390867.html内存管理     下面介绍内核分配内存的API以及使用方法注意事项。  1.kmalloc    原型如下:    #include   void *kmalloc(size_t size

2015-02-04 17:18:28 804

转载 深入理解linux系统下proc文件系统内容

深入理解linux系统下proc文件系统内容http://www.itshanghai.net/technology/2009/0209/article_238.html另外,可以参考这个http://www.centos.org/docs/5/html/5.1/Deployment_Guide/ch-proc.html内容摘要:Linux系统上的/proc目录是一

2015-01-20 17:05:40 613

原创 slab分配器 很好的 参考网址(个人保存)

1. Linux slab 分配器剖析http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/2. Linux Slab分配器(一)--概述 http://blog.csdn.net/vanbreaker/article/details/76642963. Linux内存管理之slab机制(

2015-01-14 14:17:22 1018

转载 10 Code Coverage Tools for C & C++

10 Code Coverage Tools for C & C++  Code coverage is a measure used in software testing that describes the degree to which the source code of a program has been tested. It a form o

2014-11-21 16:41:32 1687

原创 从0开始制作一个简单的OS(bochs bios bximage)

1.      安装硬件环境模拟器bochs------------Ubuntu下源码安装bochs(裸机纯硬件) Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至可以不使用PC硬件来运行Bochs。通过改变配置,可以指定使用的CPU(386、486或者586),以及内存大小等。Boch

2014-11-12 18:46:32 5423

原创 图解linux内核启动流程(bootloadr->kernel)

2014-11-01 16:49:42 1233

原创 初识KVM虚拟化(KVM是什么,KVM框架,优势和劣势)

Welcometo KVM virtualization - Thorough introduction参考网址:http://www.dedoimedo.com/computers/kvm-intro.html概念:KVM,即Kernel-basedvirtual machine,由redhat开发,是一中开源、免费的虚拟化技术。岁企业来说,是一种可选的虚拟化解决方案。硬

2014-10-31 13:34:01 10757

转载 内核:Linux2.6内核启动流程学习

转载自http://www.cnblogs.com/zoujiaxue/archive/2008/06/04/1213472.html计算机在启动时都是先加电,然后进行硬件检测并引导操作系统的初始化程序,然后操作系统的初始化程序程负责读入系统内核并建产系统的运行环境.一这过程相对来说比较复而且与CPU体系结构相关,这里我们通过linux并以i386的体系结构对这一过程进行较为详细的说明.

2014-10-29 14:01:13 750

原创 逻辑地址,虚拟地址,物理地址--深入理解linux内核

先简单说明一下逻辑地址,虚拟地址,物理地址这三个地址的理解,然后再举个例子,结合实际运行程序的时候深入理解地址概念。 逻辑地址:      概念上的地址。通常在机器语言指令中来指定操作数或者指令的地址。(补充:机器语言就是计算机能够直接识别和执行的指令,即二进制形式)。      每一个逻辑地址,包括段地址segment和段内偏移量offset.      MS-DOS或win

2014-10-17 09:24:43 3076

原创 可重入内核和进程地址空间--深入理解linux内核

可重入内核,是指多个进程可以同时处于内核态下,也就是说可以多个进程可以并发的执行内核代码。对于但处理器来说某一时刻只能有一个进程被CPU处理,其他处于内核态的进程处于阻塞或者挂起等待状态。对于linux来说,可重入内核代码包含可重入函数和非可重入函数。可重入函数是指运行时只改变局部数据结构,不改变全局数据结构;不可重入函数是指运行该函数时也需要改变全局数据结构。 所以,如果有多个进程进入不可重

2014-10-10 09:02:06 1995

原创 进程切换和用户态/内核态--深入理解linux内核

进程在运行时,使用系统调用

2014-10-09 18:15:14 6823

转载 VI打开和编辑多个文件的命令

VI打开和编辑多个文件的命令可分两种情况:1、在同一窗口中打开多个文件:vi file1 file2 file3:n 切换到下一个文件 (n=next):N  切换到上一个文件2、在不同窗口中打开多个文件:如果已经打开一个了一个文件,则在vi的命令输入状态下输入 :sp 另外一个文件的路径及文件名,如此就可以在一个窗口打开多个文件

2014-07-29 17:00:39 643

转载 Ubuntu常见问题和常见快捷键汇总

Ubuntu常见问题和常见快捷键汇总Ubuntu常见问题1.设置Ubuntu下的分辨率。本人电脑分辨率是1280x800的,但是在VBOX下安装的Ubuntu默认没有这个分辨率,添加方式如下:(参考http://askubuntu.com/questions/63863/unknown-monitor-intel-driver-want-to-set-vga-resolut

2014-07-29 16:39:55 744

转载 Column Family

在HBase中,数据是按Column Family来分割的,同一个Column Family下的所有列的数据放在一个文件(为简化下面的描述在此使用文件这个词,在HBase内部使用的是Store)中。为什么要这样子做呢? HBase本身的设计目标是支持稀疏表,而稀疏表通常会有很多列,但是每一行有值的列又比较少。如果不使用Column Family的概念,那

2014-06-04 10:30:28 967

原创 安装 配置 初次体验gradle

前提: 安装Gradle。安装过程非常简单:参考:             http://www.gradle.org/docs/current/userguide/installation.html(1)下载Gradle官网下载www.gradle.org/get-started(2)将GRADLE_HOME/bin/加入$PATH。

2013-11-06 11:51:09 36666

转载 ubuntu安装jdk7,安装IntelliJ Idea

ubuntu安装jdk71、首先下载jdk-7u21-linux-i586.tar.gz2、将jdk-7u21-linux-i586.tar.gz拷贝到/usr/lib/jvm/目录下面,这里如果没有jvm文件夹,则创建该文件夹,命令:sudo mkdir jvm  //创建文件夹jvmsudo cp -r ~/download/jdk-7u4-linux-i586.tar.gz

2013-11-05 19:40:54 15704

转载 boost:: scoped_ptr源码剖析

/* E:\Program Files\CodeGear\RAD Studio\7.0\include\boost_1_35\boost/checked_delete.hpp 24: */namespace boost{    template inline void checked_delete(T * x)    {        typedef char type_mus

2013-10-08 22:28:02 930

转载 shared_ptr解析

shared_ptr解析《超越C++标准库-Boost库导论》头文件: "boost/shared_ptr.hpp"几乎所有稍微复杂点的程序都需要某种形式的引用计数智能指针。这些智能指针让我们不再需要为了管理被两个或多个对象共享的对象的生存期而编写复杂的逻辑。当引用计数降为零,没有对象再需要这个共享的对象时,这个对象就自动被销毁了。引用计数智能指针可以分为侵入式(intrusive)和

2013-10-08 22:21:51 857

转载 auto_ptr解析

auto_ptr解析auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心地使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr

2013-10-08 22:21:02 711

转载 scoped_ptr解析

scoped_ptr解析《超越C++标准库-Boost库导论》头文件: "boost/scoped_ptr.hpp"boost::scoped_ptr 用于确保动态分配的对象能够被正确地删除。scoped_ptr有着与std::auto_ptr类似的特性,而最大的区别在于它不能转让所有权,然而auto_ptr却可以。事实上,scoped_ptr永远不能被复制或被赋值!scoped_

2013-10-08 22:19:56 694

原创 迭代器模式--《设计模式-可复用面向对象软件的基础》Erich Gamma

迭代器模式STL中使用了迭代器,本文一步一步设计迭代器并改进。Iterator是对象行为型模式。目的:提供一种方法,顺序访问聚合对象中各个元素,而不暴露该聚合对象的内部细节表示。思想:将遍历机制和聚合对象相分离,从而可以定义不同迭代器来实现不同的遍历策略(如从前向后遍历元素,从后向前等等)。优点:将聚合对象的接口简单化,不包括遍历方法;可以定义不同的迭代器来实现不同的遍历方法。

2013-09-06 12:13:26 917

原创 C语言中的volatile

C中volatile作用:Volatile单词的意思是易变的,不确定的。在C中,被volatile修饰的变量,表示:(1)该变量的值是可变的,可能随时在程序外部被改变;(2)使用该变量的时候,必须每次从该变量所在的地址所指的内存去读,不能把它放在寄存器或者cache中重复访问,可以保证对特殊数据(接口数据)的稳定访问;(3)告诉编译器不要进行编译优化。经常用于嵌入式编程中。

2013-09-06 09:48:39 854

原创 linux中客户服务器通信程序(TCP)

客户端程序client.c客户端向服务器发出链接请求,建立连接之后,从标准输入读取数据,并发送给服务器。#include #include #include #include #define SIZE 1024#define PORT_NO 12345int main(int argc ,char *argv[]){ int sock,len; stru

2013-08-29 11:14:24 690

原创 数据结构中常用排序算法

已经编译通过//快速排序void RightQuickSort(int *array, int start, int end){ int i=start; int j=end; int key=array[start]; while(i<j) { while(ikey ) j--; if(i<j) { array[i]=array[j]; i++; }

2013-08-28 16:55:13 668

原创 设计一个不能被继承的类-C++实现(来源于剑指名企offer)

JAVA中,final修饰的类不能被继承;而C++中得自己去实现。

2013-08-23 20:32:25 793 1

转载 关于Segmentation fault (core dumped)几个简单问题的整理

关于Segmentation fault (core dumped)几个简单问题的整理 有的程序可以通过编译,但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。

2013-08-20 10:57:41 1325

转载 static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别

static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别  C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-

2013-08-12 15:54:18 886 2

原创 基类指针转换为子类指针,子类指针转换为基类指针

#include#includeusing namespace std;class base{ public: virtual void virtual_fun() {cout<<"base"<<endl;} void normal_fun() {cout<<"base"<<endl;}};cla

2013-08-08 20:23:23 4239 2

原创 求数组中的逆序对(来源于剑指名企offer)

思路:利用归并排序的思想,一边归并排序,一边求逆序对。时间复杂度为O(n log n)步骤:递归实现(1)现将数组拆分成2两部分,统计出子数组内部的逆序对left、right;(2)然后再统计出两个相邻子数组之间的逆序对count。在统计过程中,对数组进行排序。(归并过程)(3)最终的逆序对个数=left+right+count;int inversePairs(

2013-07-31 21:06:47 1012

原创 求两个链表的第一个公共节点(来源于剑指名企offer)

思路: (1)首先, 分别遍历两个链表,得到两个链表的长度 shortLen,LongLen.(2)然后,先让长链表从头遍历LongLen-shortLen步;短链表不便利(3)接着, 短链表和长链表同步遍历;则第一个相同节点就是所求的第一个公共节点时间复杂度为0(m+n)int getListLen(ListNode *pHead){ int l

2013-07-31 19:55:02 821

原创 求第一个只出现一次的字符(来源于剑指名企offer)

char FirstRepeatChar(char *inputStr){ if(inputStr==NULL) return '\0';  int tableSize=256; int * hashTable=new int[tableSize];  for(int i=0; i<tableSzie;i++)

2013-07-31 17:04:19 844 1

原创 第二章 实例研究:设计一个文档编辑器--《设计模式-可复用面向对象软件的基础》Erich Gamma

作者小感: 设计模式这本书,对于我来说,初学者看起来比较懵懂,稍微有些枯燥。所以得耐着性子看。看完每一章节,就会有成就感,也确实能够打心眼赞成这种设计模式。第二章,是从设计一个文档编辑器这个例子,告诉大家:设计模式在应用中的作用,以及如何根据需求来判断使用哪种模式。这个例子好长哦,一定要耐心。看完这个例子,更是加强了我学习设计模式的决心。大家一起努力哦。^o^Lex

2013-07-02 18:24:31 3321

原创 第一章 引言--《设计模式-可复用面向对象软件的基础》Erich Gamma

第一章 引言本章主要是让我们大致明白设计模式是干嘛用的,模式分类,设计模式如何解决设计问题以及几种常见的面向对象设计中软件的复用方法。1.什么是设计模式?    个人理解概括,设计模式是对一类问题的抽象,并描述了该类问题的解决方案。是对用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。    模式四要素:(1)模式名称 。设计模式使得我们能在高的抽象层次上进行设计;(2)

2013-06-28 17:58:47 1359 5

原创 your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found

问题:./build.sh -j2  后出现如下提示: -- Check for working CXX compiler: CMAKE_CXX_COMPILER-NOTFOUND CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_C

2013-06-28 09:30:23 25913

原创 bash: ./build.sh: Permission denied

原因:文件为只读,或者用户没有权限。修改方法:     运行命令: chmod 777 build.sh

2013-06-28 08:53:23 8358

MFC实现组合键响应和按钮左键右键单击响应

MFC实现组合键响应和按钮左键右键单击响应 C+MFC里按钮只有单击和双击消息,要实现做简单几何右键单击,得在PreTransLateMessage里面实现 对话框的PreTranslateMessage里 实现 按钮的左键单击和右键单击事件; 也在里面实现回车键响应和Ctrl+enter组合键响应

2012-09-05

八皇后问题的实现,类似4皇后等等

此程序用VC++编程语言实现,八皇后问题的解决。结果生成图形界面,结果直观,容易理解,可供大家来学习学习

2011-02-22

VC++实现的单片机和Pc机的串口通信源码

两个源程序,都实现了串口通信,一个是串行通信,一个是并行通信。VC++实现

2010-12-13

空空如也

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

TA关注的人

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