自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 光通信基本知识

VC(Virtual Container):在光通信OTN中,VC指的是一种虚拟容器,它是OTN层次结构中的一个基本单元,用于将用户承载的数据打成包并进行传输。SDH(Synchronous Digital Hierarchy):在光通信OTN中,SDH指的是一种数字传输标准,用于在光网络中传输语音、数据和视频等信息。ETH(Ethernet):ETH指的是一种局域网协议,它是OTN层次结构中的一种承载方式,用于将以太网数据打包并在OTN网络中进行传输。ODU可以进行各种数据处理,如数据压缩、差错校验等。

2024-02-18 16:32:03 185

原创 子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次,试写出代码。

#include<stdio.h> #include<pthread.h>#include<unistd.h>pthread_mutex_t mutex;pthread_cond_t son_fi...

2022-03-10 21:57:51 214

原创 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。

#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<unistd.h> .

2022-03-10 21:27:32 1048

原创 linux网络编程

1.基本概念1)网络模型2)基本协议第一部分称为网络层。主要包括Internet 协议(IP)、网际控制报文协议(ICMP)和地址解析协议(ARP) Internet 协议(IP)。网际控制报文协议(ICMP):允许网际路由器传输差错信息或测试报文。地址解析协议(ARP):它处于IP和数据链路层之间,根据ip地址找到mac地址。IP主要功能:数据传送 ,寻址 ,路由选择,数据报文的分段第二部分是传输层协议,包括传输控制协议和用户数据报文协议传输控制协议(TCP):

2022-03-09 21:02:37 7953 1

原创 Linux多线程编程

1)线程的基本操作1.pthread_create()#include <pthread.h> int pthread_create(pthread_t * tidp,const pthread_attr_t * attr,void*(*start_rtn)(void),void*arg)创建线程成功后返回值为0tidp:线程id,create会创建线程,并自动将线程id返回给tidpattr:线程属性,通常为NULLstart_rtn:线程要执行的函数,通常参数.

2022-03-07 21:28:39 669

原创 Linux进程间通信编程

进程间通信方式现在Linux使用的进程间通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信号(signal)3、消息队列4、共享内存5、信号量6、套接字(socket)1.管道:管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。数据被一个进程读出后,将被从管道中删除。进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程

2022-03-05 21:21:07 483

原创 Linux进程控制编程

1.概念进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;进程的状态:进程正在占用CPU:执行状态进程因为等待某个资源而睡眠:等待状态进程一切准备就绪等待cpu:就绪状态2.getpid()#include <sys/types.h>#include <unistd.h>pid_t getpid(void) 获取本进程IDpid_t getppid(void) 获取父进程ID3.fork()#inclu

2022-03-03 21:00:32 520

原创 (C)调用-Sqlite3实例

#include<stdio.h>#include<sqlite3.h>#include<stdlib.h>int create_table(sqlite3 *pdb){ char *sql=NULL; char *errmsg=NULL; sql="create table if not exists mytable (id integer primary key,name text);"; if(SQLITE_OK != sqlite3_ex.

2022-02-28 15:29:09 201

原创 数据库基本概念以及Sqlite3的使用基本操作

1.数据库概述数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。所谓有结构的,指的是数据是按一定的模型组织起来的。所谓集成的,是指数据库中集中存放着企业各种各样的数据。所谓共享,指的是数据库中的数据可以被不同的用户使用。所谓统一管理的,指的是数据库由DBMS统一管理,任何数据访问都是通过DBMS来完成的。数据库管理系统 (DataBase Management System,DBMS): 所有访问数据库的请求都由DBMS来完成的。2.数据

2022-02-27 20:18:52 1285

原创 (C)两个文本数字相加

手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下1.若数字没有进位,可直接相加 1 #include<stdio.h> 2 int main()

2022-02-26 14:32:03 743

原创 (C)库函数-复制文件

1 #include<stdio.h> 2 int main(int argc,char **argv[]) 3 { 4 FILE *from; 5 FILE *to; 6 char ch; 7 if(argc!=3) 8 ...

2022-02-26 09:24:43 261

原创 linux系统调用--复制一个文件

#include<stdio.h> #include<fcntl.h> //open #include<unistd.h> //close read write #include<stdlib.h> //exit ...

2022-02-26 09:23:01 398

原创 Linux系统调用和c库函数对文件的操作

系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程的记录表中; 一个进程启动时,都会打开三个文件: 标准输入: STDIN_FILENO 0 标准输出: STDOUT_FILENO 1 标准出错处理:STDERR_FILENO 2cre...

2022-02-25 19:53:40 466

原创 (C)排序

方法分类:内部排序:在内存中进行,适于小文件外部排序:使用内存和外存,适于大文件,内存不够用1.直接插入排序:将前n位看做一个有序序列,n+1位插入时,先从n位往前遍历,直到找到比n+1位小的数,此数后的数都往后移一位,将n+1插到此数后面,此时前n+1位为有序序列,重复此操作。2.希尔排序:1.先选定一个小于N的整数gap作为第一增量,然后将所有距离为gap的元素分在同一组,并对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量,重复上..

