自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

why is this

生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最坚强的地方

  • 博客(332)
  • 资源 (5)
  • 收藏
  • 关注

转载 mongodb,redis,mysql 简要对比

mongodb,redis,mysql 简要对比本篇内容大部分不是原创,转载的会贴有链接。准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块。当下主流的要数NoSql数据库了,拥有强大的高并发能力。mongodb:它是一个内存数据库,数据都是放在内存里面的。对数据的操作大部分都在内存中,但mongodb并不是单纯的内存数据库。持久化

2017-02-10 17:42:29 709

转载 redis和memcache对比

1. 使用Redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2) 支持丰富数据类型,支持string,list,set,sorted set,hash(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) 丰富的特性:可用于缓存,消息,

2017-02-10 15:08:01 1171

转载 memcache深入解析

1.为什么要使用memcache由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如:1)对数据库的高并发读写:关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务处理等)。如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的。2)对海量数据的处理:对于大型的SNS网站,每天有上千万次的苏剧产生(如twitter, 新浪微博)。

2017-02-10 14:56:52 557

转载 Reactor和Proactor模式

首先分享一下,我在网上看到的两篇不错的文章:正是这两篇文章才理解了reactor和proactor模式; 首先就第一篇《Reactor模式,或者叫反应器模式》做一下笔记: 刚开店做生意,老板为了给顾客一个美好的印象,给顾客最好的服务,一对一: 随着经营的生意越来越好,顾客多了,不能服务员也多吧,那样得支出的成本也太大了,要是一下子来个1000个顾客,

2017-02-09 14:48:26 510

转载 C++ std::enable_if解析

引言今日在阅读LLVM相关源码时(如下所示),遇到了enable_if这个概念,以前从没有遇到过,这里做个小记。/*----------llvm/include/llvm/ADT/Hashing.h------------*//// \brief Compute a hash_code for any integer value.////// Note that this funct

2017-02-05 11:41:52 11028

转载 模板参数自动推导

上次,我们看了什么是模板函数,今天,我们就从这个模板函数入手,继而引出一个新的知识点-模板参数自动推导。为了介绍清楚什么是模板参数自动推导,我们先定义几个术语,通过这些术语来描述比较方便,这些术语是:模板形参,模板实参,模板函数形参,模板函数实参。    为了表达明确,我们先来看一下图1,图1中指出了什么是模板参数,模板实参,模板函数形参,模板函数实参。图1 术语    就像图1所

2017-01-16 09:35:48 555

转载 what to benefit from the C++14 Standard

转载:http://weibo.com/ttarticle/p/show?id=2309404029139492430854我同时也是哥伦比亚的客座教授,尽管我辞掉了Texas A&M的教职,但在校方坚持下,我现在还算是一名教授。好的,接下来我会简单介绍:我们希望从编程语言中获得什么,编程语言在开发环境中扮演者什么角色一个使用C+

2016-12-28 14:38:53 412

转载 c++ list, vector, map, set 区别与用法比较

c++ list, vector, map, set 区别与用法比较List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,

2016-12-22 13:57:20 522

转载 C++遍历container删除需要注意地方

http://www.cppblog.com/Herbert/archive/2009/01/08/70479.htmlSTL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。      在使用 list、set 或 map遍历

2016-12-21 08:54:21 575

转载 C++ lambda

转载:http://blog.csdn.net/xuexiacm/article/details/39835085lambda表达式:[cpp] view plain copy [capture_block](parameters) mutable exception_specification->return_type{ body }  l

2016-12-19 18:09:58 1370

原创 C++大牛blog地址

Exceptional C++作者herbsutter blog:https://herbsutter.com/elements-of-modern-c-style/C++大牛pongbahttp://blog.csdn.net/pongbamuduo作者:陈硕http://blog.csdn.net/Solstice孟岩:http://blog.csdn.ne

2016-12-19 17:00:05 804

翻译 GotW #89智能指针的一些建议

question:1.什么时候应该使用shared_ptr vs. unique_ptr? 列出尽可能多的注意事项。大师问题为什么你几乎总是使用make_shared来创建一个由shared_ptrs拥有的对象? 说明。为什么你几乎总是使用make_unique创建一个对象,最初由unique_ptr拥有? 说明。4.与auto_ptr有什么关系?

2016-12-19 12:01:20 425

原创 STL 源码剖析笔记之仿函数

