1 #include <QString>
2 #include <QByteArray>
3 #include <QCryptographicHash>
4 #include <QFile>
5 #include <QDebug>
6
7 QByteArray getFileMd5(QString filePath)
8 {
9 QFile localFile(filePath);
10
11 if (!localFile.open(QFile::ReadOnly))
12 {
13 qDebug() << "file open error.";
14 return 0;
15 }
16
17 QCryptographicHash ch(QCryptographicHash::Md5);
18
19 quint64 totalBytes = 0;
20 quint64 bytesWritten = 0;
21 quint64 bytesToWrite = 0;
22 quint64 loadSize = 1024 * 4;
23 QByteArray buf;
24
25 totalBytes = localFile.size();
26 bytesToWrite = totalBytes;
27
28 while (1)
29 {
30 if(bytesToWrite > 0)
31 {
32 buf = localFile.read(qMin(bytesToWrite, loadSize));
33 ch.addData(buf);
34 bytesWritten += buf.length();
35 bytesToWrite -= buf.length();
36 buf.resize(0);
37 }
38 else
39 {
40 break;
41 }
42
43 if(bytesWritten == totalBytes)
44 {
45 break;
46 }
47 }
48
49 localFile.close();
50 QByteArray md5 = ch.result();
51 return md5;
52 }
- 查看系统信息
# cat /proc/version 查看系统内核版本
# cat /proc/devices 查看系统加载模块
- 系统文件
/boot/grub/grub.conf grub配置文件
/etc/xinet.d/tftp tftp配置文件(tftpboot:默认路径;disable:是否使能)
/var/log/messages 系统日志文件(粤嵌开发板)
- 关于本博文的几点说明:
以下内容基本上都是本人在实际工作中总结的,其中:
1. 带“?”或者“/?...?/”之间的内容是本人总结的,但不太肯定。
2. 带“!”或者“/!...!/”之间的内容源自网络,且未经本人测试确认。
==============================================================
- 实用技巧
Tab键 自动补齐
输入指令或部分文件名后按下Tab键能够自动补齐。若输入的部分正确且按下Tab键后无任何反应,则说明有一个以上文件明或指令前面部分与已输入的部分相同。此时连续按下Tab键2次,则会列出所有可能的文件或指令。
# cd - 在最后打开的两个目录间切换
!^ 从上一条命令获得第一项参数
!$ 从上一条指令获得最后一项参数
----------------------------------------------------------------------
- 常用指令
# du -sh * 查看 文件/目录 占用磁盘空间信息
# chmod [ugo][+-][rwx] obj_name 设置对象权限
# usermod -l new_user_name old_user_name 更改用户名(需要root权限)
注意:修改 /etc/passwd 文件也能达到同样的效果。
# ln [option] source_file dest_file
-s 建立软连接
-f 建立时,将同档案名删除
-i 删除前进行询问
注意:应用绝对路径来建立连接,避免出现“符号连接层数过多”的错误。
- 查看系统进程占用内存情况
# top -d 1 process
注意:按下 Shift + M 将按占用内存大小排序。
# free [-m] summary
# cat /proc/meminfo detail
# ntsysv 启动服务配置程序
# service service_name status 查看服务状态
# service service_name start 启动服务
# service service_name stop 停止服务
# service service_name restart 重启服务
# hwclock 查看RTC时间
# hwclock –w 将系统时间设置为RTC时间
# hwclock –s 将RTC时间设置为系统时间
- 预处理指令
| # | 空指令,无任何效果。 | |
| #include | 包含一个源代码文件。 | |
| #define | 定义宏。 | |
| #undef | 取消已定义的宏。 | |
| #if | 如果给定条件为真,则编译下面代码。 | |
| #ifdef | 如果宏已经定义,则编译下面代码。 | |
| #ifndef | 如果宏没有定义,则编译下面代码。 | |
| #elif | 如果前面的#if 给定条件不为真,当前条件为真,则编译下面代码。 | |
| #endif | 结束一个 #if……#else 条件编译块。 | |
| #error | 指令将使编译器显示一条错误信息,然后停止编译。 | |
| #line | 指令可以改变编译器用来指出警告和错误信息的文件号和行号。 | |
| #pragma | 指令没有正式的定义。编译器可以自定义其用途。 典型的用法是禁止或允许某些烦人的警告信息。 |
- 相关资料(详细介绍及示例)
http://www.kuqin.com/language/20090806/66164.html
- 关于本博文的几点说明:
以下内容基本上都是本人在实际工作中总结的,其中:
1. 带“?”或者“/?...?/”之间的内容是本人总结的,但不太肯定。
2. 带“!”或者“/!...!/”之间的内容源自网络,且未经本人测试确认。
==============================================================
- 经验总结
1. 在拷贝虚拟机系统到其他PC使用之前,强烈建议先建立快照。
2. “暂停”状态下建立快照比直接建立快照更省时省空间。
3. 当虚拟机的硬件配置发生变化时,MAC地址也会随之改变。
- 虚拟机系统上网设置
VMware Workstation网络设置:NAT
虚拟机系统网络设置:自动DHCP(Linux)/自动获取(Windows)
注意:设置完成后先断开网络,再重新连接。
- 更新已装系统的虚拟机硬件配置步骤
1. 删除 /etc/udev/rules.d/70-persistent-net.rules。
说明:若不删除上述文件会导致网络设备混乱,对系统产生以下影响:
a. 执行下述指令时,系统会提示“设备不存在”;
# service network restart
or
# ifconfig eth0 up
...
b. 使用ifconfig指令查看网络参数时,原来的eth0会被eth1替代。
2. 关闭虚拟机系统。
3. 修改虚拟机硬件配置,查看新的MAC地址。
4. 启动虚拟机,配置虚拟机网络参数(修改MAC地址)。
- 查看虚拟机MAC地址
Virtual Machine Setting -> Network Adapter -> Advanced...
----------------------------------------------------------------------
- 常见错误及其解决办法
1. 把虚拟机系统拷贝到其他PC下使用,升级VMware Tools后可能出现虚拟机启动后无法进入系统的情况,错误提示如下:
No root device found.
Boot has failed, sleeping forever.
PS:创建虚拟系统的VMware版本为7.1.2,迁移后的VMware版本为8.0.1,升级VMware Tools后重启系统即出现上述情况。未升级VMware Tools前,Host系统与虚拟机系统之间的共享正常。因此可以不升级VMware Tools以避免出现上述情况。
解决方法:暂无有效方法,必须利用VMware的快照功能把系统还原至之前的状态。因此,在迁移虚拟机系统前建立一个系统快照是十分有必要的(见经验总结1)。