自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 朴素贝叶斯分类器

朴素贝叶斯方法总结

2014-06-06 00:26:35 2324

原创 统计基础

统计中的几个常用分布总结

2014-06-05 01:12:05 1514

原创 凸函数

凸函数基本概念

2014-06-03 20:22:32 7764

原创 Hello Mahout

Hello Mahout1.新建java project测试代码:import org.apache.mahout.cf.taste.impl.model.file.*;import org.apache.mahout.cf.taste.impl.neighborhood.*;import org.apache.mahout.cf.taste.impl.recommender.

2014-06-02 00:04:46 823

原创 shadow map

Shadow mapping 的原理: 一个物体之所以会处在阴影当中,是由于在它和光源之间存在着遮蔽物,或者说遮蔽物离光源的距离比物体要近,这就是 shadow mapping 算法的基本原理.Pass1: 以光源为视点,或者说在光源坐标系下面对整个场景进行渲染,目的是要得到一副所有物体相对于光源的 depth map (也就是我们所说的shadow map),也就是这副图像中每个象素的值

2013-07-03 21:08:25 2240

原创 opengl shader 使用札记

一、shader的使用步骤创建shader1、创建一个shader对象GLuint glCreateShader(GLenum shaderType); 2、将shader源代码传入前面创建的shader对象void glShaderSource(GLuint shader, int numOfStrings, const char **strings, int *l

2013-07-03 20:37:54 10847

原创 shadow projection

1、概述shadow projection,又可成为planar shadow, 这是一种非常简单的绘制阴影的方法。主要应用的应用场景:物体在平面投射阴影。主要思想:把阴影看作是物体在平面上的投影(projection),然后将该projection绘制出来即可。2、具体方法具体实现:给定光源的位置L,物体上的任意一点V, 平面s的法向量N. 求V在平面s上的投影点

2013-07-02 09:52:02 2416

原创 CUDA使用纹理内存

纹理内存位于设备端,global memory也位于设备端,但是texture memory的访问速度较global memory要快。因为纹理内存有cache, 只有当cache没有命中的时候才会去访问device memory,否则访问texture cache具有很小的延迟。另外,texture cache的2D定位已经进行了优化,对于同一线程束的线程访问位置临近的texture m

2013-07-01 14:17:37 10873 7

原创 cuda与opengl互操作之PBO

PBO(像素缓冲区对象)也可以映射到CUDA地址空间,CUDA的kernel函数可以讲计算结果直接写到PBO中,然后将 PBO的内容复制到texture,进行绘制。具体使用步骤:1、创建PBO // Generate a buffer ID called a PBO (Pixel Buffer Object) glGenBuffers(1,pbo); // Make this

2013-07-01 10:35:50 6750

原创 cuda与opengl互操作之VBO

opengl的缓冲区可以映射到CUDA的地址空间,当做global memory被访问。这样做可以使计算得到的数据直接可视化,提升速度。因为数据存储在设备端,没有设备端到主机端的传输耗费,不论计算还是可是化都相当的快。具体使用步骤:1、创建VBOglGenBuffers(1, vbo);glBindBuffer(GL_ARRAY_BUFFER, *vbo);glBuff

2013-07-01 09:53:31 6669 1

原创 FBO

简介:OpenGL默认的帧缓存包括:颜色缓存、深度缓存、模板缓存、累积缓存。OpenGL扩展帧缓存(即FBO)包括:颜色缓存、深度缓存、模板缓存。用途:1、渲染到纹理:将纹理图像关联到帧缓存,opengl执行渲染到纹理2、离线渲染:将renderbuffer关联到帧缓存,opengl执行离线渲染下面这幅图显示了帧缓存对象、纹理对象和渲染缓存对象之间的联系。多多个纹理

2013-06-12 15:59:53 4097

原创 PBO

PBO(Pixel Buffer Object),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(Direct Memory Access)的技术,无需CPU介入2、 高效并不在于传输更快,而在于与硬件相关的异步调用方式,调用之后CPU即返回执行其它操作(使用DMA方式的传输、由OpenGL直接控制)3、在单个PBO情况下并不能得到很好的效果,毕

2013-06-12 14:01:41 5715

原创 VBO

1、什么是VBO?顶点缓冲区对象VBO(Vertex Buffer Object), 将顶点数组存储在高性能的显存中,提升的绘制的速度。2、why?顶点数组可以减少函数调用、去除冗余的共享顶点;但是顶点数组存在自身的缺点,顶点数组是在客户端,这样数组中的数据每次被访问的时候都要传输到服务器端。另外,显示列表是服务器端的函数,它没有数据传输耗费的问题。但是,每当显示列表被编译

2013-06-11 23:42:02 2274

转载 一道笔试题

战报交流:战场上不同的位置有N个战士(n>4),每个战士知道当前的一些战况,现在需要这n个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,使得战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。先思考这么个问题:有a个node的cluster1和b个node的cluster2

2013-05-12 13:41:43 1569

原创 链表小结

本章主要内容如下:* 带头结点的链表反转* 不带头结点的链表反转* 链表有环1、  带头结点的链表反转思路:遍历每个节点,将其插入到头结点跟第一个节点之间,使其成为新的第一节点,其他的相应后移,即可实现。复杂度O(n)#include#includestruct ListNode{ int data; struct ListNode *next;};

2013-05-12 13:12:41 675

原创 最长对称子串

题:给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度。回文就是正反读都是一样的字符串,如aba, abba等。例如:aaaa与abab:最长的回文串长度分别为4、3。解法一:暴力方法---从外往里对每一个字符,从该字符往右走,同时从串的结尾往中间走。若相遇,则对称;否则,不对称。复杂度O(n3)#include #include

2013-05-07 21:39:36 1902

原创 你到底占多大内存?---字符变量

在c/c++中,经常会遇到考察一个变量占多大的内存,往往会涉及到很多的细节问题,这里就进行总结一下。1、关于字符变量的内存占用大小2、关于struct的内存占用大小3、关于enum的内存占用大小4、关于union的内存占用大小5、关于类的内存占用大小1、字符数组和字符串首先区分两个名词:字符数组和字符串字符数组:首先它是一个数组,然后它存储的元素是字符。如c

2013-05-05 20:40:51 7846

原创 KMP算法

KMP算法关键是构造next数组。其主要思想是寻找前缀串和后缀串的相等的最大长度。当next[j]=k时,p(0)...p(k-1)=p(j-k)...p(j-1)对于next[j+1]有两种情况:A. p(k)=p(j), 则next[j+1] = k+1B. p(k)!=p(j), 则令k=next[k]继续匹配,直到next[k]=-1;#includeusin

2013-05-04 20:05:12 766

原创 C语言的外部变量

C语言的存储类型可分为:extern、auto、static、register。外部变量定义在函数之外,通过同一个名字对外部变量的所有引用(即使这种引用来自于单独编译的不同函数),实际上都是引用同一个对外部变量的所有引用(C标准中把这一性质称为外部链接)。因此外部变量可以在全局范围内访问。外部变量的初始化:    1、初始化表达式必须是常量表达式;    2、只能初始化一次;

2013-04-30 21:21:12 31082 2

原创 斐波那契数列

当n=0时,f(n) = 0     当n=1时,f(n) = 1当n>1时,f(n) = f(n-1) + f(n-2)递归算法:int fun(int n){ if(n <= 0) return 0; if(n == 1) return 1; return fun(n-1)+fun(n-2);}备忘录方法:#include us

2013-04-30 14:04:10 2051 1

原创 动态规划&备忘录方法&递归方法

动态规划的基本思想是,将原问题拆分为若干子问题,自底向上的求解。其总是充分利用重叠子问题,即通过每个子问题只解一次,把解保存在一个表中,巧妙的避免了子问题的重复求解。递归方法,采用的是自顶向下的思想,拆分为若干子问题,但是造成了子问题的重复求解。备忘录方法,采用的也是自顶向下的思想,但是该方法维护了一个记录子问题解的表,虽然填表动作的控制结构更像递归方法,但是的确避免了子问题的重复求解。

2013-04-30 13:22:16 7671

原创 字符串的相似度

许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:  1.修改一个字符(如把“a”替换为“b”);  2.增加一个字符(如把“abdd”变为“aebdd”);  3.删除一个字符(如把“travelling”变为“traveling”);  比如,对于“abcdefg”和“abcdef

2013-04-30 11:02:18 1563

原创 PBRT-v2在windows下的配置与使用

配置:1)从官方网站下载PBRT软件包:http://www.pbrt.org/downloads.php,选择pbrt-v2-src.zip,for Windows。将压缩包解压到某一目录下,推荐解压到硬盘的根目录,例如D:\pbrt-v22)使用Microsoft Visual Studio 2008打开压缩包中的src/pbrt.vs2008/pbrt.sln,选择Deb

