自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(51)
  • 收藏
  • 关注

原创 Junit4对于类测试的实践

最近一段实践参与公司中单元测试用例的

2014-06-15 23:16:30 365

原创 cygwin编译ndk-build技巧

使用Cygwin在windows下模拟Android系统中的Linux环境,编译JNI生成so库文件。1.启动Cygwin,ls -a,查看当前目录文件,其中可以找到.bash_profile文件2.添加变量到这个profile文件:    vi .bash_profile进行编辑    在文件的最下面添加变量如:    ANDROID_NDK_ROOT=/cygdrive

2014-05-22 11:12:51 485

cygwin编译ndk-build技巧

使用Cygwin在windows下模拟Android系统中的Linux环境,编译JNI生成so库文件。1.启动Cygwin,ls -a,查看当前目录文件,其中可以找到.bash_profile文件2.添加变量到这个profile文件:    vi .bash_profile进行编辑    在文件的最下面添加变量如:    ANDROID_NDK_ROOT=/cygdrive

2014-05-22 11:10:42 249

原创 JAVA多线程实现消费者生产者问题

最近学习JAVA多线程,实现了

2014-05-16 14:10:27 257

原创 JUint4 test的一个实例

基本步骤:假设待测试类是:package com;public class MyClass1 {        public static int getMaxInArr(int[] arr)    {        int max = Integer.MIN_VALUE;                if(0 == arr.length)  

2014-05-15 18:33:43 212

原创 算法设计与分析基础:简单算法入门

1.欧几里得算法求最大公约数欧几里得算法基于的方法是重复应用以下等式,直到m mod n等于0.gcd(m,n) = gcd(n,m mod n).gcd(m,0) = m,m最后的取值也就是m和n的初值的最大公约数举例:gcd(60,24) = gcd(24,12) = gcd(12,0) = 12欧几里得算法gcd(m,n)描述:1)如果n = 0,返回m的值作为结

2014-05-03 08:35:48 503

原创 操作系统精髓:内存管理

操作系统的一个首要的任务就是管理内存,包括从外存装载数据块和换出数据块到外存。然而,内存I/O是一个很慢的操作,其速度相对于处理器指令周期时间来说差距越来越大。为了保持处理器处于繁忙状态从而维持效率,操作系统必须巧妙地选择换入换出数据的时机以最小化内存I/O对性能的影响。在单道程序设计系统中,内存被划分为两个部分:一部分供操作系统使用(驻留监控程序和内核),一部分供当前正在执行的程序使

2014-05-02 08:43:24 358

原创 并发:死锁与饥饿

1.死锁的原理一组相互竞争资源或进行通信的进程间的“永久”阻塞。当一组进程中的每一个进程都在等待某个事件(典型情况是等待请求资源的释放),而只有在这组进程中的其它被阻塞的进程才可以触发该事件。所有的死锁都涉及两个或多个进程之间对资源需求的冲突。1.1 可重用资源资源通常分为两种:可重用的和可消耗的可重用资源:一次只能供一个进程使用,并且不会由于使用而耗尽的资源,在使用后释放

2014-04-22 15:16:14 352

原创 微软面试一百题之5.查找最小的 k 个元素

5.查找最小的 k 个元素题目:输入 n 个整数,输出其中最小的 k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。基本思路获取

2014-04-22 13:03:18 182

原创 微软面试一百题之4在二叉树中找出和为某一值的所有路径

4.在二元树中找出和为某一值的所有路径题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树10/ \5 12/ \4 7则打印出两条路径:10, 12 和10, 5, 7。代码:{CSDN:CODE:304434}

2014-04-21 16:13:10 197

原创 微软面试一百题之3求子数组的最大和

3.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。ANSWER:A traditio

2014-04-21 09:16:21 219

原创 并发性:互斥与同步

操作系统核心问题是关于进程与线程的管理。多道程序设计技术:管理单处理器系统中的多个进程多处理技术:管理多处理器中的多个进程分布式处理技术:管理多台分布式计算机系统中的多个进程的执行并发是所有问题的基础,也是操作系统设计的基础。并发包括了很多的设计问题:进程间通信、资源共享与竞争、多个进程活动的同步、分配给进程的多个处理器时间等支持并发进程的基本要求就是要加强互斥

2014-04-18 18:28:23 306

原创 微软面试一百题之2设计包含 min 函数的栈

定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。{CSDN:CODE:297206}运行记过

2014-04-17 11:15:10 246

原创 操作系统精髓:线程、对称多处理SMP和微内核

1.进程和线程进程的概念包含两个特点:# 资源所有权    回顾:一个进程包括一个存放进程映像的虚拟地址空间,进程映像中包括程序、数据、栈和进程控制块中定义的属性    一个程序总是拥有对资源的控制或所有权,这些资源包括内存、I/O通道、I/O设备和文件,操作系统提供保护,以防止进程之间发生不必要的与资源相关的冲突# 调度/执行    一个进程沿着通过一个或多个程序的一

2014-04-16 18:02:12 414

原创 Windows程序基本概念

事件驱动系统:Windows程序的运行本质:Message Based,Event Driven。1.Win32程序开发流程:Windows程序分为”程序代码“和”UI资源“两个部分。UI资源是指功能菜单、对话框外貌、程序图标、光标形状等等东西。这些UI资源的实际内容(二进制代码)是借助各种工具产生的,并以各种扩展名存在,如.ico,.bmp,.cur等。程序必须在一个所谓

2014-04-15 08:25:21 547

原创 Windows API概要

1.功能分类1)系统基本服务Windows API最基本的内容,是最常使用到的程序接口,包括: 文件系统基本操作、内存管理、进程线程和模块、设备I/O、驱动程序控制、调试和错误处理、Windows系统消息、进程间通信、定时器与消息机制等2)系统管理管理控制台接口、程序安装、系统恢复、任务调度、Windows运程管理3)用户界面Windows用户界面包括:Wi

