自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【网络编程】IO多路复用

(根据poll函数第一个函数的参数来定,如果监听的事件为1个,则结构体数组的大小为1,如果想监听100个,那么这个结构体数组的大小就为100,由程序员自己来决定)•异步I/O,Epoll当有事件产生被唤醒之后,文件描述符主动调用callback(回调函数)函数直接拿到唤醒的文件描述符,:完全解放了主线程,有数据会主动通知,异步调用处理方法,但是也不能同时处理多个设备。告诉爸爸,让爸爸帮忙监听,妈妈可以干别的或者睡觉,孩子醒了后,爸爸告诉妈妈。,第几位被置位,那么就代表这个文件描述符需要被监听或者有数据。

2025-01-20 16:14:52 819 8

原创 【网络编程】基础IO模型

当程序调用某些接口时,如果期望的动作无法触发,那么进程会进入阻塞态(等待状态,让出CPU的调度),当期望动作可以被触发了,那么会被唤醒,然后处理事务。当一个应用程序使用了非阻塞模式的套接字,它需要使用一个循环来不停地测试是否一个文件描述符有数据可读(称做。阻塞I/O模式是最普遍使用的I/O模式,大部分程序使用的都是阻塞模式的I/O。假设妈妈有一个孩子,孩子在房间里睡觉,妈妈需要及时获知孩子是否醒了,如何做?结论:非阻塞非常占用CPU,不到万不得已,不要用这种属性。简单,空闲时间还能干点别的,但是很累。

2025-01-20 16:14:34 233

原创 【Linux】进程间通信IPC

(3) 只有管道的读端存在时,向管道中写数据才有意义,否则会导致管道破裂,向管道中写入数据进程将收到内核传来的SIGPIPE信号(通常时Broken pipe错误)。系统默认对SIGALRM(闹钟到点后内核发送的信号)信号的响应: 如果不对SIGALRM信号进行捕捉或采取措施,默认情况下,闹钟响铃时刻会退出进程。2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。SIGTERM(15):终止信号,用于请求终止进程。

2025-01-17 00:00:00 743 1

原创 【网络编程】基础知识

0.0.0.0:在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。局域网的缩写是LAN,local area network,顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。所以为了数据安全,不能连接因特网,需要用一条自己的专用线路来传输数据,这条线路上只有自己人,不会有其他人接入,且距离很远,这个网络就叫 “广域网”。

2025-01-17 00:00:00 1631

原创 【C语言】线程

私有的资源:线程ID (TID)、PC(程序计数器)和相关寄存器、堆栈(局部变量, 返回地址)、错误号 (errno)、信号掩码和优先级、执行状态和属性。1. 通过父子进程完成对文件的拷贝(cp),父进程从文件开始到文件的一半开始拷贝,子进程从文件的一半到文件末尾。共享的资源:可执行的指令、静态数据、进程中打开的文件描述符、信号处理函数、当前工作目录、用户ID、用户组ID。要求效率高、速度快的高并发环境时,需要频繁创建、销毁或切换时,资源的保护管理要求不是很高时,使用多线程。进程的地址空间相互独立。

2025-01-16 00:00:00 889 2

原创 【C语言】线程----同步、互斥、条件变量

同步(synchronization)指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。还是一个受保护的变量,只能通过三种操作来访问:初始化、P操作(申请资源)、V操作(释放资源)sem_wait: 申请资源,P操作, 如果没有资源可以用, 阻塞,-1。由信号量来决定线程是继续运行还是阻塞等待.信号量的值0,表示有资源可以用, 可以申请到资源,sem_post: 释放资源,V操作, 非阻塞 +1。通过信号量实现线程间的同步。

2025-01-16 00:00:00 1102

原创 【Liunx】库lib

当使用别人写好的函数时除了包含头文件还可以需要库头文件:函数声明、宏定义、结构体定、联合体、枚举定义、重命名、外部引用、其他头文件库:把一些常用的函数的目标文件打包在一起,提供相应的函数接口,便于程序员使用。本质上来说库是一种可执行代码的二进制形式文件。由于windows和linux的本质不同,因此而这库的二进制是不兼容的。(Linux中的C运行库是glibc, 由GUN发布。

2025-01-15 00:00:00 575

原创 【Linux】进程 Process

进程和程序的区别。

2025-01-15 00:00:00 687

原创 【C语言】文件IO

标准IO文件IO概念C库中定义的一组用于输入输出的函数posix中定义的一组用于输入输出的函数特点1. 有缓冲机制2. 围绕流进行操作,FILE*3. 默认打开三个流:stdin/stdout/stderr4. 只能操作普通文件5. 程序的可移植性更强1. 无缓冲机制2. 围绕着文件描述符,非负整数3. 默认打开三个文件描述符:0/1/24. 可以操作除了目录以外的任意类型文件函数打开文件:fopen、freopen关闭文件:fclose。

2025-01-14 00:00:00 1716

原创 【C语言】获取文件属性

S_IFMT是一个掩码,它的值是0170000(注意这里用的是八进制前缀为0,二进制为0b1111000000000000), 可以用来过滤出四位表示的文件类型。lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息.fstat函数获得已在描述符filedes上打开的文件的有关信息,也就是参数是文件描述符,其他与stat相同。4. 直到n为行数则停止。例:head -3 test.c -> ./a.out -3 test.c。

2025-01-14 00:00:00 450

原创 【C语言】标准IO

1. 因为读写文件通常是大量的数据,这时使用标准IO可以大大减少系统调用的次数,从而提高效率。2. 为了保证可移植性关于缓存区: 库函数的缓冲区对于库函数,如果标准输出连到终端设备(直接输出到屏幕),则它是行缓冲的(遇到回车换行符或者是缓冲区满了才输出);否则(输出到文件)是全缓冲的(缓冲区填满或者是程序运行结束了才输出)。程序运行结束时,会刷新所有的缓冲区。

2025-01-13 09:27:03 974 1

原创 【数据结构】树

树(Tree)是(n>=0)个节点的有限集合T,它满足两个条件:(1) 有且仅有一个特定的称为根(Root)的节点。(2) 其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。

2025-01-13 09:22:37 1732

原创 【数据结构】队列

注意:为了避免假溢出问题,即队列前面还有空闲,但是队尾已经出现越界,所以在实际使用队列时,为了使队列空间能重复使用,往往对队列的使用方法稍加改进,需要引入循环队列。实现出列: 如果out栈不为空直接让数据出栈,如果为空则把in栈的数据依次出栈入out栈, 这样先入栈的数据会在out栈顶。队列是只允许再两端进行插入和删除操作的线性表,在队尾插入,在队头删除,插入的一段被称为“队尾”,删除的一端被称为“队头”。实现入队: 如果in栈没满直接入栈,如果满了出栈之后入out栈,这样先入栈的会在out栈的栈顶。

2025-01-12 00:00:00 471

原创 【数据结构】双向链表

存储空间方面:双向存储空间大,因为每个节点中有两个指针。请完成如下双向链表的删除过程: (云尖软件开发笔试试题)(1) 将新节点的 prior 指针指向直接前驱节点。(2) 将直接前驱节点的 next 指针指向新节点。效率方面:双向链表效率高,因为可以从后往前遍历。

2025-01-12 00:00:00 872

原创 【数据结构】链表

链表又称单链表、链式存储结构,用于存储逻辑关系为“一对一”的数据。和顺序表不同同,使用链表存储数据,不强制要求数据在内存中集中存储,各个元素可以分散存储在内存中。例如存数据1 2 3需要通过指针链接逻辑结构:线性结构存储结构:链式存储特点:内存不连续,大小不固定,通过指针链接。可以解决顺序表的长度固定的问题,以及插入删除麻烦的问题。操作:增删改查有头链表:存在一个头节点,头节点数据域无效,指针域有效。无头链表:每一个数据域和指针域都有效。

2025-01-11 00:00:00 554

原创 【数据结构】栈

顺序栈额链式栈的区别?(1) 顺序栈是顺序存储,内存连续;链式栈是链式存储,内存不连续。(2) 顺序栈长度受限制,而链式栈不会。

2025-01-11 00:00:00 774

原创 【数据结构】基础知识

获取关键数据,通过元素的关键码方法的返回值来获取。这样查找一个电话就可以先查找索引表,再查找对应的数据文件,加快了查询的速度。数据元素并不是孤立存在的,它们之间存在着某种关系(或联系、结构)。可以提高查找速度,特点检索速度快,但是占用内存多,删除数据文件要及时更改索引表。线性结构 ==> 一对一 ==> 线性表:顺序表、链表、栈、队列。数据项:数据的最小单位,描述数据元素的有用的信息。数据:不再是单纯的数字了,而是类似于集合的概念。在存储数据的同时,建立一个附加的索引表。数据的逻辑结构以及存储操作。

2025-01-10 00:00:00 572

原创 【数据结构】顺序表

进一步优化:通过添加全局变量last表示最后一个有效元素下标,可以去掉表示有效元素个数的参数了。

2025-01-10 00:00:00 720

原创 【Linux】shell脚本编程

变量名=值注:等号两边不能有空格取shell变量的值:$变量名echo $YYXX=$YY ---> 将 YY 的值赋值给 XXecho $XXunset 变量名 ---> 取消该变量的值获取的是上一个命令是否是正确的执行结果0:真 非0:假$$ 获取当前shell的进程 PID。

2025-01-09 00:00:00 1011 1

原创 【Linux】gdb调试

按下回车,执行上一次的指令,也就是 n,执行printf语句打印信息,显示下一行语句:return 0。然后就停在了第5行(实际上是从第12行调用的),也就是在 add中 return的位置。n/next:单步执行程序,如果是函数整体执行,不会进入。s/step:单步执行程序,如果是函数会进入。l/list:显示当前行下面的 10行代码。gcc-gxxx.c生成一个a.out。b/break 函数名/行号:添加断点。执行 n指令,继续走一步,来到第6行。d/delete num:删除断点。

2025-01-09 00:00:00 326

原创 【Linux】文件的压缩与解压

压缩:bzip2 文件名 ----> 默认生成:文件名.bz2 的压缩文件。压缩:xz 文件名 ----> 默认生成:文件名.xz 的压缩文件。压缩:gzip文件名----> 默认生成:文件名.gz的压缩文件。注:tar -cvf file.tar * --> 只归档不压缩。解压:bunzip2 文件名 ----> 默认解压为:文件名。解压:unxz 文件名 ----> 默认解压为:文件名。-J:由 tar 生成归档,然后由 xz 压缩 .xz。解压:gunzip文件名---->默认解压为:文件名。

2025-01-08 00:00:00 1703 2

原创 【Linux】硬链接和软连接(符号连接)

首先,从使用的角度讲,两者没有任何区别,都与正常文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。格式:ln -s被链接的文件(源文件) 生成的链接文件(目标文件)ln-s(符号链接)利用文件的路径名来建立的,最好从绝对路径开始。格式:ln 被链接的文件(源文件) 生成的链接文件(目标文件)硬链接:创建新的硬链接,连接数会增加,删除硬链接,链接数减少。1) 硬链接的属性 - 相当于生成一个副本 起别名。2) 源文件删除,链接断开,建立源文件之后重新链接。硬链接:本质上是同一个文件。

