自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程实现并发服务器的上传和下载

功能5:用数据库保存上传文件记录(文件编号 文件名 上传者等)001 1.txt。服务端:支持数据库文件,用户更新,没有具体操作,所有的功能均在客户端实现。代码主要实现了登陆注册修改密码,文件的上传下载功能。功能4:实现并发服务器支持多个客户端同时下载或上传。客户端:可支持登陆注册,修改密码,上传下载文件操作。注意:数据库使用的是sqlite3,使用时安装库。功能6:服务端只支持下载数据库记录中保存的文件。功能1:实现网络客户端和服务端数据传送。功能2:实现文件下载。功能3:实现文件上传。

2023-09-11 20:48:17 126

原创 进程和线程的常见问题分析

所以,进程作为一个具有独立资源集的程序实体,它是操作系统调度和管理资源的最小单位。一个进程失败不会影响其他进程,且进程间资源是隔离的,这就是它是“最小单位”的原因。(File Descriptor Table)是操作系统为每个进程维护的一个数据结构,用来跟踪和管理这个进程打开的所有文件。5.进程间通过进程间通信(IPC)进行资源共享,但在没有IPC的情况下进程之间资源是隔离的。3.进程拥有自己的资源集(文件句柄表、内存空间等),这些资源都是独立的不与其他进程共享。2.每个进程都有独立的地址空间,互不影响。

2023-09-11 20:37:02 94

原创 数据结构常用算法

冒泡:每一次运行总会将最小的或者最大的放到前面,如果需要交换,一直在交换。简单选择:每一次运行总会将最小的或者最大的放到前面,最后只交换一次。,不经任何比较便能获取所需的记录,其查找的时间复杂度为常数级。左右孩子的,牵扯到树的变化,所以只有特定场景下才使用。先序遍历、中序遍历、后续遍历、广度有限、深度优先。希尔排序:增量,逐渐减少的,直到增量为。关键字,直接能找到数据的记录本身。限制:必须有序、必须是一个顺序表。分块查找:块间有序,块内无序。二叉排序树:二叉树的查找。堆(大根堆,小根堆):根。

2023-08-23 21:29:09 51

原创 存储类型及内存空间的分类

2.还有我们的静态存储区域,主要存储全局变量还有静态变量,初始化的全局变量及为初始化的全局变量,程序结束系统自动释放空间;2.在模块内,但在函数体外,一个被声明的静态变量只能被模块内的函数调用,不能被模块外的其他函数调用;3.在模块内部,一个被声明的静态函数只能被模块内的其他函数调用,不能被模块外的其他函数调用。1.在函数体内部,一个被声明的静态变量,在被函数调用时维持其值不变;3.栈区:主要存放局部变量,由系统自动分配空间,也由系统释放;1.主要有我们的代码段:储存代码的空间(二进制存储);

2023-08-07 19:42:40 84

原创 通过使用while的死循环做菜单以及switch ,case的相关操作,实现输入(scanf),输出(printf),求出数组最大值以及冒泡排序

注意:头文件下方使用了一个宏定义,为了方便我们修改输入输出的数的个数,且宏定义只做替换,在以后的代码中我都可以使用宏名(shu)去代替数值(5)。要知道我们需要循环的是菜单,但是也许做一个跳出死循环的指令,否则菜单会一直弹出,那样大家就只能ctrl c了。我们需要循环输出输入 ,其中用到了一个for循环,每当运行完一个case指令别忘加break结束循环,否则会一直往下执行。这是我们定义的参数,其中a是我们的菜单选项,str为我们的数组名,这里我用五个数为例去实现我们的相关功能。

2023-07-27 18:42:37 708 1

空空如也

空空如也

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

TA关注的人

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