- 博客(101)
- 收藏
- 关注
原创 多路转接reactor epoll ET 简单的英译汉服务
在这个过程中需要 为每一个文件描述符分配一个 管理链接(服务)的 对象 就像去办理业务 每个人有一个对应的工作人员为自己提供服务一样,这个connection对象要调用Tcpserver提供好的函数 换句话来说 connection 用来分别是具体为哪个客户端提供服务。每个单词后面要跟个空格 就算只发一个也要后面加空格 发很多个单词记得最后一个单词后面加空格哦。reactor 在等待事件的到来,如果有事件那就调用相应的函数 来处理。但是具体提供服务 还是在营业厅里面用营业厅提供好的工具来提供服务。
2023-04-05 20:38:18 499 1
原创 应用层协议 ——— HTTP协议
HTTP(Hyper Text Transfer Protocol)协议又叫做超文本传输协议,是一个简单的请求-响应协议,HTTP通常运行在TCP之上。在编写网络通信代码时,我们可以自己进行协议的定制,但实际有很多优秀的工程师早就已经写出了许多非常成熟的应用层协议,其中最典型的就是HTTP协议。
2023-03-21 23:54:02 635
原创 用TCP写一个大小写转换的服务,多线程版本
如果编写的程序只在本地机器上运行,那么是不需要考虑大小端问题的,因为同一台机器上的数据采用的存储方式都是一样的,要么采用的都是大端存储模式,要么采用的都是小端存储模式。但如果涉及网络通信,那就必须考虑大小端的问题,否则对端主机识别出来的数据可能与发送端想要发送的数据是不一致的。为了让套接字的网络通信和本地通信能够使用同一套函数接口,于是就出现了sockeaddr结构体,该结构体与sockaddr_in和sockaddr_un的结构都不相同,但这三个结构体头部的16个比特位都是一样的,这个字段叫做协议家族。
2023-03-20 13:29:20 533
原创 7-8 sdut-顺序结构-2 计算得分
那么问题来了,科比有一场比赛投中a个3分球,b个2分球,罚进了c个球(罚球得一分),这场比赛总共得了多少分?每行包含3个数字a,b,c( 0
2023-03-20 10:58:17 829
原创 7-1 等边三角形面积
数学基础对于程序设计能力而言很重要。对于等边三角形面积,请选择合适的方法计算之。测试数据有多组,处理到文件尾。每组测试输入1个实数表示等边三角形的边长。对于每组测试,在一行上输出等边三角形的面积,结果保留2位小数。
2023-03-20 10:54:52 230
原创 关于Linux多线程
在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。
2023-03-17 22:36:35 989
原创 Linux网络基础第一篇
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。【问题】对于接收方而言,所有的网络数据都是需要经历网络协议栈的,但是,怎么区分网络数据到底属于哪一个应用程序的。
2023-03-12 10:32:42 194
原创 Linux信号详解
你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时,你该怎么处理快递。也就是你能“识别快递”。当快递员到了你楼下,你也收到快递到来的通知,但是你正在打游戏,需5min之后才能去取快递。那么在在这5min之内,你并没有下去去取快递,但是你是知道有快递到来了。也就是取快递的行为并不是一定要立即执行,可以理解成“在合适的时候去取"。在收到通知,再到你拿到快递期间,是有一个时间窗口的,在这段时间,你并没有拿到快递,但是你知道有一个快递已经来了。
2023-03-10 21:11:36 787
原创 Linux进程间通信
进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息。管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的数据流称为一个“管道”。例如,统计我们当前使用云服务器上的USER为root的进程。
2023-01-16 17:22:39 655
原创 关于Linux的动静态库
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)
2022-12-20 17:43:50 749
原创 进程程序替换
叫做可变参数,说白了就是可以按照用户的意愿传入参数的大小个数,如果还不理解,大家肯定都用过C语言中的printf函数吧,printf有没有规定你只能打印几个参数呢?说到环境变量之前我们先来看一下这个问题,我们刚刚提到过,进程替换可以让我们执行其他语言写的程序,那么我们怎么来执行呢?谈完这个话题我们再来谈谈环境变量,execle这个函数多了一个e,这个e就是环境变量,如果你想给这个函数传入环境变量,我们就可以传入环境变量。当程序替换的时候,我们可以理解成为,代码和数据都发生了写时拷贝,完成了父子的分离。
2022-12-20 12:13:22 631
原创 unordered_map&&unordered_set的应用以及底层实现(哈希表)
开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。3.在内部,unordered_set中的元素没有按照任何特定的顺序排序,而是根据它们的散列值组织到桶中,以允许直接通过它们的值快速访问单个元素(平均平均时间复杂度恒定)。
2022-12-13 22:10:21 1378
原创 C++智能指针
RAII,即Resource Acquisition Is Initialization,“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的一种方法。是一种资源管理技术,利用对象的生命周期管理程序的资源(如内存,文件句柄,锁等)的技术,因为对象在离开作用域的时候,会自动调用析构函数。auto_ptr是一个智能指针(smart pointer),它管理通过new表达式获得的对象,并在auto_ptr其自身被销毁时删除该对象。
2022-12-12 18:17:40 295
原创 关于C++11
左值是一个表示数据的表达式(如变量名和解引用的指针),**我们可以获取它的地址,也可以对它赋值,左值可以出现在赋值符号的左边,右值不可以出现在左边。**左引用加const修饰,不能对其赋值,但可取地址,是一种特殊情况。左值引用就是给左值取别名。//以下都是左值 int * p = new int [ 10 ];//对左值的引用 int * & pp = p;左值:1、可以取地址2、一般情况下可以修改(const修饰时不能修改)
2022-12-08 15:57:35 296
原创 6-1 列表推导生成随机数矩阵(高教社,《Python编程基础及应用》习题4-10 Python
m: 行数,int, 1 < m < 100;n: 列数, int, 1 < n < 100.编写一个Python函数,生成一个m行n列的元素值不大于20的随机数矩阵(二维列表)。提示:使用random.randint()函数来生成随机数。
2022-11-12 00:57:23 1553 1
原创 6-2 矩阵乘法函数(高教社,《Python编程基础及应用》习题4-11)
c = multiply(a,b,p,q,r) #调用执行读者写的函数。设计一个Python函数,计算两个矩阵(二维列表)的乘积。a是一个p行q列的二维列表;b是一个q行r列的二维列表;#由出题者书写的正确函数计算返回的标准答案。应返回矩阵p行r列的结果矩阵。#测试程序的正确输出。
2022-11-12 00:49:25 903
原创 7-10 有关堆栈操作 Python
是2,表示进栈操作,即从堆栈顶部(尾部)将数据添加到堆栈,所以2 后面还要带一个数,两数之间用空格分隔,当没有第2个数时,显示 “data error”,当进栈操作没有建立堆栈对象时显示 “stack is not exist”.当进堆栈操作时,堆栈数据达到最大长度时,则显示“The stack is full”是4:表示显示堆栈中所有元素,元素之间用空格分隔,最后元素后面没有空格。实现显示堆栈数据方法:show()。请实现一个Stack类,实现堆栈初始化,进栈,出栈,显示堆栈数据,堆栈长度等.
2022-11-12 00:48:04 620 1
原创 c++ list
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。...
2022-08-02 11:02:29 112
原创 C++——vector的用法
方法名作用备注begin()指向vector首元素的迭代器vectoriteratorend()指向vector尾元素下一个位置的迭代器vectoriteratorrbegin()指向vector尾元素的反向迭代器,即rbegin()指向尾元素,rbegin-1指向倒数第二个元素vectoriteratorrend()指向vector头元素前一个位置的反向迭代器,即rend()指向头元素前一个位置元素,rbegin-1指向第一个元素vectoriterator。...
2022-08-02 10:32:40 519
原创 Python 下标异常
输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”输入格式:输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。输出格式:输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”输入样例:在这里给出一组输入。例如:Hello World-4输出样例:在这里给出相应的输出。例如:o输入样例:在这里给出一组输入
2022-05-23 15:29:16 2586
原创 python 求某月的天数
7-1 求某月的天数分数 10作者 usx程序设计类课程组单位 绍兴文理学院输入年份year、月份month,判断该月的天数。闰年:能被4整除但不能被100整除或者能被400整除的年份是闰年。输入格式:测试数据有多组,处理到文件尾。对于每组测试,输入两个整数,表示年份year和月份month。输出格式:对于每组测试,输出对应年月的天数。输入样例:2020 22020 4输出样例:2930.while True: try: y,m=input().spli
2022-05-23 15:18:29 5840
原创 冒泡排序,插入排序,快速排序,堆排序,希尔排序,归并排序,计数排序,选择排序
动图详解 ,八大排序:冒泡 插入 快排 归并 计数 选择 希尔 堆排序
2022-05-05 23:33:12 573 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人