自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python多进程并发之multiprocessing

multiprocessing.Processmultiprocessing包是Python中的多进程管理包。它与 threading.Thread类似,可以利用multiprocessing.Process对象来创建一个进程。该进程可以允许放在Python程序内部编写的函数中。该Process对象与Thread对象的用法相同,拥有is_alive()、join([timeout])、run()、s

2016-12-12 16:22:57 10817 1

转载 Python并发之GIL的限制

GIL是什么首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。有名的编译器例如GCC,INTEL C++,Visual C++等。Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。像其中的JPy

2016-12-12 10:10:13 3119 1

原创 python对象引用引起的问题

我们都知道python中一切皆是对象,这句话我记得很清楚,但是平时用起来确也容易混淆。今天遇到一个bug,大概情况是这样:a = [1,2,3]b = [11,22,33]c = [a,b]print c# c = [[1, 2, 3], [11, 22, 33]]我在一个文件中修改了a,而在另一个列表中读c,结果发现c总是不对…..检查好久才想起来了,c中存贮的a应该是a的引用,也就是pyt

2016-11-17 22:24:31 963

原创 排列组合算法

排列和组合是两种不同的算法,排列所求的k个数,数的排序不同则为一种不同情况,总共有k!中可能情况求全排列最常用的算法就是按照字典式排序(STL),字典式排序从第一位开始找最小的数,然后依次找每一位能够存在的最小的数(和已存在的排列不重复),主要步骤如下(以123456为例):第一个数是每一位能取到的最小的数,也就是123456从第二个数开始就按照以下算法来寻找: 在上一个排列中, 找到最后一个

2016-10-21 13:45:41 1791 1

原创 python装饰器简介

python装饰器的概念建立在python中,一切皆是对象的基础上。正是因为一切皆是对象,所以函数可以作为参数传入,可以添加函数的功能。装饰器简单来说就是对函数进行修饰,多用于添加函数的功能。接受和处理函数对象。企业级应用中最常用到,比如引入日志,增加性能检测功能,事务处理能力等等。下面一步步来理解装饰器1. 首先是最简单的python函数def foo(): print "I am foo

2016-09-21 11:51:45 743

原创 python比较函数min

好久没写python,结果今天吃了一个大亏,唉~~在Python3.x的世界里,cmp函数没有了。那么sorted,min,max等需要比较函数作为参数的函数该如何用呢?以min函数为例进行说明基础用法min(iterator)min(arg1, arg2)>>> l = [2,4,1,6,23,7,232,42]>>> min(l)1>>> min(1,5,7)1这里要说明的是dic

2016-09-20 20:40:40 5539

转载 Caffe:深度学习中 epoch,batch size, iterations的区别

转自:http://blog.csdn.net/qq_18515405/article/details/51821125在大部分深度学习架构中都抛不开三个概念epoch,[batch size], iterations;接下来就对这三个概念逐一解释一下one epoch:所有的训练样本完成一次Forword运算以及一次BP运算batch size:一次Forword运算以及BP运算中所需要的训

2016-09-17 11:42:25 6536 2

原创 C++类成员函数转换成函数对象

C++中,类的成员函数(member_function)通常不能直接作为函数对象来使用,最常见的就是创建线程时,不能使用非静态的成员函数来初始化一个线程。这个主要是因为没有传入this指针,而下面的转换或者绑定,本质是将类对象指针传入或者说绑定到参数上C++提供这方面的转换方式,最常用的就是mem_fn(since C++11)和bind 更多关于函数适配器的说明和用法,请参考这篇博文me

2016-09-15 19:39:27 3272

转载 C++11并发/多线程编程系列(3)

转自:http://www.cnblogs.com/haippy/p/3237213.htmlstd::mutex 详解Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mutex> 头文件中,所以如果你需要使用 std::mutex,就必须包含 <mutex>头文件。 pthread下有pthread_mutex<mutex> 头文件介绍Mute

2016-09-14 18:25:05 1550

转载 C++11并发/多线程编程系列(2)

