- 博客(48)
- 资源 (26)
- 收藏
- 关注
原创 分治法在归并排序和快速排序中的应用
归并排序归并排序和快速排序都使用了“分治”策略(divide-and-conquer)。对于数组A[p..r],归并排序先把数组从中间分开,形成两个具有(p+r)/2个元素的子数组(divide);然后,分别对这两个子数组递归地进行归并排序(conquer),当子数组只包含一个元素时到达递归出口;最后,将两个排好序的子数组合并起来,形成有序数组(combine)。 归并排序算法如下:ME
2016-05-22 23:15:13 2182
原创 递归和回溯题目四则
递归和回溯本文是对斯坦福大学公开课《抽象编程》第10课内容的总结。递归打印一个字符集合的全排列。 要解决这个问题,可以先模拟一下全排列的过程。假设字符集是“ABCD”:首先,从“ABCD”中任选一个字符作为排列结果的第一个字符,例如,我们可以先选择“A”作为第一个字符;一旦第一个字符确定下来,可以对所有剩下的字符进行全排列,并把得到的排列结果附加在刚才选定的第一个字符“A”之后,就
2016-05-05 22:54:37 1015
原创 利用C++实现插件系统
利用C++实现插件系统插件机制能够方便地扩展已有应用程序的功能。用C++实现插件机制的基本思路是:应用程序提供接口,由用户或第三方实现这些接口,并编译出相应的动态链接库(即插件);将所有插件放到某个特定目录,应用程序运行时会自动搜索该目录,并动态加载目录中的插件。应用程序提供接口为了实现功能扩展,应用程序必须向插件提供接口。在base.h中定义一个抽象类Base作为接口:#ifndef BASE_H
2016-04-17 22:32:40 11740 5
原创 Twisted中的putChild和getChild
Twisted的官方文档上对于putChild的解释是“Register a static child”(点击打开链接),即为当前资源节点注册一个静态子资源节点。实际上,Resource类中的putChild实现的是IResource接口中的putChild方法(点击打开链接)。 Resource类中还有一个getChild方法,官方文档的解释是“Retrieve a 'child' r
2016-03-05 21:03:26 1597
原创 Visual Studio 2008编译机器学习算法库Shark
本文描述了Windows 7(64位)上基于Visual Studio 2008编译和安装开源C++机器学习库Shark的完整过程,并对安装过程中产生的问题进行说明。该过程依赖于CMake和Boost。
2015-04-01 10:49:47 7033 34
原创 初学Redis(4)——简单实现Redis缓存中的排序功能
在实现缓存排序功能之前,必须先明白这一功能的合理性。不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发的应用;其次,在缓存中排序不会遇到表锁定的问题。Redis恰好提供了排序功能,使我们可以方便地实现缓存排序。 Redis中用于实现排序功能的是SORT命令。该命令提供了多种参数,可以对列
2014-09-25 15:29:54 53181 4
原创 初学Redis(3)——用Redis作为Mysql数据库的缓存
把Mysql结果集缓存到Redis的字符串或哈希结构中以后,我们面临一个新的问题,即如何为这些字符串或哈希命名,也就是如何确定它们的键。因为这些数据结构所对应的行都属于某个结果集,假如可以找到一种唯一标识结果集的方法,那么只需为这些数据结构分配一个唯一的序号,然后把结果集标识符与该序号结合起来,就能唯一标识一个数据结构了。于是,为字符串和哈希命名的问题就转化为确定结果集标识符的问题。
2014-09-24 19:06:09 53905 7
原创 oracle instant client,tnsping,tnsnames.ora和ORACLE_HOME
前段时间要远程连接oracle数据库,但是又不想在自己电脑上完整安装oracle客户端,于是到oracle官网下载了轻量级客户端instant client。这玩意没有图形界面,全靠sqlplus远程连接服务器,所以不占地方,正好满足我这种追求“简单就好”的强迫症患者需求。但是呢,可能是服务器那边没开监听端口,我在自己的机子上尝试了各种配置,包括tnsnames.ora,sqlnet.ora等
2014-07-10 19:41:37 10222 1
原创 C++ 虚函数的缺省参数问题
前些日子,有个同学问我一个关于虚函数的缺省参数问题。他是从某个论坛上看到的,但是自己没想通,便来找我。现在分享一下这个问题。先看一小段代码:#include using namespace std;class A { public: virtual void Fun(int number = 10) { cout << "A::Fun
2014-07-10 00:05:05 4740 1
转载 抽象类与接口的区别及应用(本文由张洋提供)
抽象类(Abstract Class)与接口(Interface)是面向对象程序设计中两个重要的概念。由于两者在自身特性及应用方法上存在诸多相似性,如都不能实例化、都可以被继承(严格来说对于接口应该叫做实现),这么一来,在许多人心中抽象类与接口的界限非常模糊,对何时该使用抽象类、何时该使用接口更是感到困惑。本文的目的是通过对两者的讨论与比较,帮助读者认清抽象类与接口在思想本质及应用场合方面
2014-05-17 11:11:50 1104
原创 ubuntu下ATI显卡驱动问题
昨天给我的ubuntu12.04安装了不少更新,重启之后,问题出现了:开机之后出现奇怪的提示“The system is running in low-graphics mode”,如下图所示:我点了ok,出现了下面的画面:走到这一步,无论我按什么键,电脑统统没反映。好吧,让我们消灭这个问题! 很明显,问题出在我的ATI显卡驱动上。既然图形界面进不去,咱们就直接命令
2013-12-15 21:44:20 3898 2
原创 ‘PitchMatrix3D’不是‘Matrix3D’的成员——linux下编译碰撞检测包ColDet
ColDet是一个非常著名的开源碰撞检测包。我下载之后,使用包中自带的makefile.g++编译它,出现了一些bug:g++ -c -O2 -DGCC coldet.cppIn file included from box.h:28:0, from coldetimpl.h:28, from coldet.cpp:25
2013-01-19 14:23:35 1813
原创 linux下使用gcc编译Nate Robin的OpenGL教程
按照OpenGL编程指南的建议,我决定看一下Nate Robin的OpenGL教程,更确切地说,是编译运行该教程给出的transformation.c。虽然该教程已经给出了可以在windows下直接运行的exe文件,但是,请相信我,离开windows,在linux下用OpenGL会有不一样的感受。 其实,我是来帮你消灭bug的。 曾经以为,编译这个transfor
2013-01-12 10:36:22 6793 1
转载 GCC编译过程
原文来自博客园,http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421021.htmlgcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing)· 编译(Compiling)· 汇编(Assembling)· 链接(Linking)以hello.c为例子,在这四个步骤中可以设置选项分别
2013-01-12 09:29:13 1250
原创 No command 'setenv' found
今天又遇到一个能够充分证明自己是菜鸟的问题。 我要在ubuntu12.04下编译安装OpenInventor。阅读OpenInventor官方提供的说明README.FIRST,里面用到了一个命令:setenv。我在终端下敲setenv,提示No command 'setenv' found, did you mean: Command 'netenv' from package
2012-10-21 20:23:27 16783
原创 动态二维数组按下标访问
下面的代码先申请一个动态二维数组,然后按照下标访问其中的元素。这是个很简单的问题,我只是想强调一下,顺便辟谣。因为之前看网上某些文章说c++申请动态二维数组是不能按照下标访问的,还要经过自己将下标转换为相对地址,理由是动态申请的二维数组,虽然行内存储空间连续,但是行间不连续。下面的代码告诉你,你可以放心地使用下标,经过测试的,没问题。#include using namespace std
2012-09-30 11:16:37 3437
原创 关于数组作为形参以及二维整型数组的初始化
好久不写代码,今天动动手就出现了bug:关于数组作为形参的bug,以及二维整型数组初始化的bug。先看看代码吧:void test(int p[]){ int n = sizeof(p) / sizeof(p[0]); int m[n][n]; memset(m, 1, sizeof(p[0]) * n * n); for(int i = 0; i < n
2012-09-29 19:44:12 2632
原创 在ubuntu 12.04环境下配置Motion Strategy Library(MSL)
MSL是UIUC的Steve Lavalle等人用C++写的机器人运动规划仿真平台,其中给出了多种PRM算法和RRT算法的完整实现和仿真,是研究机器人运动规划的有力工具。UIUC最初提供的软件包是工作在redhat linux平台上的,后来国内的王伟博士成功将其移植到windows平台上。 然而,毫无疑问的是,linux对于我的吸引力远胜于windows。基于本人所使用的ubuntu 1
2012-08-25 11:12:20 3489 4
原创 关于Intel无线网卡在ubuntu 12.04下无法连网的问题
我的acer电脑上装的是一块intel的无线网卡,具体型号为Wireless WiFi Link 4965AGN,在系统升级为ubuntu 12.04之前,无线网卡工作一直很正常,能连网。但是自从用上了ubuntu 12.04,突然就不能连网了。我在网上找了很多方法,甚至按照某网站说的那样把系统自带的network manager卸掉,然后又安装了wicd来管理网络,但是依然不奏效,看来不是网络管
2012-08-17 11:39:12 8156 7
原创 中缀表达式转后缀表达式并求值
应杨茜小师妹的请求写了这个程序,找找当年的感觉,呵呵。我把中缀转后缀并求值的代码写成了一个类,注释写的很详细,不多说。首先是类声明:#ifndef _CALSUFFIX_H_#define _CALSUFFIX_H_#include #include #include using namespace std;//中缀转后缀并求值的类class CalSuffix{
2012-07-05 17:28:25 4006
原创 ubuntu 12.04编译安装FOX TOOLKIT
fox的好处很多,简洁、开源和跨平台无疑非常吸引人。不过,在ubuntu下自己动手编译并安装fox还是费了一番周折。安装成功这个界面库对我而言是相当振奋人心的,因为这是我第一次在linux体验自己动手编译安装软件的乐趣。 fox的官网是www.fox-toolkit.org,你可以自己从上面下载fox的tar.gz文件。我下载的是fox-1.6.45.tar.gz(STABLE)。
2012-06-29 20:23:03 2451
原创 gcc error: 'class A' has no member named 'b':误用多态导致的错误
我读本科时候所用的程序设计教材上有这么一句话:“指向基类对象的指针可以指向该基类的公有派生类对象(注意反过来不成立),这是运行时多态性的基础。指向基类对象的指针指向派生类对象后,可以访问派生类对象中由基类继承下来的成员,但不能访问那些派生类对象自己增加的成员。” 为了更好地说明问题,简单写几行代码。我犯的错误就在于忘记了红字标注的内容。首先是a.h:class A{
2012-05-04 17:30:45 14401
原创 gcc error: undefined reference to + 类构造函数
我遇到这个错误,纯粹是收到IDE的毒害,导致自己傻子似的不知道程序是怎样被编译执行的。 为了详细解释,先写了一个头文件a.h如下:class A{ public: int a; A(); ~A();}; 再写一个源文件a.cpp如下:#include "a.h"A::A(){ a = 1;}A::~A(){}
2012-05-04 00:29:06 8012 1
原创 类模板中的友元声明
template class TreeNode{public : ...... template void SwapLR (TreeNode * t);private: ......}; 类模板中的友元声明还是有点讲究的。 最初的代码如下所示:template class TreeNode{public : ......
2012-03-08 09:32:45 7480 6
原创 泛型编程使用gcc编译器时的两个注意事项:关于typename和迭代器
其实,我想说的是,在使用模板类时要注意一点,即何时必须使用typename而不是class来指定模板类型形参。其实在C++神作《C++ Primer (特别版)》的第16章“模板和泛型编程”中已经说得很明白了。下面,我结合自己遇到的问题来讲讲。template bool Complete (TreeNode * t){ ...... ...... for (dequ
2012-03-07 21:07:45 2361 1
原创 中点椭圆算法的实现
中点椭圆算法和中点画圆算法的原理挺相似的。决策参数的计算过程也相近。本人在codeblocks下用win32 api写了简单的演示程序,但是发现了一些问题,稍后提出。#include #include /* Declare Windows procedure */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM
2012-02-06 23:43:30 6507 2
原创 中点画圆算法的实现
算法来源于Donald Hearn和M. Pauline Baker合著的神作《计算机图形学》。程序在codeblocks下采用win32 api编程实现。#include #include /* Declare Windows procedure */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);fl
2012-02-05 22:25:38 2996
原创 Bresenham直线算法的实现
算法挺简单的,但是由于Donald Hearn和M. Pauline Baker的神作《计算机图形学》上只给了|m|=1时候的算法也顺带实现了。直接上程序了。#include #include /* Declare Windows procedure */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);v
2012-02-05 22:19:28 1255
原创 控制台下用Win32 API打开文件对话框
在控制台下打开对话框?!没错,这是完全可以的,实现起来也是相当简单,基本上连雕虫小技都不算。不过网上这样的例子还不是很多,我就把自己写的一个demo贴上来。参考了大名鼎鼎的《windows程序设计》中的一点代码。#include #include #include using namespace std;static OPENFILENAME ofn ;void PopFile
2012-01-05 22:13:05 6758 1
原创 warning: control reaches end of non-void function
用gcc编译一个程序的时候出现这样的警告:warning: control reaches end of non-void function它的意思是:控制到达非void函数的结尾。就是说你的一些本应带有返回值的函数到达结尾后可能并没有返回任何值。这时候,最好检查一下是否
2011-10-17 23:00:56 164209 10
原创 简单数据结构的实现之线索二叉树
线索二叉树,我写过的比较恶心的数据结构之一。我一直认为线索化应该是对二叉树的一个操作。可是,线索二叉树与普通的二叉树却实在大有不同。算了,不说了,上代码!#include using namespace std;#ifndef TREENODE_H_INCLU
2011-10-17 22:12:29 1134
原创 mips程序设计——直接插入排序的递归与非递归实现(spim模拟)
非递归形式源码:.dataarray:.space 1024 #开辟数组空间input_number_msg:.asciiz "Please input number of integers: " input_integer_msg:.asciiz "P
2011-10-12 17:34:09 6305
原创 简单数据结构的实现之二叉树
二叉树是一种有些特殊的数据结构,因为单独一个顶点也算二叉树。那么,我们不妨定义二叉树的结点类,而不是去定义整个二叉树类。下面是二叉树的节点类:#include using namespace std;#ifndef TREENODE_H_INCLUDED#defin
2011-09-26 09:51:29 968
原创 不要怀疑,结构体作为形参可以按引用传递!
写了个程序,出了问题,还以为结构体不能按引用传递。事实证明,我错了,我错误的原因也找到了,跟结构体的引用没有任何关系。罗嗦一点,把二叉树的非递归后序遍历代码和自己写的链栈GetTop函数贴在下面:template void PostOrderTraverse_I(TreeN
2011-09-26 09:42:42 6091
原创 Error: template argument uses local type
请看如下一段代码:template void PostOrderTraverse_I(TreeNode* t,void (*Visit)(ElemType& e)){ struct StackNode { TreeNode*
2011-09-25 21:45:04 3429
原创 gcc compiler warning: “will be initialized after/when initialized here”
先看看我为二叉树写的结点类:template class TreeNode{private: TreeNode* lchild; TreeNode* rchild;public: ElemType data; TreeN
2011-09-24 23:02:57 6538
Principles of Robot Motion Theory, Algorithms, and Implementations
2013-01-06
计算机图形学 第三版 电子工业出版社 赫恩
2012-01-19
机器人运动规划入门级
2011-10-15
深入理解计算机系统
2011-09-17
02-10年北大考研计算机数学基础试题
2011-04-30
opengl编程实例学习教程
2011-04-30
程序设计导引及在线实践
2011-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人