- 博客(41)
- 资源 (7)
- 收藏
- 关注
转载 string与wstring转换
转自:http://www.cnblogs.com/02xiaoma/archive/2012/07/18/2597576.html方法一:MultiByteToWideChar、WideCharToMultiByte 1 BOOL StringToWString(const std::string &str,std::wstring &wstr) 2 {
2015-02-07 16:57:51
598
转载 PRML读书会前言
转自:http://blog.sina.com.cn/s/blog_6dbdb8160102vft7.html读书会成立属于偶然,一次群里无聊到极点,有人说Pattern Recognition And Machine Learning这本书不错,加之有好友之前推荐过,便发了封群邮件组织这个读书会,采用轮流讲课的方式,如果任务能分配下去就把读书会当作群员的福利开始进行,分配不下
2015-02-07 16:54:13
992
原创 多学习,C++值得看的书籍
工作之余还是要多总结,多看书,查漏补缺;结合前期工作中的遇到的问题做好总结,知道自己哪里不足,并通过看书弥补不足;首先推荐《C++ Primer》,写的比较深入;还有一本《C++ Primer Plus》,写的比较基础;C++之父写的《C++程序设计语言》也不错。经典书籍《Effective C++》和《More Effective C++》Think in C++同样是另
2015-02-07 16:42:19
713
转载 C/C++变量在内存中的位置及初始化问题
首先我们给出内存布局高内存地址栈向下增长,可读可写可执行空洞向上增长堆向上增长,可读可写可执行BSS段(未初始化数据段)向上增长,可读可写不可执行.data 数据段
2014-06-12 18:10:49
762
转载 cppunit在vs2008下使用的环境搭建
1. cppunit在vs2008下使用的环境搭建1.1. 资源获取Cppunit建议使用较稳定的最近的版本,l 可以从网上下载:http://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/l 可以从分享目录下载:\\192.168.150.174\软件\cppunit-1.12.1.tar.gz
2014-05-21 11:02:33
686
转载 同步调用、异步调用和回调函数
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步
2014-05-16 14:35:52
1297
1
转载 CppUnit在VS2010上的正确使用
CPPUnit is a unit testing framework that is a port of the popular JUnitframework. Work on it has stalled and there has been no release since 2008. Work has continued on a fork called CPPUnit2.
2014-04-12 17:24:55
746
转载 减少文件间的编译依赖
为了更新某个类的某个功能实现,你可能需要在浩瀚 C++ 的代码中做出一个细小的修改,要提醒你的是,修改的地方不是类接口,而是实现本身,并且仅仅是私有成员。完成修改之后,你需要对程序进行重新构建,这时你肯定会认为这一过程将十分短暂,毕竟你只对一个类做出了修改。当你按下“构建”按钮,或输入 make 命令(或者其他什么等价的操作)之后,你惊呆了,然后你就会陷入困惑中,因为你发现一切代码都重新编译并重新
2014-03-14 10:35:04
1259
转载 二维数组和二级指针
前两天写个程序,传参数的时候想传个二维数组进去,结果悲剧了,函数写成Fun (int **p){},原来没有这么写过,以为这么写也是对的,结果错了,查了些资料,做个总结。Fun (int **p){}这里面的int **p //这里的p不是二维数组的指针,而是指向指针的指针,即二级指针。正确的二维数组的指针应该是:Int a[2][2];Int (*p)[2];//定义时无论数组维数,
2013-09-13 22:45:45
587
转载 两个栈实现队列,两个队列实现栈
为说明思想,假设队列、栈都很大,不会出现满的情况。两个栈实现队列//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);
2013-09-06 21:35:48
544
转载 用两个栈实现一个队列
用C++描述,题目大致是这样的: 已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue)出队(Dequeue)方法。 class Stack{…public: void Push(int x); // Push an element in stack; int P
2013-09-06 21:00:36
575
转载 判别模型和生成模型
摘要】 - 生成模型:无穷样本==》概率密度模型 = 产生模型==》预测 - 判别模型:有限样本==》判别函数 = 预测模型==》预测【简介】简单的说,假设o是观察值,q是模型。如果对P(o|q)建模,就是Generative模型。其基本思想是首先建立样本的概率密度模型,再利用模型进行推理预测。要求已知样本无穷或尽可能的大限制。这种方法一般建立在统计力学和b
2013-07-02 15:54:11
691
转载 PCA的数学原理
PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。当然我并不打算把文章写成纯数
2013-06-28 14:09:17
6607
1
转载 程序员必知:平凡而又神奇的贝叶斯方法
0. 前言 1. 历史 1.1 一个例子:自然语言的二义性 1.2 贝叶斯公式 2. 拼写纠正 3. 模型比较与贝叶斯奥卡姆剃刀 3.1 再访拼写纠正 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(BayesianOccam’s Razor) 3.3 最小描述长度原则 3.4 最
2013-06-22 13:07:01
2876
转载 八大排序算法浅析
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关
2013-06-13 18:33:02
876
转载 排序算法--基数排序
经典排序算法 - 基数排序Radix sort原理类似桶排序,这里总是需要10个桶,多次使用首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数例如待排序数组[62,14,59,88,16]简单点五个数字分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样| 0 | 0 | 62 | 0 | 14 | 0
2013-06-13 18:24:53
1058
转载 排序算法--堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节
2013-06-10 19:06:35
546
转载 排序算法--归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//将有序数组a[]和b[]合并到c[]中void Memery
2013-06-09 18:58:33
527
转载 排序算法--希尔排序
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因
2013-06-07 10:24:52
558
转载 排序算法--选择排序
直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。1. 初始时,数组全为无序区为a[0..n-1]。令i=02. 在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。
2013-06-07 10:11:11
446
转载 排序算法--冒泡排序
冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码://冒泡排序1void BubbleSort
2013-06-07 09:33:17
492
转载 排序算法--直接插入排序
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3.
2013-06-06 21:51:08
488
转载 排序算法--快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快
2013-06-06 20:57:39
481
转载 机器学习之K-means算法:深入浅出K-Means算法
在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。问题K-Means算法主要解决的问题如下图所示。我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?于是就出现了我们的K-Means算法(Wikipedia链接)K-Means
2013-05-17 19:28:29
768
转载 机器学习之K-means算法
K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般。最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用。看了Andrew Ng的这个讲义后才有些明白K-means后面包含的EM思想。 聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,比如假设
2013-05-17 19:26:33
609
转载 机器学习之KNN 算法
邻近算法 KNN算法的决策过程k-Nearest Neighbor algorithm右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。K最近邻(k-Nearest Neighbor,KNN)分类算法,是
2013-05-17 16:37:12
1275
转载 Python:Mysql编程(基础操作命令)
导入模块import MySQLdb操作数据库1. 连接数据库conn = MySQLdb.Connection(host='host', user='user', passwd='passwd', db='db')conn = MySQLdb.connect(host='host', user='user', passwd='passwd', db='db')这两种方法都
2013-05-08 20:07:37
701
转载 贝叶斯估计与最大似然估计
极大似然估计极大似然估计的基本想法是:我们所看到的,就是最可能发生的。所以通过最大化实验数据发生的概率P(x|θ) (其中参数θ 是未知的),取极值时对应的θ ^ 即为最大似然估计。 贝叶斯估计P(θ|x)=P(x|θ)P(θ) ∑ θ P(x|θ)P(θ) θ 表示一个事件发生的概率,例如扔一个硬币的结果正面朝上的概率,这个概率θ
2013-05-06 13:18:50
2303
转载 数学之美番外篇--贝叶斯方法
概率论只不过是把常识用数学公式表达了出来。——拉普拉斯记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。——题记目录0. 前言 1. 历史
2013-05-03 13:37:22
919
转载 拉格朗日乘数法
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式约束,可以应用KKT条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。KKT条件是拉格朗日乘子法的泛化。之前学习的时候,只知道直接应用两个方法,但是却
2013-05-03 13:19:20
1261
转载 字符串匹配的KMP算法
举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer
2013-05-03 12:31:57
474
转载 用C语言描述数据结构
学好计算机,主要要从三个方面做起,其中,第一步就是要学好各种语言,这是第一步,对各种语言有一个大体的了解;然后就是数据结构了,它是计算机中的一门核心的课程,也是一门信息计算;在最后本人认为就是算法了,它也是这三部中最难得一步了,要学好计算机,做一名优秀的程序元,这三步是最基本的,然后再是在他们的基础上层层深入。 在过去的一年之中,我对计算机的语言有了一个大体的了解,在前一段时间,我自学了
2013-05-02 16:55:22
794
转载 深入浅出选择类排序算法(简单选择排序,堆排序)
一.简单选择排序: 简单选择排序的基本思想是:一次选定数组中的一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上的数。(也即每次从数列中找出一个最小的数放到最前面来,再从剩下的n-1个数中选择一个最小的,不断做下去。 通俗的说
2013-04-25 18:53:34
534
转载 深入浅出交换类排序算法(冒泡排序,快速排序)
1) 冒泡排序 冒泡排序在众多排序算法中算比较简单的一个, 基本思想是, 重复的进行整个数列的排序, 一次比较两个元素(两两排序),如果它们顺序不符合就交换,重复这样直到数列没有再需要交换的数为止(结束条件).就好像气泡一样, 轻的气泡会往上漂浮,在不断漂浮的过程中,发生了两两交换过程, 所以叫冒泡排序. 其实也可以用生活中的例子理解, 就比如: 在军训排队时, 按个子高
2013-04-25 18:51:33
551
转载 深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)
1) 直接插入排序: 通俗的生活例子:比如大家在玩牌的时候, 每次从桌面拿到一张牌后, 然后把它放到手里牌合适的位置(这个合适位置的选择,需要将拿到的牌和手中的牌进行比较). 假如有5张牌, 牌序为 J, 10, K, Q, A (假设排列在前面的牌先拿到): 如图所示, 开始拿到”J”这张牌, 第一张牌肯定是有序的,所以序列为: 已排序的系列
2013-04-25 18:48:34
1184
转载 python正则表达式
1. 正则表达式基础1.1. 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用
2013-04-22 16:53:44
432
转载 Python的类
代码如下:class Account(object): "一个简单的类" account_type="Basic" def __init__(self,name,balance): "初始化一个新的Account实例" self.name=name self.balance=balance def deposit(self,amt): "存款" self.b
2013-04-21 20:17:50
555
转载 海赛(Hesse)矩阵
在数学中,海色矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,此函数如下: 如果f所有的二阶导数都存在,那么f 的海色矩阵即:H(f)ij(x) = DiDjf(x) 其中 ,即 (也有人把海色定义为以上矩阵的行列式)海色矩阵被应用于牛顿法解决的大规模优化问题。 混合偏导数和海色矩阵的对称性海色矩阵的混合偏导数是海色矩阵主对角线上
2013-04-19 20:33:36
6402
转载 卡尔曼滤波器及代码实现
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是
2013-04-16 18:41:36
1173
转载 MySQL数据库基础
1 数据库基础 一、数据库与数据库管理系统 1.数据库(DB):存放数据的仓库,从广义来说,数据不仅包括数字,还包括了文本、图像、音频、视频。 2.数据库管理系统 数据库管理系统(DBMS)是管理数据库的系统,它按一定的数据模型组织数据。DBMS应提供如下功能: ●数据定义功能可定义数据库中的数据对象。 ●数
2013-04-15 19:12:27
2076
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人