自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 linux 通过打补丁的方式更新文件

原理:使用 diff 命令把修改前和修改后两个文件的差异记录在 patch 文件中,然后用 patch 命令把 patch 文件打到旧文件中得到新文件。可以用于更新终端设备的文件,或者同步文件的修改内容给其他用户。制作补丁制作文件的补丁:$ diff -au old.file new.file > test.patchold.file 修改前的文件,new.file 修改后的文件。test.patch 补丁文件,记录了 old.file 文件和 new.file 文件的差异。制作目录

2021-12-13 19:55:57 1170

原创 Windows 10 上使用 Markdownpad2 写文档无法预览

新上手了一个写 markdown 的软件 MarkdownPad 2,发现写了不能预览。。。预览视图报错:在官方的 FAQ 中找到了问题描述:LivePreview is not working翻译:LivePreview 不起作用 - 它显示一条错误消息,说明 这个视图崩溃了!此问题已在 Windows 8 中特别观察到。您可能会看到如下所示的错误消息,并且在 Markdown 编辑器窗格中键入时不会呈现任何 HTML。要解决此问题,请尝试安装Awesomium 1.6.6 SDK。如

2021-12-08 20:13:37 404

原创 Qt 字符串编码转换

包含头文件:#include <QTextCodec>栗子,UTF-8 转 GB2312/* UTF-8 转 GB2312 */QString str = "这是一段文字。";QTextCodec *utf8Codec = QTextCodec::codecForName("UTF-8");QTextCodec *gb2312Codec = QTextCodec::codecForName("GB2312");QString unicode = utf8Codec -&gt

2021-12-08 19:34:59 2346

原创 Qt 工程添加资源文件(图片)

在做带 UI 的程序时,往往需要添加一些图片美化 UI,本文介绍怎么给工程添加图片,并显示在 Label 控件上。添加资源文件在工程目录新建一个目录,把图片文件放进去Qtcreator 项目的窗口点击鼠标右键,依次选择:添加新文件 -> Qt -> Qt Resource File名字随意,路径选择前面保存图片新建的目录,确认后会生成 .qrc 文件。鼠标右键点击 .qrc 文件选择 Open in Editor点击添加前缀,输入前缀名称,需要添加前缀之后才能添加文件快捷键

2021-12-01 20:15:51 1890

原创 编译 Qt 程序报错:“Qt requires C++11 support“

编译 Qt 程序报错:“Qt requires C++11 support”需要添加 C++11 支持.pro 文件添加内容:CONFIG += c++11或者QMAKE_CXXFLAGS += -std=c++11

2021-12-01 19:48:07 2900

原创 Linux 远程工具