仿函数(functor)的概念在我们写代码时有时会发现有些功能实现的代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就要单立出一个函数,也不是很好维护。这时就可以用仿函数了,写一个简单类,除了那些维护一个类

2016-12-16 16:09:21 359

转载 使struct对象拥有可变大小的数组

结构体中最后一个元素是长度为0的数组在Linux源代码中,有很多的结构体最后都定义了一个元素个数为0个的数组,如/usr/include/linux/if_pppox.h中有这样一个结构体: struct pppoe_tag {     __u16 tag_type;     __u16 tag_len;     char tag_data[0]; 

2016-12-12 10:16:43 4065

转载 boost shared_lock unique_lock区别

shared_lock是read lock。被锁后仍允许其他线程执行同样被shared_lock的代码。这是一般做读操作时的需要。unique_lock是write lock。被锁后不允许其他线程执行被shared_lock或unique_lock的代码。在写操作时,一般用这个,可以同时限制unique_lock的写和share_lock的读。

2016-11-29 15:27:45 1983

转载 以boost::function和boost:bind取代虚函数

http://blog.csdn.net/solstice/article/details/3066268

2016-11-28 16:36:07 372

转载 多线程并发-SEDA架构

http://surlymo.iteye.com/blog/2001529?utm_source=tuicool&utm_medium=referral一、传统并发模型的缺点基于线程的并发特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。基于事

2016-11-24 17:15:27 803

转载 linux查看端口是否禁用和开启关闭端口

1、开启端口(以80端口为例)      方法一:         /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT   写入修改         /etc/init.d/iptables save   保存修改        service iptables restart    重启防火墙,修改生效 

2016-10-21 15:38:42 31194

转载 Ubuntu 12.04 安装 gcc-4.8 及 gdb 7.6

为了使用C++ 11, 须安装 gcc-4.8 以上版本.按以下命令即可方便的安装 gcc-4.8 及 g++-4.8sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc-4.8sudo apt-get install g++-4.8安装

2016-08-19 16:16:48 4092

转载 在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1

在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 一、编译安装gcc 4.8.11. 安装gcc和g++新安装的CentOS缺少编译环境,必须先安装旧版本的gcc, 然后再进行自举编译yum -y install gcc yum -y install gcc-c++2. 下载gcc 4.8.1源码包wget http://ftp.gnu.org

2016-08-19 16:14:55 1039

转载 Boost 库 enable_shared_from_this 实现原理分析

使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这个类对象,而 shared_ptr 对类对象的这个引用没有计数,很有可能 shared_ptr 已经把类对象资源释放了,而那个调用函数还在使

2016-06-07 16:41:47 545

转载 using namespace [ns]与 using [ns]区别

using namespace [ns]与 using [ns]区别using namespace [ns] 表示命名空间 [ns] 下所有的域变成可见的。如using namespace std;则代码中可以用cout如果是using [ns]的话,则只有ns是本身是可用的。对于ns下的域仍然必须使用 ns.xxx 如usi

2016-06-07 16:10:25 1981 1

原创 重载操作符operator详解

operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。   这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。  一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只

2016-06-07 13:48:49 3115

转载 ffmpeg大神博客

http://mcodec.cnblogs.com/

2016-06-06 17:10:38 705

原创 线程占用内存多大?

#include #include int main(){// char *p =(char *) malloc(1024*1024); while(1) { sleep(1); } return 0;}主线程main占用内存大小为4188K ,大约4M示例2:#

2016-06-03 17:49:37 15772 1

转载 TCP滑动窗口机制

转载:http://blog.sina.com.cn/s/blog_5ec353710101g5a7.html我们可以大概看一下上图的模型:首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一

2016-06-03 10:50:38 673

转载 TCP三次握手,4次挥手

转载:http://blog.sina.com.cn/s/articlelist_2754431351_4_1.html很多网络知识为什么需要“三次握手”            在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络

2016-06-03 10:14:17 522

转载 TCP连接复用

TCP连接复用技术通过将前端多个客户的HTTP请求复用到后端与服务器建立的一个TCP连接上。这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带来的延时,并最大限度的降低客户端对后端服务器的并发连接数请求,减少服务器的资源占用。      一般情况下,客户端在发送HTTP请求之前需要先与服务器进行TCP三次握手,建立TCP连接,然后发送HTTP请求。服务器收到HTTP请求后

2016-06-03 09:15:47 4831

转载 iterator和iterator_traits

跟据侯捷的《STL源码剖析》一书中提到的《Design Patterns》一书中关于iterator模式定义:提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式。  当然,STL的中心思想在于:将数据容器和算法分开,彼此单独设计,最后再以一帖胶着剂将他们撮合在一起。  迭代器可以看作是一种smart pointer,故要进行内容提领和

2016-05-27 11:13:35 462

转载 ftp协议

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计

2016-05-20 10:27:36 517

原创 shared_ptr理解

shared_ptr是一种智能指针(smart pointer)。shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。shared_ptr是C++非常重要的一个防止内存泄露的设计作用:这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删

2016-05-20 09:17:10 1363

原创 STUN/TURN/ICE协议在P2P SIP中的应用(二)

转载:http://www.cnblogs.com/ishangs/p/3816689.htmlSTUN/TURN/ICE协议在P2P SIP中的应用(二)1       说明2       打洞和穿越的概念... 13       P2P中的打洞和穿越... 24       使用STUN系列 协议穿越的特点... 25       STUN/ TURN/

2016-05-16 17:29:34 3210

转载 Nat 穿透开源项目

Nat 穿透开源项目1. libnice   官网地址:http://nice.freedesktop.org/wiki/   源码git库地址:http://cgit.collabora.com/git/libnice.git 2. pjsip    pjsip中pjnath实现了ice的功能。    http://www.pjsip.or

2016-05-16 11:54:39 4829

转载 UDP socket也可以使用connect系统调用

UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。它可以用来指定本地端口和本地地址,来建立虚拟连接。 一个socket接口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。    对于UDP来说:    socket()函数建立一个插口;    bind()函数指明了本地地址/端口(包括ADD

2016-05-11 08:48:50 757

转载 memmove和memcpy

memmove和memcpy1.memmove函数原型:void *memmove(void *dest, const void *source, size_t count)返回值说明:返回指向dest的void *指针参数说明:dest,source分别为目标串和源串的首地址。count为要移动的字符的个数函数说明:memmove用于从source拷贝count个字符到d

2016-05-06 14:05:53 332

转载 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 2、阻塞模式与非阻塞模式下write的返回值各代表什么意思?有没有区别?阻塞与非阻塞write返回值没有区分,都是 0发送数据大小,特别:返回值 3、阻塞模式下read返回值 非

2016-05-04 09:59:52 364

转载 RM/RMVB文件格式总结

RM/RMVB文件格式总结RM文件格式是标准的标记符文件格式,RM文件格式把标记符块组合成头块,数据快,索引块,这些标记符块的组合方法如下:.RMF头块RealMedia File Header(RM 文件头)PROP属性头Properties(属性头)MDPR媒体属性头(可含多个)Media Properties(媒体属性头1)

2016-04-26 16:05:19 4628

转载 GCC中文手册

GCC 1Section: GNU Tools (1) Updated: 2003/12/05 Other Links: GNU GPL ChineseNAMEgcc,g++-GNU工程的C和C++编译器(egcs-1.1.2)总览(SYNOPSIS)gcc[option|filename ]...  g++[option|filename 

2016-04-25 09:36:31 4470

原创 127.0.0.1和本机ip区别

127.0.0.1 :这个地址通常分配给 loopback 接口。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。常的网络包从ip层进入链路层,然后发送到网络上,而发向loopback地址的包,直接在IP层短路了,也就是发到IP层的包直接被IP层接收了,不再向下发送。

2016-04-13 17:57:53 2885

转载 发散聚合IO(scatter-gather I/O)技术

scatter/gather I/O 2013-05-30 09:53:02分类: LINUXscatter/gather方式是与block dma方式相对应的一种dma方式。    在dma传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但在有的计算机体系中,如IA,连续的存储器地址在物理上不一定是连续的,则dma传输要分成

2016-04-06 16:53:24 4513

libevent源码分析

libevent是轻量级高性能的网络库,要深入了解网络基础必备的资料 也是对代码设计思想体会的教材

2015-12-02

指针和内存分配详解

深入的探讨了,指针和内存问题,很好的帮你解决指针和内存的各种疑惑

2015-02-11

android pulltorefresh

android pulltorefresh 类jar包

2014-12-15

MFC模态与非模态对话框的创建

MFC模态与非模态对话框的创建有截图详细步骤

2014-03-18

解析TS文件

解析传输流188或204byte的Ts文件

2014-03-18

空空如也

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

TA关注的人

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