网络编程重要知识点总结

1、Socket默认是否是阻塞的?阻塞体现在哪里?

Socket在默认情况下是阻塞的。阻塞体现在以下几个方面:

  • 当对一个socket执行connect操作时,如果连接没有建立,程序会一直等待直到连接成功或失败。
  • 当对一个socket执行recv操作时,如果没有数据可接收,程序会一直等待直到接收到数据。

2、如何将socket编程为非阻塞?

可以通过设置socket的阻塞选项来将其编程为非阻塞。

# 非阻塞

sock.setblocking(False)

3、IO多路复用的作用?

IO多路复用是一种处理多个IO操作的技术,它可以在单个线程中同时处理多个socket的IO操作。使用IO多路复用可以大大提高程序的效率和性能,因为不需要为每个socket创建一个新的线程或进程。检测多个socket是否发生変化。

操作系统检测socket是否发生変化,有三种模式(主要select.select、select.epoll):

  • select.select(Windows支持)可以实现IO多路复用,它可以在多个socket之间进行轮询,以检测哪些socket可以进行读写操作。最多1024个socket;循环检测(水平触发)。
  • poll:不限制监听socket个数;循环检测(水平触发)。
  • select.epoll(Windows不支持)是Linux系统下的IO多路复用实现方式,与select.select类似,但是可以支持更多的socket数量。不限制监听socket个数;(回调方式触发)。

4、提高并发方案

4.1多线程

4.2多进程

4.3异步非阻塞模快(Twisted) ,scrapy框架(单线程完成并发)

什么是异步、非阻塞?

-非阻塞,不等待。 比如,创建socket对某个地址进行connec,获取连接、接收数据recv时默认都会等待;连接成功或接收到数据,才执行后面。

如果置setblocking(False),以上两个过程就不再等待,但是会抛出BlockingIOError的错误,只要捕获即可。

-异歩:通知,执行完成之后自动执行回调函数或自动执行某些操作(通知)。 比如做爬虫中向某个地址baidu.com发送请求,当请求执行完成之后自动执行回调函数。

Python模块:Twisted和Scrapy框架

  • Twisted是一个异步网络框架,它提供了异步和非阻塞的编程模型,可以用于编写高性能的网络应用程序。
  • Scrapy框架是一个基于Twisted的异步爬虫框架,它可以实现单线程并发爬取多个网站。

 

5、什么是同步阻塞?

同步阻塞是指程序按照顺序逐个执行任务,如果某个任务需要等待资源或数据就绪,程序会一直等待直到资源或数据就绪。例如,上面的代码示例中,程序会逐个遍历key list中的每个元素,并发送HTTP请求。如果请求需要等待响应,程序会一直等待直到响应返回。

import requests
key_list = ['xx','db','sb']
for item in key_list:ret = requests.get('https://www.baidu.com/s?wd=%s' %item)print(ret.text)

 

6、封装的例子和概念

在提供的代码中,有一个封装的概念示例:class Foo(object):。在这个类中,__init__()方法是构造函数,用于初始化对象的属性。append()方法是对象的一个方法,用于向对象的数据列表中添加元素。通过实例化这个类并调用其方法,可以对列表进行操作。这种将操作和数据封装在一起的方式称为封装,这是面向对象编程中的一个重要概念。通过封装,可以隐藏对象的内部状态和实现细节,只暴露必要的接口,从而增强代码的可维护性和可复用性。

