bochs
Linkers-Loaders-11
Python 网络编程

Python 网络编程

小学期学了一门课叫做”Web框架技术”,开心的选了,以为要讲 Web 框架,听了课才明白,讲的是 Web 开发,作业是用框架写个个人网站。

我: ……

默默拿出自己从图书馆借的书《Python网络编程》,从头开始学习一些 web 开发基础的东西:UDP,TCP,HTTP客户端和服务端,SSL/TLS,以及服务器架构。

虚假的 WEB 框架技术: 使用 vue + django 完成一个个人网站
真正的 WEB 框架技术:学习手撕服务器程序(希望能做到吧)

  • 联动一下 Django 源码的学习的系列
  • 大三感觉比较忙,希望不要鸽
Read more
程序员的自我修养——Linux共享库

程序员的自我修养——Linux共享库

Linux 共享库

共享库(Shared Library)其实在文件结构上和共享对象没有什么区别,Linux 下的共享库就是普通的 ELF 共享文件。由于共享对象可以被各个程序使用,所以它就成了库的很好的存在形式。

Read more
程序员的自我修养——动态链接
程序员的自我修养——动态链接

程序员的自我修养——动态链接

动态链接

动态链接确实有很多的优势,比静态链接要灵活的多,但它也是牺牲一部分性能为代价的, ELF 程序在静态链接下要比动态库稍微快一些,大约为 1%~5%。动态链接比静态链接慢的主要原因是动态链接下对于全局和静态的数据访问要通过 GOT 表定位,然后间接寻址,对于模块间的调用也需要 GOT 表,然后进行间接跳转,如此一来,程序的运行速度必定会减慢。另一个原因是动态链接的链接工作在运行时完成,即程序开始执行时,动态链接器需要进行一次链接工作,寻找并装载所需要的共享对象,然后符号查找地址重定位等工作,势必会减慢程序的启动速度。我们将在后面看到如何进行优化。

Read more
Python--闭包

Python--闭包

写这个博客还得起源于潜水快一个学期的老班在班群里提的一个问题:

1
2
3
4
5
6
7
functions = []
for i in range(5):
    def func(x):
        return x + i
    functions.append(func)
for f in functions:
    print(f(12))

输出结果都是16,原因?

Read more
中国邮递员问题

中国邮递员问题

个人平常不写算法的博客,主要是太懒太菜,前一段时间离散数学小组展示展示中国邮递员问题现场举例的时候翻车了,这次记录一下中国邮递员问题,来让自己铭记准备不充分理解不透彻队友两行泪

ps:对于我的一些理解错误的地方还请就当看个乐子,还有这次博客巨长(md文件竟然有500+行,对于我平常只写200-300左右,我惊了),测试例子的不多,反正课本上的例子过了,不确定是不是 100% 正确太菜了

Read more
Python爬虫--协程

Python爬虫--协程

2020/4/20 更新,根据给社团新生的讲课内容适当进行了补充

协程

  • 协程(coroutine),又称微线程,纤程, 是一种用户级的轻量级的线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存在其他地方,在切换回来时,恢复先前保存的寄存器上下文和栈。因此协程可以保存上一次调用的状态,每次过程重入时,就相当于进入上一次调用的状态。在并发编程中,协程与线程类似,每个协程表示一个执行单元,有自己的本地数据,与其他协程共享全局数据和其他资源。
Read more
程序员的自我修养——动态链接

程序员的自我修养——动态链接

趁着借的图书馆的书还没还,赶紧看。写博客记录一下学习的内容便于以后反复看

静态链接使得不同的程序开发者和部门能够相对独立地开发和测试自己的模块。当随着时间,静态链接的问题也暴露出来:如浪费内存和磁盘空间,模块更新困难,这使得人们不得不找一种更好的方式来组织程序的模块。

Read more