2025-01-08 00:00:00 256 1

原创 【Linux】Linux命令

sudo nice -n num ./可执行文件。

2025-01-07 00:00:00 3605 2

原创 【Linux】文件系统命令

常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext2、Ext3、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、ReiserFS、XFS、JFS、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS(New Technology File System)等;存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等。

2025-01-07 00:00:00 966

原创 嵌入式系统(将软件嵌入到硬件里面)

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

2025-01-06 00:00:00 1001 5

原创 【Linux】shell命令

shell是命令解析器用户在命令行提示符下输入命令文本,开始与shell进行交互。接着,shell将用户的命令或者按键转换成内核能够理解的指令控制操作系统作出响应,直到控制相关的硬件设备。然后,将输出结果通过shell提交给用户:Bourne Shell由AT&T贝尔实验室的S.R.Bourne开发,也因开发者的姓名而得名。它是Unix的第一个Shell程序,早已成为工业标准。目前几乎所有的Linux系统都支持它。不过Bourne Shell的作业控制功能薄弱,且不支持别名与历史记录等功能。

2025-01-06 00:00:00 1738 1

原创 C语言----共用体、枚举

不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。枚举是C语言中的一种构造数据类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。

2025-01-05 00:00:00 346

原创 C语言----函数、指针、数组

