- 博客(23)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
转载 内存区域分配与ELF 之类的关系
转载地址:http://blog.csdn.net/love_gaohz/article/details/41310597一.在学习之前我们先看看ELF文件。ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。下面我们就从整体上看看这
2016-08-30 13:22:34 3921
转载 linux 遭遇SIGPIPE信号,导致进程退出的问题
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确
2016-08-25 20:36:42 2061
转载 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 3357
转载 带符号整数的除法与余数
转载地址:http://blog.csdn.net/solstice/article/details/5139302他的巧妙之处在于,用一个对称的 digits 数组搞定了负数转换的边界条件(二进制补码的正负整数表示范围不对称)。代码大致如下,经过改写: [c-sharp] view plain copy const char* convert(char
2016-08-18 20:27:08 1336
转载 C++的语义类型和弱引用
C++中存在两种语义:值语义(value sematics)和对象语义(object sematic),对象语义也可以叫做引用语义(reference sematics)。值语义,指的是对象的拷贝与原对象无关,就像拷贝int一样,C++的常用类型数据等都是值语义。对象语义,指的是面向对象意义下的对象,是禁止拷贝的。在设计一个类的时候该类是否可以被拷贝(即具备拷贝
2016-08-18 19:18:18 770
转载 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 1995
转载 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 10830
转载 数组去实现链表
分为两部分。一种是链表关系是为了知晓数据间关联,与正常链表一样的。另一种是为了知晓下一个可用位置的链表。第一种是原创见http://blog.csdn.net/pcliuguangtao/article/details/6316743第二种原创见loki库,稍微作相应的改变。第一种:/*基于结构体数组的链表实现*/ /* made by winlin 2011.4.
2016-08-17 20:03:33 1669
转载 二进制兼容问题
转载地址:http://blog.csdn.net/coolmeme/article/details/7188017二进制兼容问题,主要是针对动态链接库而言的。在Windows上就是dll,在linux上就是so。 如果主程序EXE(当然也可以是客户库)不变,升级了依赖库SO1到SO2,而不需要重新编译,那么就是说so2是兼容so1库的。二进制兼容涉及到编译问题,所以和硬件平台,软件平
2016-08-16 20:26:40 1658
转载 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 432
转载 论fork()函数与Linux中的多线程编程
转载请说明出处:http://blog.csdn.net/cywosp/article/details/27316803一、fork()函数 在操作系统的基本概念中进程是程序的一次执行,且是拥有资源的最小单位和调度单位(在引入线程的操作系统中,线程是最小的调度单位)。在Linux系统中创建进程有两种方式:一是由操作系统创建,二是由父进程创建进程(通常为子进程)。系统调用函数f
2016-08-15 20:04:57 395
转载 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 1618
转载 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 2276
转载 C++ STL算法系列之十六:iter_swap
上文中阐述了元素交换算法swap以及容器中swap成员函数的使用,尤其是通过vector成员函数的交换技巧实现容器内存的收缩,今天,我们要看到的是另一个变易算法,迭代器的交换算法iter_swap,顾名思义,该算法是通过迭代器来完成元素的交换。首先我们来看看函数的原型:函数原型:[cpp] view plain copy templateclass Forwar
2016-08-13 12:06:30 1950
转载 C++ function、bind以及lamda表达式
本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:
2016-08-13 10:02:16 330
转载 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 353
转载 详细解析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 1941 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 60765
转载 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 447
转载 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:$echo $$运行结果29949特殊变量列表变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个
2016-08-09 17:04:49 256
转载 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 5398
转载 C++ 11 的 unique_ptr
unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯
2016-08-08 19:23:30 654
转载 双缓存消息队列设计综述
仅从双缓存消息队列的技术角度去分析。使用双缓存方法去实现异步日志是否是比较有效方式,待讨论。双缓冲消息队列-减少锁竞争在网络应用服务器端, 为了性能和防止阻塞, 经常会把逻辑处理和I/O处理分离:I/O网络线程处理I/O事件: 数据包的接收和发送, 连接的建立和维护等.逻辑线程要对收到的数据包进行逻辑处理.通常网络线程和逻辑线程之间是通过数据包队列来交换信息, 简单来说
2016-08-08 13:19:55 1853
C++析构函数是怎么出来的?
2015-12-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人