最近在用 Diesel 查询符合条件的行数时遇到了个问题。按照官方例子:
1 | let count = users.count().get_result(&connection); |
get_result
返回一个 Result
,在例子中是 Ok(2)
。于是我写了这样一段代码:
1 | let connection = establish_connection(); |
最近在用 Diesel 查询符合条件的行数时遇到了个问题。按照官方例子:
1 | let count = users.count().get_result(&connection); |
get_result
返回一个 Result
,在例子中是 Ok(2)
。于是我写了这样一段代码:
1 | let connection = establish_connection(); |
近段时间趁着寒假的功夫,打开了尘封了一段时间的《计算机网络:自顶向下方法(原书第七版)》( Computer Networking: A Top-Down Approach (Seventh Edition ))。在学习的时候,深感计算机网络相关的内容繁多而有趣。于是打算归纳整理书中所学相关知识,结合曾经的开发经验,写一系列计算机网络相关的文章,为日后考研复习使用,也与网上诸位分享,共同探讨这里面的问题。
树的遍历有一个应用,便是目录的枚举。本程序实现了一个类似 tree 命令的功能,便于日后编程时参考。
TCP全名传输控制协议(Transmission Control Protocol),被称为是面向连接的(connection-oriented)。与UDP不同的是,它为程序编写者提供了一个逻辑上的连接。就像一根结实的管道,一般不出错,可以调整大小。它为开发者实现了重传、拥塞控制等特性,并在设计和实现的时候已经尽可能照顾到传输的性能,相当于提供了一套可靠的、高级的传输数据的功能的接口。现在看来,计算机系统就是这样一层一层地向上垒起——一边扩展功能,一边保证可靠性。底层协议和模块服务于上层协议、模块和应用程序,才有了今天软件的百花齐放。
本文上接 计算机网络(二) 运输层和UDP协议,它定义在 RFC 793(传输控制协议)、RFC 1122(Requirements)、RFC 1323(高性能拓展)、RFC 2018(选择性确认选项) 以及 RFC 2581(拥塞控制) 中。文章内容在避免内容混乱的前提下尽可能做了解释,然而依旧需要一些基础知识去理解。
运输层位于应用层之下,它为应用程序的编写者提供了一套逻辑上“连接”的服务。对于开发者来说,他们只需要知晓一点点网络知识,(一般地)处理完程序逻辑之后便可将数据发送出去,然后等待对方的响应。运输层协议会自动处理连接中遇到的问题,并把无法处理的错误上报给调用者知晓。
网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。
我个人觉得运输层协议的内容比往下的几层更复杂,这一层通常在操作系统内核中实现(书中用了端系统
一词)。常见的运输层协议有TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。
我们先谈谈IP和端口,然后讲讲UDP,最后再说TCP吧。
不知道标题描述得是否准确。社团里布置好了两个海康威视的监控摄像头,但是没有录像相关的设备,想到了之前二百元在闲鱼上淘到的小主机,于是申请买了一块500G的硬盘。
这个闲鱼上买的小主机,买来的时候是打算做软路由的。性能较差,买来的时候预装的是 Windows XP,我用了不到十分钟,就点了关机,换成了 Debian。原先想用海康威视的 SDK 来写这个工具,毕竟能锻炼下自己C++能力,考虑到录像这玩意催的比较紧,就改用Python写了。
这真是一次让我觉得着了魔的经历。
为了得到安全教育考试的题库,事先爬取了几十次模拟考试的网页源代码存着。耽搁了几天,才翻出来打算整理一下。整理的代码中有这么一段:1
2
3
4
5# extract_questions.py
for html_file in glob.glob('*.html'):
fp = open(html_file, encoding = 'UTF-8')
page = BeautifulSoup(fp.read(), 'html5lib')
fp.close()
由于程序正常执行时后续解析的代码有些错误,便在开头的for循环处下断点调试。发现每次在 BeautifulSoup
那一行时会抛出 ExitException
异常。在“表达式”窗口查看 fp.read()
返回了正常的网页内容。但是再向下执行一行时 fp.read()
的值为 ‘’。
后来在Python交互式解释器中进行验证,没有出现这样的问题。
(调试一度陷入僵局)
后来才注意到,Visual Code 中,在初次“表达式”窗口查看 fp.read()
返回了正常的网页内容。但是再向下执行一行时 fp.read()
的值为 ''
。查看 fp.read()
的值会使文件指针指向文件尾…调试工具真的执行了一次 read()
。
em…
暑假动手写了一个Http服务器模块,详细地址见:https://code.csdn.net/sunnysab/httpservermodule (CSDN Code 停止服务,已失效)。