自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

转载 linux各目录详细介绍

/bin 二进制可执行命令/dev 设备特殊文件/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件/sbin 超级管理命令,这里存放的是系统管理员使用的管理程序/tmp 公共的临时文件存储点/root 系统管理员的主目录/mnt 系统提供这个目录是让用户临时挂载其他的文件系统/lost+.

2020-12-08 14:23:32 220

转载 netstat

Linux netstat 命令用于显示网络状态。利用 netstat 指令可让你得知整个 Linux 系统的网络情况。从整体上看,netstat的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列,这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积,这种情况非常少见。另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一

2020-08-07 16:31:46 611

原创 date命令

date #显示当前时间date -s “2019-01-22 19:22:22” #修改系统时间date -d@1363779026 #类1363779026形式的时间格式转化为人可识别的时间格式date +%s #从1970年1月1日00:00:00 UTC到目前为止的秒数(时间戳)tzselect

2020-07-31 16:55:00 325 1

转载 shell 中 [-eq] [-ne] [-gt] [-lt] [ge] [le]

-eq           //等于-ne           //不等于-gt            //大于 (greater )-lt   

2020-07-31 11:39:23 194

原创 crontab定时任务

crontab命令 / crond服务:crontab命令 :设置定时任务,即用户任务调度。crond服务:Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。操作系统默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。crontab命令:crontab filecrontab opt就是将当前目录下的opt文件导入当前用户的crontab配置文件中.crontab -l查看当前

2020-07-30 17:02:15 141

转载 内网和外网之间的通信

对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外网的呢?再者,我们大多人都是使用宽带上网,结果发现,A 和 B 的局域网 IP 都是192.168.31.11,当他们都访问百度浏览网页时,百度服务器回复数据时,如何区分是给 A 还是给 B 呢?公有 IP 和私有 IP 的区别首先,我们需要了解一下什么是公有 IP 和私有 IP ?公有地址(Public

2020-06-29 17:43:29 1785

转载 fwrite ,fprintf的作用与区别

1.概念和作用fwrite是C语言函数,指向文件写入一个数据块,通常是数组或结构体。fprintf是C/C++中的一个格式化写-库函数,其作用是格式输出到一个流/文件中.2.用法fwrite 函数示例一:/* fwrite example: write buffer */#include "stdafx.h"#include <stdio.h>int main(int argc, char* argv[]){ FILE * pFile; char bu

2020-05-26 10:22:53 1471

转载 Getmemory函数详解--内存操作的理解

题目:void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, “hello world”);printf(str);}请问运行Test 函数会有什么样的结果?分析:程序崩溃。因为GetMemory 并不能传递动态内存,Test 函数中的 str 一直都是 NULL。strcpy(str, “hello world”);将使程

2020-05-14 15:43:15 2575

转载 epoll函数及用法

epoll介绍相关函数相关结构体例子一、epollEpoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。二、相关函数头文件:#include <sys/epoll.h&gt...

2020-04-21 15:47:51 1148

原创 zlog模块化

大型项目中zlog的模块化:下载zlog库并安装,将生成的/usr/local/lib和/usr/local/include 两个目录复制到自己程序目录下,Makefile:gcc -Wl,rpath=./lib -L./lib -I./include -lzlog配置文件 ./config/zlog.conf:[formats]ms = “%d.%ms %...

2020-04-17 17:17:26 211

原创 一个较全的Makefile例子

CC = gccCFLAGS = -std=gnu99 -ggdb -D_BSD_SOURCECFLAGS += -Wl,-rpath=./lib -L./lib #动态库链接路径LIBS = zlog pthread #指定需要链接的库的名字INCLUDES = ./kernel ./algorithm ./include #指定头文件路径SUB_DIR = kernel...

2020-04-17 16:58:51 216

原创 connect错误:no route to host

linux下,socket ,用vmware装了两个虚拟机,分别运行客户端和服务器端。客户端连接的时候报错:connect error:no route to host。 但是在同一虚拟机下运行正常。 我检查了socket返回值,正常; 地址和端口也没问题。 两台虚拟机可以互ping 请教高手,这是什么情况??没有关闭防火墙:systemctl stop firealld.service...