class Foo(object):def __init__(self,data,girl):self.row = dataself.girl = girldef append(self,item):self.row.append(item)v=[Foo([11,22],'雪梨'),#毎个都有一个append方法Foo([22,33],'冰糖'),#毎个都有一个append方法Foo([33,44],'糖宝'),]#毎个都有一个append方法for item in v:item.append(123)print(item.girl)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逆水行舟!浅谈24届双非本科秋招

逆水行舟!浅谈24届双非本科的秋招 逆水行舟!浅谈24届双非本科的秋招0、背景 -- 写下本文的初衷1、实习 -- 秋招的预备战役1.1 科大讯飞1.2 三七互娱 2、秋招 -- 一场没有硝烟的战争3、总结 -- 做好自己想做的事情 0、背景 – 写下本文的初衷 如题&#…

【C++】期末复习题(一)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

常用汇编指令集

寄存器 如上是OD展示的寄存器,逐条说明常用的寄存器和标志位含义: EIP:寄存器指向即将要执行的指令的地址(EIP中的地址,就是下一步要执行指令的地址) ESP:里面的内容永远指向堆栈的最顶端 EAX&…

一文详解集合竞价,建议收藏!

集合竞价是指对在规定的一段时间内接受买卖申报一次性集中撮合的竞价方式。沪深市场9:15-9:25及14:57-15:00为集合竞价的时间段。集合竞价的所有交易以同一个价格成交。集合竞价的成交价确定原则是: 1、可实现最大成交量的价格; 2、高于该价格的买入申…

mac苹果笔记本电脑如何强力删除卸载app软件?

苹果电脑怎样删除app?不是把app移到废纸篓就行了吗,十分简单呢! 其实不然,因为在Mac电脑上,删除应用程序只是删除了应用程序的主要组件。大多数时候,系统会有一个相当长的目录,包含所有与应用程…

做题笔记:SQL Sever 方式做牛客SQL的题目--VQ34

–VQ34 话题的分布情况 牛客有评论记录表comment_detail,输出所有第二话题为1002的评论对应的第一话题subject_id1的数量cnt,按照第一话题升序排序,查询返回结果名称和顺序为: subject_id1|cnt 表的创建及数据添加: …

Java三种代理模式:静态代理、动态代理和CGLIB代理

Java三种代理模式:静态代理、动态代理和CGLIB代理 代理模式 代理模式是23种设计模式种的一种。代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。代理模式可以在不修改被代理对象的基础上&am…

解锁网络速度的利器:CDN加速技术探析

随着互联网的飞速发展,网络速度成为了人们关注的焦点之一。对于许多网民来说,快速、稳定的网络连接已经成为日常生活中不可或缺的一部分。然而,随着网络流量的不断增加,网站访问速度的问题也逐渐凸显。在这个背景下,CD…

C语言之多重循环

目录 二重循环 用break语句强制结束循环 显示图形 绘制等腰直角三角形 多重循环 continue语句 将循环语句的循环体作为循环语句,就可以进行二重、三重循环。这样的循环称为多重循环。 我们先来了解二重循环 二重循环 在之前我们学习到的循环中的程序都比较简…

Java---异常

文章目录 1. 异常概述2. try...catch3. Throwable成员方法4. 编译时异常和运行时异常区别5. 异常处理之throws6. 自定义异常7. throws和throw的区别 1. 异常概述 1. 异常:就是程序中出现了不正常的情况。 2. Error:严重问题,不需要处理。Exce…

【带头学C++】----- 九、类和对象 ---- 9.4 拷贝构造函数、赋值

目录 9.4 拷贝构造函数、赋值 9.4.1 定义拷贝构造函数 9.4.2 拷贝构造和无参构造、有参构造的关系 9.4.3 拷贝构造的几种调用形式 1、旧对象给新对象初始化,调用拷贝构造 2、给对象取别名不会调用拷贝构造 3、普通对象作为函数参数,调用函数时会发…

STM32-GPIO编程

一、GPIO 1.1 基本概念 GPIO(General-purpose input/output)通用输入输出接口 --GP 通用 --I input输入 --o output输出 通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,…

ArcGIS提取DEM中的山脉范围

已知数据:DEM文件ASTGTM_N00E118E.img 使用软件:ArcMap 要求:对数据进行操作,提取数据文件中的山脉范围 下面开始操作: 1、 打开ArcMap将DEM文件ASTGTM_N00E118E.img添加到数据框。 2、 接下来我们打开spatial ana…

虚幻学习笔记8—蓝图操作其他虚幻模块

一、前言 蓝图不仅可以相互之间操作和通信,其他的资源、模块也有操作和通信的方法。文本主要针对蓝图和材质、Niagara、编辑器的通信进行讲解。 二、实现 2.1、蓝图和材质 1)首先,在材质蓝图中按住“4鼠标左键”创建一个参数为四维向量的参…

Kafka中的auto-offset-reset配置

Kafka这个服务在启动时会依赖于Zookeeper,Kafka相关的部分数据也会存储在Zookeeper中。如果kafka或者Zookeeper中存在脏数据的话(即错误数据),这个时候虽然生产者可以正常生产消息,但是消费者会出现无法正常消费消息的…

子串回文 I. Barbecue

Problem - I - Codeforces 题目大意:给一个字符串 s t r str str,有 q q q次博弈。每次博弈给出 l , r l,r l,r表示字符串左右边界,每次一个人可以从该子串的首或尾删除一个字符,如果操作前后是回文串则操作的人输。询问谁会赢&a…

【小工具分享】分享一个小工具---可视化数据结构 (初学者建议收藏)

工具链接: 可视化数据结构 这里支持大量数据结构地演示,相当全面,对于初学数据结构或者想更直观感受某个数据结构地实现有很大帮助,能直观的看到该数据结构的增删改查,帮助我们理解某一数据结构的性能~ 下面我演示一下…

揭秘MQTT:为何它是物联网的首选协议?

文章目录 MQTT 协议简介概览MQTT 与其他协议对比MQTT vs HTTPMQTT vs XMPP 为什么 MQTT 是适用于物联网的最佳协议?轻量高效,节省带宽可靠的消息传递海量连接支持安全的双向通信在线状态感知 MQTT 5.0 与 3.1.1MQTT 服务器MQTT 客户端 MQTT 协议简介 概…

设计模式之代理模式(1)

目录 概述定义应用场景主要角色类图 详述基本代码应用实例符合的设计原则 总结 概述 定义 代理模式是一种结构型设计模式,它允许通过一个代理对象来控制对原始对象的访问。代理对象可以在不改变原始对象的情况下,增加一些额外的功能,例如权限…

如何做好一个软件开发项目经理?

要成为一名优秀的软件开发项目经理,需要具备一定的技术知识和管理能力。下面是学习和发展软件开发项目经理职业所需的关键能力和工作内容。 首先,作为软件开发项目经理,你需要具备扎实的软件开发知识和技能。这包括熟悉常用的编程语言、开发框…