- 博客(116)
- 资源 (7)
- 收藏
- 关注
原创 线程管理以及线程间数据共享
第二章 线程管理1.1 线程的启动:Ø 通过函数对象构造thread对象,如下:class background_task{public: void operator()()const { do_something(); do_something_else(); }}; background_task f;std::thre
2017-12-24 15:21:04
453
转载 三分法 three-way partitioning
参考:http://blog.jobbole.com/105219/先考虑这样一个问题,给定红、白、蓝三种颜色的小球若干个,将其排成一列,使相同颜色的小球相邻,三种颜色先后顺序为红,白,蓝。这就是经典的 Dutch national flag problem。我们可以针对红,蓝,白三种颜色的球分别计数,然后根据计数结果来重新放球。不过如果我们将问题进一步抽象,也就是说将一个数组
2017-11-01 22:43:55
5355
原创 ubuntu 14.04 Clang编译安装,libclang解析c++代码
注意事项:1. 内存8G以上,我当时4G内存,编译debug版就出现了内存耗尽的情况;2.最好不要编译debug版本,我编译到83%左右时已经耗尽30多G磁盘空间,并且会产生很大的编译日志文件(提示12G左右),同样提示内存不足针对内存耗尽的问题,当时也在网上找了很久,来自于stackoverflow(https://stackoverflow.com/questions/25
2017-11-01 21:35:18
4268
转载 二分查找,你真的懂吗
转载至:http://duanple.blog.163.com/blog/static/709717672009049528185/作者:phylips@bmy最近在练习动态规划问题(DP),其中“最长递增子序列”问题中要用到二分查找,突然发现二分查找并非我们想象的那么简单。例如如何确定停止条件,不同的问题如何增加下边界和减少小边界,如何确保问题规模变小而不进入死循环?下面这篇文章很好的解
2017-09-24 11:26:38
1233
1
转载 最长递增子序列
转载至:http://blog.csdn.net/u013074465/article/details/45442067最长递增子序列http://blog.csdn.net/lisonglisonglisong/article/details/45241965最长递增子序列(Longest Increasing Subsequence)是指找到一个给定序列的最
2017-09-19 21:43:41
502
转载 C++'s most vexing parse
转载至:http://www.zkt.name/c-s-most-vexing-parse/最近同事在使用C++的时候遇到一个诡异的问题,初始化一个对象的时候构造函数没有被调用。类似的代码如下:#include class A { public: A(const std::string& name){ std::cout std::endl;
2017-08-27 11:20:33
380
原创 深拷贝和浅拷贝
c++编译器默认情况下会生成拷贝构造函数和赋值操作符用于新对象的构造和赋值。拷贝构造函数和赋值操作符分为两种:位拷贝(bitwise copy)和成员拷贝(member copy)。当c++类不展现bitwise copy semantic时不会按照默认的Bitwise copy,以下四种情况不展现bitwise copy semantic:1)如果一个类没有拷贝构造函数,但是含有一个类类型的
2017-08-19 22:17:45
278
转载 c++类型转换
参考:http://www.cnblogs.com/goodhacker/archive/2011/07/20/2111996.htmlhttp://www.cnblogs.com/ider/archive/2011/08/01/cpp_cast_operator_part5.htmlc++中有四种运算符用于类型转换:const_cast,字面上理解就是去const属性。sta
2017-08-13 11:01:26
405
转载 c++对象内存布局
转载:http://blog.csdn.net/haoel/article/details/3081328/转载:http://www.cnblogs.com/jerry19880126/p/3616999.html第一篇文章主要是介绍含虚函数的普通继承,文字标红处为错误,应该为:“[4] CChild:: h_child()”第二篇主要是讲了虚继承的内存布局,还介绍了如何使用vs查看
2017-08-07 22:31:56
284
原创 std::async在gcc和vc不同编译器下的不同表现(可能会阻塞)
最近由于项目的需要,在学习c++11中的std::async,想在项目中直接利用其异步操作的特性,而不是thread。但是该方法却在不同的编译器下有着不同的表现。实验环境一:操作系统:ubuntu 12.0.4 32位编译器:gcc 5.4.1源码:#include #include #include #include #include using namespace
2017-07-23 18:35:52
1914
1
原创 可变参数实现log打印
实现步骤如下: 1. 函数原型中使用省略号; 2. 函数定义中创建一个va_list变量; 3. 初始化va_list变量; 4. 访问参数列表; 5. 完成清理工作; 上述步骤的实现需要使用到四个宏:va_list、va_start(va_list, arg)、va_arg(va_list, type)、va_end(va
2017-07-22 17:27:02
2397
原创 创建型:原型模式(Prototype)
我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。原型模式的主要思想是基于现有的对象克隆一个新的对象出来,一般是有对象的内部提供克隆的方法,通过该方法返回一个对象的副本,这种创建对象的方式,相比我们之前说的几
2017-07-15 18:17:55
356
原创 左值引用(&)以及右值引用(&&)(原创+转载)
话题一:到底引用是什么?底层实现原理是什么?带着这几个问题我们分析一下下面的代码:int _tmain(int argc, _TCHAR* argv[]){ int x = 1; int y = 2; int &b = x;#ifdef _DEBUG printf("&x=%x,&y=%x,&b=%x,b=%x\n", &x, &y, &y-3, *(&y - 3));#else
2017-07-15 18:07:56
489
原创 创建型:建造者模式(Builder)
建造者模式实际上是常用的设计模式。顾名思义,builder的意思是建造者或者建筑工人,谈到建造自然会想到楼房。楼房是千差万别的,楼房的外形、层数、内部房间的数量、房间的装饰等等都不一样,但是对于建造者来说,抽象出来的建筑流程是确定的,往往建筑一座楼房包括下面的步骤:(1)打桩,建立基础(2)建立框架等。建造者模式的本质和建造楼房是一致的:即流程不变,但每个流程实现的具体细节则是经常变化的。建造者模
2017-07-02 16:36:06
372
原创 androidStudio中无法获取versionName
获取到的 VersionName 和 VersionCode 一直是1.0 和 1。但是在 AndroidManifest.xml中已经修改:android:versionCode="2"android:versionName="1.0.0"其实在AndroidStudio中版本信息保存在build.gradle中:defaultConfig { applicationI
2017-07-01 22:46:28
1133
原创 创建型:单例模式(singleton)
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做Instance(),它的返回值是唯一实例的指针。如下实现中,CS
2017-06-25 14:16:31
248
原创 effective c++之模板与泛型编程
条款41: 了解隐式接口和编译期多态本条款主要是两个概念,即什么是隐式接口,什么是编译期多态。面向对象编程世界总是以显式接口(explicit interfaces)和运行期多态(runtimepolymorphism)解决问题。例如:class Widget { public: Widget(); virtual ~Widget(); virtual std::si
2017-06-11 16:02:36
400
转载 Hamming Weight的算法分析
转载至:http://www.cnblogs.com/jawiezhu/p/4395063.html参考:wikipediaHamming Weight的算法分析最容易想到的算法是除余法,继而考虑到除法的代价较高,而且除数是2,会想到使用向右移位来代替除法,并使用&0x1操作来取末位的值,这样提高了算法的效率。然而,这样仍然进行了63次&操作、63次移位操作和63次
2017-06-05 22:34:42
557
转载 C++类型转换总结
参考:http://www.cnblogs.com/goodhacker/archive/2011/07/20/2111996.htmlC风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。sta
2017-05-21 12:28:30
210
转载 C++头文件的若干说明和const对象定义
转载至:http://blog.csdn.net/yipiantiandi/article/details/5822564在使用C++进行程序开发的时候,有个常识我们很熟悉,就是把类的定义写在.h文件中,把类的具体实现写在.cpp文件中。这毫无疑问是对的。但我们很少去思考为什么要这样做,本文结合自己的学习体会,对头文件及const对象的定义进行一些说明。 1。为什么要使用头文件使用
2017-05-17 17:57:30
387
原创 boost之并发编程
1. Thread创建方法:(注意bind和thread以函数作为参数时,如果函数是静态成员函数或者普通函数,可以传函数名func或函数名取地址&func,但是如果是非静态成员函数,必须传函数名取地址)1) 利用普通函数创建线程,例如:boost::thread thrd(&func,2);或boost::threadthrd(func,2);2) 利用静态成员函
2017-05-03 22:31:58
463
转载 c++之函数对象
转载至:http://blog.csdn.net/wuzhekai1985 http://blog.csdn.net/wuzhekai1985/article/details/6658940可以为类类型的对象重载函数调用操作符,定义了调用操作符的类,其对象称之为函数对象(function object),即它们的行为类似函数的对象。STL是C++标准库的重要组成部分之一,它不仅是一
2017-04-27 14:39:54
360
原创 Minimum Moves to Equal Array Elements(最少移动步长使数组中元素相等)
今天在leetcode上遇到一个问题,就是如何在最小移动步数下使数组中元素相等,每次仅能移动n-1个元素,而且每次只能加1?其实这就是一个简单的数学问题,我们可以假设在m次移动后,所有元素达到相等,且相等值为val,那么,我们可以建立等式如下:sum + m*(n-1) = val*n;(其中,sum是原始数组元素之和,n为元素个数),实际上,我们还有一个等式,那就是m步后val的值:
2017-04-22 10:07:24
538
转载 二叉树的遍历
参考至:http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法
2017-04-17 22:13:44
324
原创 Digital Root(数根推导)
今天在leetcode上面碰到了在O(1)时间解决数根问题,后来发现运用数学公式确实可以在常数时间内解决。For base b (decimal case b = 10), the digit root of an integer is:dr(n) = 0 if n == 0dr(n) = (b-1) if n != 0 and n % (b-1) == 0dr(n) = n
2017-04-10 21:48:46
1361
转载 (位运算使用技巧)A summary: how to use bit manipulation to solve problems easily and efficiently
参考至:https://discuss.leetcode.com/topic/50315/a-summary-how-to-use-bit-manipulation-to-solve-problems-easily-and-efficientlyWIKIBit manipulation is the act of algorithmically manipulating bits
2017-04-09 12:00:52
426
转载 C++ - 算法(algorithm) 的 谓词(predicate) 详解
转载至:http://blog.csdn.net/caroline_wendy/article/details/15378055算法谓词, 即标准库算法传递的参数, 可以指定算法的操作, 如std::sort, 默认是从小到大, 通过谓词可以修改从大到小.本文包含基本的5种谓词模式: 函数,函数指针,lambda表达式,函数对象,库定义的函数对象. 1. 函数(fu
2017-04-08 11:24:52
2781
1
原创 Android填坑记之Fragment中onAttach
今天在写ListFragment的demo时,onAttach(Context context)没有被系统回调,后来找到了答案:It's not called because this method has been added in API 23. If you run your application on a device with API 23 (marshmallow) then o
2017-04-04 16:54:57
2959
转载 博弈问题简介
参考:http://blog.csdn.net/pipisorry/article/details/39249337博弈问题简介所讨论的博弈问题满足以下条件:玩家只有两个人,轮流做出决策游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输对任何一种局面,胜负只决定于局面本身,而与轮到哪位选手无关一般称满足以上条件的游戏称为ICG,比如
2017-04-04 12:24:05
1494
转载 c++11新特性中unordered_map与传统map比较
unordered_map是很早就知道的概念,但却一直没有认真去理解,单单以为它是Boost库里对map的实现,今天在做Leetcode的题目的时候,发现了使用它的优越性,索性翻开书,并查一查资料,把它大致搞个清楚,省的以后还要再查再找,浪费时间。unordered_map是C++Boost库中的内容,这里的unordered翻译成“无序”。但它并不是完全的“无序”的概念,而是散列
2017-04-02 22:15:30
1997
原创 Android中获取ActionBar为null的问题
由于ActionBar是在android3.0以后引入的,所以必然出现兼容的问题。有时候我们在获取ActionCar的时候出现空指针问题。如果工程是要兼容3.0一下的版本(Activity 继承AppCompatActivity),那么要import以下:import android.support.v7.app.ActionBar;import android.support.v7
2017-03-19 12:59:44
1698
原创 Android之实现TextView控件圆角以及Button点击、焦点效果
默认情况下,TextView是不带边框的,如果想要为TextView添加边框,只能考虑为TextView设置一个背景Drawable。在Drawable文件夹下新建一个layout类型的xml文件,然后将Root tag改成shape,这样xml文件也可以当Drawable使用。bg_border.xml android:layout_width="match_parent"
2017-03-07 21:54:16
1839
1
原创 AndroidStudio工程导入错误
在实际开发中,我们经常需要从别的地方,如GitHub等导入项目,但是经常出现工程项目配置不匹配,导致编译错误等问题。遇到问题如下:Gradle sync failed: failed to find Build Tools revision 23.3.0解决方法:其实按照AS的提示完全就可以解决问题,AS提示:intall sdk tool xx.xx.xx。在AS菜单栏找到S
2017-03-05 12:25:02
452
原创 Android中dp,sp以及px之间的关系
px:即像素,1px代表屏幕上一个物理的像素点;px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同。dp:这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英寸*2英寸,屏幕分辨率为240x320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为2
2017-03-04 18:38:14
610
原创 Qt中local and expressions无法查看当前栈变量
前几天在开发过程中发现一个问题,那就是Qt中local and expressions无法查看当前栈变量。在升级到gcc 4.8.1版本之前,debug时在watch window是可以看到变量值得。很有可能就是升级过后,gcc版本与gdb版本不匹配造成的。ubuntu12.04自带的gdb是7.4,升级gdb可以解决问题,当gcc升级到4.8.1时,匹配的gdb需要升级到7.6.1,否则会出现符
2017-03-01 20:47:59
1443
转载 使用Android Studio进行单元测试
参考:http://www.cnblogs.com/zoro-robin/p/5732990.htmlhttp://www.jianshu.com/p/03118c11c199Android Studio默认支持Android单元测试,不需要像网上说的配置mainifest.xml或build.gradle。创建单元测试文件夹可以把单元测试文件夹放到
2017-02-26 17:15:14
1323
原创 Android基于位置的服务&传感器&高级技巧
1. LocationManager用于位置服务管理,Android中一般有三种位置提供器可供选择,GPS_PROVIDER、NETWORK_PROVIDER和PASSIVE_PROVIDER。其中前两种使用的比较多,分别表示使用GPS定位和使用网络定位。这两种定位方式各有特点,GPS定位的精准度比较高,但是非常耗电,而网络定位的精准度稍差,但耗电量比较少。2. 通过上面的
2017-02-20 22:35:50
319
原创 Android之网络技术
1. WebView可以进行简单的网页呈现,注意添加权限:2. 在Android上发送HTTP请求的方式一般有两种,HttpURLConnection和HttpClient:1) HttpURLConnection只需要一个URL对象,注意连接操作在主线程中的子线程中开启,因为不能在子线程中对UI进行操作,所以采用android中的异步消息机制,利用Handl
2017-02-12 22:06:35
289
原创 effective c++之继承与面向对象设计
条款32:确定你的public继承塑模出is-a关系请记住:1. “public继承”意味着is-a。适用于baseclasses身上的每一件事情一定也适用于derived classes身上,因为每一个derived class对象也都是一个base class对象。条款33:避免遮掩继承而来的名称在C++的继承体系中,不管是变量名还是函数名称的查找按照一定的规则
2017-01-22 22:41:06
352
转载 C++之TR1::function
转载至:http://blog.csdn.net/u013696062/article/details/40891973Tr1::function的介绍它是一个类模板,类的成员变量是一个函数指针。可以把它看作一个智能函数指针(和shared_ptr智能指针对比着理解)。 一. 头文件#include 二. 使用[cpp] view plain c
2017-01-20 22:10:33
417
MATLAB环境下的语音识别系统
2013-04-30
MATLAB环境下的基于HMM模型的语音识别系统
2013-04-30
通信原理MATLAB仿真
2013-04-28
语音信号处理
2013-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人