库学习
ygmdream
为人处世!
展开
-
踢掉超时连接
说明:TcpServer.cc中客户端来一个连接的时候执行下面操作TcpConnectionPtr conn(newTcpConnection(ioLoop, connName, sockfd,转载 2014-05-15 12:01:08 · 816 阅读 · 0 评论 -
Channel类详解[1-3]
Channel.h// Copyright 2010, Shuo Chen. All rights reserved.// http://code.google.com/p/muduo///// Use of this source code is governed by a BSD-style license// that can be found in the Licen转载 2014-05-13 13:15:26 · 69935 阅读 · 0 评论 -
struct sockaddr与struct sockaddr_in的区别和联系
最近在看网络编程部分内容,刚开始接触结构体struct sockaddr和struct sockaddr_in的时候,极其迷惑,在网上翻了不少帖子,慢慢有那么点清晰了。呵呵,现在结合一篇网友的文章,对这两个结构体进行解读。在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned s转载 2014-05-14 10:33:29 · 2404 阅读 · 0 评论 -
修改listen监听的队列长度
修改somaxconn该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。echo 2048 > /proc/sys/net/core/somaxconn 但是这样系统重启后保存不了在/etc/sysctl.conf中添加如下net.core.somaxconn = 2048然后在终端中执行原创 2014-05-14 10:44:48 · 3127 阅读 · 0 评论 -
关于errno与perror,strerror函数
errno是一个由POSIX和ISO C标准定义的符号,看(用)起来就好像是一个整形变量。当系统调用或库函数发生错误的时候,比如以只读方式打开一个不存在的文件时,它的值将会被改变,根据errno值的不同,我们就可以知道自己的程序发生了什么错误,然后进行相应的处理。有人说,函数不是可以返回值吗,根据返回值照样可以判断程序在哪里出错了,为什么还需要errno?如果你有这样的疑问,推荐你看下这篇文章。转载 2014-05-14 11:01:00 · 1065 阅读 · 0 评论 -
readv/writev 函数
名称:: readv/writev功能:散布读/聚集写用法:#include 函数原形: ssize_t readv(int filedes,const struct iovec*iov,int iovcnt); ssize_t writev(int filedes,const struct iovec*iov,int iovcnt);参数:filedes 文件描转载 2014-05-14 10:50:50 · 768 阅读 · 0 评论 -
浅谈tcp_nodelay的作用
今天在用nginx作web缓存的时候,发现在http里加入这样个参数,能有效的提高数据的实时响应性,那就是tcp_nodelay.下面我们来说说tcp_nodelay的原理: TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是N转载 2014-05-14 11:26:49 · 902 阅读 · 0 评论 -
boost::shared_ptr 和 boost::weak_ptr 和 scoped_ptr
http://www.cnblogs.com/TianFang/archive/2008/09/20/1294590.html转载 2014-05-13 12:35:31 · 717 阅读 · 0 评论 -
class Socket[2-1]
Socket.h#ifndef MUDUO_NET_SOCKET_H#define MUDUO_NET_SOCKET_H#include namespace muduo{////// TCP networking.///namespace net{class InetAddress;////// Wrapper o转载 2014-05-14 11:30:46 · 749 阅读 · 0 评论 -
TcpServer类介绍[4-2]
TcpServer.h#ifndef MUDUO_NET_TCPSERVER_H#define MUDUO_NET_TCPSERVER_H#include #include #include #include #include namespace muduo{namespace net{class Acceptor;转载 2014-05-14 15:16:12 · 956 阅读 · 0 评论 -
Collection List Set Map 区别记忆
Collection List Set Map 区别记忆这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否允许元素重复否Collection否是List是是Set转载 2014-05-14 20:18:55 · 634 阅读 · 0 评论 -
TcpConnection类介绍[4-1]
TcpConnection.h#ifndef MUDUO_NET_TCPCONNECTION_H#define MUDUO_NET_TCPCONNECTION_H#include #include #include #include #include #include #include #include #include #inclu转载 2014-05-14 14:03:47 · 946 阅读 · 0 评论 -
Connector类介绍[3-0]
Connector.h#ifndef MUDUO_NET_CONNECTOR_H#define MUDUO_NET_CONNECTOR_H#include #include #include #include #include namespace muduo{namespace net{class Channel;转载 2014-05-14 13:25:09 · 1168 阅读 · 0 评论 -
InetAddress类分析[2-0]
InetAddress.h转载 2014-05-14 10:28:28 · 1070 阅读 · 0 评论 -
HttpServer服务端测试模块-详解[5-1]
主流程如下:之前章节大体介绍了下各模块,这里我们主要看看我们的应用HttpServer类是如何使用muduo库的.int main(int argc, char* argv[]){ int numThreads = 0; if (argc > 1) { benchmark = true; Logger::setLogLevel(Logger::WA转载 2014-05-14 16:22:12 · 2294 阅读 · 0 评论 -
TimerQueue类详解
TimerQueue.h#ifndef MUDUO_NET_TIMERQUEUE_H#define MUDUO_NET_TIMERQUEUE_H#include #include #include #include #include #include #include namespace muduo{namespace转载 2014-05-14 19:20:14 · 2865 阅读 · 0 评论 -
读写excel文件
xlslib库使用简记目录1 前言2 安装使用3 举例: 生成xls4 举例: 设置颜色5 举例: 设置列宽1 前言最近需要使用C++结合xlslib库来生成Excel文件,但发现这个库的文档还真难找,找来找去发现唯一的线索是有一个test/目录里面的几个例子而已。想到以后要不断的和这个库打交道,除非愿意用Python去重写,但吃力不讨好,还是做个笔转载 2016-04-29 10:28:51 · 1608 阅读 · 0 评论 -
陈老哥-源码分析-1
PollPoller.h// Copyright 2010, Shuo Chen. All rights reserved.// http://code.google.com/p/muduo///// Use of this source code is governed by a BSD-style license// that can be found in the Licens转载 2014-05-12 20:35:37 · 624 阅读 · 0 评论 -
Vector与List区别
1 vector与list区别vector为存储的对象分配一块连续的地址空间,因此对vector中的元素随机访问效率很高。在vecotor中插入或者删除某个元素,需要将现有元素进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vect转载 2014-05-13 13:50:10 · 635 阅读 · 0 评论 -
Boost.Function的基本使用
Boost.Function库用来提供一个对象化的函数指针。函数指针对设计很有用。它使调用者可以延期调用,调用时机由调用者确定。而且可以改变响应者,以应对不同的要求。C中的函数指针只能用于自由函数。在C++中除了自由函数还有函数对象和类成员函数,这些C的函数指针是无法用的。这要求能适应C++语言的函数指针。既然C++语言本身没有提供,那就提供一个库。stl提供了,但是定转载 2014-05-13 12:43:36 · 847 阅读 · 0 评论 -
Acceptor类介绍[4-0]
Acceptor.h转载 2014-05-14 14:59:54 · 1149 阅读 · 0 评论 -
TcpClient类介绍[3-1]
TcpClient.h#ifndef MUDUO_NET_TCPCLIENT_H#define MUDUO_NET_TCPCLIENT_H#include #include #include namespace muduo{namespace net{class Connector;typedef boost::share转载 2014-05-14 14:40:46 · 942 阅读 · 0 评论 -
Linux的timerfd分析
timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,所以能够被用于select/poll的应用场景。1. 使用方法timerfd提供了如下接口供用户使用timerfd_createint timerfd_create(int clockid, int flags);timerfd_create用于创建一个定时器文件。参数clockid转载 2014-05-14 17:37:27 · 906 阅读 · 0 评论 -
多线程下变量-原子操作 __sync_fetch_and_add等等
http://blog.csdn.net/i_am_jojo/article/details/7591743http://www.alexonlinux.com/multithreaded-simple-data-type-access-and-atomic-variables最近编码需要实现多线程环境下的计数器操作,统计相关事件的次数。下面是一些学习心得和体会。不敢妄称原转载 2014-05-14 18:29:56 · 3984 阅读 · 0 评论 -
Date测试
Timestamp.h转载 2014-05-15 18:07:15 · 985 阅读 · 0 评论 -
muduo库使用出错解决
collect2: error: ld returned 1 exit status答:可能是交叉编译器使用不同原创 2014-05-16 12:41:03 · 2415 阅读 · 0 评论 -
Timestamp测试
参考:muduo库以及http://blog.csdn.net/ygm_linux/article/details/25690829转载 2014-05-15 17:10:57 · 1259 阅读 · 0 评论 -
利用backtrace和backtrace_symbols函数打印调用栈信息
http://www.cnblogs.com/mickole/p/3246702.html在头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。#include int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buffe转载 2014-05-15 14:17:31 · 1751 阅读 · 0 评论 -
__sync_fetch_and_add测试demo
参考muduo库以及http://blog.csdn.net/ygm_linux/article/details/25823927Atomic.h转载 2014-05-15 16:17:05 · 952 阅读 · 0 评论 -
C++中正确使用PRId64
nt64_t用来表示64位整数,在32位系统中是long long int,在64位系统中是long int,所以打印int64_t的格式化方法是:[cpp] view plaincopyprintf("%ld", value); // 64bit OS printf("%lld", value); // 32bit OS 当转载 2014-05-15 16:40:28 · 2129 阅读 · 0 评论 -
智能家居项目-1-boa服务器简单测试
http://www.cnblogs.com/bryce/archive/2011/05/23/2054435.html转载 2014-05-18 11:09:06 · 3009 阅读 · 0 评论 -
先来理解boost::noncopyable[1-1]
1、先来理解boost::noncopyable(说明:http://blog.csdn.net/ygm_linux/article/details/25651327博客知道了,子类中实现了拷贝构造和赋值函数,则调用子类的拷贝构造和赋值函数; 子类中没有实现拷贝构造和赋值函数:则采取默认的流程。首先调用父类的拷贝构造函数。然后调用子类系统的拷贝构造函数,首先调用父类的赋值重载函数,然后调用子类原创 2014-05-13 10:22:07 · 1045 阅读 · 0 评论 -
再来理解Timestamp[1-2-1]
Timestamp.h#ifndef MUDUO_BASE_TIMESTAMP_H#define MUDUO_BASE_TIMESTAMP_H#include #include #include namespace muduo{////// Time stamp in UTC, in microseconds resolution.////// This class转载 2014-05-13 10:45:40 · 1284 阅读 · 0 评论 -
epoll处理
Poller.h#ifndef MUDUO_NET_POLLER_H#define MUDUO_NET_POLLER_H#include #include #include #include namespace muduo{namespace net{class Channel;////// Base cl转载 2014-05-13 15:18:20 · 611 阅读 · 0 评论 -
EventLoop分析[1-4]
首先看看是如何调用的:int main(int argc, char* argv[]){ int numThreads = 0; if (argc > 1) { benchmark = true; Logger::setLogLevel(Logger::WARN); numThreads = atoi(argv[1]); } Ev转载 2014-05-13 15:54:32 · 839 阅读 · 0 评论 -
Timestamp.cpp详解[1-2-2]
【1】转载 2014-05-13 11:31:43 · 828 阅读 · 0 评论 -
eventfd以及epoll原理分析
这两天公司代码中用到了epoll。然后在跟同事闲扯的过程中发现了Linux中有eventfd。两者虽然名字看起来差不多,但是相关性倒是不多。为了弄明白这两个东西到底在内核上是怎么实现的,这两天将内核这两个部分的相关代码看了下,也终于明白了这两个东西的实现机制。后续几篇博客我尽量将这两个东西的工作原理阐述清楚,但是自己的语言表达能力比较差,也只能是尽量了。今天这篇博客首先是介绍两者的转载 2014-05-13 13:27:06 · 3269 阅读 · 0 评论 -
Tera - 高性能、可伸缩的结构化数据库
OverviewTera是一个高性能、可伸缩的结构化数据存储系统,被设计用来管理搜索引擎万亿量级的超链与网页信息。为实现数据的实时分析与高效访问,我们使用按行键、列名和时间戳全局排序的三维数据模型组织数据,使用多级Cache系统,充分利用新一代服务器硬件大内存、SSD盘和万兆网卡的性能优势,做到模型灵活的同时,实现了高吞吐与水平扩展。特性全局有序热点自动分片数据强一致多版本转载 2017-01-18 20:03:31 · 572 阅读 · 0 评论