- 博客(104)
- 资源 (1)
- 收藏
- 关注
原创 Region proposal networks by faster rcnn
解析网络结构 http://blog.csdn.net/sloanqin/article/details/51545125anchor 产生 http://blog.csdn.net/xzzppp/article/details/52317863 http://blog.csdn.net/u012905422/article/details/52634208部分代码解析 http://www.c
2017-03-29 16:40:21
740
原创 编译caffe 遇到error LNK2019: 无法解析的外部符号 __imp__PathMatchSpecA@8,
这是在gflags中的,由于google为了兼容windows xp之前的系统 在config.h中有// Define if you have the <shlwapi.h> header file (Windows 2000/XP).#define HAVE_SHLWAPI_H而在windows 7 之后,这个已经被废弃了,因此我们注释掉就可以
2017-03-20 21:32:51
4031
1
原创 线程池
实现了一个最简单的线程池,没有考虑惊群现象#include "pthread.h"#include "semaphore.h"#include <list>#include <vector>#include <iostream>using std::list;using std::vector;struct thread_job{ void(*func)(void *);
2016-08-07 16:32:53
557
转载 C ++ 虚函数 (转)
第一节、一道简单的虚函数的面试题 题目要求:写出下面程序的运行结果?1、当上述程序中的函数p()不是虚函数,那么程序的运行结果是如何?即如下代码所示:class A { public: void p() { cout << “A” << endl; } };class B : public A { public: void p() { cout << “B” <<
2016-07-27 20:25:25
9547
转载 用ISO C++实现自己的信号槽(Qt另类学习)
有网友抱怨:哪个大牛能帮帮我,讲解一下信号槽机制的底层实现?不要那种源码的解析,只要清楚的讲讲是怎么发送信号,怎么去选择相应的槽,再做出反应。也就是类似于一个信号槽的相应流程。。。求解啊!!!看了源码,真的是一头雾水。。。撞墙的心都有了~~~~ 本文使用 ISO C++ 一步一步实现了一个极度简化的信号与槽的系统 (整个程序4个文件共121行代码) 。希望能有助于刚进入Qt世界的C++用户理解
2016-07-03 19:40:07
407
转载 深入理解C++中public、protected及private用法
初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。 这里我们首先要明白下面几点。 1.类的一个特征就是封装,public和private作用就是实现这一目的。所以: 用户代码(类外)
2016-07-02 10:30:52
462
转载 【STL】各容器成员对比表
摘自:http://www.cplusplus.com本文地址:http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832675.html
2016-06-28 09:40:30
602
转载 并查集详解 (转)
这个文章是几年前水acm的时候转的, 当时也不知道作者是谁, 要是有人知道的话说一下吧并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?) 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间
2016-06-22 15:17:37
449
转载 面试中的Singleton
面试中的Singleton 引子 “请写一个Singleton。”面试官微笑着和我说。 “这可真简单。”我心里想着,并在白板上写下了下面的Singleton实现:复制代码 1 class Singleton 2 { 3 public: 4 static Singleton& Instance() 5 { 6 static Singlet
2016-06-19 10:56:16
396
原创 了解c++成员函数调用以及引用
成员函数指针我一直有点困惑在c++的类中并不包含成员函数,比如class A{ public: void a(){cout<<"a";} void b(){} void c(){}};sizeof(A)=1; 然后A A1; A1.a/b/c()是可以工作的。c++是如何找到成员函数的,那我想函数总应该有一个地址,通过取得一个函数的地址来调用函数? 定义函数指
2016-06-17 21:41:02
6845
转载 windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTim
http://gmd20.blog.163.com/blog/static/168439232012113111759514/执行 10000000 次, 耗时 2258,369 微秒 QueryPerformanceCounter执行 10000000 次, 耗时 26,347 微秒 GetTickCount执行 10000000 次, 耗时 242,879 微秒 t
2016-06-03 21:35:12
1398
原创 manacher算法理解笔记
关键语句if (i < mx) P[i] = MIN(P[2 * id - i], mx - i);else P[i] = 0;i表示此时str中第i个字符,id为上一次半径最大,或者向右边延伸最长的中心位置 mx为以id为中心,p[i_id]为半径右边的边缘位置 2*id-i 表示当前i关于id的对应位置举例子 abacdcaba 处理后 $ a # b #
2016-05-31 17:07:22
420
原创 KFIFO无锁队列
linux内核中实现了以非常漂亮的无锁队列,在只有一个读者和一个写者的情况下,无需上锁,而拥有线程安全的特性,使得性能相比于加锁方式实现的队列提升数倍KFIFO的分析可见http://blog.csdn.net/chen19870707/article/details/41083183 这位作者讲的很清楚KIFIO可以实现无锁队列,但是为什么可以实现呢,通过这种方式为什么可以线程安全?换句话说,平
2016-05-24 19:01:49
2541
原创 c++11 中成员变量初始化的顺序
参考c++11FAQ https://www.chenlq.net/cpp11-faq-chs 11以后可以直接在类里面初始化成员变量,类似这样class A{ int a=1; const int b=a; double c=1.1; const double d=2.2;};static 仍然不行,因为不能进行多次赋值吧。而里面成员变量的赋值顺序则是按照声明
2016-05-20 17:16:15
961
转载 Trie树详解及其应用
http://blog.csdn.net/hackbuteer1/article/details/7964147 一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value
2016-05-09 09:48:01
349
转载 后缀数组
http://blog.csdn.net/hackbuteer1/article/details/7968623问题描述 给定一个字符串,求出其最长重复子串 例如:abcdabcd 最长重复子串是 abcd,最长重复子串可以重叠 例如:abcdabcda,这时最长重复子串是 abcda,中间的 a 是被重叠的。 首先,如果输入字符串存储在c[0..n-1]中,那么就可以使用类似于下面的代码
2016-05-09 09:46:49
302
原创 散列表学习总结
第一个散列函数 将值与键值相映射第二个处理冲突 开放地址发,也就是将所有的值都放在数组中,处理方式 线性探测、二次探测、多个散列函数链式解决法 为了平衡性能,同样可以采用多个散列函数,使得总体平衡完全散列法 其实就是局部hash啦,假设两层,第一层为指针数组,存放hash数组的首地址,第二层才是存储值的hash表,采用两个函数,第一个散列到那个hash表,第二个散列到一个坑里面
2016-05-09 09:45:51
567
转载 二叉树转双向链表
http://www.cppblog.com/whspecial/archive/2014/01/03/205123.html将排序二叉树转换成双向链表 Posted on 2014-01-03 00:41 whspecial 阅读(2169) 评论(0) 编辑 收藏 引用 所属分类: 算法&&数据结构 将排序二叉树转化成双向链表,应该是一道很常见的面试题目,网上的实现比较多,有用递归也有用
2016-05-08 12:21:39
1022
原创 二叉树 后序遍历 非递归总结
学习了这个作者的博客http://blog.csdn.net/hackbuteer1/article/details/6583988后序遍历是三种遍历中最难的一种(非递归)作者提供了一种非常简单的遍历方式,我稍作修改void PostOrder_Nonrecursive(BiTree T,vector<char>&s) // 后序遍历的非递归 { stack<BiTree> s1;
2016-05-08 12:16:36
1116
原创 select 源码学习记录
先记录一下学习的成果,慢慢完善 四个相关函数 fd_set的结构在上一篇中有讲,同时解释了为什么最大1024. -fd_set为1024/32的long型数组结构体。也就是结构体里面保存了long型数组int FD_ZERO(int fd, fd_set *fdset); int FD_CLR(int fd, fd_set *fdset); int FD_SET(int fd,
2016-05-06 21:12:28
2431
原创 VS2013 error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面) winnt.h 340
在编译邹老师的双目视觉软件中遇到的 环境vs2013 问题 PVOID64 未定义网上找了n多方法,什么调整顺序啦,修改winnt文件啦。。。。 最好还是不要修改winnt吧,都不太有效。然后自己在stdafx.h中加入 #define POINTER_64 __ptr64就可以了
2016-05-04 11:21:23
5817
2
原创 KMP next数组
最近看了这个,突然似乎理解了,记录一下 比如对于子串”abcdabceedabcd” 如何计算next数组,next数组决定字符比较是跳转的位置int next[15]={0};next[0]=-1;然后计算next[1] 前面只有一个a,那么next[1]=0; next[2] 由于前面的next[1]=0;因此,直接比较前面的一个字符‘b’和第一个字符’a’。不同,因此next[2]
2016-05-03 12:21:10
503
原创 堆排序的理解
主要看了这位大神的博客,地址>http://blog.csdn.net/morewindows/article/details/6709644/ 觉得讲的很清楚,不过还是记录一下堆的性质:(最大堆)父节点大于任何一个子节点,因此堆顶元素一定最大 (最小堆),父节点小于任何一个子节点,因此堆顶元素一定最小一般堆中不含重复数据吧~堆排序所谓堆排序,就是把满足性质的一个堆的堆顶元素取出,因为堆顶元素一
2016-05-03 12:09:48
497
原创 高效链表排序-归并算法
排序算法应该是最基础的了,快速、归并、选择、堆排序等等对于数组而言可以随机访问,那么对于链表呢,比如快排,两个指针分别网后往前走,而没有前驱指针的单向链表,无法完成这样的操作,当然了可以采用快慢指针的方式,在提交leetcode的时候,发现快排是会超时的。那么对于链表而言,可以采取一种怎么样的高效排序算法呢归并排序分而治之,分别拍好前后两个部分,然后合并两个有序链表,在合适不过,并且由于链表自带属性
2016-05-03 11:45:41
4674
原创 暴雪hash算法,(不理解?稍作改进?)
看了July关于暴雪Hash算法的讲解,有几个地方没理解。原文地址 http://blog.csdn.net/v_JULY_v/article/details/6256463http://blog.csdn.net/v_july_v/article/details/7085669暴雪hash与普通hash不同的是,使用了更好的hash值使用3个hash值,一个用于查找,两个用于
2016-04-29 12:06:05
1147
原创 牛客《今日头条》笔试题
最后一题 或与加如果x+y=x|y 表示x y满足或与加要求,输入两个数x,k,输出 第k小的y;示例 输入 5 1输出2,由于 5+1!=5|1 ,因此第一小的数为2分析:显然满足x+y=x|y的数,有部分0 1互补的特点,也就是只有在x(y)为0的比特位置,y(x)才能为1,不然相加是必然产生进位。因此(x&y==0)成立第k小,其实就是在x为0的位置进行二进制计数,比如100100011,第一
2016-04-28 09:06:47
5314
2
转载 socket中的短连接与长连接,心跳包示例详解
原地址http://blog.chinaunix.net/uid-26000296-id-3758651.htmlTCP连接简介当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源
2016-04-23 10:29:39
995
转载 (经典)tcp粘包分析
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一 .两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接
2016-04-22 21:53:12
468
转载 TIME_WAIT
来源于网络time_wait 2MSL主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失出现大量time-wait的原因?mysql。close为调用为什么需要time-wai
2016-04-22 21:48:50
328
转载 关于TCP的问题总结
原地址http://iam42.iteye.com/blog/1703351一. 什么是TCPTCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议(如IP协议)是非可靠的,其自身提供机制保证数据的可靠性传输。在目前的网络栈协议族中,在需要提供可靠性数据传输的应用中,TCP 协议是首选的,有时也是唯一的选择。TCP 协议是在最
2016-04-22 21:45:34
3018
原创 格雷码的几种实现方式 递归 迭代 递推
递归方式class GrayCode {public: vector getGray(int n) { // write code here vector res; if(n == 1) { res.push_back("0"); res.push_back("1");
2016-04-13 11:27:13
961
原创 c 语言unique 实现
类似去除空格的思路,不过空格是一个指定字符,在这里,去除的是与前一个字符相同的字符#include #include char * del_uniqe(char * const string){ int i = 0; int j = 1; int k = 0; // delete spaces among characters while (string[j] != '\0'
2016-04-13 11:24:22
3203
转载 linux下GDB教程(转)
GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能。而Windows下
2016-04-09 20:04:25
423
原创 iGraph vs2013编译
在官网下载好http://www.igraph.org/c/#downloads 工程后,并不能直接编译,不然会报错然后下载libxml2,给下载的工程添加头文件目录和库目录,然后注意添加一个宏PRPACK_IGRAPH_SUPPORT,就可以完成编译了如果在Ubuntu下就简单多了,安装好xmlib12-dev,直接配置编译安装就行
2016-03-27 10:10:55
936
转载 可视化的数据结构 - 各种算法动画演示
原地址 http://blog.csdn.net/bigleo/article/details/412196471. 可视化数据结构:http://www.cs.usfca.edu/~galles/visualization/Algorithms.html 2. C++实现的各种算法演示:http://people.cs.pitt.edu/~kirk/cs1501/animat
2016-03-15 14:13:08
6670
1
原创 vector resize reserve区别
摘自effective stlresize 强迫容器改变到包含n个元素的状态。在调用resize之后,size返回n。如果n比党钱大小要小,则容器尾部的元素将会被析构。如果n比当前的大小要大,则通过默认构造函数创建的新元素将被添加到末尾。如果n比当前的容量要大,那么在添加元素之前,将先重新分配内存reserve 强迫容器把他的容量变为至少是n,前提是n不小于当前的大小。这通常会导致
2016-03-09 15:41:47
492
原创 直线mian函数跳转到mainret = main(argc, argv, envp);
报错 堆栈溢出原因就是堆栈溢出了,由于静态分配的内存在栈上,如果代码中,静态分配的内存过多就会出现这种情况
2016-03-07 17:35:49
2595
原创 MATLAB存储矩阵到txt文本
一直使用fp=fopen('a.txt','w');fprintf(fp,'%g',mat());fclose(fp);在网上发现一种很好的办法,简单多了X=rand(4)dlmwrite('X.txt', X, 'precision', '%5f', 'delimiter', '\t')OK了
2016-03-06 21:44:07
16093
1
原创 c++ const 关键字
(1) const 修饰一个常量,表示不可修改比如修饰指针和引用修饰指针时const 靠近类型还是*决定不可变的是指针这个变量本身还是指针所指向的变量比如int b=100;const int *a=&b; //指针本身不可变,也即是不能实现a++,a--这种类似修改指针的行为int const *a=&b;//这里则是a指向的内容不能变,即(*a)之类的修改所指向变量的行
2016-03-05 16:01:00
390
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人