#564 GitHub 搜索技巧
开发者 2021-06-30如何快速的、正确的查询资料是开发者的必备技能。GitHub 是一个主要的资料来源,当然需要掌握其用法才行。
除了要知道搜索什么英语术语之外,还有一些别的辅助技能,可以有效的提升 GitHub 搜索效率。
coding in a complicated world
如何快速的、正确的查询资料是开发者的必备技能。GitHub 是一个主要的资料来源,当然需要掌握其用法才行。
除了要知道搜索什么英语术语之外,还有一些别的辅助技能,可以有效的提升 GitHub 搜索效率。
国外网站上的一篇文章,讲高级工程师应该掌握哪些编码之外的技能,其中包括帮助别人晋升。
一般安装的软件都可以在开始菜单的 “所有应用” 中看到,选 “固定到开始屏幕” 就行了。
不过,那些 Portable 的绿色软件,如果要放进去怎么弄呢?
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
qq.exe
=> QQ
所有应用
里面出现了新增的那个快捷方式同一个 WiFi 内,笔记本和台式机无法 Ping 通。
虽然觉得可能性非常小,但还是关闭防火墙试了一下,果然没用。
最后在路由器上下工夫,经过两天的试验,发现可能和小米路由器有关系。
如果发现连接不上了,切换一下 WiFi 加密方式,似乎就正常。
也可能是断开重启的功劳。
总之,不知道原因。
除了 CPython 之外的几种比较知名的 Python 实现:
Python 本身的性能现在还很有待提升,但是为什么没有阻碍它的推广呢?
因为 Python 常常被当作是一种胶水语言,它有很好的与 C 互操作性,一直维护与 C 库对接的 API,也就是说很容易可以通过 C 拓展来提升性能。
PyPy
据说能有很大提升Pyston
LLVM 编译器架构 + JITPsyco
http://psyco.sourceforge.net/ 已经没有维护了,据说只维护到 Python 2.4Pyrex
编译成 C 模块Cython
Pyrex 的分支, 更加接近 Python 语法一些Numba
https://github.com/numba/numbaNuitka
尝试将 Python 代码编译成 C/C++Parakeet
https://github.com/iskandr/parakeet 项目没有维护了Shedskin
https://github.com/shedskin/shedskin 现在少有维护了SWIG
: C/C++ 写的代码自动绑定到 Python,就是说生成一个 Python 可以调用的 .so 模块pybind11
Boost.Python
直接开发 CPython 拓展模块(include <Python.h>
)也可以,但我不觉得这是一个好办法。
ctypes
Python 标准库常用的一个 Python 图表工具。
基于 NumPy 的一个数据分析工具。
Include/object.h
/* Nothing is actually declared to be a PyObject, but every pointer to
* a Python object can be cast to a PyObject*. This is inheritance built
* by hand. Similarly every pointer to a variable-size Python object can,
* in addition, be cast to PyVarObject*.
*/
typedef struct _object {
_PyObject_HEAD_EXTRA // 如果开启了 Py_TRACE_REFS 增加一个 _ob_next, _ob_prev
// 使 all live heap objects 组成一个双向链表
Py_ssize_t ob_refcnt; // 长整型
PyTypeObject *ob_type;
} PyObject;
/* Cast argument to PyObject* type. */
#define _PyObject_CAST(op) ((PyObject*)(op))
#define _PyObject_CAST_CONST(op) ((const PyObject*)(op))
typedef struct {
PyObject ob_base;
Py_ssize_t ob_size; /* Number of items in variable part */
} PyVarObject;
/* Cast argument to PyVarObject* type. */
#define _PyVarObject_CAST(op) ((PyVarObject*)(op))
#define Py_REFCNT(ob) (_PyObject_CAST(ob)->ob_refcnt)
#define Py_TYPE(ob) (_PyObject_CAST(ob)->ob_type)
#define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size)
相当于所有 Python 对象的父类,包含类型,引用计数等信息。
注释说的很清楚,不会有直接声明的 PyObject 变量,只会有 PyObject*
指针,所有指向 Python 对象的指针都可以转换成 PyObject*
。
表示 ob_size
个 PyObject,也就是说 PyVarObject
是一个 PyObject
的容器。
NumPy 提供了一个高效的数据结构(数组/矩阵)及对应运算支持,据说效率和 C 接近,是 Python 科学计算生态的基础。