向日葵下载地址:向日葵、支持国产系统版本说明:个人免费(限量 10 台设备);Windows、macOS、iOS、Android 客户端都有,某些国产操作系统(银河麒麟、统信UOS等)还支持 aarch64 平台的;有图形版本和命令行版本;不用注册,直接安装打开就能用;安装完成后,启动命令:$ sudo /usr/local/sunlogin/bin/sunloginclient如果修改了安装路径,根据实际情况输入命令ToDesk下载地址:ToDesk说明:个人免费(限量

2021-11-23 20:20:02 2039

原创 crontab 修改默认编辑器

Linux 系统定时任务一般都是通过 crontab 完成,使用方法可以查看:Linux 定时任务 Crontabcrontab 首次使用的时候需要选择编辑器,手快选错了的话就很尴尬,可能连退出都不会。(好不容易学会退出 VIM,然后又来一个新的。。。)可以通过命令进行重新选择:$ select-editor如:首次选择的时候就有提示,运行 “select-editor” 可以修改,但是手快的估计也看不到。...

2021-11-23 19:38:32 2689 2

原创 libssl.so.1.0.0 not found

在 ARM64 平台上开发了一套代码,不涉及硬件平台,移到 AMD64 平台编译项目报错:libssl.so.1.0.0 => not foundlibcrypto.so.1.0.0 => not found在 ARM 上搜索了这个文件,文件路径:/lib/aarch64-linux-gnu/libssl.so.1.0.0搜索这个文件在哪个安装包:$ apt-file search libssl.so.1.0.0没找到内容,说明使用的这个源上面没有包含这个文件的安装包。em

2021-10-17 15:14:03 3830

原创 ubuntu 初始化分区

一般新买的硬盘需要初始化之后才能使用,因为上面没有文件系统,如果你买的硬盘直接就能挂载和使用,那么它有可能是。。。老司机。直接挂载新的硬盘会出现这样的报错:mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.出现这个报错有两种情况,第一种就是新硬盘,上面没有文件系统,需要格式化;第二种就是你硬盘的文件系统挂了,可以尝

2021-10-13 20:10:34 729

原创 QT 程序使用 Framebuffer 显示 UI

桌面版本的 Linux 都会带有类似 xorg 这样的图形服务,桌面程序和应用程序的 UI 都是通过图形服务渲染的。但是有些系统为了减少系统体积、提升性能,会把图像服务和没有用到的模块裁剪掉,如嵌入式系统。没有图形服务程序就不能直接渲染显示 UI,这时候我们可以使用 Framebuffer 进行渲染。Framebuffer 也叫帧缓冲,它相当于屏幕的显示内容缓存,修改 Framebuffer 的内容,屏幕显示的内容也会同步修改。Qt 支持 Framebuffer 显示,在编译 Qt 环境的时候,con

2021-10-13 19:45:31 3819 1

原创 ftp 限定用户的访问路径后,增加公共区域访问

ftp 如果需要启动用户权限控制,一般情况下我们会把用户的访问目录限定在个人的 home 目录下,或者某个指定的路径,然后禁止访问其他的路径。 如果有一个公共区域需要多人共享的话,首先我们想到使用软链接,在每个人的访问区域中创建一个软链接,这样所有人都能通过软链接访问到公共区域,又不会影响到其他区域。但是问题来了,ftp 协议不支持软链接,创建了链接文件,通过 ftp 协议后,看见的是普通文件,没办法跳转到对应的目录。这时候我们可以通过绑定的方式,把公共区域和个人访问区域的一个目录进行绑定,这样就能通

2021-10-12 19:55:38 259

原创 esx-Server 多路径配置

在 esx-Server 上安装了 Ubuntu20.04,进去系统查看日志时发现,syslog 一直刷错误:multipathd[651]: sda: add missing pathmultipathd[651]: sda: failed to get udev uid: Invalid argumentmultipathd[651]: sda: failed to get sysfs uid: Invalid argumentmultipathd[651]: sda: failed to ge

2021-10-12 19:30:11 2285

原创 编译 FFmpeg-4.4

下载源码在 GitHub 下载源码包:FFmpeg建议选定版本就不要变了,FFmpeg 每个大版本都会改东西,换一个版本就要重新研究一遍。API 改、结构体改、连宏定义都改,绝了。之所以在网上很少有 FFmpeg 的文档资料,是因为你写文档的速度不一定有他改代码快。。。要了解 API 怎么用只能啃源代码,或者使用 Doxygen 从源代码生成 API 文档。后面再写一篇博客介绍怎么使用 Doxygen 从源码文件生成 API 文档吧。网上找到一个连接也是用 Doxygen 的,可以看一下:FFmpe

2021-08-10 20:24:17 1169

原创 QT websocket 服务器设置 wss 访问

wss 比 ws 多了一层证书校验,理论上我们只要在 websocket 服务器前面加一层 ssl 的认证就可以了。服务器配置代码直接用 QT 官方的栗子:链接: SSL 回显服务器示例打开 sslechoserver.cpp 文件,看构造函数就可以了//! [constructor]SslEchoServer::SslEchoServer(quint16 port, QObject *parent) : QObject(parent), m_pWebSocketServer(n

2021-07-29 14:46:01 2509 1

原创 使用 dos2unix 把 windows 行尾结束符转换成 Unix 行尾结束符

windows 系统行尾的结束符由 回车符 和 换行符 两个符号组成( “\r\n”),而 Unix 系统的行尾结束符只有 “换行符”("\n")。如果你是两个系统交叉使用,这个差异就会变得很蛋疼。试着想象一下,你在 windows 系统使用 IED 把代码写得很优雅,而在 Linux 系统使用 vi 打开却发现每一行结尾都加上了 “^M”;又或者当你信心满满的写好一个 shell 脚本,拉到 Linux 上运行却一堆报错 “找不到命令:\r”;轻则逼死强迫症,重则机毁人亡。

2021-07-22 20:34:53 568

原创 Ubuntu搭建离线APT仓库

前面写了一篇博客,讲述如何用自己制作的Debian包搭建APT仓库: Ubuntu 搭建 APT 仓库这篇博客讲解怎么从公网的软件源上拉取(打工人的事怎么能说偷)软件包到本地,然后在本地搭建一个离线版本的APT仓库。拉取软件包需要用到 apt-mirror 这个工具安装 apt-mirror$ sudo apt install apt-mirror修改配置文件修改配置文件 /etc/apt/mirror.list默认的配置文件:说明:set base_path 设置下载的路径默认下载

2021-04-23 15:35:51 2036 1

原创 systemd 的标准输入、标准输出和标准错误

Linux 的 systemd 也有 StandardInput 、StandardOutput 和 StandardError。之所以研究这东西,是因为我在折腾 systemd 服务的时候,发现 systemd 会把程序的日志输出到 syslog,这就很尴尬了。

2021-04-21 20:35:15 5439

原创 VMware workstations报错 “锁定文件失败,打不开磁盘 ‘D:\XXX.vmdk’ 或它所依赖的某个快照磁盘”

问题启动 Ubuntu 虚拟机的时候 VMware workstations 报错了:锁定文件失败,打不开磁盘 “D:\小姐姐的别墅\software\vm\Ubuntu18.04.vmdk” 或它所依赖的某个快照磁盘。原因在存放虚拟机镜像的文件夹发现多了几个 “xxx.lck” 文件夹。在网上找了一下资料,VMware workstations 为了防止虚拟机镜像文件被多台虚拟机同时访问,在打开虚拟机之前会先对镜像文件进行加锁操作(生成 “xxx.lck” 文件夹),然后再关闭虚拟机的时候解锁(

2021-04-06 20:13:03 821

原创 多线程操作 GUI 程序崩溃

报错:[xcb] Unknown request in queue while dequeuing[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called[xcb] Aborting, sorry about that.backend: ../../src/xcb_io.c:179: dequeue_pending_request: Assertion `!xcb_xlib_unkno

2021-04-01 16:39:30 1264 1

原创 BMP图片-文件头部信息

BMP 图片也就是位图(bitmap),直接存储像素数据,几乎不进行压缩,图像信息丰富,比较明显的缺点就是占用空间大。BMP 图片的结构很简单,首先是文件信息、接着是位图信息,然后是调色板信息,最后是位图数据。需要注意的是,文件头部信息的每一部分都是固定大小的,所以在处理文件头部信息时需要按 1 字节对齐的方式访问,或者在声明结构体时用关键字 “__attribute__((packed))” 取消字节对齐。1. 文件信息文件信息结构体:typedef struct tag_bitmap_file_

2021-03-23 16:09:29 6244 1

原创 Linux同时运行多条命令

一次性运行多条指令有很多好处,例如节省时间、加强指令之间的关联、增大同事的维护难度等等。这个技巧在终端命令行和脚本都可以用到,主要有三种体现方式:1)使用 “;” 符号运行多条指令使用方式:$ cmd1 ; cmd2 ; cmd3首先执行cmd1,然后执行cmd2,最后执行cmd3。这种是AOE技能,无论你输入多少条指令都还会按顺序一一执行,就算有指令执行失败也会继续执行后面的指令,出手就没有回头,除非你把系统干掉。2)使用 “&&” 符号运行多条指令使用方式:$ cmd1

2021-03-19 20:25:33 2702 1

原创 GDB调试

前言在项目开发的过程中,除了编写代码,还需要对程序进行调试和问题修复,一遍就过的事情是不存在的,编码5分钟,调试2小时才是常规操作。这时候,一个好的调试方法可以让你迅速定位bug的能力大放光彩。C/C++开发我推荐使用 “printf()” 定位问题,大道至简,顶尖的 coder 往往使用最朴素的方式分析问题, “printf()” 进可遍历参数实时掌控变量的变化,退可追踪接口时刻紧跟程序的走向,此乃 真.杀人利器 。然而天道残缺, “printf()” 也不是全能的,在多线程和内存管理的方面存在一点

2021-03-16 20:37:26 176

原创 nodeJS获取当前JS文件的路径和文件名

nodeJS 可以使用 __dirname 和 __filename 变量获取当前JS文件的路径和文件名。栗子:在 /home/lk 目录运行 node example.js: console.log(__dirname); // 打印:/home/lk console.log(__filename); // 打印:/home/lk/example.js

2020-12-08 11:07:13 3183

原创 Ubuntu18.04 配置 Samba 共享目录

Samba 使用 SMB(Server Messages Block)通信协议,SMB 是局域网内共享文件和打印机的一种通信协议,可以在局域网内共享文件和打印机等资源。服务端搭建 Samba1、安装 Samba$ sudo apt-get install samba2、创建Samba共享目录创建共享目录,目录可以自定义$ mkdir /home/lk/samba添加权限$ chmod 777 /home/lk/samba3、修改Samba配置文件在配置文件末尾添加共享目录的信息$

2020-12-01 16:23:26 1572

原创 qtcreator 使用不同版本的编译器进行编译

一般情况通过官方安装包安装的 qt 会自动检测编译器添加到 qtcreator。如果是自己编译的 qt 就需要手动添加。把不同版本的 qt 安装到不同的目录,然后在 qtcreator 配置 qt 版本和对应版本的编译器,就可以在一个qtcreator 上使用不同版本的 qt。添加 qt 版本依次点击 工具 -> 选项添加 qmake根据 qt 版本修改版本名称,方便切换的时候分辨版本。添加编译器添加下拉框依次选择 GCC -> C++通过路径选择 g++ 编译器修改构

2020-11-19 20:26:45 6857 3

原创 Ubuntu 开机慢的问题排查

平常使用虚拟机调试,一般不用的时候都是挂起的,方便下次使用。今天搞了一下配置文件,要重启才能生效,然后就重启了,开机10分钟还没好,惊呆了。看一下开机启动服务耗时$ systemd-analyze blame前 5 项就 7 分钟了,第 20 项还是秒级别的。。。搭建的测试环境一直叠加,没清除,脑壳痛。解决方法,可以把一些启动项延后启动,或者把不需要的服务关闭/卸载。在卸载或停止服务之前要先了解一下这个服务的作用,如果是虚拟机的话可以先快照。以下就根据我的虚拟机做一些说明,如果有不认识的服务

2020-10-23 16:57:29 4934

原创 linux 命令之叹号的惊叹用法

叹号(!)一般在表达式或者代码中表示非或者取反值的意思,在 Linux 命令中

2020-10-15 18:02:02 1126

原创 linux 定时任务 crond

crond 是 Linux 系统周期性执行任务的守护进程,和 windows 的计划任务类似。crond 默认会随系统安装,启动系统的同时也会启动 crond。新建 crontab 文件每个用户都是独立的 crontab 文件,root 用户的文件是 /etc/crontab,普通用户默认没有创建 crontab。修改 crontab 文件$ crontab -e普通用户首次运行这个命令会提示没有 crontab,将会使用一个空白的 crontab,根据提示选择编辑器修改 crontab 文件,

2020-09-25 11:48:42 203

原创 ubuntu 设置显示分辨率

查看显示器支持的分辨率$ xrandr我的 Ubuntu 是虚拟机,所以显示器名称是 Virtual1 ,如果是物理机一般是以显示接口命名的,如 VGA1、DP1等,使用 xrandr 命令查看一下就知道了。图片中的列表是显示器支持的分辨率和刷新率,* 号指当前使用的分辨率,+ 号指最佳分辨率,所以我现在用的分辨率是 1918x926 ,刷新率是 60,emmm,分辨率有点奇怪,这是因为虚拟机没有使用全屏模式,菜单栏占了一部分区域。修改分辨率$ xrandr -s 1920x1440_60.00

2020-09-18 11:31:05 1801

原创 linux 使用 pigz 进行快速压缩

gzip 是单线程压缩的,pigz 支持并行 gzip 。简单说就是多线程的 gzip ,pigz CPU 占用比较高,可以根据需要指定逻辑处理器数量。1 安装centos & Redhat 系统安装 pigz$ yum install pigzubuntu & debian 系统安装 pigz$ apt install pigz2 使用压缩$ tar -cvf - test/ | pigz -p 16 > test.tar.gz说明:- 使用标准输入/输出

2020-09-16 19:55:42 1642

原创 centos7搭建ftp服务器,本地用户登陆

1 安装安装 vsftpd$ yum install -y vsftpd启动 vsftpd$ systemctl start vsftpd.service设置开机启动$ systemctl enable vsftpd.service查看服务状态和端口(默认端口是 21)$ systemctl status vsftpd.service$ netstat -nltp | grep 212 配置2.1 配置目录 /etc/vsftpd/etc/vsftpd 目录有三个配置文件v

2020-09-15 16:38:31 2854 2

原创 centos7 搭建 discuz! 论坛

使用的版本是 discuz! x3.2,

2020-09-15 11:23:51 353

原创 ubuntu18.04 使用 root ssh登陆失败

最近想要测试 Debian 包,就在服务器上搭建了一个 Ubuntu18.04 的虚拟机。搭好虚拟机之后通过 ssh 登陆 root 用户,居然被拒绝了。。。试了三次密码后报错:Permission denied (publickey,password).第一反应是密码记错了,然后跑去 web 页面远程登陆 root 用户,密码正常使用。试了一下普通用户 ssh 登陆,可以登录,估计是禁用了 root 。Google 一下,果然,说是 出于安全预防措施,ssh 禁止 root 登陆,脑壳疼。瞄了一

2020-09-04 12:28:34 728

原创 svn 服务器采用 http 方式登录

系统是 centos7,需要先搭建好 svn 服务器,可以参考 centos7 搭建 svn 服务器。采用 http 方式登录可以加密密码,不用直接明文显示。。。1 搭建 http 服务器1.1 安装 httpd$ yum install httpd设置开机启动$ chkconfig httpd on启动 httpd$ service httpd start1.2 安装辅助服务$ yum install mod_dav_svn mod_auth_mysql2 修改配置文件2.1 创建

2020-09-03 17:42:59 1120

原创 centos7 搭建 svn 服务器

1 安装环境1.1 安装 subversion$ yum install subversion1.2 创建版本库svn 可以使用多个版本库,先创建一个目录,然后把所有版本库都放进去,方便管理。创建 svn 目录$ mkdir -p /home/svn创建版本库目录$ cd /home/svn$ svnadmin create /home/svn/general2 修改配置文件2.1 目录结构conf 目录:存放版本库的配置文件,用户访问账号、权限等;db 目录:存放版本库的数据文

2020-09-02 18:03:57 152

原创 Ubuntu 20.04 手动实现 rc.local

Ubuntu 16.04 版本开始去除了 rc.local 文件,自启动服务方面基本由 systemd 全面接管了。想要添加一些开机运行的操作只能创建 systemd 服务或者添加 desktop 文件,有点麻烦。干脆把 rc.local 重新实现。原理创建一个 systemd 服务,开机执行指定脚本(rc.local)的内容。实现1)rc-local.service 文件在 Ubuntu 20.04 中这个文件存在。看起来只是把 rc.local 功能隐藏起来了。如果你的版本没有这个文件,可以自

2020-09-02 15:15:48 16635 14

原创 configure配置报错无法猜测构建类型

工作需要,要在 arm 板子上使用 snmp ,没有现成的安装包,在 GitHub 找了 net-snmp 的项目代码,自己移植到 arm 板子。在配置 configure 脚本的时候报错了:configure: error: cannot guess build type: you must specify one意思是无法猜测构建类型,需要指定一个。这是因为 config.guess 获取不到系统类型,配置失败。可以 更新 config.guess 或者手动指定。方法一:更新 config.

2020-09-01 11:05:46 2152

原创 网卡设置静态ip失败

网卡设置静态 ip 失败使用 VMware workstations 安装了一个虚拟机,Ubuntu 16.04版本,和物理机的网络是桥接的,想要固定住 ip,防止和其他设备冲突。常规操作,首先修改 /etc/network/interfaces 文件,增加网卡的 ip 和网关之类的信息,文件内容:添加了 eth0 网卡的信息,没问题,进行下一步重启网络服务。$sudo systemctl restart network额,报错了根据提示看一下服务的状态和报错信息没有找到 eth0 设备

2020-08-27 16:12:02 816 1

原创 Ubuntu 搭建 APT 仓库

Ubuntu 搭建 APT 仓库前言原理APT 仓库搭建合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言最近公司需要搭建一个 APT 仓库,方便安装内部开发的 Debian 包,然后就研究了一下 APT 仓库的布置。因为我比较懒目前使

2020-08-26 10:39:22 2627

原创 win10 系统设置环境变量

win10 系统设置环境变量前言我们可以通过 运行窗口 输入一些程序名称来直接运行系统程序,例如 CMD、CALC 等等。但是我们自己安装的软件在 运行窗口 输入名称打开就会提示找不到,因为系统找不到软件在哪里。系统在接收到命令后会去环境变量的路径搜索,所以只要添加一个环境变量,系统就可以找到我们自定义安装的软件。步骤运行窗口 输入 control 按回车键打开控制面板,依次点开 系统与安全 -> 系统 -> 系统高级设置 -> 环境变量编辑 Path 变量图01新建

2020-08-23 18:53:54 419

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除