2014-04-14 06:59:02 231

原创 Windows数据类型

1.Windows数据类型与标准C数据类型的关系WinDef.h中的定义:typedef unsigned long DWORD;typedef void *PVOID;typedef PVOID HANDLE;所有的Windows数据类型都是通过这种方式在SDK头文件中定义的,它们都来源于标准C的数据类型。实际上VC就是一个标准的C编译器,此外没有做过多的拓展。

2014-04-11 18:08:46 266

原创 哈希表

哈希表支持一种最有效的检索方法:散列。从根本上,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素。哈希表的基本思想:通过一个哈希函数,在所有可能的键和槽位之间建立一张映射表。哈希函数每次接受一个键将返回与键对应的哈希编码或哈希值。键的数据类型可能是多种多样,但哈希值的类型只能是整型。由于计算哈希值和在数组中进行索引都只消耗固定的时间,因此哈希表的

2014-04-11 16:14:07 294

原创 高质量C/C++编程之其他编程经验

1.使用const提高函数的健壮性const除了可以定义常量,更大的魅力是它可以用来修饰函数的参数、返回值,甚至函数的定义体。被const修饰的”对象“都受到强制保护,可以防止以外的变动,可以提高程序的健壮性。建议:use const wherever you need1) 用const修饰函数的参数    # 如果是出参,无论它是什么数据类型,也无论它采取的是指针

2014-04-10 21:58:28 205

原创 高质量C/C++编程之类的继承和组合

对于C++程序而言,设计孤立的类比较容易,难的是正确设计基类及其派生类。当前面向对象技术的应用热点是COM和CORBA1.继承Inheritance规则1: 如果类A和类B毫不相关,不可以为了B的功能更多些,而让B继承A的功能和属性规则2: 若在逻辑上B是A的一种”a kind of“,允许B继承A的功能和属性规则3: 继承的概念在程序世界和现实世界并不完全相同  

2014-04-10 20:44:29 229

原创 高质量C/C++编程之类的构造函数、析构函数和赋值函数

每一个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于类A,如果不想编写这些函数,那么C++编译器会自动为A产生四个缺省的函数:A(void);                //缺省的无参构造函数A(const A &a);            //缺省的拷贝构造函数~A(void);          

2014-04-10 20:15:15 225

原创 高质量C/C++编程之C++高级特性

