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 为该蓝牙设备的设备名。
对于已经配对过的蓝牙设备 ...
Manjaro20.0下蓝牙配对和连接
首先确保 bluez, bluez-utils 已经安装好,否则在终端安装:
1sudo pacman -S bluez bluez-utils
1. 查看蓝牙服务状态
1systemctl status bluetooth.service
2. 启动蓝牙服务
如果蓝牙服务未启动,则需手动启动蓝牙服务:
1sudo systemctl start bluetooth.service
3. 操控蓝牙适配器
1bluetoothctl
此时会进入到对应蓝牙适配器的操控终端:[bluetooth]#
4. 搜索蓝牙设备
在蓝牙适配器终端 [bluetooth]# 输入以下命令:
1scan on
启动搜索蓝牙设备模式。
对于搜索到的新蓝牙设备,会显示出其 mac 地址和名称 [NEW] Device **:**:**:**:**:** XXX,其中 **:**:**:**:**:** 是蓝牙设备的 mac 地址,XXX 为该蓝牙设备的设备名。
对于已经配对过的蓝牙设备,可以通过以下命令显示其详细信息:(**:**:**:**:**:** 为其 mac 地址。)
1info **:**:* ...
Manjaro20.0安装EasyConnect
EasyConnect 是深信服公司新一代的 SSLVPN,支持各大操作系统平台,但 Linux 目前只支持 deb 包和 rpm 包,所以 Manjaro 安装 EasyConnect 并不友好。
1. 安装最新版 EasyConnect
1.1 终端安装 AUR 版本
yaourt 用户
1yaourt -S easyconnect
yay 用户
1yay -S easyconnect
pacaur 用户
1pacaur -S easyconnect
1.2 手动 makepkg 安装
下载源码包
1git clone https://aur.archlinux.org/easyconnect.git
生成软件包
123cd easyconnectmakepkgcd ..
可见当前目录下生成了软件包 easyconnect-***-pkg.tar.xz 。
安装软件包
12cd ..sudo pacman -U easyconnect-***-pkg.tar.xz
附录
报错:您的客户端版本与服务器不匹配,请下载更新
由于最新版与服务器要求版本不一致,所 ...
Manjaro20.0安装deb软件包
由于 Manjaro 基于 ArchLinux,而 deb 软件包格式为 Debian 系统安装包格式,故 Manjaro 不能直接安装 deb 软件包,而需要借助 debtap 工具。
1. 安装 debtap
yaourt 工具
1yaourt -S debtap
yay 工具
1yay -S debtap
pacaur 工具
1pacaur -S debtap
【注】三种方式任选其一即可;三种工具均默认没有安装,安装代码如下:
1sudo pacman -S XXX # XXX 可为 yaourt、yay、pacaur
如果工具下载软件包速度过慢,可参阅 Manjaro20.0添加国内源、社区源、AUR源 。
2. 更新 debtap
1sudo debtap -u
3. 使用案例
1sudo debtap XXX.deb
此过程进行 deb 包转为 tar.xz 包,在此过程中,会要求输入包装名(packager name)和许可证(License)(可输入比如 GPL 或者不输入)。对生成的 tar.xz 包,使用 pacman 进行安装。
1sudo pac ...
Manjaro20.0安装man中文手册
1. 安装 man 中文软件包
1pacman -S man-pages-zh_cn # 繁体换成 man-pages-zh_tw
2. 查询 man 中文手册安装目录
1pacman -Ql man-pages-zh_cn | less
发现 man 中文手册安装目录为 /usr/share/man/zh_CN 。
3. 设置中英文 man 别名
编辑 ~/.bashrc文件:
1sudo vim ~/.bashrc
在文件末尾添加别名:
12alias cman='man -M /usr/share/man/zh_CN' # 中文手册alias eman='man -M /usr/share/man' # 英文手册
更新 ~/.bashrc 使之生效:
1source ~/.bashrc
【注】使用 man 命令查询时自动检测是否有中文页面,有则中文显示,无则英文显示。若确定使用中文 man 手册,则使用 cman(但由于 man 中文手册还不够完善,有些命令还查询不到);若确定使用英文 man 手册, ...
Manjaro20.0添加国内源、社区源、AUR源
1. 添加国内源
1.1 备份文件
1sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
1.2 编辑文件
1sudo vim /etc/pacman.d/mirrorlist
添加的源从上到下优先级依次降低。
添加 Manjaro 源
123456789## manjaro 稳定源# 中科大Server = https://mirrors.ustc.edu.cn/manjaro/stable/$repo/$arch# 清华源Server = https://mirrors.tuna.tsinghua.edu.cn/manjaro/stable/$repo/$arch# 上交源Server = https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/$repo/$arch# 浙大源Server = https://mirrors.zju.edu.cn/manjaro/stable/$repo/$arch
添加 Archlinux 源
1234567## archli ...
Manjaro20.0配置TR4527打印机和扫描仪驱动
【注】Manjaro 系统日常使用问题可以上 Manjaro 官方论坛上逛一逛,说不定具有解决办法。
1. 打印机驱动
Arch Linux AUR 源已经提供了 TR4527 打印机驱动程序 cnijfilter2,详情参见地址。
在终端手动安装该驱动程序即可:
1yay -S cnijfilter2
2. 扫描仪驱动
Arch Linux AUR 源已经提供了 TR4527 扫描仪驱动程序 scangearmp2,详情参见地址。
在终端手动安装该驱动程序即可:
1yay -S scangearmp2
Mint19.1下dpkg报错
1. E: Sub-process /usr/bin/dpkg returned an error code (1)
解决办法如下:
12345678cd /var/lib/dpkgsudo mv info info_baksudo mkdir infosudo apt update > /dev/null # 若要输出信息,去除重定向符及其后内容sudo apt install -fsudo mv info/* info_bak/ > /dev/nullsudo rm -r infosudo mv info_bak info
【注】建议将上述代码封装成脚本执行,以备重复使用,避免稍有不慎写错代码导致信息丢失的情况。
2. dpkg: 警告: 无法找到软件包 XXX 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
目前的解决办法就是重新安装对应软件包:
1sudo apt reinstall xxx
如果过多此类警告,可以一键重新安装所有软件(需要花费大量时间):
1sudo apt-get --reinstall install `dpkg --ge ...