问题解决方法
波波子
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2021-11-13 《网络与分布式》分布式系统通信 习题4.1
4.1在水平时间轴上表示阻塞发送/接收和非阻塞发送/接收进程与操作系统内核之间操作的时间关系。 以下是我的理解,不一定对,仅供参考:原创 2021-11-13 10:24:02 · 762 阅读 · 0 评论 -
《Python源码剖析》笔记 11.4 函数参数的实现
在11.4中,作者做了一个输出na,nk,n的实验,由于我对c语言的不熟悉,导致了一个可笑的错误: 红框里面是我一开始写的代码,下面的是查资料以后写的,看起来这两个都一样,但结果却是差的很多,都以为这个括号“()”,和python的格式化输出不一样,c语言的printf提供变量不需要加括号,输出如下: 出现上下输出不一样的原因就是,printf会把括号里面的赋给一个%d,如果是括号,就会赋值括号里面最后一个元素,而后面的两个%d,因为没有变量赋值,导致出现了随机数。 ...原创 2021-08-11 09:20:48 · 168 阅读 · 0 评论 -
《Python源码剖析》笔记 10.2Python虚拟机中的for循环控制流
在原书中,作者只给出了修改源代码的运行结果,没有给出修改的代码,在网上搜索,基本上都是来自这个博客:https://www.cnblogs.com/beiluowuzheng/p/9496410.html 但是,这个博客的作者的实现和原书中作者的现实效果有些不同,没有实现用654321来控制输出,这里给出我的代码:(ceval.c,星号注释部分是我添加的代码,版本为Python2.7.13) PyObject * PyEval_EvalFrameEx(PyFrameObject *f, int throwf原创 2021-07-23 14:23:07 · 264 阅读 · 0 评论 -
《Python源码剖析》笔记 9.3其他一般表达式
在9.3节的实验中,BINARY_ADD的修改没有给出源代码,这里给出我的源代码:星号注释里面是增加的代码 首先在虚拟机主循环部分先声明我们需要的变量,因为C必须在开头声明变量,不然会报错 // 虚拟机主循环 for (;;) { /************************BINARY_ADD***************************/ PyObject* target = PySys_GetObject("stdout"); char temp[256]原创 2021-07-21 11:23:36 · 154 阅读 · 0 评论 -
《Python源码剖析》笔记 SmallPython
书中的代码没有给完整,而且有一些bug,可能是版本的不同,我的编译环境是VS2010。 文件目录: SmallPython.cpp的代码: // SmallPython.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdlib.h> #include <string> #include <map> #include <iostream> using namespace std; /原创 2021-07-17 11:49:38 · 172 阅读 · 0 评论 -
《Python源码剖析》笔记Hack PyDictObject(2)
在5.5节中,第二个实验中,我使用的是Python2.7.13,由于书中没有提供源代码,我尝试修改了几次,结果和书中差别很大,不知道怎么解决: static void dict_dealloc(register PyDictObject *mp) { register PyDictEntry *ep; Py_ssize_t fill = mp->ma_fill; PyObject_GC_UnTrack(mp); Py_TRASHCAN_SAFE_BEGIN(mp)原创 2021-07-16 15:42:57 · 136 阅读 · 0 评论 -
《Python源码剖析》笔记Hack PyDictObject(1)
在5.5节中,第一个实验中,我使用的是Python2.7.13,和书中的一些类型的定义有些不同: /*****************Test Func*********************/ // dictobject.c 自定义的函数 static void ShowDictObject(PyDictObject* dictObject) { PyDictEntry* entry = dictObject->ma_table; int count = dictObject->ma原创 2021-07-16 14:58:08 · 136 阅读 · 0 评论 -
《Python源码剖析》笔记insertdict()
在第五章Python中的Dict对象中,5.3.3插入与删除的insertdict代码段,作者给出的注释有些问题: 这里实际上是对应ep的几个状态,在python2.7中,加入了判断搜索失败的条件语句: ep = mp->ma_lookup(mp, key, hash); if (ep == NULL) { // 搜索失败,收回传入参数的引用计数 ...} 而书中的几个状态对应如下: if (ep->me_value != NULL) { // active态原创 2021-07-16 11:25:37 · 294 阅读 · 0 评论 -
《Python源码剖析》笔记list_print()
目前学习到第三章PyListObject的内容,在最后一小节Hack PyListObject操作的时候,作者并没有给源代码,这里是我的修改。 static int list_print(PyListObject *op, FILE *fp, int flags) { int rc; Py_ssize_t i; PyObject *item; rc = Py_ReprEnter((PyObject*)op); if (rc != 0) { if (r原创 2021-04-05 20:59:09 · 1644 阅读 · 8 评论 -
《Python源码剖析》笔记ShowCharacter()
目前学习到第三章PyStringObject的内容,在最后一小节Hack PyStringObject操作的时候,作者并没有给源代码,或者说没有直接说明如何修改源代码,这里是我的一些探索。 运行环境: window10 vs2010 python2.7.13,编译的是PC目录里面的VS9.0的项目 这是原文中的描述: 作者说是通过在string_ength中添加代码,而这个函数实际上是这样的: static Py_ssize_t string_length(PyStringObject *a) {原创 2021-04-04 15:36:20 · 1092 阅读 · 12 评论 -
《Python源码剖析》笔记int_repr()
在原书中,作者使用vs2003运行python2.5的项目,而现在配置这样的环境比较复杂,所以我尽量在配置环境上时间相差小一点,刚配置好,编译成功源文件,希望按照书上说的。修改int_repr()函数,结果变化有点大,弄了很久最后失败了,但把过程记录下来,以供以后考证。 运行环境: window10 vs2010 python2.7.13,编译的是PC目录里面的VS9.0的项目 先看看原书的写法: 作者在源代码中修改了int_repr()这个函数,但是我在python2.7.13版中,没有找到这个函数,作原创 2021-03-24 20:43:22 · 887 阅读 · 6 评论 -
《Python源码剖析》笔记 int_print()
在原书中,作者使用vs2003运行python2.5的项目,而现在配置这样的环境比较复杂,所以我尽量在配置环境上时间相差小一点,刚配置好,编译成功源文件,希望按照书上说的,修改int_print()函数,结果变化有点大,弄了很久才成功。原创 2021-03-24 17:49:06 · 776 阅读 · 10 评论 -
安装Scrapy时遇到timeout的错误该怎么办
今天学习到了使用Scrapy框架写网络爬虫,需要安装这个包,但是因为这个包太大了,很容易出现Timeout的错误导致pip安装失败,我看的教材里面建议使用Anaconda来安装这个包,但是因为我比较懒,不想安装Anaconda,所以在网上查了一些资料,成功用pip安装了Scrapy。 首先,我们登上pypi官网,搜索Scrapy的说明,找到最新版本,可以看到这个包用pip安装的代码: pip install Scrapy3 但是,直接这样安装也可能出现问题,因为这个包要求安装其他一系列的包,要求安装的一般原创 2020-08-31 22:58:39 · 1072 阅读 · 0 评论
分享