- 博客(27)
- 资源 (5)
- 收藏
- 关注
原创 DHCP动态主机配置协议探究
DHCP的作用是为局域网中的每台计算机自动分配TCP/IP信息,包括IP地址、子网掩码、网关、以及DNS服务器等。一. DHCP基本介绍DHCP是BOOTP协议的进化版本,所以有时候用老版本的抓包软件显示DHCP的报文类型为bootp。 DHCP的报文用UDP方式封装的。 DHCP服务器侦听端口:67,DHCP客户端侦听端口:68,DHCP中继侦听端口:67。 DHCP地址分配方式:手工分配、自动分配(租期无限长)、动态分配(具有一定期限) 服务器为客户端分配IP的顺序:mac静态绑定、c.
2020-12-12 18:18:37
825
原创 realloc动态内存调整探究
1 关于动态内存C程序使用malloc、realloc等内存申请函数在堆上分配和释放内存的。程序在执行期间有两个内存区域,一个是内存区域是栈(stack),另一个是堆(heap)。栈中的空间分配给函数的参数和本地变量,执行完该函数后,存储的参数和本地变量的内存空间就会自动释放。在堆上分配的内存,在不需要的时候要用free释放空间,由程序员控制。使用realloc的好处:不需要预先分配存储空间,且可以按需扩大或缩小,有效的使用内存空间。使用realloc的坏处:会占用大量CPU资源。一般情况下
2020-11-18 20:46:52
2838
3
原创 va_list可变参数理解(va_start/va_end...)
在工作中,一些可变参函数里总能看到va_start、va_end、vsnprintf、va_list等相关函数,甚是疑惑,到底是干啥的,有什么作用呢?va = variable argument先来简单介绍一下可变参数吧,先来看看最最熟悉的printf函数。int printf(const char *format, ...);这三个点点就是可变参数。好了,开始介绍va相关内容吧!1.作用VA_LIST是在C语言中解决变参问题的一组宏。有点绕,我的理解,如果你写代码过程中,需要对
2020-11-08 19:46:03
1382
原创 c中结构体数据对齐问题
1.为什么需要数据对齐提升CPU读取数据的效率。CPU每次都是从以4字节(32位CPU)或是8字节(64位CPU)的整数倍的内存地址中读进数据的(例如32位的只能0x00000004、0x00000008这种地址一次读4字节的数据)。如果数据不对齐,例如一个int类型放在0x00000004、0x00000008这两个内存地址中间,CPU就会多次读取,如果把整形对齐存放在0x000000...
2020-01-04 17:32:16
2572
3
原创 [笔记]linux C/C++ 获取精确时间方法
获取带毫秒的时间#include <time.h>#include <sys/time.h>//调用函数时候可以传入字符串进行区别和标记void sysUsecTime(const char *a){ struct timeval tv; struct timezone tz; struct tm *p; gettimeofda...
2019-11-29 17:11:03
1022
原创 虚拟路由器冗余协议vrrp原理的理解
VRRP(VirtualRouterRedundancyProtocol)虚拟路由器冗余协议作用避免由于局域网网关单点故障而导致的网络中断,如下图,如果交换机与外网连接出现故障,则所有的pc都不能访问外部网络。解决方法在网络中增加两台路由器(或者三层交换机)部署vrrp,作为冗余的网关,如下图VRRP特点能让多台同属于一个广播域的网络设备能够协同工作,实...
2019-09-08 12:06:39
3004
原创 Linux下socket编程:TCP连接
目录一、流程简述 服务器端 客户端二、概念及函数 1.套接字描述符 2.socket函数 3.bind函数 4.connect函数 5.listen函数 6.accept函数 7.close函数三、代码 服务端 客户端四、笔记 1.一个标准的三次握手抓包 2.小技巧:打印出connect过程的错误一...
2019-08-21 23:41:24
2884
2
原创 生成树协议STP、RSTP和MSTP原理的理解
在组网中,很可能会出现环路或者称冗余链路,为避免形成广播风暴,需要一种方法来避免形成环路,并且在主链路故障中断时候,可以将冗余链路自动切换为转发状态,以恢复网络的连通性。生成树协议(STP、RSTP、MSTP)就可以实现这样的功能。STP(802.1D,SpanningTreeProtocol,生成树协议)基本思想将网络的拓扑修剪为树形拓扑,拓扑图形状与一棵树相似,这样就不会...
2018-12-20 22:15:17
46815
27
原创 C语言define替换printf
问题:当我想要调试的时候,想直接printf输出打印当我将代码上设备的时候,希望输出log里(下图代码里cxtlog是输出到log的函数,这里不讲实现了)解决:设置一个CFG_DEBUG宏定义,定义了这个宏就使用printf,没有定义就输出log用#define来重定义用法:printf里的参数是可变长的,就需要用到变参宏定义,这是系统自带的。‘...’和'__VA_A...
2018-11-29 16:21:03
8548
3
原创 c语言实现两个超大数的相加(超长数据)
这几天无聊,突然想起来,大学当时有个问题困扰着我两个超大的数怎么保存和相加呢,计算机的整形32位的最大也就4294967296,超过这个数就计算不了了哇然后就想动手实践一下思路:1.超长数据怎么存呢。脑子一拍,巨长的数肯定用字符数组来存哇,没毛病。2.要怎么运算呢。我想的是,一个数最大是4294967296,长度为10,那我两个9长度的数据相加,肯定不会超过1999999998...
2018-11-28 23:00:07
17116
8
原创 sed命令替换指定字符后不固定字符串,文本信息的替换删除
sed主要用来处理文本内容的修改,文本的提取分割可以使用awk和cut命令,参考本人文章linux常用文本字符分割分析awk和cut命令sed命令格式:sed [选项] '.../.../...'[输入文件]...'参数1/.../参数2' 这个和vi里命令行模式的输入格式很像,比如替换文本/s/root/aaa/g常用选项:-n 仅显示处理的行-i 直接对原文件进行修改...
2018-10-31 10:35:55
19389
6
原创 C语言extern关键字用法和理解
extern表明变量或者函数是定义在其他其他文件中的例如:extern int a;显式的说明了a的存储空间是在程序的其他地方分配的,在文件中其他位置或者其他文件中寻找a这个变量。用法一个c文件需要调用另一个c文件里的变量或者函数,而不能从.h文件中调用变量。详见下文1 extern int a = 5与int a = 5意义是一样的,都是定义。而extern int a;......
2018-09-27 00:22:46
193918
39
原创 Linux下C程序执行shell命令并获取返回结果的方法
Linux下的C编程有以下几种方法可以执行shell命令system()函数 exec函数簇 popen()函数如果还需要获取返回结果,有两种较简单方便的方法popen()函数 匿名管道1.system()函数所需头文件:#include<stdlib.h>函数原型:int system(const char *cmdstring); ...
2018-08-29 23:56:00
39430
3
原创 Linux消息队列编程(简单应用)
消息队列,Unix的通信机制之一,可以理解为是一个存放消息(数据)容器。将消息写入消息队列,然后再从消息队列中取消息,一般来说是先进先出的顺序。可以解决两个进程的读写速度不同(处理数据速度不同),系统耦合等问题,而且消息队列里的消息哪怕进程崩溃了也不会消失。 最简单的消息内存的使用流程①ftok函数生成键值②msgget函数创建消息队列③msgsnd函数往消息队列发送消息④...
2018-08-15 23:35:51
38609
40
原创 Linux下共享内存编程(共享存储空间)
共享存储允许两个或多个进程共享一个给定的存储区,是进程间通信最快的一种方式。不要同时对共享存储空间进行写操作,通常,信号量用于同步共享存储访问。最简单的共享内存的使用流程①ftok函数生成键值②shmget函数创建共享内存空间③shmat函数获取第一个可用共享内存空间的地址④shmdt函数进行分离(对共享存储段操作结束时的步骤,并不是从系统中删除共享内存和结构)⑤shm...
2018-07-29 23:44:08
44716
6
原创 Linux时间与系统时间相差8小时的解决办法
原因是时区不同在/etc/profile文件中增加一行 export TZ='CST-8'使文件立即生效source /etc/profile 或者 . /etc/profile
2018-07-05 08:52:17
25079
6
原创 Linux编程三种常用线程同步
本文介绍三种常用的线程同步方法,互斥量、条件变量、信号量共同需要的头文件为#include<pthread.h>互斥量强调资源访问互斥条件变量是通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足信号量强调线程间同步一、互斥量(mutex)互斥量在同一时间只有一个线程能访问,任何其他试图再次对互斥量加锁的线程都会被阻塞直到当前线程释放该互斥锁。在Linux下,线程的互斥量数...
2018-05-29 23:58:50
389
原创 Linux编程常用alarm定时器
写程序时经常有让程序运行几秒后退出这种需求,就需要用到定时器,个人常用的是alarm定时器,方便好用。 函数原型unsigned int alarm(unsigned int seconds);seconds为指定秒数 所需头文件#include<unistd.h> 一个进程只能使用一个alarm闹钟,有多个alarm闹钟时,闹钟时间会更新为最后一个定时器所指定的秒数时间。alarm(...
2018-05-29 22:56:36
925
原创 linux编程进程与线程基本实例
1、对比 进程是资源分配的最小单位,线程是程序执行的最小单位 进程拥有自己的独立地址空间,线程间共享进程的所有资源2、进程 需要头文件 #include<stdlib.h> #include<unistd.h> 2.1 进程的创建 pid_t fork( void); 返回值: 若成功调用一次则返回两个值,子进程返回0,父...
2018-04-20 15:04:50
1701
原创 流IO和文件IO的简单使用
流文件IO(fopen....)是标准IO,包含在stdio.h中,可移植性强,使用的是文件指针而文件IO(open...)可移植性低,包含在fcntl.h中,使用的是一个整形的文件描述符 标准IO/流IO下面这个程序是用流来读写文件的,从终端输入,重复100遍的输入文件中,再读出来打印至屏幕上#include<stdio.h>int main(){ FILE *fp; ...
2018-04-18 12:05:49
290
原创 shell学习积累,循环,运算,判断
需要经常注意的问题赋值不需要$,但读值必须不能忘了在变量前加上$shift可以跳过参数,如shift 2,命令行输入aaa.sh a b c d 相当于命令行输入就变成aaa.sh c dShell运算(+、-、\*、/)expr只对整数进行运算,且中间每一段都必须要用空格隔开语法`exprinteger1+integer2`或者$(exprinteger1...
2018-03-08 23:48:41
356
原创 树莓派使用Android Screen Monitor与手机同屏(adb)
环境:为官方下载的2017-11-29-raspbian-stretch硬件:树莓派3B使用adb连接与安卓手机同屏,手机需要打开usb调试(开发者选项里)1、先添加一个源来下载android-tools-adb 打开/etc/apt/sources.list这个软件源列表,末尾添加以下语句 deb http://ftp.cn.debian.org/debian wheezy-back...
2018-02-12 13:19:33
5415
原创 树莓派第一次开机的使用
1、使用Win32DiskImager烧写完系统到sd卡后,打开sd卡,新建一个名为ssh空白文件2、使用putty连接树莓派 login as: pi password : raspberry3、更新系统软件sudo apt-get installsudo apt-get update4、安装xrdp可以使用win7的远程桌面连接树莓派sudo apt-get install...
2018-02-11 17:13:03
3212
原创 树莓派3b使用蓝牙当做A2DPsink端播放音乐
使用系统为官方下载的2017-11-29-raspbian-stretch1、需要安装一下包(时间很赶,所以不知道以下包是不是必须要装的,反正我装了后也是没问题的)sudo apt-get install bluetooth bluez-utils bluemansudosudo apt-get install libbluetooth-devsudo apt-get install pulsea...
2018-02-11 17:05:27
6456
原创 fedora的nfs服务器的安装和启动配置
安装软件包服务端和客户端都得安装nfs-utils:这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)rpcbind:这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)yum install -y nfs-utils rpcbind配置在
2018-01-30 14:17:38
1171
原创 linux常用文本字符分割分析awk和cut命令
详细文章:awk命令用法 点击打开链接cut命令详解 点击打开链接由passwd文件做示例,提取相关部分[root@localhost 桌面]# cat /etc/passwd | head -10root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemo
2018-01-26 16:07:38
5208
ASM2.5.0源码(Android Screen Monitor)
2018-03-03
asm.jar安卓与电脑(windows和linux)同屏
2018-02-12
Linux内核设计与实现第三版中文高清带目录
2018-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人