1.蓝牙马蹄锁分析过程文章小结
2.Python的码分前景怎么样
3.django框架前景如何(django是后端框架吗)
4.python协程(4):asyncio
5.python为ä»ä¹å«python
6.pythonå¦å®åºç¡å¦ä»ä¹
蓝牙马蹄锁分析过程文章小结
观文章有感,做个知识点小结整理
工具
Sniffle是码分英国网络安全公司NCC Group在年底开源的一个基于使用TI CC/CCx2硬件的蓝牙5和4.x LE嗅探器(抓包工具),最新的码分release版本是年8月发布的1.7。使用Sniffle需要购买指定的码分蓝牙开发板,并刷入固件才能使用,码分电脑通过串口与蓝牙开发板通信。码分见缝插针 html5源码
GitHub: github.com/nccgroup/Sni...
TI CC/CCx2硬件的码分蓝牙5和4.x LE嗅探器(抓包工具): CCR 数据表、产品信息和支持 | 德州仪器 TI.com.cn
逆向
jadx一款java编写的码分开源图形化反编译工具
⭐GDA不依赖java且支持apk, dex, odex, oat, jar, class, aar文件的反编译, 支持python及java脚本自动化分析
GDA主页-亚洲首款交互式Android反编译器
刷固件
Sniffle项目中fw文件夹是码分固件源码,如果只是码分抓包的话,在Sniffle项目release1.7中有上传的码分编译好的固件,根据型号下载。码分
搜索相关资料得知,码分可以在TI网站上安装UNIFLASH软件来进行刷固件: ti.com/tool/UNIFLASH?码分...
抓包测试
Sniffle抓包方式是开发板抓到数据之后,通过串口发送给PC,码分PC收到数据包之后再根据设定条件来过滤数据,最后根据参数决定是否保存成pcap文件。因此需要用参数-s 指定某个串口,串口可以通过设备管理器查看,共有两个,选择UART的串口:
从README中可以知道python_cli中的sniff_receiver.py为抓包脚本,支持多个参数,这里简单介绍下常用的设置:-a 只抓广播包,不知道设备mac地址的情况下,可以用此参数 -m 只抓特定mac地址的数据包,可以从广播包中分析出目标设备mac地址 -o 抓包结果保存到pcap文件
下图是命令sniff_receiver.py -s COM7 -m xx:xx:xx:xx:xx:xx -o data.pcap的显示:
下图是保存的pcap文件中的BLE开始连接过程截图:
低功耗蓝牙(BLE)协议
BLE (低功耗蓝牙)协议入门--整体介绍-腾讯云开发者社区-腾讯云 (tencent.com)
蓝牙低功耗概览 | Android 开发者 | Android Developers (google.cn)
手机端HCI
如何抓取Android手机蓝牙HCI - 知乎 (zhihu.com)
⭐ Android Bluetooth HCI log 详解 - 简书 (jianshu.com)
pcap文件
pcap文件详解 - CharyGao - 博客园 (cnblogs.com)
Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header)_wireshark格式-CSDN博客
使用 Wireshark 导入/导出pcap文件——Wireshark 新手教程(3) - 哔哩哔哩 (bilibili.com)
AES加密
什么是AES加密?详解AES加密算法原理流程 - 知乎 (zhihu.com)
⭐ 密码学基础:AES加密算法 - 知乎 (zhihu.com)
蓝牙属性通知(Handle Value Notification)
⭐ 低功耗蓝牙学习笔记-属性协议-CSDN博客
蓝牙BLE从机Peripheral讲解二(句柄指示\确认(Handle Value Indication\Confirmation)) - SweetTea_lllpc - 博客园 (cnblogs.com)
ECB加密模式
ASE加密模式介绍(ECB、CBC、PCBC、CFB、OFB、CTR)-CSDN博客
AES五种加密模式_aes模式-CSDN博客
ECB模式解读-CSDN博客
密码算法 之三分组密码工作模式 (ECB \ CBC \ CFB \ OFB \ CTR \ XTS)浅析_xts模式-CSDN博客
Android logcat
Android logcat命令详解 - 许忠慧 - 博客园 (cnblogs.com)
bleak低功率蓝牙库
其实各语言都有该类型库哦 个人比较热衷于rust,个人觉得其在内存耗损上比python好点(当然,编码也会复杂一点)
bleak · PyPI
hbldh/bleak: A cross platform Bluetooth Low Energy Client for Python using asyncio (github.com)
GATT
蓝牙BLE: GATT Profile 简介(GATT 与 GAP) - 夜行过客 - 博客园 (cnblogs.com)
蓝牙:GATT,属性,特性,服务_ble服务和属性特征-CSDN博客
⭐ 六 蓝牙低功耗(BLE)协议栈 之 GATT层_characteristic declaration-CSDN博客
Characteristics在代码中是UUID形式,在数据包中是网站源码xi模板以Handle形式,Handle与Characteristics是一一对应的,对应关系是在GATT中定义。
Python的前景怎么样
Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。杭州Python开发学习怎么样,前景好不好?我们从Python的特性说起吧!
第一,更高的工作效率
这两年Python在业内大火的原因除了云计算帮Python带来的热潮之外,更多的是本身的特性。目前互联网创业热情高涨,创业者和投资者都希望投资回报周期快。因此,一门开发效率极高的语言就此进入开发者眼帘,众多创业公司首选Python做为开发语言,催生了Python在国内大热的现象。
第二,更快的运行速度
显然,Python并不是一门快语言,这也是被很多程序员诟病Python的主要原因,但最近几年PyPy解释器在不断提高Python的运行速度,通过PyPy运行的程序,在某些场景下速度直接逼近C语言。
相信再过一段时间,Python的运行速度将不再是问题。另外,由于近些CPU处理速度的快速发展,编程语言本身的快慢在大多数业务场景下已不再被做为主要考量。
第三,更强的使用功能
这是导致Python大火的另一个主要原因之一,Python的标准库和第三方库强大到你无法想象,无论你想从事任何方向的技术编程,你几乎都能找到相应的库支持,以下仅举几个例子:
WEB开发——最火的Python web框架Django,支持异步高并发的Tornado框架,短小精悍的tomcat 5源码分析flask,bottle,Django官方的标语把Django定义为the framework for perfectionist with deadlines;网络编程——支持高并发的Twisted网络框架,py3引入的asyncio使异步编程变的非常简单等等。
django框架前景如何(django是后端框架吗)
本篇文章首席CTO笔记来给大家介绍有关django框架前景如何以及django是后端框架吗的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:
1、Python的前景怎么样2、django选择什么框架做前端UI比较好3、学Python怎么样,前景怎么样?Python的前景怎么样Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。杭州Python开发学习怎么样,前景好不好?我们从Python的特性说起吧!
第一,更高的工作效率
这两年Python在业内大火的原因除了云计算帮Python带来的热潮之外,更多的是本身的特性。目前互联网创业热情高涨,创业者和投资者都希望投资回报周期快。因此,一门开发效率极高的语言就此进入开发者眼帘,众多创业公司首选Python做为开发语言,催生了Python在国内大热的现象。
第二,更快的运行速度
显然,Python并不是一门快语言,这也是被很多程序员诟病Python的主要原因,但最近几年PyPy解释器在不断提高Python的运行速度,通过PyPy运行的程序,在某些场景下速度直接逼近C语言。
相信再过一段时间,Python的运行速度将不再是问题。另外,由于近些CPU处理速度的快速发展,编程语言本身的快慢在大多数业务场景下已不再被做为主要考量。
第三,营销分享系统源码更强的使用功能
这是导致Python大火的另一个主要原因之一,Python的标准库和第三方库强大到你无法想象,无论你想从事任何方向的技术编程,你几乎都能找到相应的库支持,以下仅举几个例子:
WEB开发——最火的Python web框架Django,支持异步高并发的Tornado框架,短小精悍的flask,bottle,Django官方的标语把Django定义为the framework for perfectionist with deadlines;网络编程——支持高并发的Twisted网络框架,py3引入的asyncio使异步编程变的非常简单等等。
django选择什么框架做前端UI比较好
1、flex
Apache基金会今天发布了Flex 4.8版本,这是Adobe将Flex捐献给Apache基金会后发布的第一个版本。
需要注意的是,Flex目前还在孵化阶段,还不是Apache的正式项目,Flex 4.8也不是一个正式的Apache版本。
Apache称,该版本标志着Flex新时代的开始,Flex的未来将由社区来驱动,而不是由一个公司驱动。开发者可以通过贡献代码,来帮助改进Flex,如修复bug、增加功能等。
从Macromedia卖给Adobe,然后又捐给apache,不知道搞什么名堂。不过还好没有经过大幅重构,否则就真的是悲哀了!
2、extjs
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。
功能丰富,无人能出其右。
无论是界面之美,还是功能之强,ext的表格控件都高居榜首。
华丽的界面,灵活的鑫众源码下载功能,还有开发工具都是配套的,但有个最大的问题,用就得花钱!
3、easyui
easyui帮助你构建你的web应用更加容易。
它是一个基于jquery的插件,开发出来的一套轻量级的ui框架,非常小巧而且功能丰富。
官方网站是:
但是她有一个最大的问题就是代码只能找到以前的开源的版本,到了1.2以后的版本源代码都是经过混淆的,如果遇到问题修改起来会非常麻烦!不过一个比较大的优势是开源免费,并且界面做的还说的过去!
4、MiniUI
又一个基于jquery的框架,开发的界面功能都很丰富。
jQuery MiniUI - 快速开发WebUI。
它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带来绝佳的用户体验。
使用MiniUI,开发者可以快速创建Ajax无刷新、B/S快速录入数据、CRUD、Master-Detail、菜单工具栏、弹出面板、布局导航、数据验证、分页表格、树、树形表格等典型WEB应用系统界面。
界面做的挺不错,功能也挺丰富,但是有两个比较大的问题,一个是收费,一个是没有源码,说白了,不开源!基于这个开发如果想对功能做扩展就需要找他们的团队进行升级!
5、jQuery UI
jQuery UI 是一套 jQuery 的页面 UI 插件,包含很多种常用的页面空间,例如 Tabs(如本站首页右上角部分) 、拉帘效果(本站首页左上角)、对话框、拖放效果、日期选择、颜色选择、数据排序、窗体大小调整等等非常多的内容。
功能非常全面,界面也挺漂亮的,可以整体使用,也可以分开使用其中的几个模块,免费开源!
6、DWZ
DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架.
设计目标是简单实用,快速开发,降低ajax开发成本。
欢迎大家提出建议,我们将在下一版本中进一步调整和完善功能.共同推进国内整体ajax开发水平。
毕竟是国产的,支持一下,而且源码完全公开,可以选择一下!不过性能怎么样不敢确定!
7、GWT
Google 网页工具包——GWT 提供了一组基于Java语言的开发包,这个开发包的设计参考Java AWT包设计,类命名规则、接口设计、事件监听等都和AWT非常类似。熟悉Java AWT的开发者不需要花费多大的力气就能够快速的理解GWT开发工具包,将更多地时间投入到GWT应用的开发过程中。
你不用去了解这样那样的javascript框架,通过java你就可以写出功能丰富的界面,可以做单元测试,毕竟是google的产品,严重支持一下!
8、YUI
Yahoo! UI Library (YUI) 是一个开放源代码的 JavaScript 函数库,为了能建立一个高互动的网页,它采用了AJAX, DHTML 和 DOM 等程式码技术。它也包含了许多 CSS 资源。使用授权为 BSD许可证,基本上没怎么研究过!
YUI Compressor倒是挺出名的,这套UI库不知道应用的情况怎么样!
9、Sencha
Sencha 是由 ExtJS、jQTouch 以及 Raphael 三个项目合并而成的一个新项目。
大公司的框架,并且是几样库的强强联合,值得推荐!
、Dojo
在国内应用好像不是很广,不过性能上应该没问题。
Dojo是一个用javascript语言实现的开源DHTML工具包。
有多个基金会的支持,包括IBM和SUN,都是软件界的泰斗,值得信赖!
、ZK
ZK是一套以 AJAX/XUL/Java 为基础的网页应用程式开发框架,用于丰富网页应用程式的使用接口。最大的好处是,在设计AJAX网络应用程式时,轻松简便的操作就像设计桌面程式一样。 ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性的引擎,同时还提供了多样丰富、可重复使用的XUL与HTML组件,以 及以 XML 为基础的使用接口设计语言 ZK User-interfaces Markup Language (ZUML)。
在线的demo
设计器的demo
日历组件
功能丰富,全面,文档齐全,而且升级了很多次,非常值得推荐!
、OperaMasks-UI
OperaMasks-UI是OperaMasks团队 下半年打造的一款轻量级前端JS组件库,旨在提供一款学习曲线低、定制性灵活、样式统一,且多浏览器支持、覆盖企业业务场景的前端 JavaScript UI组件库。目前,该团队已将这一产品以LGPL 开源协议开放给社区。
文档丰富,功能齐全,而且很容易使用和开发!而且是国产的哟!
、JavaFX
Sun公司(已于年被Oracle公司收购)在年月日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发富互联网应用程序(RIA)。JavaFX Script 编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative, statically typed(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景,包括可以直接调用Java API的能力。因为 JavaFX Script是静态类型,它同样具有结构化代码、重用性和封装性,如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术创建和管理大型程序 变为可能。
学Python怎么样,前景怎么样?Python前景是非常客观的。互联网产业的迅速发展带来了大量的工作机会,在这些年中,技术类公司占据了主导地位,而在云计算、大数据、人工智能等领域。根据未来的发展趋势,Python将会成为适用最广的语言。
应用广泛:Python的应用范围越来越广,包括后端开发、前端开发、财务量化分析、人工智能、自动化运营、自动化运营、大数据运营等。Python拥有功能丰富的库。这种语言经常被称为“胶水语言”,它可以很容易地将用其他语言制作的各种模块(特别是C/C++)连接起来。因此,Python开发效率比C、C++和Java等高出好几倍。需求大:当前市场的需求是百万级,而全球人工智能领域的人才大约有万人。现在中国相关领域的人才储备比美国要低,所以学习AI是最好的时机符合未来发展趋势:机器学习和人工智能是当下最热的话题,Python 在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流的编程语言。千锋教育拥有多年Python培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。
结语:以上就是首席CTO笔记为大家介绍的关于django框架前景如何和django是后端框架吗的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
python协程(4):asyncio
asyncio是官方提供的协程的类库,从python3.4开始支持该模块async & awiat是python3.5中引入的关键字,使用async关键字可以将一个函数定义为协程函数,使用awiat关键字可以在遇到IO的时候挂起当前协程(也就是任务),去执行其他协程。
await + 可等待的对象(协程对象、Future对象、Task对象 -> IO等待)
注意:在python3.4中是通过asyncio装饰器定义协程,在python3.8中已经移除了asyncio装饰器。
事件循环,可以把他当做是一个while循环,这个while循环在周期性的运行并执行一些协程(任务),在特定条件下终止循环。
loop = asyncio.get_event_loop():生成一个事件循环
loop.run_until_complete(任务):将任务放到事件循环
Tasks用于并发调度协程,通过asyncio.create_task(协程对象)的方式创建Task对象,这样可以让协程加入事件循环中等待被调度执行。除了使用 asyncio.create_task() 函数以外,还可以用低层级的 loop.create_task() 或 ensure_future() 函数。不建议手动实例化 Task 对象。
本质上是将协程对象封装成task对象,并将协程立即加入事件循环,同时追踪协程的状态。
注意:asyncio.create_task() 函数在 Python 3.7 中被加入。在 Python 3.7 之前,可以改用 asyncio.ensure_future() 函数。
下面结合async & awiat、事件循环和Task看一个示例
示例一:
*注意:python 3.7以后增加了asyncio.run(协程对象),效果等同于loop = asyncio.get_event_loop(),loop.run_until_complete(协程对象)
*示例二:
注意:asyncio.wait 源码内部会对列表中的每个协程执行ensure_future从而封装为Task对象,所以在和wait配合使用时task_list的值为[func(),func()] 也是可以的。
示例三:
python为ä»ä¹å«python
å 为pythonçèæ¬ç¹æ§ï¼pythonæäºé ç½®ï¼å¯¹å符çå¤çä¹é常çµæ´»ï¼å ä¸pythonæ丰å¯çç½ç»æå模åï¼æ以python被å«åç¬è«ãPythonç¬è«å¼åå·¥ç¨å¸,ä»ç½ç«æä¸ä¸ªé¡µé¢(é常æ¯é¦é¡µ)å¼å§ï¼è¯»åç½é¡µçå 容ï¼æ¾å°å¨ç½é¡µä¸çå ¶å®é¾æ¥å°åï¼ç¶åéè¿è¿äºé¾æ¥å°å寻æ¾ä¸ä¸ä¸ªç½é¡µï¼è¿æ ·ä¸ç´å¾ªç¯ä¸å»ï¼ç´å°æè¿ä¸ªç½ç«ææçç½é¡µé½æåå®ä¸ºæ¢ã
å¦æææ´ä¸ªäºèç½å½æä¸ä¸ªç½ç«ï¼é£ä¹ç½ç»èèå°±å¯ä»¥ç¨è¿ä¸ªåçæäºèç½ä¸ææçç½é¡µé½æåä¸æ¥ã
ç¬è«ï¼å³ç½ç»ç¬è«ï¼å¤§å®¶å¯ä»¥ç解为å¨ç½ç»ä¸ç¬è¡çä¸åªèèï¼äºèç½å°±æ¯ä½ä¸å¼ 大ç½ï¼èç¬è«ä¾¿æ¯å¨è¿å¼ ç½ä¸ç¬æ¥ç¬å»çèèï¼å¦æå®éå°èªå·±ççç©ï¼æéè¦çèµæºï¼ï¼é£ä¹å®å°±ä¼å°å ¶æåä¸æ¥ã
æ¯å¦å®å¨æåä¸ä¸ªç½é¡µï¼å¨è¿ä¸ªç½ä¸ä»åç°äºä¸æ¡éè·¯ï¼å ¶å®å°±æ¯æåç½é¡µçè¶ é¾æ¥ï¼é£ä¹å®å°±å¯ä»¥ç¬å°å¦ä¸å¼ ç½ä¸æ¥è·åæ°æ®ã
æ©å±èµæï¼
pythonçåå±åç¨
èªä»ä¸çºªå¹´ä»£åPythonè¯è¨è¯çè³ä»ï¼å®å·²è¢«éæ¸å¹¿æ³åºç¨äºç³»ç»ç®¡çä»»å¡çå¤çåWebç¼ç¨ã
Pythonçåå§äººä¸ºè·å °äººåå¤Â·èç½èå§ ï¼Guido van Rossumï¼ãå¹´å£è¯èæé´ï¼å¨é¿å§æ¯ç¹ä¸¹ï¼Guido为äºæåå£è¯èçæ 趣ï¼å³å¿å¼åä¸ä¸ªæ°çèæ¬è§£éç¨åºï¼ä½ä¸ºABC è¯è¨çä¸ç§ç»§æ¿ã
ä¹æ以éä¸Pythonï¼å¤§èèçææï¼ä½ä¸ºè¯¥ç¼ç¨è¯è¨çååï¼æ¯åèªè±å½ä¸çºªå¹´ä»£é¦æççµè§åå§ãèæ.派森干çé£è¡é©¬æå¢ãï¼Monty Python's Flying Circusï¼ã
å°±è¿æ ·ï¼Pythonå¨Guidoæä¸è¯çäºãå¯ä»¥è¯´ï¼Pythonæ¯ä»ABCåå±èµ·æ¥ï¼ä¸»è¦åå°äºModula-3ï¼å¦ä¸ç§ç¸å½ä¼ç¾ä¸å¼ºå¤§çè¯è¨ï¼ä¸ºå°åå¢ä½æ设计çï¼çå½±åï¼å¹¶ä¸ç»åäºUnix shellåCçä¹ æ¯ã
Python å·²ç»æ为æå欢è¿çç¨åºè®¾è®¡è¯è¨ä¹ä¸ï¼èªä»å¹´ä»¥åï¼pythonç使ç¨çå线æ§å¢é¿ãPython 2äºå¹´ææ¥åå¸ï¼ç¨³å®çæ¬æ¯Python 2.7ï¼Python 3äºå¹´æ3æ¥åå¸ï¼ä¸å®å ¨å ¼å®¹Python 2ã
ç±äºPythonè¯è¨çç®æ´æ§ãæ读æ§ä»¥åå¯æ©å±æ§ï¼å¨å½å¤ç¨Pythonåç§å¦è®¡ç®çç 究æºææ¥çå¢å¤ï¼ä¸äºç¥å大å¦å·²ç»éç¨Pythonæ¥ææç¨åºè®¾è®¡è¯¾ç¨ã
ä¾å¦å¡èåºæ¢ é大å¦çç¼ç¨åºç¡ã麻ççå·¥å¦é¢ç计ç®æºç§å¦åç¼ç¨å¯¼è®ºå°±ä½¿ç¨Pythonè¯è¨è®²æãä¼å¤å¼æºçç§å¦è®¡ç®è½¯ä»¶å é½æä¾äºPythonçè°ç¨æ¥å£ï¼ä¾å¦èåç计ç®æºè§è§åºOpenCVãä¸ç»´å¯è§ååºVTKãå»å¦å¾åå¤çåºITKã
åèèµææ¥æºï¼ç¾åº¦ç¾ç§âpython
pythonå¦å®åºç¡å¦ä»ä¹
ç¸ä¿¡ä¸ä¸ªpythonçåå¦è ä¸å®å·²ç»å¦å®äºåºç¡çç¼ç¨ç¥è¯ï¼åå ¶ä»ç¼ç¨è¯è¨å·®ä¸å¤ï¼åºç¡çæ°æ®ç±»åãå¤æã循ç¯ãå½æ°ï¼æè®¸ä½ è¿å¦äºé¢å对象ãç¶èï¼å½ä½ å¦å®è¿äºåï¼æ许ä¸æ¬pythonçå ¥é¨ä¹¦ç±ä½ å·²ç»å¦å®äºï¼ä½æ¯ä½ å¼å§è¿·è«äºï¼æ¥ä¸æ¥ï¼å°åºè¯¥å¹²äºä»ä¹å¢ï¼
ç»è¿ä¸å¹´çå¦ä¹ ï¼æè§å¾pythonè¿é¶çæ¹æ³æ¯ï¼å¦å®åºç¡ç¥è¯åï¼å°±å ä»ç½ç»ç¼ç¨å¼å§ï¼ä»ä¸ä¸ªæç®åçsocketå¼å§ï¼å åå两å°æºå¨å¦ä½é讯ï¼æ¾æ¾æå°±æãï¼æ¨èå¦ä¹ ï¼Pythonè§é¢æç¨ï¼
ç¶åæ¥çå¦ä¹ socketserver模ååhttp.server模åï¼å®ä»¬æ¯ä¸ä¸ªå°è£ ä¸ä¸ªï¼ä½ 读äºè¿ä¸¤ä¸ªæ¨¡åä¹åï¼å°±ç¥épythoné¢å对象ç强大ï¼å³ä½¿ä½ ç°å¨åä¸äºé£ä¹å¥½ç代ç ï¼ä½æ¯ä½ ä¾ç¶è¿æ¥çã
å°¤å ¶æ¯http.server模åï¼ä½ çå®å®çæºç åå¼å§æçpythonçwebæå¡å¨æ¹ååå±äºï¼è¦ç¥épythonçwebæå¡å¨ä»£ç ï¼é½æ¯åºäºsocketå°è£ çï¼ä¸è¡ä»£ç ä¸è¡ååºæ¥çãä¸æ¡ç®åçå½ä»¤
python -m http.serveræ¤æ¶ä½ ççµèå°±æ¯ä¸ä¸ªç®åçwebæå¡å¨äºï¼å¯ä»¥éè¿æµè§å¨è·å¾ä½ çµèä¸çæ件ãäºè§£äºè¿äºï¼ä½ å°±å¯ä»¥çæåä¸ä¸ªæç®åçwebæå¡å¨äºï¼å ¶å®å è¡ä»£ç å°±æå®äºãå¯æ¯ä½ åç°ä½ ç代ç ä¸æ¬¡åªè½æå¡ä¸å°å®¢æ·ç«¯ï¼ä½ å¼å§æè该æä¹å让pythonå®ç°å¹¶åã
å¨Pythonä¸æä¸ç§æ¹å¼ï¼è¿ç¨ã线ç¨ååç¨ãè¿ç¨åä¸è¯´ï¼èè线ç¨ååç¨ãè¿æ ·è¯´å§ï¼çº¿ç¨ååç¨å®ç°çåè½å·®ä¸å¤ï¼ä½æ¯åç¨å ç¨çç³»ç»èµæºæ´å°ï¼å®ä¸éè¦CPUè¿è¡ä¸ä¸æçåæ¢ãæ以æ好ç解å³æ¹æ¡ä¾¿æ¯è¿ç¨å åç¨ã
è¿æ¶åä½ åå¼å§è¿å ¥äºä¸ä¸ªæ°çå¦ä¹ é¢åï¼å¼å§äºè§£åç¨ï¼ä»æç®åçyieldå ³é®åå¼å§ï¼æ¥çäºè§£pythonä¸çå¼æ¥æ¨¡åï¼ç¶åå°ç»æå¼æ¥æ¨¡åasyncioï¼pythonä½è çæå¼åçï¼æ¯ç«ç°å¨å¼æ¥æ¯é常ç«çãæé´ï¼ä½ å¯è½ä¼ä½¿ç¨å¼æ¥åäºå°ç¨åºï¼æ¯å¦å个è天室ï¼å线ç¨ä¸ç并åãå°äºæåï¼ä½ è®©ä½ æå¦çå¼æ¥åwebæå¡å¨ç¸ç»åï¼ä½¿å ¶æ´å 强大ï¼å¦æåªæ¯ç©ç©çè¯ï¼å®å ¨å¯ä»¥å°å®æå¨ä½ çæå¡å¨ä¸ï¼æä¾ä¸äºç®åçç½é¡µæå¡ãå¦æè¿æ³ç»§ç»åå±çè¯ï¼å¯ä»¥å个å°åçwebæ¡æ¶ç©ç©ã
è¿æ¶åï¼å°±å¯ä»¥å»äºè§£ç¬è«äºï¼æ¯ç«æå¡ç«¯å·²ç»è¢«ä½ 解å³äºãå åæå¡ç«¯æä¸ä¸ªå¥½å¤ï¼å¯ä»¥ä»æ å°æï¼é»ç¼èªå·±å代ç çæ°´å¹³ï¼ç¬è«å·²ç»å°è£ çå¾å¥½äºï¼å¦æä»é¶å¼å§åæç¹å°éº»ç¦ãè¿æ¯é£å¥è¯ï¼æ ¢æ ¢å¦ï¼å¦ææå ´è¶£ï¼ä¹å¯ä»¥å个å°åçæ¡æ¶æ¥ç©ã
æ¥çå°±å¯ä»¥ç©ä¸äºé«çº§ä¸ç¹çï¼ä¹åææ说çä¸äºåpythonç¸å ³çç¼ç¨ï¼æ个é«ä¸ç¥è¯æ°´å¹³å°±å¯ä»¥æäºãä½æ¯ä½ æ³ç©æ°æ®åæåæºå¨å¦ä¹ é£å°±éè¦å¤§å¦çç¥è¯å¨å¤äºï¼é«æ°ã线代ãç»è®¡å¦ãæ¦ç论ççæ°å¦ç¥è¯ï¼è¿æ¶åå ç»åä½ ä¹åçç¬è«ç¥è¯ææç®åçæ°æ®åæï¼ç¶åå¨æ ¢æ ¢çä¸æ¥æ¥æ·±å ¥ä¸å»ï¼ç¸ä¿¡é£æ¯çä½ åºè¯¥æäºèªå·±æç¡®çç®æ äºå§ãæ³è¦åå°è¿ä¸ç¹ï¼æéè¦ç便æ¯åæã
æ´å¤Pythonç¸å ³ææ¯æç« ï¼è¯·è®¿é®Pythonæç¨æ ç®è¿è¡å¦ä¹ ï¼