- 博客(42)
- 资源 (6)
- 收藏
- 关注
原创 硬盘参数 PIO/DMA/UDMA/SWDMA/MWDMA
PIO的英文拼写是“Programming Input/Output Model”,PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其它的操作。PIO数据传输模式又分为PIO mode 0、PIO mode 1、PIO mode 2、PI
2016-12-27 15:01:03
3308
转载 内存区域的划分和分配
1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 [2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 [3]从堆上分配,
2016-12-27 11:09:27
487
转载 磁盘扇区、柱面详解
在下图中,我们可以看到一圈圈被分成18(假设)等分的同心圆,这些同心圆就是磁道(见图).不过真打开硬盘你可看不到.它实际上是被磁头磁化的同心圆.如图可以说是被放大了的磁盘片.那么扇区就是每一个磁道中被分成若干等分的区域.相邻磁道是有间隔的,这是因为磁化单元太近会产生干扰.一个小软盘有80个磁道,硬盘嘛要远远大于此值,有成千上万的磁道.每个柱面包括512个字节。那么什么是柱面呢?看下
2016-12-23 12:21:21
3756
转载 C++中调用开源库路径问题
包含目录:#include 中headerfile.h的搜索目录。如果有X.h找不到,设置这个目录可以解决。库目录:就是寻找.lib文件的目录。附加依赖项:C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。在VS工程中,添加c/c++工程中外部头文件及库的基本步骤: 1
2016-11-15 12:29:09
761
原创 Ubuntu 16.04与Win 7双系统时间相差8小时解决方法
在Ubuntu 16.04终端下输入:sudo timedatectl set-local-rtc 1然后在Win 7下将时间调准确即可
2016-11-11 20:58:53
2752
原创 ubuntu 16.04安装WPS总结
安装:1)下载:WPS For Linux2)安装命令:sudo dpkg -i wps-office_10.1.0.5672~a21_i386.deb安装完成后存在的问题:一 字体缺失问题1)下载:wps_symbol_fonts.zip2)创建目录:sudo mkdir /usr/share/fonts/wps-office3)将下载的字体复制到创建的目录:
2016-11-08 22:13:23
9782
转载 Ubuntu 16.04下安装搜狗拼音输入法的错误问题
引言: sogou输入法是市场上最为好用和流行的输入法,最为良心的是还有Linux版本,这让我等Linux人士欢呼雀跃。在新出的Ubuntu 16.04上安装sogou输入法的时候,碰到了一些问题,主要还是依赖包没有正确安装,我们一起来看如何来解决这个问题。1. 环境介绍 Ubuntu 16.04, sogou输入法: sogoupinyin_2.0.0.0078_amd
2016-11-08 12:21:16
1761
转载 ubuntu 16.04连不上WiFi
具体如下:1.用手机数据流量,通过开蓝牙或者USB给你的ubuntu系统连上网。2.打开火狐浏览器看看,确保你真的连接上网了。3.打开左边的 系统设置--》系统--》软件和更新--》开发者选项 把提前释放出的更新打勾了。(我记得我还去 软件和更新--》更新 下的又新版本时通知我改 适用长期支持版本 改为 适用任何新版本 了。你要不要也改改,反正能改回来嘛!)4.接
2016-11-06 01:37:39
1186
原创 递归判断一维数组是否为升序数组
这么容易的题,考场竟然没写出来,惭愧啊!书还得多看啊!bool UpSort(int a[], int start, int end)//start为数组的第一个下标,end为数组的第二个下标{ if (start == end) return true; else if (a[start] <= a[start + 1]) return UpSort(a, start + 1,
2016-08-26 13:01:13
1764
1
转载 C++中的new、operator new与placement new
new operator/delete operator就是new和delete操作符,而operator new/operator delete是函数。new operator(1)调用operator new分配足够的空间,并调用相关对象的构造函数(2)不可以被重载operator new(1)只分配所要求的空间,不调用相关对象的构造函数。当无法满足所要求分配的空间
2016-08-23 14:46:47
255
转载 八皇后问题的全排列解法
本文转自微软何海涛的微博。微博网址:http://zhedahht.blog.163.com/ 直接上代码:#include#include#include#includeusing namespace std;int g_number = 0;//全局变量,记录解法的总数void Permutation(int ColumnIndex[], int length, i
2016-08-22 10:06:05
413
原创 C++中的拷贝
一、拷贝构造函数1、拷贝构造函数的参数为什么必须使用引用类型? 答:如果拷贝构造函数中的参数不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造函数,从而造成无穷递归地调用拷贝构造函数。因此拷贝构造函数的参数必须是一个引用。 需要澄清的是,传
2016-08-18 09:11:20
345
原创 初探句柄
1.引出句柄CDC问题:1.CDCdc;dc.LineTo(point);无法运行2.CDC*dc=GetDC();dc->LineTo(point);就可以运行了MFC中有大量的句柄包装类。顾名思义,所谓句柄包装类,指的是这些类是封装了系统对象的句柄(HWND,HDC,HBITMAP等等),并提供了一组成员函数作为访问系统对象的接口。(这是一种资源封装的理念的体现
2016-08-17 15:21:53
213
原创 C++函数中不可被声明为虚函数的函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1、为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。2、为什么C++不支持构造函数为虚函数? 这个原因很简单,主要是从语义上考虑,所以
2016-08-17 13:59:02
287
原创 给定一整数在有序的整数数组中找出与给定值最接近的k个整数
思路:首先找出给定值在给定数组中的插入位置(不是真的将给定值插入给定数组),然后以此位置为基准,向左或向右依次找出最接近的k个整数。难点:个人在处理过程中的难点在于向左或向右移动过程中的确切位置的确定。代码://找出value在数组中的应该插入位置int kPosition(int A[], int nLength,int value){ int pos = 0;
2016-08-13 12:41:31
4185
原创 std::bind与std::function详解
std::bind1、定义bind(F f, T1 t1, T2 t2, ..., TN tN);具体为:bind(&要调用的函数,&对象, 要调用函数的参数1,要调用函数的参数2...,_1(bind函数的参数1),_2(bind函数的参数2)...)注:如果bind的是一个非静态成员函数,第二个参数一定是一个该成员的一个指针,后面才是正常的参数。2、bind使用形式
2016-08-08 00:20:53
8056
3
原创 C++中getline与C中scanf、gets小结
getline()的原型是istream& getline ( istream &is , string &str , char delim );其中 istream &is 表示一个输入流,譬如cin;string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为
2016-08-04 00:14:04
1910
转载 C语言中函数参数入栈的顺序
先通过一个小程序来看一看: #include void foo(int x, int y, int z){ printf("x = %d at [%X]n", x, &x);printf("y = %d at [%X]n", y, &y);printf("z = %d at [%X]n", z, &z);} int main(int argc
2016-07-28 14:49:43
349
原创 ubuntu终端下常用快捷键
新建终端窗口: crtl+shift+N 终端的漂移/切换:shift+左右箭头 挂 起:crtl+s 解除挂起:crtl+q 清 屏:crtl+l命令行光标移动: crtl+a 移动到命令行首 crtl+e移动到命令行尾 crtl+u 从当前光标所在位置向前清除命令 crtl+c 中断操作tab 命令补全/路径补全/文件名补
2016-07-20 16:38:31
589
原创 几个常用(伪)汇编指令详解
SDRAM例程:从Nand Flash启动CPU时,CPU会自动将Nand Flash开始的4K数据复制到4KB的内部Ram中(起始地址0),然后地址0开始执行。本例程先用汇编设置好SDRAM,将程序从内部Ram复制到SDRAM,然后跳转到SDRAM执行。源代码包括sdram.S、gpio.c、s3c2440.h,编译为二进制文件后烧写到NandFlash运行。sdram.
2016-07-19 21:33:16
3682
原创 arm汇编align伪指令详解
一个值得讨论的伪指令是.align,它可能在很多时候不被人注意,但是不恰当的使用将导致程序无法运行,这种可能性在ARM系统上几乎是百分之百的发生。.align的作用在于对指令或者数据的存放地址进行对齐,有些CPU架构要求固定的指令长度并且存放地址相对于2的幂指数圆整,否则程序无法正常运行,比如ARM;有些系统却不需要,如果不遵循地址的圆整规则,程序依然可以正确执行,只是降低了一些执
2016-07-19 21:20:44
13765
1
转载 S3C2440A地址空间
首先,说明如下:ARM按字节寻址,即对存储的最小访问单元是字节;存储单元按字节对齐。地址空间从高到底分为两部分:主存储区(包括静态存储区(存放img)和动态存储区(就是我们通常说的运行代码的内存))和外设寄存器区。而主存储区又会分为很多bank,目的是为了让更少的地址总线寻址更多的地址(128MB*8 = 1GB)即片选+地址总线模式。研究启动过程关心的是主存储区的静态
2016-07-18 21:28:50
1210
1
转载 Linux多线程与同步
出处:http://www.cnblogs.com/vamei 典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。 多线程我们先来看一下什么是多线程。在Linux从程序到
2016-07-17 17:26:20
316
原创 exit与return的深入辨析
1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用函数。2. exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的,它表示调用堆栈的返回。3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程。exit将删除进程使用的
2016-07-17 11:04:45
1065
转载 嵌入式—字节对齐
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特
2016-07-15 23:43:59
1582
转载 程序员有趣的面试智力题
偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开关控制,三架飞机环游世界,用火柴和两根绳子测量45分钟之类的题目,火星得已经可以考古了,这里就不再说了。 1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面
2016-07-14 14:21:19
420
转载 虚函数和纯虚函数的区别
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plaincopyprin
2016-07-14 14:15:41
211
原创 ARM中pc、lr寄存器
PC(程序计数器) = windows 中 EIP解析: 处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址.程序计数器(PC)正是起到这种作用,所以通常又称之为‘指令计数器’。CPU总是按
2016-07-10 21:05:17
2592
转载 C++中公有继承、保护继承、私有继承的区别
公有继承时基类中各成员属性保持不变,基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员
2016-07-05 13:38:40
258
转载 Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2. 二叉树的形状不能被破坏(中间过程允许改变其形状)。通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历有两个常用的方法:一是递归(recursive),二是使用栈实现的迭代版本(stack+iterative)。这两种
2016-07-03 20:38:34
296
原创 RGB32
BitmapData 存储的像素数据并不是各通道(ARGB)的原始数据,而是 RGB 跟 Alpha 通道相乘后的数据。在调用 BitmapData.getPixel32() 方法时,Flash Player 虽然返回的是未经相乘的 ARGB 数据,但这个数据是还原后的 ARGB ,而不是原始 ARGB 。以下例子说明了这一点:var bmd:BitmapData = new Bi
2016-06-29 16:38:04
1460
转载 OpenCV2:Mat属性type,depth,step
Mat的作用The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It can be used to store real or complex-valued vectors and matrices, grayscale or color ima
2016-06-29 14:05:31
306
转载 C++静态库与动态库
什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤:图:编译过程静态
2016-06-28 10:19:24
300
转载 linux权限补充:rwt rwT rws rwS 特殊权限
众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件。所以我们只需要将bash复制出来到另一个地方,然后用root加上UID权限,只要用户运行此Shell就可以用用root的身份来执行任何文件了一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件
2016-06-26 17:05:47
605
转载 Qt——中心窗口部件
Qt程序中的主窗口通常具有一个中心窗口部件。从理论上来讲,任何继承自QWidget的类的派生类的实例,都可以作为中心窗口部件使用。几种常见情形QMainWindow的中心区域可以被任意种类的窗口部件所占用。下面给出的是可能的情形。⒈ 使用标准的Qt窗口部件(Standard Widget)像QWidget、Qlabel以及QTextEdit等等这样的标准窗口
2016-06-22 16:37:44
4829
转载 #pragma once与#ifndef #define #endif
#ifndef这种是最早期使用的方法,是基于语言的宏定义名字不能冲突的前提下的。这种方法不仅能保证同一个头文件不会被包含两次,也可以保证内容完全相同的两个文件也只能被包含一次。但是他优缺点,就是你的#ifndef 后面跟的宏名字和你程序中的其他宏名字发生了”撞车“,那么会出现以下两种后果第一种:file1头文件中有一个宏//file1.h#define BOOK_H //宏
2016-06-22 10:35:39
393
转载 C++ ofstream和ifstream用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout
2016-06-22 09:18:28
270
转载 Qt中的QAction
1、QAction::QAction ( const QString & text, QObject * parent ) QAction类的构造函数之一,利用text,parent创建QAction对象。QAction对象一般为菜单中的菜单项,比如 "文件"菜单中"新建"选项就是一个QAction对象,上述构造函数中text成员变量即为菜单项所表示的内容。 用法:QA
2016-06-22 08:20:50
1647
转载 关于qt中的tr()函数
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种:(2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)(2b) 用tr包住中文(源码用中文,然后提供中文到其他语言
2016-06-20 15:34:47
361
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人