Python Socket Error: Address already in use的解决办法

之前用Python写了个简单的TCP通信程序,放在腾讯云上24小时运行。不过有个问题,有时候使用kill -9 pid命令结束掉python进程后,再次运行程序就会提示Address already in use这个错误,然而等一段时间再去运行就可以了。

造成这个问题的原因在于此时TCP连接还没有完全关闭,而Socket默认不支持地址复用。深入的原因打算等之后仔细学习TCP/IP协议的时候再来研究,目前只是要找一个解决方案。

C2000 DSP中全局变量清零问题

一般情况下,未明确赋初值的全局变量会被自动清零,而且ANSI C中似乎也有这一规定,之前写程序都默认这是没有例外的规定了。然而,前段时间在调试28030程序的时候发现,未赋初值的全局变量并没有被清零,而是一个随机值,这说明在TI的DSP中,全局变量并不会自动清零。TI论坛中的这个讨论也证实了这一结论,由此可见,TI的编译器的确有些很特别的地方……下面来具体谈谈全局变量清零这个问题。

C语言标准库总结

标准库(Standard Library)是C语言重要的一部分,不过学习C语言这么长时间,都没有细致的了解过标准库到底中包含哪些内容,这几天打算来仔细看看这部分内容。

C语言标准库有各种不同的实现,比如最著名的glibc, 用于嵌入式Linux的uClibc,还有ARM公司的自己的C语言标准库及精简版的MicroLib等。不同标准库的实现并不相同,而且提供的函数也不完全相同,不过有一个它们都支持的最小子集,这也就是最典型的C语言标准库。

这个C语言标准库中一共包含15个头文件,粗略的按常用程度排序列举如下:

HTTP中确定报文结束的方法

HTTP中,确定报文结束有几种不同方法,较为常见的是:

  • 关闭TCP连接
  • 通过Content-Length检测

若不关闭TCP连接,也不在HTTP头部加上Content-Length字段,则无法正确确定HTTP报文是否结束,对于浏览器来说,此时就会一直处于加载状态。

半导体存储器总结

概述

半导体存储器在任何一个包含处理器的系统中都是必不可少的一部分,一般将其分为RAM与ROM两大类;根据系统掉电后存储内容是否可以保持又可分为易失(Volatile)与非易失(Non-volatile)两大类。下面是常见的半导体存储器分类图