自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (5)
  • 收藏
  • 关注

原创 VxBus设备驱动模型

VxBus简介VxBus是指在VxWorks中用于支持设备驱动的特有的架构,这种架构包含对minimal BSP的支持。 它包括以下功能:①允许设备驱动匹配对应设备;②提供驱动程序访问硬件的机制;③软件其他部分访问设备功能;④在VxWorks系统中,实现设备驱动的模块化。 VxBus在总线控制器驱动程序服务的支持下,能在总线上发现设备,并执行一些初始化工作,使驱动与硬件设备之间正常的通讯。O

2016-03-30 17:23:07 1811

原创 设备驱动模型

在linux代码中,其实很大部分都是驱动代码,真正的kernel代码并不大。因为研究课题的原因,说一下自己对设备驱动模型的理解。系统中的每个逻辑设备都应该有一个与其相对应的、明确定义了设备号的设备文件。设备文件被分配一次且永远保存在/dev目录中。可以把设备文件的每个系统调用都转换成与设备相关的函数的调用,而不是对主文件系统相应函数的调用。与设备相关的函数对硬件设备进行操作完成进程所请求的操作。

2016-03-29 16:26:41 623

原创 LRU Cache算法实现(leetcode)

题意实现一个LRU cache类,使得在我们需要获取一个key的值时,如果cache中有,那么直接返回值,否则就返回-1;同时我们还可以设置一个cache的值,这个主要是在我们出现cache miss的时候,我们需要替换其中的项或者需要从主存中载入对应的项。思路LRU,最近最少使用,也就说在出现cache满的时候,替换原则就是替换最近最少使用的项。类中必须体现出这个原则,那么我们应该如何来做呢?首先

2016-03-28 20:40:59 807

原创 编程珠玑之左旋转一个字符串

描述将一个n元一维向量向左旋转i个位置。例如,n=8,i=3,向量abcdefgh旋转结果为defghabc. 要求是使用数十个额外字节的存储空间,在正比于n的时间内完成向量的旋转??思路简答的代码就是存储前i个,然后将后面n-i依次向前挪动。这样的使用的i个额外空间就是过大的存储空间的消耗。另外一个方法就是递归调用,每次旋转一个,然后调用i次。还一个方法就是按照第i个划分,分别将两部分翻转,然后再

2016-03-21 18:10:45 549

原创 如何确定栈的增长方向地址是递增还是递减

#include<stdio.h> static int stack_dir; static void find_stack_direction (void) { static char *addr = NULL; /* address of first `dummy', once known *

2016-03-20 21:43:11 3790

原创 判断一个机器是大端序还是小端序

