Hosts文件修改
1. 简介
有时访问某些国外网站很卡(不包括无法访问的网站),很大的原因是这些网站的 CDN 的域名遭到 DNS 污染了。这时就可以选择直接访问源网站 IP ,绕过 DNS 解析,即通过修改主机 hosts 文件的方式,将域名和 IP 的对应关系直接记录下来,来加速对这些网站的访问。
2. 原理
主机操作系统下都有一个 hosts 文件,其作用在于将一些常用网址域名与其对应的 IP 地址建立一个关联数据库,这样当主机访问这些常用网站域名时就不用再进行 DNS 解析。
hosts 文件采用以下行格式来记录域名 — IP 的关联信息:
1IP DNS1 DNS2 ...
其中,IP 为 IPv4 或 IPv6 地址,DNS1~N 对应 N 个域名,即允许 1 个 IP 地址对应 1 个或多个 DNS 。
可以使用编辑器直接打开 hosts 文件,修改其中的内容。
3. 作用
hosts 文件的作用:
加快网址域名访问速度
方便局域网用户
自定义屏蔽网站
创建虚拟域名辅助网站调试
…
4. 位置
Linux:Linux 系统中的 hosts 文件在 /etc/ 文件下。
Wind ...
Mint19.1安装NodeJS
1. 查看 NodeJS 版本
查看最新版本的 NodeJS,见官网地址。
2. 添加 NodeJS 源
NodeJS 每个大版本都有相对应的源,比如 12.16.2 版本对应的源为 https://deb.nodesource.com/setup_12.x,将所需安装的 NodeJS 版本源添加到系统中:
1curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
3. 安装 NodeJS
1sudo apt install -f nodejs
4. 查看是否安装成功
12nodejs -vnpm -v
Python报错
1. fatal error: Python.h: 没有那个文件或目录
问题:缺少 python-dev 包
解决:安装对应包:
1sudo apt install python-dev # 最好指定 python 版本,比如:python3.6-dev
2. ERROR: Package ‘pylint’ requires a different Python: 2.7.15 not in ‘>=3.5.*’
问题:默认安装的 pylint 包为较新的版本,要求 python>=3.5,而当前系统 python 为 2.7.15 版本
解决:手动指定安装旧版本的 pylint 包
1pip install pylint==1.9.3.
3. No local packages or working download links found for pytest-runner
问题:在安装其他 python 包时依赖该包,由于是其他包指定该包的安装源,所以可能是因为安装源的问题。本人就是因为这个原因:
1Download error on https://pyp ...
pip下载Python库速度慢解决方案
1. 简介
python 的 pip 安装包工具非常便利,但由于其默认的下载源为国外源,因此在安装 python 库的时候下载速度较慢。有时库文件过大,超出 pip 的下载时间限制,就会报错 The read operation timed out。所以我们可是手动更改 pip 的下载源为国内的镜像下载源以提升下载速度。
2. 国内镜像源
国内主要的 pip 镜像源有以下几个:
1234https://pypi.tuna.tsinghua.edu.cn/simple # 清华http://mirrors.aliyun.com/pypi/simple/ # 阿里https://pypi.mirrors.ustc.edu.cn/simple/ # 中科大http://pypi.douban.com/simple/ # 豆瓣
3. 解决方案
3.1 临时解决
利用 pip 的 -i 参数,手动指定下载源:
1pip install -i 国内源url XXX
XXX 为所需安装的 python 库,国内源url 参见上文 国内镜像源 。
3.2 ...
Deepin15.11下Qt5.14报错
1. error: Unknown module(s) in QT: xlsx
问题:Qt 找不到 qtxlsx 的 modules
解决:手动安装 qtxlsx 模块
12345git clone git@github.com:dbzhang800/QtXlsxWriter.gitcd QtXlsxWriterqmakemakemake install
Deepin15.11下Qt5.14无法使用中文输入法
对于使用 fcitx 框架的中文输入法,需要手动编译 fcitx-qt5 生成中文输入法的库文件。
1. 安装 cmake,用于编译 fcitx-qt5
首先查看是否已经安装 cmake:
1cmake --verison
如果有显示版本信息说明已经安装,则可以到下一步;如果没有安装,则先安装:
1sudo apt install cmake
2. 安装 fcitx-libs-dev
1sudo apt install fcitx-libs-dev
3. 设置 qmake 环境变量
首先查看是否已经设置了 qmake 环境变量:
1echo $PATH
如果显示的信息中含有对应 Qt 中 qmake 的环境变量(类似 x.y/gcc_64/bin 其中 x.y 为 Qt 版本号),则说明已经设置过了 qmake 环境变量,可以到下一步;如果没有设置,则手动临时设置 qmake 环境变量(后续命令都需在该终端进行):
1export PATH="$HOME/Qt/Qt5.14.1/5.14.1/gcc_64/bin":$PATH # 具体路径根据自己安装目录确定
4. ...
Deepin15.11下Qt5.14程序打包
【注】使用 linuxdeployqt 工具首先要保证当前系统已经配置好相应的 Qt 环境。
Qt5.14 for Linux 并没有提供相应的程序打包服务,所以 Linux 下打包 Qt 应用程序并不轻松。好在已经有人开源了一个在 Linux 平台下打包 Qt 应用程序的工具:linuxdeployqt,使用该工具可以轻松打包 Qt 应用程序。
开发人员提供了已经编译好可直接运行的程序 linuxdeployqt-6-x86_64.AppImage
(下载地址)。但由于该工具是较早开发的,由于 Linux 一直以来都在持续更新,所以在较新的 Linux 平台上直接运行该软件会报错提示,此时就需要手动编译源码(下载地址)。
1. 安装必要依赖
1sudo apt install patchelf
【注】若没有安装该软件进行程序打包时会报错:ERROR:Could not start patchelf 。
2. 编译 linuxdeployqt
使用 Qt 直接编译
手动编译
12cd linuxdeployqt
Qt报错问题解决
1. Qt 定义函数模板时,声明和实现分离(前者在 .h 头文件声明,后者在 .cpp 文件实现)引发找不到定义问题
原因:Qt 编译器不支持函数模板的声明和实现分离
解决:直接在 .h 文件声明并实现,不进行分离
引论
1. 主要内容
引论
高级语言及其文法
语法分析
自顶向下的语法分析
自底向上的语法分析
语法制导翻译与属性文法
语义分析与中间代码生成
符号表管理
运行时的存储组织
代码优化
代码生成
2. 程序设计语言
机器语言与汇编语言:01 代码与助记符,更接近于计算机硬件指令系统的工作
高级语言:其表示方法更接近于带解决的表示方法
命令语言:控制系统的工作,以功能封装为特征(如 UNIX 上的 shell)
3. 程序设计语言的分类
强制性(命令式)语言(Imperative Language)
通过指明一系列可执行的运算及运算的次序来描述计算过程的语言
程序的层次性和抽象性不高
FORTRAN(段结构)、BASIC、Pascal(嵌套结构)、C ⋯\cdots⋯
申述性语言(Declarative Language)
着重描述要处理什么,而非如何处理的非命令式语言
函数(应用)式语言(Functional Language),基本运算单位是函数(如 LISP、ML ⋯\cdots⋯)
逻辑式(基于规则)语言(Logical Language),基本运 ...
信息论概论
1. 内容
绪论
信息的统计度量
离散信源
离散信道及其容量
无失真信源编码
有噪信道编码
限失真信源编码
保密系统的基本信息理论
2. 信息
2.1 客观世界三大基本要素
物质:材料科学
能量:能源科学
信息:信息科学
2.2 信息、消息、信号
消息:是信息的载体和具体表现形式(比如文字、图片等),是信号的具体内容
信息:是消息中包含的有意义的内容
同一消息对不同的接收者来说,可以包含不同的信息;
同一信息,可以用不同形式的消息来载荷。
信号:是消息的物理表现形式(比如声波、光波等)
2.3 信息的特性
信息是无形的
信息是可共享的
信息是无限的
时空上的可扩展:具有时效性;前后信息相连,会提供新信息
信息是可度量的
2.4 信息的概念
通俗概念:消息 = 信息
广义概念:信息是对物质存在和运动形式的一般描述;信息是认识主体(人、生物、机器)所感受的
事物运动状态和变换方式
狭义概念(概率信息):信息是用来消除不确定性的东西
事件发生的概率越大,它提供的信息量就越小。
事件发生的概率越小,一旦该事件发生,它发生后 ...
Deepin15.11下apt报错
1. 由于没有公匙,无法验证下列签名: NO_PUBKEY xxx
执行命令 sudo apt update 时如上报错。
错误原因:GPG Key 对应的 GPG 验证文件过期或者是有些软件源没有导入 GPG Key 对应的 GPG 验证文件。可以通过下列命令查看所有 GPG Key:
1sudo apt-key list
解决办法:更新无效 GPG Key 对应的 GPG 验证文件。可以通过以下命令下载更新 GPG Key 对应的 GPG 验证文件:
1sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxx
【注】命令中的 xxx 为报错中 NO_PUBKEY 后的 GPG Key 。命令中的 keyserver.ubuntu.com 为提供 GPG Key 对应的 GPG 验证文件的公钥服务器,目前国内可访问的公钥服务器列表如下:
keyserver.ubuntu.com
pgp.mit.edu
subkeys.pgp.net
或者,如果能够找到该 GPG Key 对应的 GPG 验证文 ...
Deepin15.11下蓝牙配对和连接
首先确保 bluetooth, bluez, bluez-tools, rfkill 已经安装好,没有则在终端进行安装:
1sudo apt install bluetooth bluez bluez-tools rfkill
1. 查找蓝牙适配器
1hciconfig
对于系统识别到的每个蓝牙适配器,会显示出其相应信息:XXX: Type:***,其中 XXX 为该蓝牙适配器的设备名。
2. 启动蓝牙适配器
1sudo hciconfig XXX up
XXX 为要启动的蓝牙适配器的设备名。
3. 操控蓝牙适配器
1bluetoothctl
此时会进入到对应蓝牙适配器的操控终端:[bluetooth]#
4. 搜索蓝牙设备
在蓝牙适配器终端 [bluetooth]# 输入以下命令:
1scan on
启动搜索蓝牙设备模式。
对于搜索到的新蓝牙设备,会显示出其 mac 地址和名称 [NEW] Device **:**:**:**:**:** XXX,其中 **:**:**:**:**:** 是蓝牙设备的 mac 地址,XXX 为该蓝牙设备的设备名。
对于已经配对过的蓝牙设备 ...