自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 重要的开源资源及50个c/c++源代码网站

我的选择:http://c-faq.com/index.html 很多很多有用的信息,如书籍推荐、编译器介绍,在哪找到C库函数的源代码等,还有一些C语言的知识点。http://stackoverflow.com/questions/tagged/c?sort=votes&pagesize=15论坛http://freecode.com/  http://www.gnu.or

2015-11-30 17:30:08 1353

转载 时间复杂度和空间复杂度详解

算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或

2015-11-30 16:54:28 975

转载 linux下查看进程内存使用情况

动态查看一个进程的内存使用[c-sharp] view plaincopyprint?1、top命令  top -d 1 -p pid [,pid ...]  //设置为delay 1s,默认是delay 3s  如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)   

2015-11-26 17:12:52 473

转载 如何实现支持数亿用户的长连消息系统 | Golang高并发案例

360消息系统介绍360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机

2015-11-26 16:14:13 2095

转载 网络服务

Lua的epoll模块 lua-epollLua的epoll模块 更多细节,请查看sample.lua API: ok,err=epoll.setnonblocking(fd) 设置一个文件描述符非阻塞。 epfd,err=epoll.create() 创建一个 epoll 文件描述符。 ok,err=epoll.register(epfd,fd,eventmask) 把目

2015-11-26 15:04:06 866

转载 C++11中值得关注的几大变化