形参列表:和指向的函数的参数一致,此处形参列表可以只保留数据类型,变量名可以省略,如:int (*p)(int, int);h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。return 指针/地址;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数。e) 一个有10个指针的数组,该指针是指向一个整型数的。c)一个指向指针的的指针,它指向的指针是指向一个整型数。f) 一个指向有10个整型数数组的指针。本质是指针,指针指向函数的指针。b)一个指向整型数的指针。

2025-01-05 00:00:00 623

原创 C语言----函数

一个完成特定功能的代码模块。

2025-01-04 00:00:00 1295 1

原创 C语言----结构体

用户自定义的数据类型,在结构体中可以包含若干个不同数据类型的成员变量(也可以相同),使这些数据项组合起来反应某一个信息。struct结构体名成员变量;struct 结构体名 变量名;int id;int age;char sex;return 0;struct 结构体名成员变量;}变量名;int id;int age;char sex;} stu;// 这个是全局的return 0;struct成员变量;} 变量名;int age;

2025-01-04 00:00:00 745 1

原创 C语言----指针

1.32位操作系统:指针为4字节, 64位操作系统:指针为8字节2. 内存地址是固定的,但是变量的地址不固定的(栈区随机分配)3. 指针类型根据指针指向空间的数据类型段错误1) 野指针,没有规定指向的指针会在内存中乱指,野指针产生原因1. 指针变量定义没赋值2. 指针 p被 free之后,没有置 NULL,会让人以为p是合法指针解决:int* p = NULL;

