- 博客(243)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
转载 setsockopt()用法(参数详细说明)
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,
2017-12-20 15:28:49
1981
转载 epoll开发建议说明
2.。。1、listen fd,有新连接请求,对端发送普通数据 触发EPOLLIN。2、带外数据,只触发EPOLLPRI。3、对端正常关闭(程序里close(),shell下kill或ctr+c),触发EPOLLIN和EPOLLRDHUP,但是不触发EPOLLERR 和EPOLLHUP。再man epoll_ctl看下后两个事件的说明,这两个应该是本端(server端)出错才触
2017-12-20 15:26:04
642
转载 大话keepalive
大话keepalive我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的。tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方端掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是RST,而不是ACK,那么就释放当前链接。设想一下,如果tcp层没有keepalive的机制,一
2017-12-18 14:19:41
494
转载 TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。【更新于2017.01.04 】该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好。这么久才来更新,抱歉!!错误配图如下:首先Client端发送连接请求报文,Server
2017-12-18 14:18:02
361
转载 TCP/IP网络编程 学习笔记_15 --多播与广播
转自:http://blog.csdn.net/u010223072/article/details/48269213前言:想想这么一种情况,网络电台可能需要同时向成千上万的用户传输相同的数据,如果用我们以前讲过的传输形式,每个用户都传输一次,这样肯定是不合理的。因此,就引入了多播技术来解决这个问题,它可以同时向大量用户发送相同数据。其基本原理是这样的:有个多播组,只要加入这个
2017-12-15 16:02:46
354
转载 python-如何统计序列中元素的出现频率?
转载地址:http://blog.csdn.net/qq_33936481/article/details/70241275from random import randintdata = [randint(0,20) for _ in range(30)]print(data)# 创建字典c = dict.fromkeys(data,0)for x in da
2017-05-02 08:35:27
4992
转载 利用 Python 进行数据分析(十二)pandas:数据合并
pandas 提供了三种主要方法可以对数据进行合并: 北京联盟 http://www.010lm.com/pandas.merge方法:数据库风格的合并;pandas.concat方法:轴向连接,即沿着一条轴将多个对象堆叠到一起;实例方法combine_first方法:合并重叠数据。pandas.merge方法:数据库风格的合并北京联盟 http://www.010lm.com/
2017-04-15 17:36:18
949
转载 IPython使用学习笔记
转载地址:http://www.cnblogs.com/zzhzhao/p/5295476.html学习《利用python进行数据分析》第三章 IPython:一种交互式计算和开发环境的笔记,共享给大家,同时为自己作为备忘用。安装ipython用pip即可。ps.博主用的是win7系统,所以接下来的都是在windows系统下操作的。 一.Ipython基
2017-03-26 21:28:26
4768
转载 掌握R语言中的apply函数族
转载地址:http://blog.fens.me/r-apply/R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,
2016-12-28 10:59:11
11851
转载 C++ 内存分配(new,operator new)详解
转载地址:http://blog.csdn.net/wudaijun/article/details/9273339这篇文章写得不错,看得出参考了很多比较好的博客,自己理解也很好,学习了。本文主要讲述C++ new关键字和operator new, placement new之间的种种关联,new的底层实现,以及operator new的重载和一些在内存池,STL中的应用。
2016-11-18 09:56:01
494
转载 C++中的函数对象(Function Object)
转载地址:http://blog.csdn.net/bonchoix/article/details/8050627 http://blog.csdn.net/bonchoix/article/details/8054639 一个函数对象,即一个重载了括号操作符“()”的对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。举个
2016-11-09 11:00:20
937
转载 程序占用的内存分析
转载地址:http://blog.csdn.net/luansxx/article/details/7702030OP显示的占用内存是进程的虚拟内存,我们需要了解的是程序实际占用内存的量,也就是物理内存占用。虚拟内存的地址和实际物理内存的地址之间有对应关系,这个关系是操作系统维护的,CPU负责根据这个对应关系进行地址转换。这种对应关系标准的说法叫“内存映射”。内存映射以页面映射形式
2016-10-23 17:38:29
3401
转载 进程的虚拟内存,物理内存,共享内存
想必在Linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。当然如果更加深入一点,你可能会问进程所占用的那些物理内存都用在了哪些地方?这时候top命令可能不能给到你
2016-10-23 17:37:43
10755
1
转载 Linux写时拷贝技术(copy-on-write)
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之前两个进程用
2016-10-23 11:50:46
360
转载 C++中的标准函数对象
转载地址:http://blog.csdn.net/ch函数对象函数对象是一种利用句法规则特定设计的类生成的对象,它的作用类似于函数。在C++中,这是通过在类中定义成员函数operator()实现的,举个例子:struct myclass { int operator()(int a) {return a;}}myobject;int x = myobject(0);它们作为断定或者
2016-10-23 09:54:40
492
转载 UNIX 如何使用交换空间
所有 UNIX 操作系统都支持某种虚拟内存 (VM) 系统。使用 VM 系统,您有两个主要区域来存储有关活动应用程序及其使用的数据的信息——物理随机访问存储器 (RAM) 和硬盘驱动器上分配的空间。在具有 VM 的计算机中,可加载到内存中的应用程序和数据量可以大于物理 RAM,因为没有活动地使用的应用程序和信息被交换 到了磁盘上(交换空间 这个术语由此得名)。VM 系统的优点在于,
2016-09-06 20:15:23
591
转载 内存区域分配与ELF 之类的关系
转载地址:http://blog.csdn.net/love_gaohz/article/details/41310597一.在学习之前我们先看看ELF文件。ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。下面我们就从整体上看看这
2016-08-30 13:22:34
3996
转载 linux 遭遇SIGPIPE信号,导致进程退出的问题
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确
2016-08-25 20:36:42
2088
转载 socket so_reuseport提高服务端性能
以前就在国外的论坛接触过 SO_REUSEPORT,这两天朋友群又在传播nginx 1.9 reuseport多进程监听参数。 那咱们简单说下 SO_REUSEPORT的应用场景, 为什么会用他? 然而在讲解SO_REUSEPORT之前,需要先说下我们常用的网络模型。文章写得不太严谨, 请砖家拍砖,另外标注下原文地址, http://xiaorui.cc/?p=2413当前L
2016-08-25 19:27:49
3381
转载 带符号整数的除法与余数
转载地址:http://blog.csdn.net/solstice/article/details/5139302他的巧妙之处在于,用一个对称的 digits 数组搞定了负数转换的边界条件(二进制补码的正负整数表示范围不对称)。代码大致如下,经过改写: [c-sharp] view plain copy const char* convert(char
2016-08-18 20:27:08
1366
转载 C++的语义类型和弱引用
C++中存在两种语义:值语义(value sematics)和对象语义(object sematic),对象语义也可以叫做引用语义(reference sematics)。值语义,指的是对象的拷贝与原对象无关,就像拷贝int一样,C++的常用类型数据等都是值语义。对象语义,指的是面向对象意义下的对象,是禁止拷贝的。在设计一个类的时候该类是否可以被拷贝(即具备拷贝
2016-08-18 19:18:18
792
转载 shared_from_this 几个值得注意的地方
shared_from_this()是enable_shared_from_this的成员 函数,返回shared_ptr。首先需要注意的是,这个函数仅在shared_ptr的构造函数被调用之后才能使 用。原因是enable_shared_from_this::weak_ptr并不在构造函数中设置,而是在shared_ptr的 构造函数中设置。如下代码是错误的:clas
2016-08-18 18:39:13
2050
转载 C++中 share_from_this类的作用和实现原理
转载地址:http://blog.csdn.net/acs713/article/details/29174191boost库中的share_from_this 已经在c11标准中实现。理论与boost相同,以下是按照boost的文档来解释该问题。使用boost库时,经常会看到如下的类class A:public enable_share_from_this在什么情况下要使
2016-08-18 10:23:49
10908
转载 数组去实现链表
分为两部分。一种是链表关系是为了知晓数据间关联,与正常链表一样的。另一种是为了知晓下一个可用位置的链表。第一种是原创见http://blog.csdn.net/pcliuguangtao/article/details/6316743第二种原创见loki库,稍微作相应的改变。第一种:/*基于结构体数组的链表实现*/ /* made by winlin 2011.4.
2016-08-17 20:03:33
1680
转载 二进制兼容问题
转载地址:http://blog.csdn.net/coolmeme/article/details/7188017二进制兼容问题,主要是针对动态链接库而言的。在Windows上就是dll,在linux上就是so。 如果主程序EXE(当然也可以是客户库)不变,升级了依赖库SO1到SO2,而不需要重新编译,那么就是说so2是兼容so1库的。二进制兼容涉及到编译问题,所以和硬件平台,软件平
2016-08-16 20:26:40
1681
转载 Policies/Binary Compatibility Issues With C++
Contents1Definition2Note about ABI3The Do's and Don'ts4Techniques for Library Programmers4.1Bitflags4.2Using a d-Pointer5Trouble shooting5.1Adding new data members to c
2016-08-16 20:18:07
448
转载 论fork()函数与Linux中的多线程编程
转载请说明出处:http://blog.csdn.net/cywosp/article/details/27316803一、fork()函数 在操作系统的基本概念中进程是程序的一次执行,且是拥有资源的最小单位和调度单位(在引入线程的操作系统中,线程是最小的调度单位)。在Linux系统中创建进程有两种方式:一是由操作系统创建,二是由父进程创建进程(通常为子进程)。系统调用函数f
2016-08-15 20:04:57
406
转载 linux获取各种进程类型的信息
1 password file终端上输入cat /etc/passwd可以看见很多相关信息。也可以通过以下函数:#include #include struct passwd* getpwnam(const char* name);struct passwd* getpwuid(uid_t uid);int getpwnam_
2016-08-15 19:00:17
1675
转载 linux 下文件及目录函数
文件及目录函数(37)chdir, chmod, chown, chrootfchdir, fchmod, fchown, ftruncatelchown, truncate,get_current_dir_name, getcwd, getwdopendir, closedir, readir, scandir, seekdir, rewinddir,telldir(mk
2016-08-15 16:48:26
2293
转载 C++ STL算法系列之十六:iter_swap
上文中阐述了元素交换算法swap以及容器中swap成员函数的使用,尤其是通过vector成员函数的交换技巧实现容器内存的收缩,今天,我们要看到的是另一个变易算法,迭代器的交换算法iter_swap,顾名思义,该算法是通过迭代器来完成元素的交换。首先我们来看看函数的原型:函数原型:[cpp] view plain copy templateclass Forwar
2016-08-13 12:06:30
2047
转载 C++ function、bind以及lamda表达式
本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:
2016-08-13 10:02:16
342
转载 boost中的bind的四种使用环境
int f(int a, int b) { return a + b; } int g(int a, int b, int c) { return a + b + c; } // 函数指针定义 typedef int (*f_type) (int, int); typedef int (*g_type) (
2016-08-12 13:57:11
359
转载 详细解析boost中bind的实现
转载地址:http://blog.csdn.net/hengyunabc/article/details/7773250写在前面的话在C++11之后,std::bind是C++标准库的一个组件了。一开始想弄个C++11的实现来研究下,发现里面用到了可变参数模板(代码变得非常神奇).http://llvm.org/svn/llvm-project/libcxx/trunk/inclu
2016-08-12 13:55:41
1953
1
转载 linux中pid,tid, 以及 真实pid的关系
1、pid,tid,真实pid的使用进程pid: getpid() 线程tid: pthread_self() //进程内唯一,但是在不同进程则不唯一。线程pid: syscall(SYS_gettid) //系统内是唯一的#include #include #include #include struct messag
2016-08-11 16:19:08
61166
转载 Linux中的线程局部存储(二)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/26876231 在Linux中还有一种更为高效的线程局部存储方法,就是使用关键字__thread来定义变量。__thread是GCC内置的线程局部存储设施(Thread-Local Storage),它的实现非常高效,与pthread_key_t向比较更为快速,其存储性
2016-08-11 15:55:29
457
转载 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:$echo $$运行结果29949特殊变量列表变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个
2016-08-09 17:04:49
275
转载 Linux shell脚本中父子进程与变量的分析
转载地址:https://site.douban.com/196781/widget/notes/12220452/note/261008964/【问题】一个 test.sh 里面这么写#! /bin/bashread testecho $testexit 0保存, chmod +x test.sh./test.sh譬如输入 ok, 脚本就输出 ok然后在
2016-08-09 16:06:09
5438
转载 C++ 11 的 unique_ptr
unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯
2016-08-08 19:23:30
674
转载 双缓存消息队列设计综述
仅从双缓存消息队列的技术角度去分析。使用双缓存方法去实现异步日志是否是比较有效方式,待讨论。双缓冲消息队列-减少锁竞争在网络应用服务器端, 为了性能和防止阻塞, 经常会把逻辑处理和I/O处理分离:I/O网络线程处理I/O事件: 数据包的接收和发送, 连接的建立和维护等.逻辑线程要对收到的数据包进行逻辑处理.通常网络线程和逻辑线程之间是通过数据包队列来交换信息, 简单来说
2016-08-08 13:19:55
1881
转载 Unix/Linux中的read和write函数
文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用open或create返回的文件描述符表示该文件,将其作为参数传给read或write函数。write函数 write函数定义如下:#include ssize_t write(int fil
2016-07-31 18:38:51
9330
C++析构函数是怎么出来的?
2015-12-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人