2022-02-23 19:52:58 188

原创 (C)链队列的基本操作

#include <stdio.h>#include <stdlib.h>struct dbl_node{ int num; struct dbl_node *prior; struct dbl_node *next;};typedef struct dbl_node Dblnode;typedef Dblnode * Dbllink;enum return_val{EMPTY_OK = 100,EMPTY_NO,POP_OK,POP_NO};v...

2022-02-22 20:46:24 61

原创 (C)链栈的基本操作

#include<stdio.h>#include<stdlib.h>#include<string.h>struct stack_data{ int num; char name[20];};struct stack_node{ int num; char name[20]; struct stack_node *next;}; typedef struct stack_node *Stack;typedef struct stack_dat.

2022-02-22 20:43:03 117

原创 (C)顺序循环队列的基本实现

#include<stdio.h>#include<stdlib.h> #define size 10enum return_val{malloc_ok,malloc_no, full_ok,full_no,empty_ok,empty_no,push_ok};struct queue_data{ int queue[size]; int rear; int front;};typedef struct queue_data Queue;int creat.

2022-02-22 19:17:48 197

转载 平衡二叉树

平衡因子 BF:左子树和右子树高度差 =左子树高度 - 右子树高度的值(简称 BF)

2022-02-21 20:24:05 80

原创 (C)顺序栈的基本操作

#include<stdio.h> #include<stdlib.h>#define size 10enum return_val{ create_ok=100,create_no,full_ok,full_no,empty_ok,empty_no,push_ok,push_no,pop_no,pop_ok};struct stack_struct{ int top; int stack_data[size];};typedef struct stack_.

2022-02-19 22:02:56 311

原创 (C)带头双向循环链表的基本操作

#include<stdio.h>#include<stdlib.h>#include<time.h>#define ok 1#define no 0struct node{ int num; char name[20]; char sex; struct node *next; struct node *prior;}; typedef struct node Node;typedef Node * Link;int create_lin.

2022-02-19 14:05:17 62

原创 (C)带头循环链表的基本操作

#include<stdio.h>#include<stdlib.h>#include<time.h>#define ok 1#define no 0struct node{ int num; char name[20]; char sex; struct node *next;}; typedef struct node Node;typedef Node * Link;int create_link(Link *head){ *hea.

2022-02-19 14:03:45 61

原创 (C)带头链表的基本操作

#include<stdio.h>#include<stdlib.h>#include<time.h>#define ok 1#define no 0struct node{ int num; char name[]; char sex; struct node *next;}; typedef struct node Node;typedef Node * Link;int create_link(Link *head){ *head .

2022-02-17 21:32:58 563

原创 (C)实现strlen函数

#include<stdio.h>#include<string.h>int mystrlen(char * str){ int count=0; while(*str!='\0') { count++; str++; } return count;}int main(){ char *s="abc"; int a=mystrlen(s); printf("%d",a); return 0; }

2022-02-16 20:56:34 251

原创 一级指针和二级指针使用区别

int a=1; a是一个整形变量a=1,&a=0x0001int *b=&a;b是一个指针,指向变量a,b存储的是a的地址b=&a=0x0001,*b=a=1,&b=0x0002int **c=&b;c是二级指针,指向指针b,c存储的b的地址c=&b=0x0002,*c=b=&a=0x0001,**c=*b=a=1,&c=0x0003...

2022-02-16 15:16:38 772

原创 (C)无头单链表的基本操作及完整过程

