- 博客(32)
- 收藏
- 关注
原创 每日一题 ------- 找出与数组相加的整数
题目要求nums1数组买个元素加上x后,等于nums2。也就是说,如果nums1有n个元素的话就需要加上n个x才行,那么我们可以将这个过程反推,nums2 - nums1 = nx。这时我们就已经可以得到想要的了,应为x是固定的,也就是说最大值加上x依然会是最大值。于是我们只需要统计两个数组的最大值使其相减就可以得到想要的答案了。nums1 中每个元素都必须加上x才可以与nums2中的元素一一对应,其中有几个特殊例如:最大值。当两个数组中包含相同的整数,并且这些整数出现的频次相同时,两个数组。
2024-08-08 20:09:17
337
原创 网络编程 -------- 5、IO多路复用
poll的作用和实现原理 和 select 是类似的,select监听的文件描述符 在内核中监听的时候存储在数组中而poll存储在链表上。创建一个epoll实例 用来监听其他的文件描述符的状态 ,则要被监听的文件描述符 就必须加入到epoll实例中。select / poll / epoll 都是IO多路复用的机制,都是用来监视多个文件描述符,等待IO事件的发生。select、poll、epoll 都是IO多路复用技术,都是用来监听多个文件描述符的状态变化(是否可读/可写/出错)的。
2024-08-06 19:28:51
1070
原创 网络编程 ----------- 4、组播与广播
广播是指向同一个网络中所有的主机传输数据只有传输层协议为 UDP协议时,才支持广播TCP是端对端,广播是一对多 ,所以无法符合其要求。
2024-08-05 19:24:25
1050
原创 网络编程 -------- 3、TCP_UDP_UNIX
Server.csocketbind (服务器的ip+端口)listenacceptcloseClient.csocketconnect (服务器的ip+端口)close(1) 三路握手: TCP建立连接时1)SYN请求 (客户端-->服务器)2)SYN+ACK应答 (服务器-->客户端)3)ACK确认 (客户端-->服务器)(2) 四次挥手: TCP断开连接时1)FIN请求 (客户端-->服务器)2)ACK应答 (服务器-->客户端)
2024-08-01 19:52:14
970
原创 网络编程 --------- 2、socket网络编程接口
socke套接字是一个编程的接口 (网络编程的接口)、是一种特殊的文件描述符 (read/write),不局限于TCP/IP。socket是独立于具体协议的网络编程接口这个接口是位于 应用层和传输层之间。类型:(1)面向字节流,针对于传输层协议为的应用(2)面向数据报,针对于传输层协议为的应用(3)程序之间对ip层进行访问,跳过了传输层。
2024-08-01 19:41:12
1171
原创 网络编程 --------- 1、网络编程基础知识
1)网络层次模型OSI 七层模型TCP/IP 四层模型2) TCPUDP3) IP地址 + 端口号。
2024-07-31 20:19:53
556
原创 并发 -------- 3、线程
线程是比进程更加小的活动单位,它是进程的执行分支线程 和 同进程内部的其他线程 共享该进程的地址空间的特点:(1)创建一个线程 比 创建一个进程的系统开销要小很多(2)实现线程之间的通信也十分方便,因为 进程内的多个线程之间 共享该进程的地址空间的(3)线程是一个动态的概念是进程内部的执行分支,线程是用在进程内部来并发执行指令C语言的指令只能在函数内部 ---> 线程 对应了一个函数(线程函数)
2024-07-30 09:58:34
555
原创 并发 -------- 2.5进程间的通信 - 信号量
IPC:1、管道pipe 无名管道fifo 有名管道2、信号 signal3、消息队列 System V消息队列 / POSIX消息队列4、共享内存 System V共享内存 / POSIX共享内存5、信号量 System V信号量 / POSIX信号量 <-----------6、socket套接字。
2024-07-30 09:34:26
878
原创 并发 ------- 2.4 进程间的通信 - 共享内存
IPC:1、管道pipe 无名管道fifo 有名管道2、信号 signal3、消息队列 System V消息队列 / POSIX消息队列4、共享内存 System V共享内存 / POSIX共享内存 <-----------5、信号量 System V信号量 / POSIX信号量6、socket套接字。
2024-07-30 09:09:08
763
原创 并发 -------- 2.3 进程间的通信 - 消息队列
System V 消息队列 : 实现为一个带头结点的链表 对于系统中的每一个消息队列,内核维护在一个消息结构体中 struct msqid_ds {} (man msgctl )/* 该结构体的读写权限 Ownership and permissions *//* 最后发送消息的时间 Time of last msgsnd(2) *//* 最后接收消息的时间 Time of last msgrcv(2) *//* 最后修改消息结构体的时间 Time of last change */
2024-07-30 09:04:24
571
原创 并发 -------- 2.2 进程间的通信 - 信号
注意:1)在进程的运行期间 都是可以去捕捉指定的信号的2)可以让不同的信号 去共享同一个信号处理函数3)sighandler_t是一个新类型,是一个函数指针类型,指向了一个 带有一个int类型参数且无返回值的函数。也就是用户自定义的信号处理函数的类型:void xxxx( int signum ) //signum:信号值。
2024-07-29 20:28:19
726
原创 并发 --------- 2.1、进程间通信 - 管道
进程间的通信实质:进程间的数据的交换。问:在一个进程中 有一个全局变量a,然后赋予a一些特殊意义的值 ,让另外一个进程去访问a,能否实现?答: 不能,进程的地址空间是独立但是文件可以使进程发生通信 ,文件在文件系统中,大家都可以访问的。缺点是速度慢,效率较低 其本质即在操作系统内核中 开辟了一块空间(某种机制)给进程去访问。
2024-07-29 20:18:52
589
原创 文件IO -------- 1.3.2bmp图片显示
bmp ---》 bitmap位图文件,是一种无压缩的图片文件格式每一个像素点的原始数据都保存在文件中bmp图片24位bmp图片 r g b32位bmp图片 a r g b24位bmp图片:一个像素点占3个字节,分别存放 r g b 三个颜色分量值我们的图片是一个一个的像素点组成在屏幕上显示图片,把图片的每一个像素点的颜色值 在屏幕上对应的位置进行显示即可在屏幕上显示图片 --> 把图片文件的每一个像素点的颜色数据解析出来。
2024-07-26 19:17:58
923
原创 并发 --------- 1、进程
程序 = 数据结构 + 算法数据:用来表示人们思维对象的抽象概念的物理表现 称为数据指令:对数据的处理的规则 叫做指令计算:对于有限的数据集合 所执行 目的在于解决某一个问题的一组有限指令的集合 称为计算程序就是数据和指令的集合,一个程序的执行过程就是一个计算。
2024-07-23 19:19:55
1051
原创 c语言------------------分支结构
c语言中最简单的语句就是空语句,其本身只包含一个分号。空语句本身不执行任何任务,但是有时也是有用的。
2024-07-06 15:30:44
793
1
原创 每日一题 ———————— 交替子数组计数
本题来自力扣,给你一个二进制数组nums。如果一个子数组中两个元素的值的情况,我们称这样的子数组为。返回数组nums中交替子数组的数量。5[0][1][1][1]以及[0,1]。10数组的每个子数组都是交替子数组。可以统计在内的子数组共有 10 个。01。
2024-07-06 15:14:42
398
原创 每日一题------------使数组连续的最小操作数
给你一个整数数组nums。每一次操作中,你可以将nums中一个元素替换成整数。如果nums满足以下条件,那么它是numsnums比方说,是,但是。请你返回使nums的操作次数。0nums 已经是连续的了。1一个可能的解是将最后一个元素变为 4。结果数组为 [1,2,3,5,4] ,是连续数组。3一个可能的解是:- 将第二个元素变为 2。- 将第三个元素变为 3。- 将第四个元素变为 4。结果数组为 [1,2,3,4] ,是连续数组。
2024-04-08 15:14:55
426
1
原创 每日一题------统计桌面上的不同数字
运用数学方法,应为n%(n-1)==1;符合要求,所以在条件天数后,桌上数应为(n-1)个,第二天,2 和 4 也出现在桌面上,因为 5 % 2 == 1 且 5 % 4 == 1。再过一天 3 也出现在桌面上,因为 4 % 3 == 1。在十亿天结束时,桌面上的不同数字有 2 、3 、4 、5。在十亿天结束时,桌面上的不同数字只有两个:2 和 3。因为 3 % 2 == 1 ,2 也出现在桌面上。,开始时,它放在桌面上。天之后,出现在桌面上的。最开始,5 在桌面上。
2024-03-23 16:54:53
309
1
原创 文件IO------------1.2标准IO
众所周知文件IO可以分为系统IO和标准IO,而系统IO指的是操作系统(glibc库)提供给用户操作文件的接口(open/close/read/write/lseek...),那么标准IO指的是什么呢?fread/fwrite 这两个函数都是直接操作缓冲区NAMESYNOPSISfread是用来从stream指定的文件流中读取nmemb个对象,并且每一个对象有size个字节,读取到的内容保存到ptr指向的内存空间中去总共读取了: size * nmemb。
2024-01-25 20:26:52
2004
原创 C语言------------运算符与表达式
顾名思义,就是说运算符用来表示某种运算的符号几目运算符?表示这个运算符要带几个操作数单目运算符: 该运算符只需要一个操作数 eg:++ --双目运算符: 该运算符只需要两个操作数 eg:+ - *三目运算符: 该运算符只需要三个操作数 eg:a>b?a:b结合性: 决定先算哪个操作数的问题从左到右 还有 从右到左eg:a+bb+a在C语言中,含义是不一样的+ 结合性: 从左到右eg:int a;//17int b;//16int a;int b;//17。
2024-01-24 20:02:58
902
1
原创 文件IO--------1.3.1Linux Frame Buffer
Linux Frame Buffer 其指的是 Linux 底层的帧缓冲设备,可以显示一帧一帧的图像(屏幕的显示)。因为linux中的任何东西都是以文件方式进行存储的,所以我们可以通过读写这个文件来对屏幕显示进行操作。
2024-01-24 19:12:42
931
1
原创 文件IO---------1.1系统IO
U/USR 用户(文件的拥有者)G/GRP 组用户O/OTH 其他用户rw-r--r--0644。
2024-01-23 21:26:42
2154
1
原创 C语言数据类型--------不同类型之间的赋值问题
前言:众所周知在C语言中,仅仅就4种数据类型 ---- 整型,浮点型,指针,聚合类型(数组和结构),其他的类型都是从者四种类型种派生出来的。c - > 32 bits : 短的----》长的 c:unsigned , 高位全部补 0。c+8 ---》d 长 ----- 》 短 低字节直接拷贝,高字节字节pass。if 短的是有符号位,高位就全部补符号位。if 短的是无符号位,高位就全部补0;(1)、长 ------ 短。(2)、短 ----- 长。# 不同类型的整型之间的赋值问题。
2024-01-22 19:12:00
690
原创 交叉开发--------1.4Makefile
1.Makefile是什么? 2.Makefile能做什么? 3.了解Makefile中的一些语法,能够编写/修改简单的Makefile(一般的Makefile都是自动生成的) Makefile是make工具的配置文件,指导make如何去编译工程的文件 什么是make呢? sudo apt install make make是一个智能化的自动编译工程的管理工具(命令),它可以决定在一个工程中哪些文件需要被编译,哪些文件先编译,哪些文件后编译,以
2024-01-22 19:02:09
847
原创 交叉开发--------1.3动态库与静态库
二进制的仓库(一个已经实现好的,可以直接调用的功能模块)库是一种二进制的封装形式,其他的源代码可以直接调用库中已经实现的函数模块或者其他功能模块,但是又看不到他的源代码库这种方式有利于模块化,以及代码重用,而且只要接口设计合理,改变库的实现方式,不影响使用库的源代码的如:printf()/scanf()/strlen() 只需要使用即可,不需要知道它是如何实现的库是如何来的呢?源代码(一般没有主函数)------>编译------->二进制文件(01)
2024-01-22 18:24:58
846
原创 交叉开发---------1.2Linux中命令行调试工具
作用:可以让我们自己的程序在Ubuntu中按照我们自己的控制,让代码单步运行,在运行的同时,可以打印出各种变量的值和地址。gdb在运行这个程序的时候,可以设置断点,会在运行到断点位置的时候停下来。我们可以把我们的程序运行到GDB这个环境上面去(类似于windows中的各种调试工具)可执行文件1中包含了gdb调试的信息,这个程序可以运行到gdb环境上面。让程序开始运行,运行到断点的位置或者程序结束。停下来的时候,打印的一行语句是下一次将要执行的语句。s会跳转到函数的内部,一条一条运行函数的代码。
2024-01-22 18:11:50
379
原创 交叉开发-------1.1交叉开发基础
交叉开发也是一种开发方式,也是用来开发软件的编写代码------->编译代码(gcc)--------->运行代码。
2024-01-22 18:08:35
1105
原创 Linux基础---------1.3find命令
name pattern 根据名字去查找文件,可以使用通配符(shell中的通配符)(也可以使用正则表达式)在当前目录(以及目录下面的目录)查找名字以1.c/2.c/3.c的文件。在当前目录(以及目录下面的目录),查找名字以.c结束的连接文件。代表一个任意的字符(shell中的规则)在当前目录(以及目录下面的目录)查找名字以.c结束的文件。查找比文件file更加新的文件(修改时间再file的后面)待查找的文件的权限必须是0664。待查找的文件的修改时间在file的修改时间的后面。
2024-01-22 17:51:05
427
原创 linux基础--------1.2正则表达式
regerror是用来把regcomp/regexec执行返回的错误码,转换成对应的错误字符串的。计算机要处理这些字符串,首先要使用某一种方式(能够被全世界所有程序员认可的一种规则)去描述这些要处理的字符串。字符串在计算机中是最为广泛的处理对象(html网页,URL,IP,名称,密码,邮箱...)字符串的组合形式非常多样。errbuf:指针,指向一段可用的空间,用来保存转换后的错误信息字符串的。脱离的具体语言的一些限制,被大多数程序语言认可,并且现在大部分的程序设计语言都支持正则表达式。
2024-01-18 19:40:30
1890
1
原创 linux基础-----1.1linux基础命令
一般情况下,文件名和inode是一一对应的关系,每一个inode号码保存着一个文件的属性,对应一个文件名,但是在linux/unix下面,增加一个文件名指向inode,"链接数+1",删除一个文件名,链接数就会-1,当链接数为0的时候,系统就会回收这个inode,会影响到所有的文件名,删除一个文件名字,仅仅使inode的硬链接数量减一,不影响另一个文件名的访问,这种情况,我们称之为“硬链接”且以自己的组标识号相区分.像UID一样,用户的组标识号也存放在passwd文件中,在现代的Unix/Linux中,
2024-01-17 20:32:11
887
原创 Linux基础---1.4shell编程
函数内部的命令列表function_name:你自定义的函数的函数名,名字的取法和C语言类似(标识符)函数不要写参数,如果有参数就是使用"位置变量"函数定义之后不会自动执行,需要调用才会执行函数的调用语法:在函数的内部....
2024-01-17 19:59:01
1013
原创 c语言中的数据类型
在C语言中,仅仅就4种数据类型 ---- 整型,浮点型,指针,聚合类型(数组和结构),其他的类型都是从者四种类型种派生出来的。在cpu底层中没有符号位的概念,都是数值位,都参与了运算,至于这个数是 正数还是负数,得看你的脸色来!2、在CPU底层是没有符号位的概念,都是数值位,都参与了运算,至于这个数是正数还是负数,都要看编译器的意思。也就是说,计算机实现要解决的是数据的保存问题,在保存数据之前呢?由整数部分,小数点,小数部分,一个e/E,一个可选的带符号的整型指数和可选的表示类型的后缀(F/f/l/L)
2024-01-16 18:42:59
841
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人