2020-04-15 17:20:26 17881 4

原创 numa架构

NUMA(Non-Uniform Memory Access,非一致性内存访问)和SMP(Symmetric Multi-Processor,对称多处理器系统)是两种不同的CPU硬件体系架构。SMP的主要特征是共享,所有的CPU共享使用全部资源,例如内存、总线和I/O,多个CPU对称工作,彼此之间没有主次之分,平等地访问共享的资源,这样势必引入资源的竞争问题,从而导致它的扩展内力非常有限;NUM...

2020-04-15 15:27:41 360

转载 物理cpu数,逻辑cpu数,cpu核数

一、物理CPU数机器的主板上实际插入插槽的CPU个数。二、CPU核数单块CPU上面集成一个或者多个处理器芯片(称为Core,核心)。CPU最初发展的时候是一个CPU一个处理核心,CPU的性能主要靠提高核心工作频率来提高,但是仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善。为了提升处理器的能效,于是发展出来了双核心CPU(Dual-core processor)和多核心的CP...

2020-04-15 15:08:05 2150

转载 网卡的混杂模式介绍

什么是混杂模式网卡都有哪些工作模式如何设置或取消网卡的混杂模式通常在需要用到抓包工具,例如sniffer时,需要把网卡置于混杂模式。一 混杂模式基本概念一般情况下,网卡往往只会接收目的地址是它的数据包而不会接收目的地址不是它的数据包。混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。默认情况下,网卡只把发给本机的包(包括广播包)传递给上层程序,其他的包一律丢弃。混杂模...

2020-04-14 11:54:24 10114

转载 libpcap网络数据包捕获函数库 的介绍与安装

下载编译安装实例该库提供的C函数接口用于捕捉经过指定网络接口的数据包.下载:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libpcap.html安装编译:tar -zxvf libpcap-1.9.1.tar.gz./configure 配置make 编译make install 安装,默认目录/...

2020-04-13 23:17:13 224

原创 实际代码中动态链接库的位置问题

我有个问题哈:zlog, avro,pcap这些库,一般我们用的时候是把/usr/local/下边 所有相关内容全部复制到 我们程序目录lib/下,然后gcc 时加上 -Wl,rpath= -L 这些? 那这样不是比较复杂而且容易丢东西。还有一种方法是把/usr/local/lib加到/etc/ld.so.conf中,然后ldconfig。这样不是方便一点吗?一般都是用第一种方法...

2020-04-13 17:23:01 411

原创 avro库 [数据序列化系统] c语言版本的下载安装

avro库的下载安装下载avro库c语言版本:浏览器下载地址再上传至虚拟机:https://mirror.bit.edu.cn/apache/avro/avro-1.9.2/或者linux上直接下载:wget https://mirror.bit.edu.cn/apache/avro/avro-1.9.2/c/avro-c-1.9.2.tar.gz编译与安装:$ tar zx...

2020-04-13 10:02:11 609

原创 zlog 纯C日志函数库

zlog的下载与安装动态库链接时、执行时搜索路径顺序zlog使用zlog实例下载:在http://hardysimpson.github.io/zlog/ 下载最新的zlog源码包 zlog-1.2.12.tar.gz。编译与安装:$tar -zxvf zlog-1.2.12.tar.gz#解压$cd zlog-1.2.12/#进入目录$make#编译。在zlog-...

2020-04-12 23:05:54 525

转载 gcc -ldl

以下函数编译时候要加入 -ldl (指定dl库): 例如:gcc test.c -o test -ldldlopen()功能:打开一个动态链接库包含头文件:#include <dlfcn.h>函数定义:void * dlopen( const char * pathname, int mode );函数描述:在dlopen的()函数以指定模式打开指定的动态连接库文件,并...

2020-04-12 19:22:51 1680

转载 gcc -wl,-rpath=参数

