网络编程----心得体会
网络编程:
1.首先要对一些名字有些认识,发现他们之间的关系。
文件描述符:
在我看来,就是操作文件的时候,内核给了一个指针而已,但是这个指针在判断的时候对指针进行非空进行判断,进而判断语句是否成功,所以把它搞成数字
这样在打开文件的时候就变成了数字判断(但实质上是操作那个指针指向的起始地址)。
套接字描述符:
这个更高大上了,在你创建的时候,它是没有初始化的。而且在创建的时候是根据具体协议写出的特殊的套接字(可以携带IP(字符和二进制进行转换的函数)+PORT(由于网络套接字和主机本地套接字的差距演化出转换函数))
在客户端和服务器端进行连接的时候,分为监听套接字 (好比大家都知道的秘书(一个),有事情找某一个老板(老板是一个团队),是要先去找秘书,这个秘书就是监听套接字,只是大家都知道,然后都去找她) + 连接套接字(就是你要和那个老板进行汇报,在你找的时候把这个告诉秘书,秘书给你安排好放在已经连接队列里面(如果到了就把这个老板安排给你见面))
客户或者服务器处理:
在业务处理的时候,我们都是对描述符进行某种处理。套接字描述符号,是用来安排连接见面的。文件描述符是用来通信的,通过操作这个文件描述符实现客户和服务器业务层次的操作。
高并发select模型:
前面也说了,我们是通过操作文件描述符来进行客户端和服务器端业务层次的操作,现在我们通过把文件描述符统一管理起来,然后通过检测这些文件描述符的变化,来进行不同的操作,谁变化代表谁有新请求,咱们就处理谁。是不是提高了效率呢,在某种程度上是可行的。
在这里有没有联想到什么呢???想起信号的事情,信号集合,信号阻塞集,都是通过将全部信号管理起来,然后去操作。是不是很相似呢。显然......
重点:建立一个文件描述符集合,将要关心的文件描述符添加到此集合,以上过程是在用户空间发生的。现在运行了进入了内核态,文件描述符发生了变化,现在传递并赋值到用户空间,然后去遍历此集合,看哪些发生了变化,然后进行相应的操作。这样是不是比单个处理提高了效率,但是有个弊端就是频繁的在内核和用户空间来回传递文件描述符的开销很大。单个进程打开的文件描述符有限制,1024,不管集合中的文件描述符变化没有都要进行遍历操作。
poll模型:
这个相比select高大上了,就是将要监视的文件描述符弄成一个结构体数组(内部含有文件描述符(fd)+事件(event)+返回的事件信息(revents)),这个虽然突破了文件描述符大小的限制,但是依然没有解决内核和用户空间来回切换产生的开销。实现机制是这样的:在用户空间进行结构体数组的赋值,然后传递到内核态度,将发生变化的文件描述符对应的事件,赋值给返回的事件信息。等在用户空间我们就去操作结构体数组中的返回事件的信息(revents)(在用户态要分配内存进行状态的存储),这个好像比select强了很多,但是弊端并没有解决。
之前已经赋值过一次了,在内核态完成了状态变化后,状态进行了变化。在用户态的时候,又将创建临时变量进行存储还有分配内存,因此开销大还是存在。
epoll模型
在我看来是这样子的,解释如下:就是在创建epoll句柄的时候大小设置,无所谓,应该是根据你的设置进行动态分配的。
然后创建两个事件状态,一个临时的不断的改变值,然后添加到wait_event,这个之所以高大上是因为,在内核态的时候,如果状态发生了变化,内核帮助我们把状态信息的变化给赋值到wait_event中,然后用户态是不用额外分配内存进行存储的。而且更重要的是,用户在遍历的时候,只是去查询已经发生变化的那些个状态事件列表,更加高效。
makfile:
其中有部分思想值得我们学习,就是那个我们只关心改变的那些个文件,makefile之所以会这么高效是因为,他不会重复编译,这是它存在那么久的根本袁云,
能够避免重复编译。
轮询:
一个死循环,去查询状态根据状态进行操作。(有没有觉得像是设计模式里面的状态模式)
静态库与动态库:
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库(这个时候你删除静态库都是可以的)。动态库在程序编译时并不会被连接到目标代码中(推迟了绑定的过程),而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
他们之间有很多相似的地方,就是都是在头文件中声明函数原型,然后在对应文件中将头文件包含然后编写函数实现。静态库和动态库的来源都
是函数生成的.O文件。然后将生成的.O文件搞成要么是绝对地址,要么是相对地址,这样的话就可以实现共享或者编译时直接编译到源代码中
静态库当你编译进代码的时候,库是可以删除的。但是当你库更新时,是不是使用到库的文件也要相对应的更新,以及编译,这对大工程来说很致命。 而共享库则会解决这个问题,但是它依赖与库,不能离开库。
此文会不断更新:
网络编程----心得体会相关推荐
- 上网课的心得体会1000字_网络学习心得体会 (1000字)
网络学习心得体会 陈勇 网络教育学习的心得体会 当今的社会是信息的社会, 世界开始全面信息化. 全球化. 为了紧跟时代的脉搏,参加工作多年来,一直没有停止过学习,钻研业务知识,提升业务能 力网络教育的 ...
- 电脑硬件知识学习_关于网络学习心得体会集锦七篇
关于网络学习心得体会集锦七篇 当在某些事情上我们有很深的体会时,好好地写一份心得体会,通过写心得体会,可使我们今后少走弯路.那么心得体会怎么写才能感染读者呢?以下是小编为大家收集的网络学习心得体会7篇 ...
- c语言对编程对作用,c语言编程心得体会
c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...
- 乡村老师网络计算机培训日志,乡村教师网络研修心得体会
作业内容 乡村教师网络研修心得体会 参加乡村教师网络研修,既有辛苦,又有收获;既有付出,又有所得.我坚持经常进行网上学习,认真观看各个专家的视频录象,完成好的作业在网上提交,再上网评论.学习各位老师及 ...
- 美术网络计算机培训总结,【推荐】网络培训心得体会四篇
[推荐]网络培训心得体会四篇 心中有不少心得体会时,不妨将其写成一篇心得体会,让自己铭记于心,如此就可以提升我们写作能力了.怎样写好心得体会呢?以下是小编为大家收集的网络培训心得体会4篇,希望对大家有 ...
- 学计算机网路的感想,【必备】网络培训心得体会四篇
[必备]网络培训心得体会四篇 当我们心中积累了不少感想和见解时,可用写心得体会的方式将其记录下来,这样我们就可以提高对思维的训练.相信许多人会觉得心得体会很难写吧,以下是小编精心整理的网络培训心得体会 ...
- 计算机教学研修心得英语,英语网络研修心得体会
英语网络研修心得体会 有了一些收获以后,常常可以将它们写成一篇心得体会,这样可以帮助我们总结以往思想.工作和学习.那么心得体会怎么写才恰当呢?下面是小编收集整理的英语网络研修心得体会,欢迎阅读与收藏. ...
- linux系统编程心得体会范文大全,编程心得体会范文
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程.下面是学习啦带来的编程的心得体会范文,欢迎欣赏. C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富. ...
- 计算机网络国培总结,国培网络研修心得体会
国培网络研修心得体会 国培网络研修就是为了给国家培养更多的人才,也是为了让人们有学习的机会.以下是小编带来国培网络研修心得体会的相关内容,希望对你有帮助. 国培网络研修心得体会一 今年,我有幸参加了& ...
- 国培 计算机远程培训心得,国培网络研修心得体会(通用4篇)
国培网络研修心得体会(通用4篇) 心中有不少心得体会时,好好地写一份心得体会,它可以帮助我们了解自己的这段时间的学习.工作生活状态.那么写心得体会要注意的内容有什么呢?以下是小编为大家整理的国培网络研 ...
最新文章
- 在云中利用开源软件进行开发以提高创新能力
- LeetCode 973. K Closest Points to Origin--TopK 问题--最小堆--C++,Python解法
- 唐筛的准确率这么低为什么还要做_做注塑这么苦,为什么你还要坚持?
- 推荐:解析“extern”
- Java基础---接口的使用
- 旋翼机自主着陆-主要技术难点
- cocos2dx 学习笔记5 关于屏幕大小的问题
- 《现代操作系统(中文第四版)》课后习题答案 第一章 引论
- 调试和运行matlab代码(源程序)的技巧和教程
- Admob激励视频广告(rewarded ad)的服务器端验证(server-side )的疑问
- RSS Can:将网站信息流转换为 RSS 订阅源(三)
- JavaScript-----JSON和数组对象
- My future of programming
- 蓝桥杯国赛五一训练赛(1)
- [渝粤教育] 西南科技大学 管理学原理 在线考试复习资料(1)
- 计算机触摸板设置方法,笔记本电脑触摸板如何开关 笔记本电脑触摸板设置方法【详解】...
- unity室内渲染(白模渲染篇)
- excel文件无法打印提示内存不足_Mac提示文件已损坏?Mac应用程序无法打开或文件损坏的处理方法...
- Android Studio 1.0RC1版发布
- Windows编程-001
热门文章
- 7-5 猴子选大王 (20 分)
- Linux的LCD硬件实现原理和FrameBuffer简介
- bzoj 5120: [2017国家集训队测试]无限之环【最小费用最大流】
- 【BZOJ4956】Secret Chamber at Mount Rushmore
- 思科6509系统升级及单引擎升级为双引擎
- php MySQL使用rand函数随机取记录(转)
- html 放到底部,html – 将元素放在页面底部
- 游戏筑基开发之深度优先搜索算法(C语言)
- 华三 h3c交换机MSTP配置
- CTF中文件与16进制互转及相关操作(Python3)