2025-01-03 00:00:00 1492 1

原创 C语言----指针数组

本质是数组,里面存放的是指针。

2025-01-03 00:00:00 885

原创 C语言----数组

存储类型 数据类型 数组名[元素的个数];int arr[5];数组名:代表数组首元素的首地址,arr地址常量,不能为左值,不能被赋值。

2025-01-02 10:11:26 1454

原创 C语言----分支语句

首先定义循环变量并赋值,然后判断是否符合条件,如果符合就进入循环执行语句块及增值减值语句,然后继续判断,直到判断条件不成立退出循环。练习:从终端上输入一个字符并在终端上输出这个字符,当输入字符为‘q’时,程序结束。练习:循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。2)if和else后面的{}可以省略,但是只能匹配之后的一条语句。即12321是回文数,个位与万位相同,十位与千位相同。continue:结束本次循环,继续下一次循环。根据你符合我不同的条件,去执行了不同的语句。

2025-01-02 10:08:17 501

原创 C语言----变量与常量

特点:只能单纯替换,不要进行手动的运算(原样替换,替换完再计算)auto(省略的时候默认就是auto类型) int num;2. 初值: 为赋初值时,值为随机值 为赋初值时,值为0。存储类型(一般存储类型是可以省略的) 数据类型 变量名。5. 作用域: 作用于函数体内部 作用于整个程序。float(占4字节)double(占8字节)1. 定义位置: 函数体内部 函数体外部。3. 存储位置: 栈区 全局区(静态区)有效数据 6-7位(一般是7位)概念:程序运行中不会发生变化的值。存储类型就是变量的存储位置。

2024-12-28 00:00:00 353 4

原创 C语言----输入输出

m:位宽 // 当 m 大于实际位宽的时候,按 m 输出。// 当 m 小于实际位宽的时候,按照实际位宽输出。参数:format:字符串"hello"可以回收一个或多个的空格、回车、tab。参数:c:要输出字符的ascii值。返回值:输出字符的个数(不常用)返回值:要输出字符的ascii值。功能:按照指定的格式向终端输出。返回值:输入字符的ASCII值。返回值:正确输入数据的个数。参数:同 printf;功能:从终端输入一个字符。功能:向终端输出一个字符。.n:打印小数点后n位。-:左对齐,默认右对齐。

2024-12-28 00:00:00 587 1

原创 C语言基础

词法符号就是你在程序设置的时候在里面规定的一些由几个字符组成的一些简单的有意义的最小的语法单位。

2024-12-27 00:00:00 1172 1

原创 C语言----词法符号

位运算符的位指的是二进制里的每一位,指的是 0 和 1 ,没有真假,因为它不是一个逻辑上的判断真假,而是让你去计算 0 和 1 通过这些位运算符算出来的结果到底是什么样的,按位进行操作了。其他(其他功能):void(空类型) typedef(重定义) const(常量化,是只读的)数据类型:char(字符型) short(短整型) int(整型) long(长整型)2) printf("%d\n", ++a);&(位与) |(位或) ^(异或) ~(取反) <<(左移) >>(右移)

2024-12-27 00:00:00 710 1

原创 BiLSTM:深度学习中的双向长短期记忆网络

在深度学习的浪潮中,BiLSTM(双向长短期记忆网络)以其独特的结构和强大的性能,在处理序列数据方面脱颖而出。本文将详细介绍BiLSTM的原理、应用案例、研究进展、技术挑战以及未来趋势,并提供相应的代码示例,帮助读者更好地理解和应用BiLSTM。

2024-12-23 00:00:00 3037 11

原创 门控循环单元(GRU):深度学习中的序列数据处理利器

门控循环单元(GRU)以其独特的门控机制和处理长序列数据的能力,在深度学习领域占据了重要地位。随着技术的不断发展,GRU将继续在各种序列数据处理任务中发挥其重要作用,推动人工智能技术的进步。通过不断的研究和应用,GRU的潜力将被进一步挖掘,为更多领域带来创新和变革。GRU的成功不仅在于其强大的性能和高效的计算能力,更在于其灵活性和适应性,使其能够在不断变化的技术环境中保持竞争力。未来,随着深度学习技术的进一步发展,GRU及其变种将继续在各个领域发挥重要作用,推动智能化的进程。%5Csigma。

2024-12-23 00:00:00 2414 3

空空如也

空空如也

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

TA关注的人

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