转自http://www.cnblogs.com/haippy/p/3236136.htmlstd::thread详解std::thread在头文件<thread>中声明,因此使用 std::thread 时需要包含 <thread>头文件。 default(1) thread() noexcept; initialization (2) template <class Fn, cl

2016-09-14 17:28:36 1172

转载 C++11并发/多线程编程系列(1)

转自:http://www.cnblogs.com/haippy/p/3235560.html1. 与 C++11 多线程相关的头文件C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是<atomic>, <thread>, <mutex>, <condition_variable>, <future><atomic>:该头文主要声明了两个类, std::atomic 和 std::

2016-09-14 16:58:43 1059

原创 KMP字符串匹配

经典的字符串匹配算法,原理什么的网上一堆,主要是记录一下代码,有些忘了…..原理摸我// KMP算法要点:// // 移动位数 = 已匹配的字符数 - 对应的部分匹配值// // 部分匹配值就是一个字符串"s0s1s2.....sn"(已匹配的字符构成)的前缀和后缀的最长共有元素的长度// // 先求目标子串的匹配值表, 然后进行匹配, 匹配过程中, 根据匹配值表和已匹配字符数来移动

2016-09-09 11:51:14 453

原创 GCC编译器一些参数区别(-I -l -L)

我们用gcc编译程序时,常常会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I/home/hello/include -L/home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include,表示将/home/hello/include目录作

2016-09-07 10:26:24 16208

转载 数据库事务及ACID特性浅谈

1. 事务定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析。// 创建数据库 create table account( idint primary key not null, namevarchar(40), moneydouble

2016-08-30 17:02:58 827

原创 python使用generator生成list

list官方文档:Lists are mutable sequences, typically used to store collections of homogeneous items (where the precise degree of similarity will vary by application).class list([iterable])Lists may be con

2016-08-19 11:46:50 14717

原创 C++ int和string相互转换

别管什么效率了,先挑最简单用着int转stringstd::stringstream ss;int a = 123;ss << s;std::string str;ss >> str;string转intstd::string str("123")int n = atoi(str.c_str())

2016-08-16 20:19:07 526

原创 Faster-RCNN训练自己的数据集

就目前我在了解到的资料来看,训练RCNN系列,一般有两种思路:修改CNN的工程代码,适应自己的数据集格式将自己的数据格式做成VOC2007形式的数据集从工作量来看,无疑后者更容易一些,本文的思路也是如此。首先是图片的命名格式,虽然图片的命名理论上不会影响训练。因为训练的数据都是从txt文件中读取图片的名称。但是为了统一数据集,仍然建议批量、有规律的命名数据图片。我的数据集是jpg格式,和PA

2016-08-15 19:34:11 18237 4

原创 导出函数__declspec(dllexport)

一般而言,动态链接库中定义有两种函数:导出函数(export function)和内部函数(internal function)。 导出函数可以被其它模块调用,内部函数在定义它们的DLL程序内部使用。 在要输出的函数、类、数据的声明前加上__declspec(dllexport)的修饰符,表示输出。有导出就有导入__declspec(dllimport),声明某个类、函数是从dll中导入

2016-08-14 14:12:26 15632

原创 git子模块更新的两个错误解决

最近在clone faster-RCNN工程时,出现了两个问题,记录一下解决方法。1. 问题描述因为网络原因,我在Linux上clone这个仓库时,总是连接失败,导致我不得不在另一台电脑上clone。然后我将整个文件夹直接scp到linux上时,进行子模块的更新时,出现了第一个问题:fatal: Not a git repositor在解决第一个问题时,又出现了第二个问题:fatal: Needed

2016-08-08 15:44:15 8574

原创 python异步IO和协程

本文对python协程做一些总结,来自平时的学习和一些博客资料1. 异步IO关于异步IO的讲解,网上资料太多了,我以前的文章也提到过,此处只做一些简单介绍:异步IO采用消息循环的模式,重复“读取消息—处理消息”的过程消息模型解决等待IO操作的问题: 程序发出IO请求,直接结束本轮消息处理,进入下一轮消息的处理当IO操作完成守,将收到一条IO完成的消息,处理该消息时获取IO操作的结果在IO操