大小端其实指的就是CPU对数据存放的字节顺序。如果高位放在高地址,低位放在低地址,那么就是小端;反之,高位放在低地址,低位放在高地址,那么就是大端。问题是,如何通过程序判断机器是大端还是小端呢,其实很简单,使用union这个结构类型就可以很容易的解决。static union{ char c[4]; unsigned long endlian;}my_test = {{'l','x

2016-03-20 21:34:52 683

原创 深入探索C++对象模型笔记

一开始对C++primer plus都没看完的是我就下载了深入探索C++对象模型,当时看了就觉得绝望,因为实在看不懂,天书。不过经过一段时间的使用,尤其是放在Effictive c++后面再来看,就很有感触了。题主比较健忘,决定把一些关键点记录下来,方便没时间的时候能够快速翻阅。为什么抽象基类必须定义一个纯虚函数的析构函数,pure virtual destructor,class设计者一定得定义

2016-03-20 20:17:33 501

原创 DRM security

http://www.x.org/wiki/Events/XDC2013/XDC2013DavidHerrmannDRMSecurity/DRM_SECURITY

2016-03-17 21:11:31 604

原创 IO多路复用之select、poll以及epoll

进程的阻塞处理运行态的进程(获得CPU资源),由于需要等待一些事件的发送而不能继续执行时,就会祖东的转为阻塞状态,这是,他是不占用CPU资源的。因此也只有处于运行态的进程,才能够转为阻塞状态。这时候调度器会切换到其他进程,一旦这个进程等待的事件发生了,那么就会重新唤醒这个进程,重新等待被调度。一旦被调度器调度,那么就会恢复到切换之前的状态,继续执行,由阻塞状态切换到运行态。文件描述符一个用于对文件引

2016-03-17 14:56:06 375

原创 GOOGLE

http://dir.scmor.com/google/

2016-03-16 16:18:46 405

原创 树中节点最低公共祖先

给定两个树节点,返回这两个节点最近的一个公共父节点。二叉搜索树struct BinaryTreeNode{ int val; BinaryTreeNode* left; BinaryTreeNode* right; BinaryTreeNode(int num):val(num),left(NULL),right(NULL){}}BinaryTreeNode* F

2016-03-16 11:08:47 389 1

原创 深入理解Linux内核之内存管理

我们的物理内存中的某些部分永久的分配给内核,并用来存放内核代码以及静态的内核数据结构。其余的部分我们称为动态内存,这不仅是进程所需要的宝贵资源,也是内核本身所需要的宝贵资源。下面通过三部分来描述内核如何给自己分配动态内存,尽可能做到当需要时分配,不需要时释放。页框管理采用4KB页框大小作为标准的内存分配单元。 在以下情况下页框是不空闲的:包含用户态进程的数据,某个软件高速缓存的数据,动态分配的内核

2016-03-16 10:51:37 1292

原创 图形渲染之纹理贴图

载入2D纹理WebGL中最常见的纹理格式就是2D纹理,2D纹理的最基本形式就是使用单幅图像作为纹理。为了把2D纹理应用于几何对象,首先需要载入纹理。就是将普通图像文件的纹理载入到纹理对象中,然后将这幅图像作为2D纹理的输入数据。图像文件可以是PNG、JPEG或GIF格式。创建WebGLTexture对象在WebGL中使用纹理的第一个步骤是为每个纹理创建一个WebGLTexture对象。创建纹理对象要

2016-03-15 10:08:23 2944

原创 二叉树的遍历(递归,非递归)实现

二叉树的遍历分为前序遍历,中序遍历,后序遍历,层次遍历,zigzag遍历(一层一层走S型),本文不讨论以上算法的递归实现,都是借助栈或者队列来实现。前序遍历(Preorder)vector<int> preorderTraversal(TreeNode* root) { vector<int> result; if(root==NULL) re

2016-03-15 00:14:00 350

原创 判断一个数字是否为回文,不使用额外的存储空间

bool isPalindom(int num){ int n=log10((double)num)+1; cout<<"size: "<<n<<endl; int i=1; int temp=0; while(i<=(n>>1)){ temp =temp*10+num%10; cout << temp<<endl;

2016-03-10 20:24:45 644

原创 冒泡,插入,归并,快排算法C++实现

// sort_alogrithm.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>using namespace std;//冒泡排序void pubbleSort(vector<int>& nums){ int n=nums.size(); for(int i=0

2016-03-09 23:19:14 477

原创 一个fork的面试题

很有意思,分析一下,加深一下对fork机制的理解。代码如下: 题目:请问下面的程序一共输出多少个“-”?#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){ int i; for(i=0; i<2; i++){ fork(); printf("-"); }

2016-03-09 11:10:08 823

原创 实现一个strcpy函数

char* strcpy(char* dest,const char* src){ assert(dest!=NULL&&src!=NULL); char* ret=dest; while((*dest++ = *src++) !='\0'); return ret;}

2016-03-08 14:45:26 289

原创 Effictive C++笔记

Effictive C++阅读笔记constConst, 可以在类外部修饰global或者namespace作用域中的常量,或者修饰文件、函数、或者区块作用域(block scope)中被声明为static的对象。也可以就修饰类内部的static以及non-static成员变量。面对指针,可以指出指针本身、指针所指物、或者两者都是const。如果关键字const在号左边,表示被指物是常量(值不可被改

2016-03-07 20:08:32 700

原创 Multipy String | leetcode

字符串相乘两个任意长的数字字符串相乘,不为负数,结果返回一个字符串。任意长,意味着不可能转为整数在相乘,只能逐位乘得到结果。注意,每一次相乘的结果都会往左边挪动以为在和前一位的结果相加。

2016-03-04 11:19:21 547

挑战赛细则

想当梦想达人吗,如果想的话就快来参加由国际电器制造有想过给你说主板,中三大学城邦发开发高校挑战赛吧

2012-05-29

codeblocks

codeblocks,c++开发

2012-05-29

nvgative mysql

可视化管理使用Mysql,当前如果对于大部分的铜须的来说,要记住大量的命令,同时在命令行格式下使用操作数据库的话是有点点障碍的

2012-05-01

空空如也

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

TA关注的人

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