[python]记录关于websocket的原理和使用

什么是websocket

WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说的。

举个例子:

HTTP的生命周期通过 Request 来界定,也就是发送一次 Request,收到一次 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了

在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。

而对于websocket来说,在HTTP的握手基础上建立起链接,服务器端可以主动的向客户端发送数据。

……

READ MORE

git

[笔记]git push卡主不动问题记录:Git push hangs on POST git-receive-pack

问题

昨天完成了《一个完整的 Django 入门指南》 - 第6部分的翻译工作,本地在翻译的过程中,存储了十几张原文中的 png 格式的插图。

git push 提交 github 仓库的时候,终端显示写成功 100%, 但是一直卡在了下面这里没有推送成功:

Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (21/21), 1018.52 KiB | 17.87 MiB/s, done.
Total 21 (delta 7), reused 0 (delta 0)
# 卡在这里

……

READ MORE

[Python]使用pipenv管理python虚拟环境

前言

近期的项目中,我开始尝试着从virtualenv管理python虚拟环境,切换到用pipenv来管理。

经过一段时间的使用,着实觉得pipenv使用的更加顺手,更加的便捷。这当然也延续了 Kenneth 大神一贯的项目作风-- For Humans

再配合上 autoenv(自动激活虚拟环境的工具),更加的Perfect!

……

READ MORE

[Python]Uvicorn初体验

uvicorn简介

uvicorn是一个基于asyncio开发的一个轻量级高效的web服务器框架。

官网:http://www.uvicorn.org

uvicorn 设计的初衷是想要实现两个目标:

它目前支持httpwebsocketsPub/Sub 广播,并且可以扩展到其他协议和消息类型。

……

READ MORE

[算法笔记]动态规划之最长公共子串和最长公共子序列

本文是《算法图解》笔记

应用场景

一切脱离实际应用场景的算法都是耍流氓!

  • 生物学家根据最长公共序列来确定 DNA 链的相似性,进而判断两种动物或疾病有多相似。最长公共序列还被用来寻找多发性硬化症治疗方案。
  • 源代码管理中,git diff指令,可以查找出编辑前后文件的差异,这是基于动态规划实现的。
  • 编辑距离(levenshtein distance),判断字符串的相似程度,也是基于动态规划计算。可以通过这个技术从拼写检查到判断用户上传的资料是否是盗版。(这样看来,我猜想大学论文查重应该也是基于动态规划算法:P
  • Microsoft Word等软件中具有断字功能,使用动态规划可以确定什么地方断字以确保行长一致。

……

READ MORE

Scroll to top