- 博客(332)
- 资源 (5)
- 收藏
- 关注
转载 mongodb,redis,mysql 简要对比
mongodb,redis,mysql 简要对比本篇内容大部分不是原创,转载的会贴有链接。准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块。当下主流的要数NoSql数据库了,拥有强大的高并发能力。mongodb:它是一个内存数据库,数据都是放在内存里面的。对数据的操作大部分都在内存中,但mongodb并不是单纯的内存数据库。持久化
2017-02-10 17:42:29
731
转载 redis和memcache对比
1. 使用Redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2) 支持丰富数据类型,支持string,list,set,sorted set,hash(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) 丰富的特性:可用于缓存,消息,
2017-02-10 15:08:01
1197
转载 memcache深入解析
1.为什么要使用memcache由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如:1)对数据库的高并发读写:关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务处理等)。如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的。2)对海量数据的处理:对于大型的SNS网站,每天有上千万次的苏剧产生(如twitter, 新浪微博)。
2017-02-10 14:56:52
576
转载 Reactor和Proactor模式
首先分享一下,我在网上看到的两篇不错的文章:正是这两篇文章才理解了reactor和proactor模式; 首先就第一篇《Reactor模式,或者叫反应器模式》做一下笔记: 刚开店做生意,老板为了给顾客一个美好的印象,给顾客最好的服务,一对一: 随着经营的生意越来越好,顾客多了,不能服务员也多吧,那样得支出的成本也太大了,要是一下子来个1000个顾客,
2017-02-09 14:48:26
523
转载 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
11075
转载 模板参数自动推导
上次,我们看了什么是模板函数,今天,我们就从这个模板函数入手,继而引出一个新的知识点-模板参数自动推导。为了介绍清楚什么是模板参数自动推导,我们先定义几个术语,通过这些术语来描述比较方便,这些术语是:模板形参,模板实参,模板函数形参,模板函数实参。 为了表达明确,我们先来看一下图1,图1中指出了什么是模板参数,模板实参,模板函数形参,模板函数实参。图1 术语 就像图1所
2017-01-16 09:35:48
563
转载 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
426
转载 c++ list, vector, map, set 区别与用法比较
c++ list, vector, map, set 区别与用法比较List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,
2016-12-22 13:57:20
547
转载 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
587
转载 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
1414
原创 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
826
翻译 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
444
原创 STL 源码剖析笔记之仿函数
仿函数(functor)的概念在我们写代码时有时会发现有些功能实现的代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就要单立出一个函数,也不是很好维护。这时就可以用仿函数了,写一个简单类,除了那些维护一个类
2016-12-16 16:09:21
383
转载 使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
4110
转载 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
1991
转载 以boost::function和boost:bind取代虚函数
http://blog.csdn.net/solstice/article/details/3066268
2016-11-28 16:36:07
384
转载 多线程并发-SEDA架构
http://surlymo.iteye.com/blog/2001529?utm_source=tuicool&utm_medium=referral一、传统并发模型的缺点基于线程的并发特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。基于事
2016-11-24 17:15:27
817
转载 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
31470
转载 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
4193
转载 在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
1050
转载 Boost 库 enable_shared_from_this 实现原理分析
使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这个类对象,而 shared_ptr 对类对象的这个引用没有计数,很有可能 shared_ptr 已经把类对象资源释放了,而那个调用函数还在使
2016-06-07 16:41:47
553
转载 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
2017
1
原创 重载操作符operator详解
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。 一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只
2016-06-07 13:48:49
3130
原创 线程占用内存多大?
#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
15856
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
680
转载 TCP三次握手,4次挥手
转载:http://blog.sina.com.cn/s/articlelist_2754431351_4_1.html很多网络知识为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络
2016-06-03 10:14:17
530
转载 TCP连接复用
TCP连接复用技术通过将前端多个客户的HTTP请求复用到后端与服务器建立的一个TCP连接上。这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带来的延时,并最大限度的降低客户端对后端服务器的并发连接数请求,减少服务器的资源占用。 一般情况下,客户端在发送HTTP请求之前需要先与服务器进行TCP三次握手,建立TCP连接,然后发送HTTP请求。服务器收到HTTP请求后
2016-06-03 09:15:47
4865
转载 iterator和iterator_traits
跟据侯捷的《STL源码剖析》一书中提到的《Design Patterns》一书中关于iterator模式定义:提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式。 当然,STL的中心思想在于:将数据容器和算法分开,彼此单独设计,最后再以一帖胶着剂将他们撮合在一起。 迭代器可以看作是一种smart pointer,故要进行内容提领和
2016-05-27 11:13:35
479
转载 ftp协议
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计
2016-05-20 10:27:36
557
原创 shared_ptr理解
shared_ptr是一种智能指针(smart pointer)。shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。shared_ptr是C++非常重要的一个防止内存泄露的设计作用:这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删
2016-05-20 09:17:10
1390
原创 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
3228
转载 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
4866
转载 UDP socket也可以使用connect系统调用
UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。它可以用来指定本地端口和本地地址,来建立虚拟连接。 一个socket接口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。 对于UDP来说: socket()函数建立一个插口; bind()函数指明了本地地址/端口(包括ADD
2016-05-11 08:48:50
773
转载 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
346
转载 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 2、阻塞模式与非阻塞模式下write的返回值各代表什么意思?有没有区别?阻塞与非阻塞write返回值没有区分,都是 0发送数据大小,特别:返回值 3、阻塞模式下read返回值 非
2016-05-04 09:59:52
378
转载 RM/RMVB文件格式总结
RM/RMVB文件格式总结RM文件格式是标准的标记符文件格式,RM文件格式把标记符块组合成头块,数据快,索引块,这些标记符块的组合方法如下:.RMF头块RealMedia File Header(RM 文件头)PROP属性头Properties(属性头)MDPR媒体属性头(可含多个)Media Properties(媒体属性头1)
2016-04-26 16:05:19
4678
转载 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
4508
原创 127.0.0.1和本机ip区别
127.0.0.1 :这个地址通常分配给 loopback 接口。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。常的网络包从ip层进入链路层,然后发送到网络上,而发向loopback地址的包,直接在IP层短路了,也就是发到IP层的包直接被IP层接收了,不再向下发送。
2016-04-13 17:57:53
2952
转载 发散聚合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
4565
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人