2016-08-04 10:18:42 4244

原创 C++之STL查找

本文是对STL中常用的查找算法做个小结。可供查找的算法大致有:count:计算对象区间中的数目find:返回第一个对象的位置binary_search:判断是否存在某个对象lower_bound:返回等于或者大于指定对象的第一个位置upper_bound:返回大于对象的第一个位置equal_range:返回等于指定对象的元素的区间位置(构成一个pair)这些查找算法需要序列式容器,或者

2016-08-02 18:46:31 1134

原创 python导入本/子目录模块

1. python中的模块 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。 只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用。 上面这段描述最重要的两个点:py文件是一个模块导入的模块必须在sys.path中__init__.py 文件中会写入包的一些信息,包括导入是应该导入哪些模块等等2.

2016-08-01 11:21:29 9205

原创 C++中operator<<运算符重载注意事项

我们在定义一个类的时候,为了使用方便,希望通过<<打印类的相关信息,需要重载<<运算符一般运算符重载都设计为类的member function,但是operator<<却不能这样设计,Essential C++中解释如下: 为什么不把output运算符设计为一个member function呢?因为作为一个member function,其左侧操作数必须是隶属同一个class之下的对象,如果ou

2016-07-24 11:33:33 3596

原创 C++模板定义和实现分离导致的编译错误

