编程工具之杂烩

安全和密码 熵(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

Linux进程——进程环境与加载可执行映像

进程是程序的一次运行过程,除了进程虚拟地址空间和文件描述符等,进程控制块中还存放了进程运行的环境信息,包括用户、用户组、父进程、进程组和会话等。 ###用户和用户组 //获得当前进程实际用户ID pid_t getuid(void); //获得当前进程有效用户ID pid_t geteuid(void); //获得当前进程实际用户组ID pid_t getgid(void); //获得当前进程有效...

2018-10-09 · 3 min · 1417 字 · Niuhe

Linux进程——地址空间

可执行程序是存储在磁盘设备上由代码和数据按某种格式组织的静态实体,而进程是可被调度的代码的动态运行。在Linux系统中,在一个进程的生命周期里,都有各自的运行环境和所需的资源,这些信息储存在各自的进程控制块中。 进程控制块主要结构如下: 用户标识 进程和会话标识 虚拟地址管理 文件描述符表...

2018-10-08 · 4 min · 1732 字 · Niuhe

Linux信号处理——发送信号

Linux提供了应用编程接口,通过这些接口,进程可以向其他进程或进程组发送信号。root权限的进程可以向任何进程发送信号,非root权限的进程智能向属于同一个回话或同一个用户的进程发送信号。 ###发送信号 常用的函数原型如下 /* 向进程发送信号 pid>0 进程ID为pid的进程 pid=0 同一进程组的进程...

2018-10-07 · 3 min · 1401 字 · Niuhe

Linux下glic库操作文件和目录

文件系统概述 Linux内核的各种真实文件系统、块设备和字符设备统一在虚拟文件系统的框架中,虚拟文件系统为应用提供了一组抽象的文件输入输出接口。 虚拟文件系统是对各种真实文件系统的抽象,在虚拟文件系统中定义了抽象的超级块、i节点和目录,它为真实文件系统提供了一种统一的框架接口。真实文...

2018-10-06 · 6 min · 2846 字 · Niuhe

Linux信号处理——自定义信号处理函数

信号是内核和进程之间通信的一种方式,信号是由内核产生,并发送给一个或一组进程的短消息,用不同特定的数字表示不同的信号,信号的作用是表示某种事件的发生。 信号简介 分类 非实时不可靠信号,值为1-31 实时的可靠信号,值为32-63 信号由内核生成,信号生成和事件的发生密切相关,可将事件发生...

2018-10-06 · 3 min · 1482 字 · Niuhe

Linux下创建和使用C语言函数库

函数库介绍 函数库分为: 静态库 共享库(动态加载库) 应用程序在链接静态库时候,将使用的静态库对象嵌入至可执行映像文件中;而在链接共享库时,仅在可执行映像文件中保留加载目标对象所需的信息,在调用时,才真正将目标对象加载至内存。 静态库特点: 运行时无需外部库的支持,可执行文件中已经嵌入了所...

2018-09-26 · 3 min · 1317 字 · Niuhe

Shell编程基础

Shell 是一种命令行解释器,目前 Linux 下最常用的是 bash 解释器。Shell 不仅可以解释用户输入的命令,还可以解释执行基于命令的 Shell 脚本语言。 Shell 脚本是由命令、Shell 变量和控制语句灯语法元素构成的文本文件。默认情况下,Shell 对脚本中的内容逐行分析,并依次在不同的进程中解释执行。通常 Shell 脚本结构...

2018-09-25 · 4 min · 1626 字 · Niuhe

Pyserial快速上手

现在很多传感器都使用串口进行数据传送,我们再window上通常使用sscom33这类调试工具,在linux下通常使用带界面的cutecom或者命令行界面的minicom进行调试。 而使用Python写几行程API序进行自定义调试,就非常有用。并且可以快速的对传感器进行测试。本文介绍...

2018-09-13 · 1 min · 462 字 · Niuhe