使用GCC编译动态链接库的项目时,在其他目录下执行很可以出现找不到动态链接库的问题。这种情况多发生在动态链接库是自己开发的情况下,原因就是程序运行时找不到去何处加载动态链接库。可能会说在编译时指定了链接的目录啊? 编译时指定的 -L的目录,只是在程序链接成可执行文件时使用的。程序执行时动态链接库加载不到动态链接库。解决办法有两种:程序链接时指定链接库的位置,就是使用-wl,-rpath...

2020-04-12 18:30:35 1603

原创 make: *** No rule to make target 'test1.o', needed by 'test2'. Stop。

make的时候出现以下错误:make: *** No rule to make target ‘test1.o’, needed by ‘test2’. Stop。解决办法:最常见的可能是没有正确书写test1.o对应的源文件的路径。...

2020-04-09 17:51:52 352

转载 centos安装dpdk

下载dpdk包并解压配置环境变量编译dpdk测试dpdk参考文章1. 下载dpdk安装包http://core.dpdk.org/download/下载 dpdk-19.02.tar.xz解压到本地目录/home下: tar -xf dpdk-19.02.tar.xz2. 环境变量配置:在dpdk-19.08下,创建一个dpdkenv的文件,在里面填充如下内容:...

2020-03-10 19:44:47 2725

转载 Makefile教程(未完待续)

dd

2020-02-29 19:57:53 179

转载 socket编程中write、read和send、recv

send():是一个系统调用函数,用来发送消息到一个套接字中#include <sys/types.h>#include <sys/socket.h>ssize_t send(int sockfd, const void *buf, size_t len, int flags);说明:send()函数只能在套接字处于连接状态的时候才能使用。(只有这样才知道接受者...

2020-02-10 16:52:30 937

转载 公网和内网

公网和内网的区别服务器公网ip可以用于域名解析ip,服务器远程登录ip,是最主要的服务器ip地址。内网ip不能用于域名解析。不可以直接用于服务器远程登录,其主要作用是:跟当前帐号下的其他同集群的机器通信。一些小型企业或者学校,通常都是申请一个固定的IP地址,然后通过IP共享(IP Sharing),使用整个公司或学校的机器都能够访问互联网。而这些企业或学校的机器使用的IP地址就是内网...

2020-01-20 15:07:10 295

原创 git用法---windows以及linux

淡淡的

2020-01-15 18:26:07 153

原创 多线程-线程锁-while循环

今天写多线程遇到了几个问题,导致程序一直无法正常运行:多个线程共用一个函数的时候,,由于没有用线程锁,导致无法正常运行;函数中有while循环,加入多线程之后,,由于没有进行初始化互斥量,导致只有第一个线程起作用。下面是例子:#include <stdio.h>#include <stdlib.h>#include <pthread.h>#in...

2019-12-04 16:14:34 3919

转载 结构体的补齐与对齐

首先我们先看看下面的C语言的结构体:typedef struct MemAlign { int a; char b[3]; int c; }MemAlign; 以上这个结构体占用内存多少空间呢?也许你会说,这个简单,计算每个类型的大小,将它们相加就行了,以32为平台为例,int类型占4字节,char占用1字节,所以:4 + 3 + 4 = 11,...

2019-10-29 15:51:45 519

转载 extern与头文件(*.h)的区别和联系

用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字?如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个问题一直也是似是而非的困扰着我许久,经过实践和查找资料,有如下总结:一、头文件首先说下头文件,其实头文件对计算机而言没什么作用,...

2019-10-15 17:10:00 115

转载 预处理,编译,汇编,链接

预处理,编译,汇编,链接程序的区别@(OS)一段高级语言代码经过四个阶段的处理形成可执行的目标二进制代码。预处理器→编译器→汇编器→链接器预处理器→编译器→汇编器→链接器最难理解的是编译与汇编的区别。这里采用《深入理解计算机系统》的说法。预处理阶段:写好的高级语言的程序文本比如hello.c,预处理器根据#开头的命令,修改原始的程序,如#include<stdio.h>#i...

