c/c++
爬虫仔蛙
两全其美皆大欢喜
展开
-
Socket心跳包机制
心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。方法2:TCP的KeepAlive保活机制因为要考虑到一个服务器通常会连接多个客户端,因此由用户在应用层自己实现心跳包,代码较多转载 2021-05-26 16:39:19 · 1424 阅读 · 0 评论 -
2021-03-06
项目拔高点思考总结:libco;分布式缓存设计;brpc;epoll + 异步;原创 2021-03-06 22:46:51 · 102 阅读 · 0 评论 -
char *使用注意点
函数传递形参: char *a,如果是修改a指向的buffer内容是可以的, 但是a= (char*)malloc(sizeof(char)*5) 指向新的空间则不行, 有问题的。https://blog.csdn.net/z702143700/article/details/46628251/原创 2020-11-26 16:50:19 · 256 阅读 · 0 评论 -
c 指针的指针
#include <stdio.h>#include <string.h>#include <stdlib.h>int main() { int var; int *ptr; int **pptr; var = 3000; /* 获取 var 的地址 */ ptr = &var; /* 使用运算符 & 获取 ptr 的地址 */ //tr = &ptr; pptr = mall.原创 2020-07-24 15:57:44 · 160 阅读 · 1 评论 -
高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT
本文是我将最近两篇文章,重新整理成一篇,方便收藏。如果你已经阅读过前两篇,并且已经做了收藏,可以重新收藏本文即可。你有收藏和整理文章的习惯吗?好好利用Evernote或者印象笔记,不要吝啬那点年费,你值得购买,并养成收藏和整理的习惯!本文源于大家在公众号里面的留言,既然很多人都搞不清楚TIME_WAIT和CLOSE_WAIT,那么小胖哥今天还是抽个时间,统一帮大家理理...原创 2020-04-24 14:55:18 · 276 阅读 · 0 评论 -
什么是posix
在网上查到对于posix的介绍,来自《Linux内核设计与实现(第2版)》的第5章,就这部分来看,这本书估计不错。一般情况下,应用程序通过应用编程接口(API)而不是直接通过系统调用来编程。这点很重要,因为应用程序使用的这种编程接口实际上并不需要和内核 提供的系统调用对应。一个API定义了一组应用程序使用的编程接口。它们可以实现成一个系统调用,也可以通过调用多个系统调用来实现,而完全不使用任...原创 2019-11-20 16:20:53 · 309 阅读 · 0 评论 -
不同字节数表示数字范围
无符号(1字节) 0到255有符号(1字节)-128到127无符号(2字节) 0到65535有符号(2字节) -32768到32765无符号(4字节) 0到4294967295有符号(4字节)-2147483648到2147483647unsigned int 0~4294967295int -2147483648~2147483647unsigned long 0~4294...原创 2019-06-06 11:51:04 · 1518 阅读 · 0 评论 -
C语言中函数返回字符串的四种方法
https://www.cnblogs.com/qingergege/p/6496683.html在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程。你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来的是个地址,函数也就会拷贝该地址供自己使用。同样return返回时,如果返回一个值,函数会将该值拷...转载 2019-06-20 15:01:20 · 836 阅读 · 0 评论 -
static link:关于gcc连接静态库的几种方式
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/83239949开发一个应用程序不可避免要使用多个第三方库(library).默认情况下,gcc采用动态连接的方式连接第三方库,比如指定-lpng,连接程序就会去找libpng.so。gcc提供了一个-static参数,可以改变gcc默认的连接方...原创 2019-06-20 21:43:41 · 819 阅读 · 0 评论 -
问题:如何在分布式集群中生成全局唯一的ID?
https://www.cnblogs.com/haoxinyue/p/5208136.html方法一:UUIDUUID是通用唯一识别码 (Universally Unique Identifier),在其他语言中也叫GUID,可以生成一个长度32位的全局唯一识别码。//e493a18e-61d0-499a-87c1-650d03735edbString uuid = UUID.ran...原创 2019-07-10 11:38:29 · 342 阅读 · 0 评论 -
lcov收集覆盖率
1、gcov1.1 什么是gcov 首先我们要了解什么是gcov,gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用例生成代码覆盖率信息。1.2 如何使用gcov 用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项,链接的时候也加上。 ...原创 2019-04-18 14:31:44 · 2719 阅读 · 0 评论 -
GCC常用参数详解
简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步:1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld]GCC能够处理的后缀有:...原创 2019-04-18 10:52:31 · 789 阅读 · 0 评论 -
g++(gcc)编译选项
-shared :指定生成动态链接库。-static :指定生成静态链接库。-fPIC :表示编译为位置独立的代码,用于编译共享库。目标文件需要创建成位置无关码,念上就是在可执行程序装载它们的时候,它们可以放在可执行程序的内存里的任何地方。-L. :表示要连接的库所在的目录。-l:指定链接时需要的动态库。编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.a/...转载 2019-03-29 13:17:36 · 1048 阅读 · 0 评论 -
Linux的.a、.so和.o文件
在说明Linux的.a、.so和.o文件关系之前,先来看看windows下obj,lib,dll,exe的关系 windows下obj,lib,dll,exe的关系 lib是和dll对应的。lib是静态链接库的库文件,dll是动态链接库的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。 ...转载 2018-08-22 21:43:12 · 203 阅读 · 0 评论 -
boost::thread的六种使用方法总结
个人分类: c++boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0<void>& threadfunc): boost::function0<void>可以简单看为:一个无返回(返回void),无参数...原创 2018-09-19 22:34:19 · 1957 阅读 · 0 评论 -
Dev-C++下基本类型所占位数和取值范围:
符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%usigned -- char 8 ...原创 2018-09-28 16:02:23 · 1905 阅读 · 0 评论 -
linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。自己指定的路径就不说了,这里说明一下系统自动搜索的路径。 【1】include头文件路径 除了默认的/usr/include, /usr/local/include等include路径外,还可以通过设置环境变量来添加系统incl...原创 2018-12-06 14:37:33 · 677 阅读 · 0 评论 -
c/c++: uint8_t uint16_t uint32_t uint64_t size_t ssize_t数据类型
原文写的不错,转来收藏,转自:http://wangyisouhuxin.blog.163.com/blog/static/761966592011072348700/?fromdm&fromSearch&isFromSearchEngine=yes 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc...原创 2019-01-10 17:48:44 · 604 阅读 · 0 评论 -
DPDK的基本原理
网络设备(路由器、交换机、媒体网关、SBC、PS网关等)需要在瞬间进行大量的报文收发,因此在传统的网络设备上,往往能够看到专门的NP(Network Process)处理器,有的用FPGA,有的用ASIC。这些专用器件通过内置的硬件电路(或通过编程形成的硬件电路)高效转发报文,只有需要对报文进行深度处理的时候才需要CPU干涉。但在公有云、NFV等应用场景下,基础设施以CPU为运算核心,往往不具...原创 2019-02-01 15:32:46 · 955 阅读 · 0 评论 -
./configure 的配置和用法
Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。'configure'脚本有大量的命令行选项。对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是...原创 2019-01-28 13:08:31 · 1920 阅读 · 0 评论 -
Linux系统调用列表
一、进程控制:函数名 描述 文件 fork 创建一个新进程 kernel/fork.c clone 按指定条件创建子进程 kernel/fork.c execve 运行可执行文件 fs/exec.c exit 中止进程 kernel/exit.c _exit 立即中止当前进程 getdtable...原创 2019-03-04 17:30:53 · 267 阅读 · 0 评论 -
linux 系统调用号表
位置位于/usr/include/asm/unistd.h由于我是64位系统,所以有一些额外的东西。我的这个文件为下文#ifndef _ASM_X86_UNISTD_H#define _ASM_X86_UNISTD_H/* x32 syscall flag bit */#define __X32_SYSCALL_BIT 0x40000000# ifdef __i386...转载 2019-03-04 17:35:06 · 1686 阅读 · 0 评论 -
理清gcc、libc、libstdc++的关系
当你在linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题? 时不时报个glibc,gcc,g++等相关的错误? 很多时候都无从下手,而且比较混乱。 这也是编译链接过程中经常出现的问题。这篇文章不是去介绍如何编译链接,而是理清编译链接过程中碰到的一些概念和出现的问题。尤其是,libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++。从...原创 2019-04-10 15:21:13 · 11423 阅读 · 4 评论 -
如何快速查看将C反汇编的代码
查看反汇编主要的思路在于将 流程,处理,算法 区分开来。1 函数调用:原C代码:int sum(int, int);int main(){ int c = sum(1, 2); printf("c=%d", c); return 0;}int sum(int a, int b){ int c = a + b; return c;}反原创 2015-12-15 10:39:03 · 1487 阅读 · 0 评论