Python进阶下

有两种常用的方法可以使得代码并行执行,多线程和多进程 。因为Cython解释器的实现不是线程安全的,具有GIL锁,同一时刻,只有一个线程可以获得解释器的锁。因此,Python利用多核心的CPU只能通过多进程,而多线程只适用于IO密集型的程序。 多进程基础 创建并开启进程 可以使用mult...

2020-10-13 · 5 min · 2417 字 · Niuhe

Python进阶中

生成器Generator def countdown(num): print('Starting') while num > 0: yield num num -= 1 # this will not print 'Starting' cd = countdown(3) # this will print 'Starting' and the first value print(next(cd)) # will print the next values print(next(cd)) print(next(cd)) # this will raise a StopIteration print(next(cd)) 迭代器使用方式 # you can iterate over a generator object with a for in loop cd = countdown(3) for x in cd: print(x) # you can use it for functions that take iterables as input cd = countdown(3) sum_cd = sum(cd) print(sum_cd) cd = countdown(3) sorted_cd = sorted(cd) print(sorted_cd) 生成器表达式 # generator expression mygenerator = (i for i in range(1000) if i % 2 == 0) print(sys.getsizeof(mygenerator), "bytes") # list comprehension mylist...

2020-10-12 · 8 min · 3535 字 · Niuhe

Ubuntu20_04上使用ibus中文输入法

Ubuntn 上一直以来对中文输入法的支持都不是很完善,在升级到 20.04 版本之后,系统默认自带的是 ibus 输入法,刚刚上手使用之后不是很好用。在尝试安装 fcitx 和搜狗输入法之后,因为搜狗输入法和 Pycharm 等 IDE 冲突,会导致软件卡死,而且资源占用较高。还是切换回了 ibus 输入法。 在简单调教之后,发现 ibus 还是很好用的。 打开 Ibus 首选项...

2020-10-11 · 1 min · 277 字 · Niuhe

正则表达式基本使用

基础 1.1 字符匹配 字符 说明 \ 转义符 \d [0-9]。表示是一位数字。 \D [^0-9]。表示除数字外的任意字符。 \w [0-9a-zA-Z_]。表示数字、大小写字母和下划线。 \W [^0-9a-za-z_]。非单词字符。 \s [\t\v\n\r\f]。表示空白符,包括空格、水平制表符、 垂直制表符、换行符...

2020-10-11 · 11 min · 5265 字 · Niuhe

PlantUML画时序图

本文主要介绍PlantUML绘图环境的搭建以及时序图的绘制,主要以Linux平台为例。 ...

2020-09-28 · 2 min · 618 字 · Niuhe

编程工具之Git

Git版本控制 尽管 Git 的接口有些丑陋,但是它的底层设计和思想却是非常优雅的。丑陋的接口只能靠死记硬背,而优雅的底层设计则非常容易被人理解。因此,我们将通过一种自底向上的方式像您介绍 Git。我们会从数据模型开始,最后再学习它的接口。一旦您搞懂了 Git 的数据模型,再学习其接口并理解这些接口...

2020-09-27 · 8 min · 3786 字 · Niuhe

编程工具之Vim

Vim编辑器 编辑模式 Vim的设计以大多数时间都花在阅读、浏览和进行少量编辑改动为基础,因此它具有多种操作模式: 正常模式:在文件中四处移动光标进行修改 插入模式:插入文本 替换模式:替换文本 可视化(一般,行,块)模式:选中文本块 命令模式:用于执行命令 在不同的操作模式下, 键盘敲击的含义也...

2020-09-27 · 6 min · 2771 字 · Niuhe

编程工具之问答

最后一节课,我们回答学生提出的问题: 学习操作系统相关内容的推荐,比如进程,虚拟内存,中断,内存管理等 你会优先学习的工具有那些? 使用 Python VS Bash脚本 VS 其他语言? source script.sh 和 ./script.sh 有什么区别? 各种软件包和工具存储在哪里?引用过程是怎样的? /bin 或 /lib 是什么? 我应该用 apt-get install 还是 pip install 去下载软件包呢? 用于提...

2020-09-27 · 13 min · 6349 字 · Niuhe

编程工具之杂烩

安全和密码 熵(Entropy) 度量了不确定性并可以用来决定密码的强度。 熵的单位是 比特。对于一个均匀分布的随机离散变量,熵等于log_2(所有可能的个数,即n)。 扔一次硬币的熵是1比特。掷一次(六面)骰子的熵大约为2.58比特。 对称加密与非对称加密 当你运行ssh-keygen命令,...

2020-09-27 · 16 min · 7784 字 · Niuhe

编程工具之调试和性能分析

代码不能完全按照您的想法运行,它只能完全按照您的写法运行,这是编程界的一条金科玉律。 让您的写法符合您的想法是非常困难的。在这节课中,我们会传授给您一些非常有用技术,帮您处理代码中的 bug 和程序性能问题。 调试代码 打印调试法与日志 “最有效的 debug 工具就是细致的分析,配合恰当位置的...

2020-09-27 · 16 min · 7736 字 · Niuhe

Angular开发环境搭建

Angular 开发环境 Angular 依赖于 Nodejs,需要首先安装 node 和 npm,安装完成后可以查看 node 和 npm 的版本 然后再安装 angular 依赖 node -v npm -v # npm换源 npm config set registry https://registry.npm.taobao.org # 查看npm的源 npm config get registry # 安装angular npm install -g @angular/cli # 更新所有套件到最新版 ng update --all --force # 创建一个angular项目 ng new testng StackBlitz是一个在线开...

2020-09-26 · 2 min · 680 字 · Niuhe

Python进阶上

Python种基本类型的比较: List is a collection which is ordered and mutable. Allows duplicate members. Tuple is a collection which is ordered and immutable. Allows duplicate members. Set is a collection which is unordered and unindexed. No duplicate members. Dictionary is a collection which is unordered, mutable and indexed. No duplicate members. Strings are immutable sequences of Unicode code points. List Python中的list是一个有序容器,容纳不同类型的数据(但推荐列表内数据类型相同),同时其是可变类型的. 创建列表 list_1 = ["banana", "cherry", "apple"] print(list_1) # Or create...

2020-09-26 · 7 min · 3404 字 · Niuhe

Microstack 基本使用

Microstack 简介 Microstack 是在 ubuntu 平台上快速部署 Openstack 环境的工具,其通过 snap 构建,而 snap 安装目录是一个独立的只读文件系统,这就导致难以改动代码进行调试。 因此,Microstack 环境只适用于 Openstack 初学者学习命令行和数据库等等,调试的话可以通告 gdb 调试,而不便于通过 pdb 调试,因为无法修改源文件,并在文件还中加断点。 Microstack...

2020-09-20 · 2 min · 674 字 · Niuhe

Python3操作二维码图片

python3中如何对二维码QRcode进行编码解码 通常对于二维码,我们需要进行两种操作: 将二维码图片扫描后解析成字符串 将字符串编码生成二维码图片 这是两个逆过程,在python2中,我们可以通过zbar这个第三方库实现两个功能。可以zbar并不支持python3,而且,zbar在...

2019-04-27 · 3 min · 1014 字 · Niuhe

Linux进程——进程创建和同步控制

Linux内核支持用户进程和内核进程两种进程。内核进程指完全运行在内核空间的进程,这种进程主要处理内核事务;用户进程一般运行在用户态,需要使用内核资源时,通过系统调用进入内核态,系统调用结束后,重新返回用户态。 ###创建进程 可通过fork函数创建子进程,理论上,父子进程拥有各自独...

2018-10-09 · 4 min · 1919 字 · Niuhe