C/C++
文章平均质量分 53
yangjianghua
这个作者很懒,什么都没留下…
展开
-
对STL的一些思考
最近参加了ACM程序设计大赛,当然我只是个菜鸟。高深的算法题我只是门外汉。但我还是在其中学习使用STL,STL是一个很好的库,容易上手,但也容易出错。vector的访问越界,string与c风格字符串的异同,erase和remove的删除操作,stl算法的迭代器的要求,容器的选择,算法的选择。。。都是平时编程遇到的问题。还有就是频繁使用STL,是否我们最后连sort都不会写了呢原创 2009-04-29 06:53:00 · 590 阅读 · 0 评论 -
oprofile 安装指南
安装oprofile运行./configure,发现ubuntu 9.04缺少popt、ibertyconfigure: error: popt library not foundsudo apt-get install libpopt-dev 搞定configure: error: liberty library not foundsudo apt原创 2014-06-15 09:16:55 · 1032 阅读 · 4 评论 -
Oprofile性能优化 && FAQ
Linux oprofile 性能优化原创 2013-12-06 18:33:22 · 1155 阅读 · 1 评论 -
C++ 封装POSIX线程
<br /> 我们通常有这样的需求:需要在C++中用多线程处理可以并行处理的问题,且把线程函数封装在类中,而把线程函数封装在类中,导致了this指针作为默认的参数被传进了函数中,从而和线程函数参数不能匹配,不能通过编译。 <br />一般有以下几种解决方案:<br />1. 将线程函数作为全局函数, 从而避免了this指针作为隐含参数的作怪行为,但这样线程函数却无法访问类中的私有变量,此为一大缺憾。<br />解决方案: 是把所有的私有变量变为全局变量,这样极大程度上破坏了类的封装性。<br /原创 2010-08-22 08:17:00 · 1004 阅读 · 0 评论 -
缓存设计的一些思考
转载:http://www.nosqlnotes.net/archives/222 互联网架构中缓存无处不在,某厂牛人曾经说过:”缓存就像清凉油,哪里不舒服,抹一下就好了”。高品质的存储容量小,价格高;低品质存储容量大,价格低,缓存的目的就在于”扩充”高品质存储的容量。本文探讨缓存相关的一些问题。LRU替换算法缓存的技术点包括内存管理和替换算法。LRU是使用最多的替换算法,每次淘汰转载 2013-12-11 21:37:11 · 654 阅读 · 0 评论 -
c++ static assert
boost static assert 64bit原创 2013-12-09 19:39:12 · 1119 阅读 · 0 评论 -
大内核锁将何去何从
转载至此,并对原文作者表示敬佩~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~大内核锁将何去何从转载处的原文作者:universus 大内核锁这个简单且不常用的内核加锁机制一直是内核开发者之间颇具争议的话题。它在早期linux版本里的广泛使用,从2.4内核开始逐渐被各种各样的自旋锁替代,可是直到现在还不能完全将转载 2012-12-10 20:02:04 · 478 阅读 · 0 评论 -
原子操作
初次接触到原子操作这个概念是在接触Linux内核的时候。不同的平台实现的机制也不一样。什么是原子操作? 简单的说就是在执行过程中不会被别的代码路径所中断的操作。我们来看看X86平台的实现。原子操作的定义:typedef struct { volatile int counter; } atomic_t;volatile修饰字段告诉原创 2012-12-09 13:45:36 · 797 阅读 · 0 评论 -
读写锁分析
最近要做一个FS多线程优化的项目:初步想法是将原来的静态锁去掉,换成并发性能更好的读写锁。我这里只是做个知识储备。我们先看下源码:int__pthread_rwlock_init (rwlock, attr) pthread_rwlock_t *rwlock; const pthread_rwlockattr_t *attr;{ const struc原创 2012-12-02 21:21:59 · 2004 阅读 · 0 评论 -
AVL平衡树的旋转
AVL平衡树的旋转 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n) AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。1. LL型 平衡二叉树某一节点的左孩子的左子树转载 2012-06-05 19:30:54 · 1261 阅读 · 0 评论 -
快速排序及优化
转:http://rdc.taobao.com/team/jm/archives/252 quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于 pivot放在右边,针对左右两个子序列重复此转载 2011-08-29 21:31:15 · 701 阅读 · 0 评论 -
CTO门的宝贵经验[转]
<br /> CTO门的宝贵经验<br />1.越界是最难查的,注意memcpy strcpy,strncpy这些函数使用前一定要检查边界<br />特别是你提供函数给别人用时,你的函数中用到了这些东西,一定要检查别人传给你的指针的边界<br />2、变量初始化<br /> 这种问题要养成好习惯,否则出来偶然性问题,非常难查<br />3、多线程指针管理<br /> 在多线程环境下使用指针时,最好采用引用计数,让最后一个放充引用计数时,指针删除,避免一个线程在使用指针,另外线程删除掉<br />4、多线转载 2010-12-25 10:22:00 · 483 阅读 · 0 评论 -
vector和map的erase问题
<br />STL map的不经意的小问题<br />// erasing from map#include <iostream>#include <map>#include <iterator>using namespace std;int main (){ map<char,int> mymap; map<char,int>::iterator it; // insert some values: mymap['a']=10; mymap['b'原创 2010-08-16 23:08:00 · 1978 阅读 · 0 评论 -
C++应用程序优化—读书笔记之《程序使用内存区》
一个程序占用的内存区一般分为如下5种。1. 全局/静态数据区(存储全局变量及静态变量)2. 常量数据区(常量字符串)3. 代码区(函数体的二进制代码)4. 栈(自动变量或局部变量,以及传递的函数参数等,编译器自动释放,默认1MB)5. 堆(存储动态产生的数据,程序员手动释放,内存空间不连续,堆的大小受限于虚拟内存)原创 2009-05-05 22:40:00 · 771 阅读 · 0 评论 -
对int 型的使用总结
最近,在CSDN的c++版块,问过一个这样一个问题:实现a^b mod n a:1-5000 ,b:0-10^8, c:1-5000000 。显然中间过程会出现溢出。 当然有人提到了大数库gmp,很好的方法,但这道题还是有范围限制的,也就是说8B的int能满足要求。 对c++中的int,short,long...总是有点困惑,所以有了以下测试: #include原创 2009-05-02 13:26:00 · 626 阅读 · 0 评论 -
vc8+ACE5.5 安装心得
网上的一些文章对于ACE的安装很详细,但也很千篇一律。实践中你会遇到很多问题,但网上解决办法比较少。为此写了这篇文章,分享之。 由于VC6.0对c++标准支持的不好,所以编译ACE,虽然不会报错,但编译出来的DLL,LIB使用会出现stl的问题,所以第二次编译我选择了VC8,推荐使用。 1. 然后就是新建 config.h 文件 我的如下: #include "ace/原创 2009-05-03 08:34:00 · 867 阅读 · 1 评论 -
tensorflow 解读开篇
tensorflow 解读开篇概述TensorFlow计算图描述Tensoroperator and opkernel1. op interface2. op kernel的实现调试篇参考概述深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,下面列出目前一些主流的深度学习开源工具。工具名称维护团体支持语言支持系统TensorFlowGoogleC++、P...原创 2019-05-09 14:38:03 · 314 阅读 · 0 评论