2019-10-10 11:01:26 302 1

原创 linux多线程理解,附小例子

今天写了4部分内容:在线程和进程的基础上,理解多线程是干什么的相关函数一个包含了2个线程的小例子经常遇到的一个错误一、首先,先来说几点关于线程、进程、多线程的理解:一个cpu有多个核,通常情况下一个核心对应一个线程,就可以提高程序运行效率。有篇文章是这么比喻的:没有线程的多核CPU 就像是 多个人在一个桌子上吃饭,有时候出现争抢的情况 会降低效率。有多线程的多核CPU 就像是多个人...

2019-09-26 18:54:50 213

转载 TCP三次握手和网络编程函数的对应关系

1.客户端调用connect()函数,此时客户端会向服务端发送SYN2.服务端收到SYN后,会从listen()函数返回SYN+ACK3.客户端收到connect()函数的返回,之后向服务端发送最后一个ACK4.服务端收到最后一个ACK以后,将该连接请求从未完成连接队列放入已完成连接队列中,等待accept()从该队列中取出...

2019-09-19 17:52:11 752

转载 从一个例子说为什么要用接口

如题,看看下面这个例子 :现有狗 和企鹅两个类 ,狗会玩飞碟,企鹅会游泳,为什么要把玩飞碟和游泳的方法分别定义在两个接口里?如果定义在接口反而显得代码更加累赘,因为还多了两个接口。你可能会想,干嘛不直接把玩飞碟的方法直接定义在狗类中,游泳的方法直接定义在企鹅类中(这种情况下没有父类)。假设这样一种情况:后面又多了一种宠物类型鸭子,鸭子也会游泳,你是不是又要在鸭子类中定义一个游泳的方法...

2019-09-19 15:09:34 133

原创 为什么虚拟机的ip地址一直在换?

linux里的bootproto的none,static,dhcp有什么区别:https://www.cnblogs.com/lcword/p/5917295.html网络接口配置文件:https://www.cnblogs.com/baichuanhuihai/p/8127329.html解决 Error:No suitable device found: no device found...

2019-09-05 10:46:00 2639

转载 用c语言实现读取配置文件源码

思路:比如linux中,以// 或/* 表示注释,以=表示赋值。从conf里一行一行读出来,如果第一个字母是/,就忽略;否则就从 line_of_file 里查找 “=”字符,(去掉行末’\n’换行符)=之前的就是参数名,=之后的就是参数值(去掉空格,tab)(用strncpy)实现:#define _CRT_SECURE_NO_WARNINGS#include <stdio....

2019-08-30 16:55:51 371

转载 动态内存分配函数(malloc,realloc,calloc,free)的基本理解和区别

参考:[这2篇文章写的很好] https://blog.csdn.net/chf_1/article/details/78688557 https://blog.csdn.net/alidada_blog/article/details/80607267一、为什么要使用动态内存分配???以一个数组为例:在定义一个数组时给定了其内存空间,只要给定足够大的空间,就可以放入你所需的数据元素。但当...

2019-08-26 17:09:48 583

原创 结构体指针与结构体变量

看一个例子来了解Struct_learn.h#ifndef __STRUCT_LEARN__ //if not define宏定义判断,作用是防止多重定义#define __STRUCT_LEARN__ #include <stdlib.h>#include <string.h>struct a{ int value1; char value...

2019-08-26 16:16:38 268

转载 socket编程之实现一个简单的TCP通信

原文:https://blog.csdn.net/qq_33951180/article/details/68066634一、理解socket1、socket即为套接字,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的一个进程,“IP地址+TCP或UDP端口号”就为socket。2、在TCP协议中,建立连接的两个进程(客户端和服务器)各自有一个socket来标识...

2019-08-21 15:15:03 1016

转载 sockaddr和sockaddr_in详解

struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。一、sockaddr 定义sockaddr在头文件include<sys/socket.h中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下:struct sockaddr {sa_family_t sin_family;//地址族   ch...

2019-08-21 14:47:41 613

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除