
c
举世无双勇
这个作者很懒,什么都没留下…
展开
-
【当LINUX系统出现网络问题时该如何排查】
互联网是通过大量路由器中继连接起来的,网络的访问就是在这些节点间一跳一跳最终到达目的地,想要查看网络连接,最直接最常用的命令是ping,ping得通,说明路由工作正常,但是如果ping不通,traceroute命令可以查看从当前主机到目标主机的全部“跳”的过程。第3行的信息显示了对该网卡的配置,包括IP,子网掩码等,这里可以检查是否出现错配,如果这一行显示不正确,那一定是网卡没有正确配置开启。前面提到的traceroute不仅可以查看路由的正确性,还可以查看网络中每一跳的延时,从而定位延时最高的网络区段。原创 2022-10-20 19:05:21 · 8721 阅读 · 1 评论 -
锁问题的分析-有什么类型的锁,为什么需要锁,如何选择锁,死锁是怎么产生的,如何检测死锁
同理我们可以使用pthread_cancel与pthread_exit函数强行结束线程,其中第一个函数是外部线程结束该线程,而pthread_exit是自己结束自己。线程创建完成执行thread_entry操作,count作为entry函数的传入参数,此时内核会将对应的thread_struct结构体的flag标志位置为1.在内核之中没有所谓的线程,线程是有类似与task_thread类的结构体链表存储,线程资源。1.线程执行语句时的步骤:如Int a;pthred_id为传出参数,标识线程的唯一ID。..原创 2022-08-20 19:53:33 · 382 阅读 · 0 评论 -
去除git diff 时出现的 ^M
去除git diff 时出现的 ^M。原创 2022-08-11 17:58:55 · 771 阅读 · 0 评论 -
Asterisk的体系架构
1.引言本文档从一个开发者的角度出发,概要描述Asterisk的体系架构。至于详细的API讨论,请参考公开API头文件所关联的文档。本文档假定您了解Asterisk的一些知识,并知道如何使用它。本文的意图是:从一个高的层次开始了解Asterisk,并逐步深入。它从Asterisk的组件差异开始,最终讨论这些组件在不同应用场景里的协作关系。文中,提供了很多交叉引用链接,指向相关API的一些引用参考,也可能指向相关的源码链接。欢迎对本文档的反馈和贡献。请将您的真知灼见发给asterisk开发组的邮件原创 2022-04-17 14:18:57 · 1637 阅读 · 0 评论 -
Linux下使用gdb调试core文件-且有动态库该如何加载
一、core文件当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映象。使用gdb调试core文件,可以帮助我们快速定位程序出现段错误的位置。当然,可执行程序编译时应加上-g编译选项,生成调试信息。(这句重点理解三个地方,1.core文件是程序运行状态的内存映像 2.我们可以使用gdb调试core文件 3,前提是你编译的时候必须使用了-g选项生成的core文件才能调试)当程序访问的内存超出了系统原创 2022-04-15 10:35:06 · 5838 阅读 · 0 评论 -
如何测试当前服务器内存存储的方式是大端还是小端
大端:高字节序存储在低地址(即起始地址)小端:低字节序存储在低地址(即起始地址)#include <stdio.h>int main(int argc, char **argv){ union { short s; char c[sizeof(short)]; } un; un.s = 0x0102; //注:0x表示十六进制的存储方式和,我们都知道short占两个字节,一原创 2022-04-14 08:34:09 · 331 阅读 · 0 评论 -
C语言灵活数组的使用
struct flex_array_struct { size_t num; int data[]; };void func(void) { struct flex_array_struct *flex_struct; size_t array_size = 4; /* 动态分配灵活数组成员的内存 */ flex_struct = (struct flex_array_struct *)malloc(原创 2022-03-22 09:09:21 · 1240 阅读 · 0 评论 -
如何理解静态库与动态库
究竟什么是库:日常生活中有很多所谓的库,比如车库啊,优衣库啊,甚至还有一库(日语)咳咳。然后对程序员来说,所谓的库,即是程序库,当一段代码十分耐用,又经过了世人的检验,那么我就说,该程序可以入库,而入库就以为着,你要为世人所用,给世界造福,我们写代码之所以没那么累,就是因为有大量的前辈封装了许许多多的库给我们使用。标准来说:程序库(library),就是一个可供使用的各种标准程序、子程序、文件以及它们的目录等信息的有序集合。 汇集在一起的经常应用的程序。库的两种形式本质上来说库是一种可执行代码的二进原创 2022-03-07 16:37:45 · 3611 阅读 · 0 评论 -
__declspec(dllexport)是什么
__declspec是Microsoft VC中专用的关键字,它配合着一些属性可以对标准C/C++进行扩充。__declspec关键字应该出现在声明的前面。他们都是DLL内的关键字,即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。 dllexport是在这些类、函数以及数据的申明的时候使用。用他表明这些东西可以被外部函数使用,即(dllexport)是把 DLL中的相关代码(类,函数,数据)暴露出来为其他应用程序使用。使用了(dllexport)关键字,相当于声明了紧接在(dll原创 2022-01-29 09:16:12 · 17026 阅读 · 0 评论 -
使用VS编译器,对strcpy,sprintf,fopen等不安全函数报错导致程序运行异常的处理方式
在VS上方选择框中选择项目-》属性-》C/C+±》命令行中输入:/D _CRT_SECURE_NO_WARNINGS保存应用即可原创 2022-01-23 13:54:37 · 1043 阅读 · 0 评论 -
C调用mysql接口
https://blog.youkuaiyun.com/zanda_/article/details/82708104转载 2022-01-06 09:35:46 · 143 阅读 · 0 评论 -
关于树的性质:如何推导出,具有n个结点的m叉树的最小高度为⌈logm(n(m-1) + 1)⌉
要使m叉树高度最小的必要前提是,每一个分支结点都要依次满孩子,即每一层的分支节点都要有m个孩子。即高度最小的情况–所有结点都有m个孩子由于高度为h的二叉树所能能容纳的最大结点个数为(mh - 1)/(m - 1)假设高度为h的二叉树的结点个数为n可得 n <= (mh - 1)/(m - 1)又由于高度为h的m叉树的结点个数,一定小于高度为h - 1的m叉树的结点个数可得: n > (mh-1 - 1)/(m - 1)所以: (mh-1 - 1)/(m - 1) < n <原创 2021-09-19 21:58:36 · 4240 阅读 · 2 评论 -
顺序表(线性表)的动态分配实现
/*(线性表)顺序表的实现--动态分配*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <cstringt.h>#define InitLength 10typedef struct { char name[10]; int id;}EleData; /*数据元素结构体*/typedef struct { EleData* data; int le原创 2021-09-17 23:06:16 · 268 阅读 · 0 评论 -
使用C语言实现线性表(静态分配)源码
/*顺序表的实现--静态分配(注:顺序表指的是元素之间的逻辑关系与物理关系都是顺序排放的)*/#include <stdio.h>#include <string.h>#define MAXSIZE 10/*该结构体表示一个数据元素 该数据元素包括id与name*/typedef struct { int id; char name[10];}ElemType;/*该结构体表示存放元素的数据结构*/typedef struct { ElemType data原创 2021-09-14 23:24:28 · 231 阅读 · 0 评论 -
(,)的用法逗号表达式
C语言提供一种特殊的运算符——逗号运算符。用它将两个(或多个)表达式连接起来。如:3+5,6+8上式称为逗号表达式。逗号表达式的一般形式为表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式a=35,a4,对此表达式的求解,赋值运算符的优先级别高于逗号运算符, 因此应先求解a=35,经计算和赋值后得到a的值为15,然后求解a4,得60,整个逗号表达式的值为60(a仍为15)。转载 2021-03-10 14:59:25 · 10362 阅读 · 0 评论 -
int a=5;a+=a-=a*a;求a最终的值?
要知道,赋值运算符的性质为从右到左。因此在计算的时候顺序应该如下:a-=aa 即 a = a - aa = 5 - 5*5 = -20接着再算:a+=a- 即 a = a + a- = -20 + (-20) = -40原创 2021-03-10 14:36:42 · 9861 阅读 · 0 评论 -
“在C语言中,float类型的数据默认保留小数点后6位,不足6位的以0补齐
“在C语言中,float类型的数据默认保留小数点后6位,不足6位的以0补齐原创 2021-03-10 14:25:36 · 4957 阅读 · 0 评论 -
recvmsg()函数 参数 详解
原函数声明如下:ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);该函数的作用是接收来自于套接字的信息messages,无论其是否面向连接。参数解析如下:int sockfd 表示socket()函数返回的文件描述符,struct msghdr *msg 指向struct msghdr该结构体的作用是为了减少函数的参数的数量而设计的,结构体原型如下:struct msghdr { void原创 2021-02-23 09:15:40 · 7091 阅读 · 0 评论 -
C语言中,1U<<29的意思
首先需要了解:U的含义U表示该常数用无符号整型方式存储,相当于 unsigned intL表示该常数用长整型方式存储,相当于 longF表示该常数用浮点方式存储,相当于 float<<29则表示向左便宜32位U即无符号整型字节,在32位和64位操作系统中,整型都占四个字节,一个字节八位,一共32位。将一个usinged int化成位可以表示成如下:0 0 0 0 0 0 0 0 0 0 0 0 0…(32个0)1U则是代表该无符号整型的值为1,可以表示如下:00000000…原创 2021-02-19 17:20:35 · 9874 阅读 · 11 评论 -
LINUX C signal捕捉型号的最简单用法源码
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>void sighandler(int);int main () {signal(SIGINT, sighandler);while(1) {printf(“Going to sleep for a second…\n”);sleep(1);}return(0);}void sighan原创 2020-11-24 15:33:56 · 171 阅读 · 0 评论 -
C语言基础字符串与字符的区别-‘x‘与“x”的区别
1.'x’是基本类型(char)2."x"是派生类型(char 数组)形象点 'x’仅占一个字节 x“x”占两个字节 x \0原创 2020-11-17 14:27:46 · 1688 阅读 · 0 评论 -
什么是volatile
volatile是一个特征修饰符,使被修饰的变量不会被编译器优化举例int a =0;a = 1;a=2;a=3;a=4;连续执行以上三种动作,编译器会对其进行优化,直接忽视(a=1,a=2,a=3)执行a=4 如果使用volatile修饰,则编译器则不会优化而是一条条执行下去。...原创 2020-07-02 17:35:17 · 202 阅读 · 0 评论 -
Linux指令-umask详解
一、umask概述在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。二、umask规则可以使用命令 umask 来查看umask值控制台输入 umask可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不原创 2020-06-15 11:34:04 · 807 阅读 · 0 评论 -
linux下sigaction函数解析功能作用
原文链接:linux中sigaction函数详解一、函数原型:sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);signum参数指出要捕获的信号类型,act参数指定新的信号处理方式,oldact参数输出先前信号的处理方式(如果不为NULL的话)。二、 struc转载 2020-06-15 11:10:09 · 516 阅读 · 0 评论 -
daemon()函数守护进程函数介绍
原文链接:daemon函数详解原文链接头文件与函数原型#include <unistd.h>int daemon(int nochdir,int noclose)创建守护进程前提条件将进程的工作目录修改为"/"根目录。daemon的参数nochdir为0时,即可将工作目录修改为根目录;将标准输入,输出和错误输出重定向到/dev/null daemon的参数noclose为0时,输入,输出以及错误输出重定向到/dev/null 。返回值:成功返回0 错误返回1deamon()函转载 2020-06-13 11:28:50 · 790 阅读 · 0 评论 -
gcc直接生成可执行文件指令 干 这个白痴指令我老忘记
编译当前路径下man.c文件生成可执行文件maingcc main.c -o main原创 2020-06-13 11:17:02 · 645 阅读 · 0 评论