赖勇浩(http://laiyonghao.com)声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的《The Biggest Changes in C++11(and Why You Should Care)》一文,几乎所有内容都搬了过来,但不是全文照译,有困惑之处,请参详原文(http://www.softwarequalityconnection.com/2

2015-11-26 11:56:55 340

转载 linux__查看库中的函数

Linux下动态库查看方法:nm -D libavformat.soLinux下静态库查看方法:ar -t libavformat.aLinux下动态库查看方法:nm -D libavformat.so  --[打印信息是:第一列:当前符号的地址;第二列:当前符号的类型(T表示函数在代码段,U没有定义或外部定义,D初始化数据区,U,未初始化数据区);

2015-11-25 18:20:17 556

转载 linux异步IO编程实例分析

在Direct IO模式下,异步是非常有必要的(因为绕过了pagecache,直接和磁盘交互)。linux Native AIO正是基于这种场景设计的,具体的介绍见:KernelAsynchronousI/O (AIO) SupportforLinux。下面我们就来分析一下AIO编程的相关知识。       阻塞模式下的IO过程如下:int fd = open(const char

2015-11-25 12:37:08 583

转载 Linux AIO机制

Linux的I/O机制经历了一下几个阶段的演进:1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等

2015-11-25 12:31:12 408

转载 C语言unlink()函数:删除文件

相关函数:link, rename, remove头文件:#include 定义函数:int unlink(const char * pathname);函数说明:unlink()会删除参数pathname 指定的文件. 如果该文件名为最后连接点, 但有其他进程打开了此文件, 则在所有关于此文件的文件描述词皆关闭后才会删除. 如果参数pathname 为一符号连接, 则

2015-11-25 10:35:01 1684

转载 Let’s Hook a Library Function

If you are a developer, and want to change the way a library function works, this article will give you a basic idea of how to get started — just enough knowledge to be able to experiment with your li

2015-11-24 15:52:21 496

转载 协程 及 libco 介绍

libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程、如何实现协程、libco使用等方面了解协程和libco。 why协程为什么使用协程,我们先从server框架的实现说起,对于client-server的架构,server最简单的实现:while(1) {accept();recv();do();send();}串行地

2015-11-24 15:41:37 425

转载 TBB(Intel Threading Building Blocks)学习笔记

TBB(Intel Threading Building Blocks)学习笔记 并行与并发是相对的,OS里讲的是并发而在架构方面更多的是说并行。并行是分多个层面的,个人认为基本上可以分为这么几个层面:1、指令级的并行;即所谓的微程序、指令流水线等,现在cpu的一级缓存、二级缓存都很大,所以这个cache的效果还是比较好的(基于局部性原理)2、线程级的并行;即同一个时刻多个函数

2015-11-24 15:02:27 529

转载 C++笔记(8) template partitial specialization模板偏特化

C++类模板的三种特化By SmartPtr(http://www.cppblog.com/SmartPtr/)    说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型; 二是特化为引用,指针类型;三是特化为另外一个类模板。 这里用一个简单

2015-11-24 11:35:05 451

转载 模板特化和偏特化

摘要:本文通过例子介绍了在 C++标准库中广泛使用的模板特化和偏特化,并指出了模板特化和偏特化的定义规则和应用规则。关键词:模板、特化、偏特化1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现。目前,STL在C++社区中得到了广泛的关注、应用和研究。理解和掌握模板是学习、应用和研究以及扩充STL的基

2015-11-24 10:14:13 277

转载 关于CPU编程—无锁编程

Lock-free 算法通常比基于锁的算法要好:从其定义来看,它们是 wait-free 的,可以确保线程永远不会阻塞。状态转变是原子性的,以至于在任何点失败都不会恶化数据结构。因为线程永远不会阻塞,所以当同步的细粒度是单一原子写或比较交换时,它们通常可以带来更高的吞吐量。在某些情况下,lock-free 算法会有更少的同步写操作(比如 Interlocked 操作),因此纯粹从性能来看,

2015-11-23 13:09:34 1246

转载 非阻塞同步算法与CAS(Compare and Swap)无锁算法

锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用

2015-11-23 13:06:45 1054

转载 协程框架的堆栈大小陷阱

昨晚和同事联调我们的开放平台,由于基于协程框架的网关服务器总是在接受两个消息后发生段错误,Core Dump掉,让我们百思不得其解。 查看Dump文件,没有任何有效的调试信息。gdb设置断点调试,程序总是在接受到第二条消息之前,没到断点就崩溃。而日志信息却可以打到在断点之后。搞了一个多小时,真的让我们很崩溃。 最后,到晚上一点多后,我们决定改大一下协程的栈空间大小试

2015-11-20 18:27:34 1067

转载 Crypto++学习总结---AES

静态库下载连接Cryp++ lib 下载AES 使用方法 如下:[cpp] view plaincopy//For AES encrypt  #include "default.h"   #include "cryptlib.h"  #include "filters.h"  #include "bench.h" 

2015-11-20 16:01:05 1355

转载 基于Crypto++/Cryptopp的rsa密钥生成,rsa加密、解密,rsa签名、验签

4.生成rsa公钥、私钥,经过base64编码后保存到文件需要导入一些头文件:#include "iterhash.h"#include "files.h"#include "rsa.h"#include "randpool.h"#include "hex.h"#include "base64.h"#include "osrng.h"void CKe

2015-11-19 16:34:27 2216

转载 url加密调研报告

概述         数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。 加密算法分类根据密钥的的类型,加密算法目前可以分为三类:

2015-11-19 12:35:21 488

转载 c++11:多线程

很高兴c++11的标准库可以#include 了。boost早就提供了类似功能。这时候考虑下开发商、物业公司联合阻碍成立业主委员会的借口之一:会妨碍事情的正常进展,推断也许他们也是c++的长期使用者:)1、pthread_xx的封装    stl提供了(目前)五个头文件以支持多线程:atomic(提供原子操作功能)、thread(线程模型封装)、mutex(互斥量)、con

2015-11-18 18:48:25 396

转载 Intel Threading Building Blocks 编程指南:原子操作

原子操作概述    可以使用原子操作来避免使用互斥。当一个线程执行原子操作,在其他线程眼里,这个操作是瞬时完成的。原子操作的优点是,相比较锁操作是快速的,而且不用为死锁、锁护送等问题而烦恼。缺点是,它们只有有限的一组操作,常常无法和成为有效的复杂操作。尽管如此,也不应该放弃使用原子操作替换互斥的机会。aotmic 类以C++风格实现了原子操作。        原子操作的一个典型应用

2015-11-18 18:44:40 683

转载 Intel Threading Building Blocks 编程指南:互斥

互斥控制某块代码能同时被多少线程执行。在Intel  Threading Building Blocks(intelTBB)中,互斥通过互斥体(mutexes)和锁(locks)来实现。互斥体是一种对象,在此对象上,一个线程可以获得一把锁。在同一时间,只有一个线程能持有某个互斥体的锁,其他线程必须等待时机。    最简单的互斥体是spin_mutex。试图在spin_mutex上获得锁的线

2015-11-18 18:44:03 574

转载 Intel Threading Building Blocks 编程指南:异常与终止

Intel TBB支持异常与终止(cancellation),当算法中的代码抛出异常时,会按依次发生:捕获异常。算法内进一步的异常被忽略。算法终止。挂起的迭代操作不被执行。如果内部存在嵌套的Intel TBB并行,那么它的取消与否取决于特定实现(下面会提到)算法的所有部分都停止后,会在调用算法的线程(thread)上抛出异常。步骤3中抛出的异常可能是初始的异常,也可能仅仅是capt

2015-11-18 18:42:41 611

转载 Intel Threading Building Blocks 编程指南 : 内存分配

(原文出自 tbb tutorial ,也许稍有改动。)Intel Threading Building Blocks(Intel TBB)提供了两种与STL模板类(std::allocator)类似的内存分配器模板。这两类模板(scalable_allocator、cache_aligned_allocator)解决并行编程中的如下关键问题:可伸缩性    当在线程中使用原本

2015-11-18 18:37:59 650

转载 Intel Threading Building Blocks 编程指南:简单循环的并行化

可伸缩并行化的最简单的形式就是能够互不干涉地同时运行的迭代的循环。本节将会说明如何将简单的循环并行化。定义 Intel Threading Building Blocks(Intel TBB) 组件的命名空间是 tbb 。简洁起见,只在第一次提到某个组件时显式展示命名空间。编译 Intel TBB 程序时,记得要链接 Intel TBB 共享库。库的初始化与终止从Intel

2015-11-18 18:35:43 695

转载 hello,intel TBB

Intel Threading BuildingBlocks(Intel TBB)是一个使用ISO C++代码实现的多平台、可扩展并行编程库。但目前为止这方面的中文资料却很少。初步了解TBB时,并非每个人都打算看官方提供的资料,即使是Intel Threading BuildingBlocks Tutorial。准备l  下载编译TBB免费版本的TBB可以从下面的链

2015-11-18 18:34:18 576

转载 Intel Threading Building Blocks :基本算法参考及使用

基本算法(algorithms)Intel TBB提供的大多数并行算法支持泛型。但是这些受支持的类型必须实现必要的概念方法。并行算法可以嵌套,例如,一个parallel_for的内部可以调用另一个parallel_for。目前版本的TBB(4.0)提供的基本算法如下所示:parallel_forparallel_reduceparallel_scanparallel_do

2015-11-18 18:21:04 517

转载 [译]Intel Threading Building Blocks 编程指南:任务调度

概述:Intel Threading Building Blocks (Intel® TBB)是基于任务(task)驱动的。一般来说,只有在TBB提供的算法模板中找不到合适的模板时,才考虑使用任务调度器自行实现。任务(task)是一个逻辑概念,操作系统并没有提供对应的实现。你可以把它当作线程池的进化。实现时,一个thread可对应多个task。在非阻塞编程时,相对于线程(thread),基

2015-11-18 18:14:56 788

转载 open函数中参数选项O_EXCL解析

带O_EXCL参数选项的差别:第一种:int fd = open(PATH, O_RDWR | O_CREAT, 0666);当PATH存在时,函数返回值fd为该文件描述符,不存在则创建,函数返回值fd也为该文件描述符;--------------- ------------------------------------------------------

2015-11-13 17:26:25 5890

转载 Unix/Linux下的open函数(O_CREAT和O_EXCL)

今天想在Ubuntu上用open()实现检测文件是否存在,若存在就read()的功能,代码如下:int fd=open(temp,O_RDONLY|O_CREAT|O_EXCL,S_IRWXU);if(-1==fd) return -2;ssize_t nbytesRead = read(fd, buffer, count);close(fd);  结果失败了,错误为“B

2015-11-13 17:25:20 1809

转载 gdb not in executable format file format not recognized

3.4 Debugging executablesIf hell was a complicated program, you would certainly want to test and debug it before installing it on your system. In the above section, you saw how the libtool wrapper s

2015-11-13 13:32:21 13222 1

转载 查看当前系统的glibc版本

有时我们经常需要查看当前系统的glibc版本,可以这样查看:/lib/libc.so.6有时:/lib/x86-64-linux/libc.so.6把这个文件当命令执行一下为什么这个库可以直接run呢? 原来在libc的代码中有一点小手脚:Makerules:586:LDFLAGS-c.so += -e __libc_main csu/versi

2015-11-11 11:45:18 826

转载 /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法

今天编译一个工程,在目标机上运行app,出现了这个错误。下面我们由这条报错信息入手,寻找问题的答案:1.首先保证程序没有被strip,也就是说可执行程序含有符号表信息。2.出现这个问题的原因是glibc的版本太低,查看系统glibc支持的版本root@ubuntu:/dvr# strings  /lib/x86_64-linux-gnu/libc.so.

2015-11-11 10:40:08 5829

转载 解决类似/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found错误

解决类似/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found错误运行MonaServer的时候,遇到了下面的报错:./MonaServer: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./MonaServer)

2015-11-11 09:22:50 15126

转载 CentOS离线安装gcc4.8.2

折腾了一天,功夫不负有心人,终于整出来了,还是很激动的呵呵。废话就不多说了,直接进入正题。首先,在CentOS下安装gcc4.8.2需要先安装GMP,MPFR 和 MPC 三个包。安装包下载地址从http://gcc.gnu.org/下载gcc安装包 gcc-4.8.2.tar.gz从ftp://ftp.gnu.org/gnu/gmp/ 下载GMP安装包 gmp-5.1

2015-11-10 16:45:23 733

转载 centos升级gcc到4.8.1(支持c++11)步骤

centos升级gcc到4.8.1(支持c++11)步骤下载gcc最新版wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.gz然后解压到文件夹tar -xvzf gcc-4.8.1.tar.gz进入解压缩之后的目录cd gcc-4.8.1然后执行下面的运行./contrib/down

2015-11-10 15:15:40 5644 2

转载 tbb: 使用预编译头文件和静态库

tbb 2.2中提供了统一的头文件:tbb.h,只要包含这个文件就可以使用所有tbb的库了。为了使用起来方便,以及可以使用静态库,可以使用以下这些命令自己创建:# 1. 先下载 tbb22_20090908oss_src.tgz,  去 http://www.threadingbuildingblocks.org# 2. 解压tar -zxvf tbb22_200909

2015-11-10 14:48:07 2989

转载 C++小品:榨干性能:C++11中的原子操作(atomic operation)

所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。在以往的C++标准中并没有对原子操作进行规定,我们往往是使用汇编语言,或者是借助第三方的

2015-11-03 13:36:06 2891

空空如也

空空如也

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

TA关注的人

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