相对于C函数,C++增加了重载overload、内联inline、const和virtual四种新机制。重载和内联机制既可以用于全局元素也可以用于类的成员函数。const和virtual机制仅用于类的成员函数。1.函数重载在C++中,可以将语义、功能相似的几个函数使用同一个名字表示。使用重载的理由:1)便于记忆,提供函数的易用性。2)类的构造函数需要重载机制

2014-04-10 15:31:28 437

原创 高质量C/C++编程之内存管理

内存管理1.内存分配方式1)从静态存储区分配    内存在程序编译时就已经分配好,且在程序的整个运行期都存在。如全局变量,static变量存放在这里。2)在栈上创建    在执行函数时,函数内局部变量的存储单元都可以在栈上创建。函数执行结束时,这些存储单元自动被释放。    栈内存分配运算内置于处理器的指令集,效率很高,但是分配的内存容量有限。3)从堆上分配,亦

2014-04-09 17:37:53 233

原创 高质量C/C++编程之函数设计

函数接口的两大要素是参数和返回值。C语言中,函数的参数和返回值的传递方式有两种值传递pass by value和指针传递pass by pointer。C++中,更多采用的是引用传递pass by reference。引用传递性质像指针传递,但使用方式更像值传递。1.参数的规则规则1: 参数的书写要完整,不能贪图省事只写参数类型而忽略参数名字,如果函数没有参数,用void填

2014-04-09 10:48:38 220

原创 高质量C/C++编程之常量

1.常量常量的两种定义方法:1)#define定义宏常量2)const定义常量规则1: 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串2.const和#define的比较const常量较之#define定义的宏常量有更多优点:1)const常量有数据类型,而宏常量没有    编译前对const常量做类型安全检查,而宏常量只做字符替换

2014-04-08 23:26:33 187

原创 高质量C/C++编程之表达式和基本语句

1.优先级规则1: 如果代码行中运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级2.复合表达式使用复合表达式的理由:书写简介,可以提高编译效率规则1: 不要编写太复杂的复合表达式规则2: 不要有多用途的复合表达式规则3: 不要将复合表达式和“真正的数学表达式”混淆3.if语句bool变量与零值比较:规则1: 不可将布尔变量直

2014-04-08 21:47:25 201

原创 高质量C/C++编程之命名规则

比较著名的命名规则当推Microsoft公司的“匈牙利”法。该命名规则的主要思想:在变量和函数中增加前缀以增进人们对于程序的理解。1.共性规则规则1: 标识符应该直观且可拼读,可望文知意,不必进行解码规则2: 标识符的长度应当符合“min-length & max-imformation”规则3: 命名规则尽量与采用的操作系统或开发工具的风格保持一致        

2014-04-08 21:04:56 278

原创 高质量C/C++编程之程序的版式

1.空行规则1: 每个类声明之后、每个函数定义之后加空行规则2: 在一个函数体内,逻辑上密切相关的语句间不要加空行,其他地方加空行分隔2.代码行规则1: 一行代码只做一件事规则2:  if、for、while、do等语句自占一行,执行语句不得紧跟其后;        执行语句不论多段,都使用{},防止书写失误建议1: 尽量在定义变量的同时初始化该变量

2014-04-08 20:33:27 167

原创 高质量C/C++编程之文件结构

每一个C/C++程序通常分为两个文件:1)头文件:用于保存程序的声明declaration2)定义文件:用于保存程序的实现implementation1.版权和版本的声明位于头文件和定义文件的头部2.头文件结构三部分组成:1)头文件开头处的版权和版本声明2)预处理块3)函数和类结构声明等规则和建议:规则1:为了防止头文件被重复引用,使用i

2014-04-08 20:08:34 305

原创 STL容器之Map