今天在实现一个二叉树的时候,用到了模板,没在意,和平时一样写了两个文件:BinaryTree.h,BinaryTree.cpp。思路和平时一样,h文件中定义了模板类,然后在cpp文件中实现了一些功能函数。然后在test.cpp中测试,遇到了一些问题、问题出现如下:使用g++直接编译的时候提示,基本上都是undefined reference to错误:test_binarytree.cpp:(.

2016-07-21 20:59:07 1578

原创 C++虚函数声明和定义以及g++编译遇到的一些问题

遇到了一些麻烦的,记录下来作为教训…..1. 虚函数的声明和定义具体关于虚函数的知识不做多讲,我在定义一个抽象类时,忘了将一个虚函数声明为 纯虚函数,又没有对其定义, 导致编译报错时报错如下:undefined reference to `vtable for Fibonacci'错误提示的很明显,就是无法生成虚函数表。我们知道,虚函数表(地址)在定义了虚函数的类所实例化的对象内存中的第一个位置,也

2016-07-19 12:47:13 4888

原创 C/C++中static和extern小结

static和extern是C/C++中和函数的声明有关的两个关键字,特别是涉及到全局变量时,所以做此总结。1. static关键字1.1 函数和变量声明(C/C++)static全局变量:当声明一个static全局变量,则表示静态全局变量,和其他变量一样,存放在.data(初始化了)或者.bss(未初始化)内,但只在定义它的源文件中有效,其余文件无法访问它。 static局部变量:具有以下特

2016-07-02 17:05:13 2171

转载 快速理解Gradle

一、什么是Gradle简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。实际上,app的构建过程是大同小异的,有一些过程是”通用“的,也就是每个app的构建都要经历一些公共步骤。因此,在我们在创

2016-06-29 20:54:05 704

原创 C/C++中的类型转换

从c转向c++时,类型转换出现了一些疑惑,查阅了一些资料和博文,整理如下。1. 隐式类型转换这类转换主要发生在类型不同的赋值和计算过程中,C/C++中均存在int ival = 3;double dval = 3.124;ival + dval //ival被提升为double类型int *p = 0; // 0被转换为了int* 类型ival = dval; // dval被转换为了int类

2016-06-28 20:34:06 458

原创 某厂几道C/C++面试题

说来惭愧,时间紧急,没有准备,唉,自作孽……1. 如何快速判断一个unsigned int是不是2的n次方最快解法思路: return a&(a-1)2. 给定结构体中一个成员的地址,求结构体的首地址这是Linux内核代码中用的一个函数或者说方法,之前从未接触过,所有有点懵逼…..具体定义如下: #define list_entry(ptr, type, member) ((type *)(

2016-06-23 00:04:08 593

转载 图说C++对象模型:对象内存布局详解

图说C++对象模型:对象内存布局详解1. 前言文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。 本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能有所不同。 文章如果有解释不清、解释不通或疏漏的地方,恳请指出。2. 何为C++对象模型?引用《深度探索C++对象模型》这本书中的话: 有两个概念可以解释C

2016-06-07 19:17:45 890

转载 漫谈C++:良好的编程习惯与编程要点

以良好的方式编写C++ class假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。① Header(头文件)中的防卫式声明complex.h:# ifndef __COMPLEX__# define __COMPLEX__class complex{ }# endif防止头文件的内容被多次包含。

2016-05-25 09:00:18 612

原创 P问题、NP问题、NPC问题

1. 算法时间复杂度时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。常见复杂度:不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;二叉树、二分

2016-05-16 11:26:04 645

原创 C++中sizeof用法总结

1. sizeof 简介sizeof是一个关键字,不是一个函数,其作用是返回一个对象或者类型所占的内存字节数。MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This ke

2016-05-15 11:10:42 1109

转载 Python自省(反射)----inspect module

首先通过一个例子来看一下本文中可能用到的对象和相关概念。#coding: UTF-8import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'):

2016-05-11 22:49:31 620

转载 关于C++ double浮点数精度丢失的分析

看了一篇关于C/C++浮点数的博文,在Win32下,把int, 指针地址,long等4字节整数赋给一个double后,再用该double数赋给原始类型的数,得到的结果于最初的数值一致,即不存在任何精度丢失。例如下面的结果将总是true:  long a=123456; //assign any long number here double db=a; long b=

2016-05-10 16:34:37 6493

原创 ubuntu14下python导入第三方so文件的路径问题

这几天在配置caffee的时候遇到一些问题,慢慢总结吧....首先说一下EdgeBoxes,这是一个object detection 中提取proposal 的方法,因为要用到c++、matlab和python,所以需要调用一些相互转换的接口。以其中一个接口举例:https://github.com/samarth-robo/numpy-opencv-converter

2016-05-08 09:57:38 5685

原创 opencv_traincascade训练haar时Error: Insufficient memory等问题

使用opencv自带的traincascade训练haar+adaboost分类器时,容易出现下面两个问题。不得不说,国内的论坛博客中解释的都很牵强,解决方案也然并卵....结合stackoverflow和opencv的问答,给出解决方案,本人实测有效,这两个问题我都出现了1.  Train dataset for temp stage can not be filled.

2016-04-24 23:08:48 3254 7

原创 VS2012运行opencv程序时缺少MSVCP120D.dll

首先声明,看清题目,是VS2012(或更低版本),缺少的是MSVCP120D.dll,至于原因,后面说。当然,其余的VS和缺少其余的dll也可以参考1. 问题原因这个很重要,很多网上的解决方案都是找个vcredist_x86之类的C++运行库安装一下,有的还直接下载MSVCP120D.dll,将其拖入系统文件夹再进行regsvr32命令操作之类的.....这些方案至少对于我的问题是

2016-04-13 11:13:01 8162

原创 List使用add方法添加数据时的覆盖问题

今天在写程序时遇到一个很容易犯错的问题,下面记录一下,首先看代码:private void loadData() { Map contentMap = null; classroomListItems.clear(); // classroomListItems = new ArrayList>>(); for(String key : MainActivity.clas

2016-04-11 23:24:53 9614

原创 C++中const用法总结

const在C++中使用十分广泛,不同位置使用的意义也不尽相同,所以想写篇文章对其做一个总结。首先,明确const是“不变”这个基本意义,但是不变不意味着什么都不变,下面将会看到。1. const与变量基本原则:const变量(对象)不能被修改const在变量中的引入和魔数有关,所谓“魔数”指的是突然出现的一个常量值(也叫字面值常量)。for(int i =

2016-04-10 14:35:40 2518

C++日志库GLOG

C++日志库,glog0.3.4,github的资源,修复了0.3.3在VS2013等版本中编译的错误

2017-06-01

空空如也

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

TA关注的人

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