2012-12-14 14:10:10 4340 5

原创 【条款12】Copy all parts of an object

一:"Copying"函数应该确保赋值“对象内的所有成员变量”以及“所有base class成分”class derived:public base{public: derived(const derived& rhs); derived& operator=(const derived& rhs);private: int data;};derived::derived(co

2012-10-26 19:52:30 498

原创 【条款11】Handle assignment to self in operator=

在重载“operator=”时,若类中涉及到了资源的动态分配,则一定要考虑自我赋值的情况,否则容易造成内存泄露。下面是一个不安全的示例:class A{public: A& operator=(const A& a) { delete data; size = a.size; data = new int[size]; for(int i=0; i<size; i++

2012-10-26 19:38:16 531

原创 【条款10】Have assignment operators return a reference to *this

运算符重载的一个原则就是:与内置类型的运算符具有一致的性质。对于赋值操作符,内置类型可以连锁赋值,即x=y=z=1;为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符的左侧实参。class A{public: A& operator=(const A& a) { ... return *this; } A& operator+=(co

2012-10-26 19:02:46 638

原创 【条款9】Never call virtual functions during construction or destruction

"在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class"class base{public: base(); virtual void log() const = 0;};base::base(){ ... log();}class derived:public base{public: virtual void log()

2012-10-26 18:52:18 543

原创 【条款7】Declare destructors virtual in polymorphic classes

class base{public: base() {} ~base() {}};class derived: pubic base {...};base *ptr = new derived();delete ptr;一:这时候就会出现问题,因为一个derived的对象经由一个base class指针删除,而其析构函数又是non-virtual,所以会造成derived c

2012-10-26 18:12:53 476

原创 【条款6】Explicitly disallow the use of compiler-generated functions you do not want

我们都知道,如果不想让一个class具有某一功能,只要不声明具有该功能的函数成员即可。可是对于copy construct 和 copying assignment确不是这样的,因为即使你不声明这两个函数,编译器也会自动为你生成。所以如果你想让class不具有这个功能,必须要做点工作了。方法是:1.将copy construct和copying assignment声明为private;

2012-10-26 15:38:09 439

原创 【条款5】know what functions C++ silently writes and calls

如果没有为一个类声明construct function、copy construct function、copy assignment function、destruct function,编译器就会为之声明默认版本。class Empty{public: Empty() {...} Empty(const Empty &ths) {...} ~Empty() {...} Emp

2012-10-22 14:36:22 552

原创 自己动手写linux静态库文件

一、概述1、库文件分为动态库和静态库,在linux下动态库以.so结尾,静态库以.a结尾,但二者都是以lib开头。2、动态库与静态库的区别在于:如果程序是在编译时加载库文件的,就是使用了静态库。如果是在运行时加载目标代码,就成为动态库。换句话说,如果是使用静态库,则静态库代码在编译时就拷贝到了程序的代码段,程序的体积会膨胀。如果使用动态库,则程序中只保留库文件的名字和函数名,在运行时去查找

2012-07-24 20:22:53 668

转载 centos6.2挂载NTFS

http://www.wallei.com/2012/03/centos6-2-auto-mount-an-ntfs-partition.html

2012-06-24 15:31:36 844

原创 VS2010下如何配置CUDA4.2

经过各种努力,终于搞定一个CUDA工程。闲话少说,进入正题。首先,新建一个win32 console application。记住,要建一个空的工程,不能带预编译头。然后,添加.cu文件。下面就是各种繁琐的环境配置了。第一:右键单击工程的名字,在弹出的快捷菜单中,选择 Build Customizations,然后勾选第一项,如下图

2012-06-07 20:05:24 6714 7

转载 centos6.2安装中文输入法

yum install "@Chinese Support"

2012-03-11 20:11:39 1306

转载 centos6.2下的codeblocks配置opengl环境

首先查找Mesa相关的包:    yum list mesa*然后安装这些包:    yum install mesa*安装完成后,我们就拥有了一个基础的OpenGL开发环境了。是仅仅是基础的开发环境是不够的,一般来讲,我们还要安装一个叫做Glut的库,这是一个OpenGL的辅助库,可以让我们创建与平台无关的OpenGL窗口。因此,安装Glut也是必要的。 Glut有很

2012-03-11 20:07:59 3131

转载 centos6.2安装codeblocks过程

装了好多次系统,每次装的时候都有要在网上各种查,太麻烦了。所以决定记录一下,以后用到的时候会方便一些。当然,本文来源于网络,取百家之长,最重要的是本人已验证过,说明对本系统是可行的。在CentOS6.2上安装Codelocks的过程。1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum inst

2012-03-11 20:04:09 6166 6

转载 和机器学习和计算机视觉相关的数学

1. 线性代数 (Linear Algebra):我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是Introduction to Linear Algebra (3rd Ed.)  by Gilb

2011-10-22 16:05:01 1171

原创 学习笔记之string

本节主要讲了c++标准库里的string类型。在c++中有两大数据类型:一类是基本数据类型,像int、char、double等;另一类就是标准库里的抽象数据类型,像string、vector等,抽象数据类型是对数据(广义的数据)对象的更高级别的抽象,通过使用这些类型,程序员可以忽

2011-10-10 23:17:33 560

原创 虚拟机上的Red Hat安装gcc

在Red Hat上安装gcc破费周折,在网上查阅了数种方法,皆无果而终。索性自食其力,最后终于安装上去了。遂撰文分享之。 背景介绍:从网上下载Red Hat Enterprise Linux 5的光盘镜像,镜像文件放在D盘,然后直接从硬盘安装Red Hat。安装完毕后,再

2011-10-07 15:43:59 5027

原创 Vm-tools的安装

有了上一次的经验,安装vmtools就显得轻松多了。废话不多说,具体过程如下:    首先,选择镜像,如下图所示,注意这次选的是linux.iso,这个文件在你的虚拟机安装目录文件中。确定以后,桌面上又出现了光盘图标,这是你有可以从中读取文件了。其次,将 VM

2011-10-07 15:43:00 2915

3D游戏编程大师技巧(中文版)

游戏编程的经典之作,入行者必看啊。终于找到中文版的,供大家分享~

2012-04-07

空空如也

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

TA关注的人

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