Map和Multimap将键值对key/value pair作为元素,进行管理。它们可以根据key的排序准则自动给元素排序。Multimap允许重复元素,而Map不允许。定义:namespace std{    template,class Allocator = allocator>>    class map;    template,class Allocator

2014-04-08 17:53:06 295

原创 动态查找树

动态查找表:表在查找过程中动态生成。            如果查找成功,返回。失败,就将新的记录插入到表中。1.二叉排序树 or 二叉查找树   Binary Sort Tree性质:1.或是空树,或具有以下性质      2.左子树的所有结点值都小于根节点值      3.右子树的所有结点值都大于根节点值      4.它的左右子树也分别为二叉排序树查找过程

2014-04-08 16:26:05 268

原创 静态查找表

查找表(Search table)静态查找表: 只进行查找操作动态查找表: 在查找表上可以进行删除和插入操作1.静态查找表的顺序查找int Search_Seq(SSTable *T, KeyType key){    T->elem[0].key = key;    for(i = T->length;!EQ(T->elem[i].key,T->elem[0].k

2014-04-08 16:24:06 299

原创 STL容器之Set

Set和Multiset:会根据特定的排序规则,对元素进行自动排序,不同之处是multiset允许元素重复而set不允许。namespace std{    template ,classs Allocator = allocator>    class set;    template ,classs Allocator = allocator>    class m

2014-04-08 10:50:53 226

原创 操作系统精髓:进程描述和控制

现代操作系统最基础的任务就是进程管理。操作系统为进程分配资源,使进程间可以交换信息,保护各个进程的资源不被其他进程占用,并且使进程可以同步。为达到这个目的,操作系统为每一个进程维护一个数据结构,这个数据结构描述进程的状态和资源所有权,这样才能使操作系统进行进程控制。在单处理器多道程序系统中,多个程序的执行可以在同一个时间内交叉进行。在多处理器系统中,不仅多个程序可以交叉执行,还

2014-04-07 18:23:01 493

原创 STL容器之List

List,链表。使用一个双向链表double-linked list来管理元素。熟悉的声明namespace std{    template >    class list;}1.List的能力# 不支持随机存取   不支持operator[]、at()等下标subscript操作    它的迭代器也不是随机存取迭代器,而是双向迭代器    

2014-04-07 11:32:41 160

原创 STL容器之Deque

容器Deque Double-End Queue 双端队列也采用动态数组来管理元素,提供随机存取,并有着和Vector几乎一模一样的接口。不同的是Deque动态数组的头尾都是开放的,可以在头尾两端进行安插和删除。为了获取这样的功能,Deque通常由一组独立的区块实现,第一区块向某方向扩展,而最后区块向另一方向扩展。和Vector相似的模板声明:namespace std

2014-04-07 08:21:07 189

原创 STL容器之Vector

C++标准库还提供了一些特殊的容器类型,所谓的容器适配器(container adapter,包括stack、queue、priority-queue)以及bitset、valarray。这些容器都有特殊的接口,都不满足STL容器的一般要求。1.容器的共通能力和共通操作3个核心的共通能力:#所有容器提供的都是value语意而不是Reference语意,因此容器内的元素都可以被拷

2014-04-06 23:18:24 306

原创 算法设计的一般方法概览

1.随机法随机法依赖于随机数的统计特性。一个应用随机法的例子是快速排序。随机选择一个值作为划分的依据,常被称为枢轴,将小于或等于枢轴的划在一堆,而大于枢轴的划在另一堆,重复这种划分,直到只有一个元素。快速排序的平均性能不错,因为随机数的正态分布的结果是相对平衡的。2.分治法分治法包括三个步骤:# 分解:将数据分解为更小、更容易管理的部分# 求解:对每一个分解的部分进行处

2014-04-06 15:07:09 245

原创 操作系统精髓:计算机系统概述

1.计算机的基本构成计算机的四个主要的结构化部件:#处理器processor:CPU  控制计算机的操作,执行数据处理#内存:main memory/primary memory:存储数据和程序#输入/输出模块 I/O module: 在计算机和外部环境之间移动数据,外部环境包括辅存、通信设备和终端#系统总线system bus:为处理器、内存、输入输出模块间提供通信的设备

2014-04-06 11:27:47 318

原创 串的模式匹配

子串的定位操作通常称作串的模式匹配。Index(S,T,pos);  T被称为模式串。直观算法:int Index(String S,String T,int pos){ i = pos;  j = 1;   lenS = strlen(S);   lenT = strlen(T); while(i   if(S[i] == T[j]){ ++i; ++j;}  e

2014-04-05 22:20:58 333

空空如也

空空如也

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

TA关注的人

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