顺序表:即一维数组,顺序访问,可以随机存取(访问一组序列中的任意一个元素)。链表:不连续存储,每个表项由结点构成。若结构体里有指向结构体类型的指针,则只能指向自己。int,char类型的指针没有限制。如果指针需要修改或者返回,则函数带入的参数是二级指针。 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 struct node{ 5 int age; 6 .

2022-02-15 15:52:38 319

原创 数组指针和指针数组

int *a[10]:指针数组,是一个数组,里面装着指针,表示每一个单元存放一个int类型的指针int (*a)[10]:数组指针,是一个指针,指向一个数组,

2022-02-15 09:25:33 111

原创 数值在计算机中的存储方式

指针在64位中占8个字节,在32位中占4个字节char *c[5]:指针数组,存放了5个指针的数组,占40个字节。char (*c) [5]:数组指针,指向一个存放五个元素的数组指针,占8个字节。结构体的内存对齐:以最大的数据类型为单位进行字节对齐。如果是结构体的嵌套,就将结构体展开,看最大的数据类型。例:Cp为指针,占8个字节。*p为结构体,占32字节。p->a占1个字节,p->e占8个字节。int c:16。说明c占16位,2个字节。数值在计算机内的存

2022-02-03 21:43:35 597

原创 计算机内存的分配区域

计算机内存的分配区域:栈:系统栈和函数栈 栈是会放满的堆:堆的空间要比栈大得多,由用户自己申请,由用户自己释放,寿命由用户自己决定。当指向的内存被释放掉以后,指针依然指着,但是内存已经没了。在函数里使用malloc时,也能返回创建的局部变量。在fun2()函数里malloc申请分配内存后,即使在main()里面free()也是没用的,free()仅仅释放了这个指针,并没有释放函数里的内存空间。静态全局区:静态变量和全局变量全局变量...

2022-01-30 13:45:30 378

原创 (C)数组,指针

数组:数组定义:由若干个相同类型的相关数据项按顺序存储在一起,构成数组(array) ;数组实际上是同种类型、有序的数据的集合。同一数组中的元素必须具有相同的数据类型,而且这组数据在内存中将占据一段连续的存储单元。下标值n表示为所在维的数组元素个数,该维的数组下标的上界是n-1;C语言中数组下标下界始终为0。维数是下标的个数。1.数组名后使用方括号括起来的常数表达式,不能用圆括号。int a(10); ×2.常数表达式表示元素的个数,即数组长度,而不是数组的上界。3.常数表达式中可以..

2022-01-25 20:49:13 511

原创 (C)参数顺序点,命令行参数,可变参数,递归函数,指针函数,函数指针

1.函数参数顺序点:输出顺序:从左往右求值顺序:从右往左。2.带参数的main函数和命令行参数argc为输入参数的个数,argv为输入参数的存储的地址3.可变参数列表调用参数表以前,定义一个va_list类型变量,对ap进行初始化,初始化完成后,ap指向可变参数表中的第一个参数(由va_start函数实现),获取参数,调用va_arg函数,第一个参数是ap,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把ap的位置指向列表的下一个变量位置...

2022-01-23 20:55:29 237

原创 (C)从一个字符串中读出第一次出现的整数

#include<stdio.h> #include<string.h> int main() { char buf[50]; char *b=buf; gets(buf); int flag=0; int i=0; int sum=0; while(buf[i]!='\0') { if...

2022-01-23 19:59:34 552

原创 (C)对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。

自己摸索写的。。。。#include<stdio.h> int main() { int n=0; int j=0; int sum=0; for(int i=2;i<21;i++) { n=i*i*i; for(j=1;j<n;j=j+2) { int k=j;

2022-01-22 17:05:08 850

原创 (C)关键字const,volatile,struct,union,enum

const:声明只读变量1.const int * a; == int const *a;*a(即所指的值)是不可以改变的,a(即所指值的地址)是可以改变的。在编译时会出错,显示(*a)++为只读变量,不可以修改,当将这条语句注释后,会输出其值。2.int * const a;(对于此类要先进行初始化)*a(即所指的值)是可以改变的,a(即所指值的地址)不可以改变。显示a为只读变量,所以要在一开始要对a进行初始化,且不能写a++。3.int ...

2022-01-21 22:02:54 1043

原创 (C)数据类型及范围,运算符,输入输出,变量初始化和存储类型

1.1 数据的表现形式在C中,数据有两种表现形式:常量和变量一.常量1.整型常量:12132.实型常量:1)十进制小数 :1.232)指数形式:1.23E3(1.23*10^3)3.字符常量:1)普通字符:‘d’,‘5’2)转义字符:\n-------换行\t -------空出一个tab键的位置\abc ----------abc为八进制,如\101十进制为65,是A的ASCII码值,则直接输出A\xabc--------abc为16进制,如\x4...

2022-01-19 21:24:10 552

原创 (c语言)指针的学习

#include<stdio.h>int main(){ int a=1,b=2,c,*p; c=a+b; p=&c; // printf("%d\n",c); // printf("%d\n",*p); // printf("%d\n",p); int *p2=&a; printf("&a=%d\n",&a); //&a=6487556 printf("*p2=%d\n",*p2); ...

2022-01-18 11:25:00 333

原创 (linux)gdb调试以及make的使用

gdb调试:gcc -g main.c -o main 在编译程序前加上“-g”为调试做准备gdb main 调试程序输入“list”显示代码,可缩写成“l” ,默认显示10行,接着再输入list或者回车可以继续显示list+行号 从此行号开始显示list+函数名 从此函数名开始显示回车的作用:重复执行上一次输入的语句设置断点:break(b)break ...

2022-01-17 20:07:16 2231

原创 linux的项目创建实例(加减乘除)

首先创建cau根目录,下面分别创建add,sub,mul,div,include,scripts目录和一个Makefile文件Makefile文件内容如下:直接vim Makefile即可 1 include scripts/Makefile 2 3 modules_make = $(MAKE) -C ..

2022-01-17 16:20:40 1157

原创 (c语言)输出菱形***

2022-01-16 20:12:18 196

原创 (c语言)一个球从100m自由落下,每次反跳原高度的一半,求第十次高度

1 #include<stdio.h> 2 float hight(n) 3 { 4 if(n==1) 5 { 6 return 50; 7 } 8 else 9 { ...

2022-01-16 19:33:56 358

原创 (c语言)求S=a+aa+aaa+......n为a的位数,例如n=5,求s=2+22+222+2222+22222

1 #include<stdio.h> 2 int res(int x,int n) 3 { 4 int s=x; 5 if(n==1) 6 7 { 8 ...

2022-01-16 17:08:09 170

空空如也

空空如也

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

TA关注的人

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