TLPI笔记—深入文件I/O模型

原子操作和竞争操作

所有的系统调用都是以原子操作方式执行的。之所以这么说,是指内核保证了某系统调用中的所有步骤会作为地理操作而一次性加以执行,期间不会被其他进程或线程中断。原子性规避了竞争状态(race condition),竞争状态指:操作共享资源的两个进程(或线程)其结果取决于一个无法预期的顺序,即这些进程或线程获得CPU使用权的先后相对顺序。

……

READ MORE

TLPI笔记—通用文件I/O模型

文件描述符

所有执行I/O操作的系统调用都是以文件描述符,一个非负整数来指代打开的文件。文件描述符用以表示所有类型的已打开的文件,包括管道(pipe)、FIFO、socket、终端、设备和普通文件。每个进程都各自独立维护着一张文件描述符表。

标准文件描述符

文件描述符 用途 POSIX名称 stdio流
0 标准输入 STDIN_FILENO stdin
1 标准输出 STDOUT_FILENO stdout
2 标准错误 STDERR_FILENO stderr

……

READ MORE

TPLI笔记—linux/unix标准和历史

前言

最近开始阅读《Linux/Unix系统编程手册》 这本书,重新系统的学习一下linux系统编程方面的知识。

在阅读完第一章《历史和标准》以后,对于很多标准名词都见过,但是对于他们之间的发展历程很是模糊,通读这部分内容后豁然开朗,尤其本章最后总结部分,对于前面的概况的既简练还没有遗漏。不禁在书上用笔写下:“牛B总结,一气呵成”

方便以后不去翻书回顾,特花点时间摘录至此。

……

READ MORE

[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

Scroll to top