- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 Linux C/C++ PGO优化说明
PGO是指利用程序运行过程中采集到的 profile 数据,来重新编译程序以达到优化效果的 post-link 优化技术。
2023-03-21 10:44:07
2632
1
原创 Linux下的图标与文件关联机制:freedesktop
目前主流的Linux发行版中,使用的桌面基本都是基于GNOME、KDE、Xfce等环境,这几种桌面环境中,关于桌面图标,文件关联,应用程序启动等方面的实现,全部都使用的是FreeDesktop,可以说虽然Linux的发行版众多,但关于图标文件关联这部分机制,基本都使用的是同一套,研究明白了freedesktop基本可以在绝大多数的Linux桌面系统里得到应用。
2023-03-20 17:27:29
4129
原创 如何迁移备份包含git lfs的仓库,包含代码、分支、提交记录
最近有个迁移仓库的需求,要把某个git服务器上的仓库转移到另一个服务器上仅域名更新,需要保留原仓库的提交记录普通的git仓库备份网上查了一下实现方式非常简单:假设源仓库的地址是:git@gitlib.threedog.top:threedog/test.git新仓库的域名是:gitlib.threedog.net首先,在新的git服务器上创建同名仓库test,空仓库就可以,然后:git clone --bare git@gitlib.threedog.top:threedog/test.git
2021-04-23 17:58:54
2973
原创 如何爬取B站视频的封面图片
缘起周末在B站刷视频的时候,红灯区…啊呸!钢琴区一个up的视频突然拽住了我的眼球,一连翻看了她的几个视频之后,我发现这个up每次的封面确实有点东西!于是突然来了兴致,想通过自己为所欲为的技术手段,实现一波儿封面批量自提。简单调查了一番,发现这东西用Pyhton爬虫搞,不仅难度不大而且很有搞头!于是很快便开始上手缕逻辑。实施第一次接触爬虫,就想要那种短平快的东西,所以我把逻辑抽离的非常宏观:先知道目标图片的网址是什么?通过代码访问这个网址,拿到目标页面的全部代码。解析这个代码,找到图片所在
2020-08-17 10:51:00
5459
4
原创 万字长文系统梳理C++函数指针
本篇的内容相对比较简单主要从语法的层面讲解函数指针的使用以及应用场景。都是些面向入门者的基础,大佬轻喷。首先:什么是函数指针。这个问题老生常谈了,不用理解的多么复杂,它其实就是一个特殊的指针,它用于指向函数被加载到的内存首地址,可用于实现函数调用。听上有点像函数名,函数名也是记录了函数在内存中的首地址,加()就可以调用。不错,不过函数指针和函数名还是有点区别的,他们虽然都指向了函数在内存的入口地址,但函数指针本身是个指针变量,对他做&取地址的话会拿到这个变量本身的地址去。而对函数名做.
2020-08-05 16:28:48
3749
3
原创 好物分享:简单改写一个Linux下好用的截图工具
因为日常Linux办公,经常有截图顺带简单编辑的需求。在Windows上这项工作基本一直是QQ微信代劳,但是在Linux上这两个都比较拉胯,无奈之下找了几种Linux下的截图工具替代试了几个比较流行的,感觉下来最好用的算是flameshot,但唯一的缺点就是:没有全局热键。好在flameshot是个开源软件,下下来源码瞅了一眼,是我熟悉的Qt写的,全局热键这部分可以自己整合一下。源码中对全局热键的实现只放开了windows,而且从源码来看好像也只预留了接口没实现功能。简单研究了一下,通过一个比较流行
2020-07-21 18:26:10
1169
原创 制作RPM安装包安装时出现:xxxxx conflicts with file from package.....
安装出现这种问题很常见,一般是文件冲突引起的。仔细看一下他说和那个包的文件冲突了!一般报错都是这种格式:file 某个文件 from install of 即将安装的安装包 conflicts with file from package 系统已经安装的安装包如果你要安装某个rpm,遇到这种情况,你可以:卸载已经安装的包加–replacefiles参数,会替换掉冲突的文件加--f...
2020-05-07 18:41:24
9246
2
原创 史上最硬核的Linux依赖问题解决方案
最近正好在研究dpkg和rpm,对Linux依赖有了更深的认识。在网上看了很多,所有docker、虚拟机、编译安装、以及各种另辟蹊径的答案都是面向日常繁重的业务没时间折腾而不得已做出的妥协和让步。而我们面向技术的,从来都喜欢正面硬刚!硬刚Linux软件安装依赖问题的办法有很多,我给他分为两大类!一类合法,另一类暴力。先说合法的解决方案也是所有人都知道的解决方案:sudo apt-g...
2020-05-03 21:12:36
6373
原创 C++到底是如何从代码到游戏的?
这个简单啊。你既然问C++了,那我问你,现在,我有一个Student类。C++怎么创建一个学生类的对象?// 嗯我会!有两种方式:Student s;Student *s2 = new Student("张三");那好,现在这学生的行为有:吃饭,睡觉,上网课。现在你执行个上网课的行为,怎么做?// 简单啊s2->upNetworkClass();通过对象调用成员函数不就成...
2020-04-29 20:30:40
12388
32
转载 Linux误删系统文件/lib64/ld-linux-x86-64.so.2如何急救?
这个文件是个软链接 链接的是系统/lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.31.so 文件这个文件误删了几乎除了cd和pwd什么命令都用不了了解决办法:只要不涉及权限问题,用 /lib/x86_64-linux-gnu/ld-2.31.so 加上动态链接的二进制文件的绝对路径,命令就可以用 就可以做很多事情....
2020-04-29 19:44:40
13332
6
原创 CI上传图片出现“You did not select a file to upload”错误的解决办法
所有搜到的帖子都是:1、文件域的名字被修改方法一:找了半天发现笔者将Views文件的文件域的名字修改成了fileimg,而CI默认的文件域的名字是userfile,即形如:。这个是不能修改的,否则就会找不到上传文件。原理就是:$this->upload->do_upload()默认上传文件的表单名为userfile。方法二:其实还有解决方法,如果文件域是其他名字。比如:...
2020-04-29 19:27:36
2099
原创 Linux制作安装包,解决dpkg不满足依赖的时候也会解压文件的问题
如何通过依赖限制dpkg安装包无法安装,并不解压信息到本地。在DEBIAN/control文件中,支持两种依赖的写法:一种是:depends另一种是:Pre-Depends
2020-04-20 19:54:59
1608
原创 Linux如何从终端向GUI程序发送按键消息(F5)?
xdotool这个命令一般包含GUI的Linux系统都是自带的,用于像X服务器发送消息。比如像桌面发送一个F5刷新页面:xdotool search --class nautilus key F5 或xdotool search --class caja key F5caja nautilus由不同的界面系统决定GUI程序不从其标准输入中读取,而是从X服务器获取其输入。可以用xdo...
2020-03-25 11:36:15
2416
原创 如何在Shell脚本中嵌入Python脚本
如何在Shell脚本中嵌入Python原shell脚本test.sh:#!/bin/bashfunction main(){ echo "$@" exit 0}main "$@"./test.sh t1 t2 t3执行结果:username@Computer:~$ ./test.sh t1 t2 t3 t1 t2 t3嵌入单行的python,比如切割个字符串啥的#...
2020-03-20 18:44:57
7294
原创 error: undefined symbol: std::__cxx11::basic_string和std::__1::basic_string
undefined symbol: cv::imwrite(cv::String const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator > const&)
2020-03-09 15:48:38
31852
7
原创 dpkg-deb: error: archive 'xxxxx.deb' has premature member 'control.tar.xz' before 'control.tar.gz'
安装dpkg报错:dpkg-deb: error: archive 'xxxxx.deb' has premature member 'control.tar.xz' before 'control.tar.gz' ,giving up这个问题的原因是:dpkg无法解析tar.xz格式的control.tar.xz文件。解决方案:更新dpkg即可,这是dpkg工具的bug,只在旧版的dp...
2020-03-04 15:09:33
14328
2
原创 xz 多线程压缩支持详解
XZ多线程压缩支持详解xz的旧版不支持多线程压缩。需要下载编译新版的xz(支持 -T参数的版本)我这里是 5.2.4使用xz进行压缩:xz -9 -k -z release.tar使用xz进行多线程压缩:xz -9 -T 12 -k -z release.tar但是使用时你会发现,很多时候使用-T参数不能全核编译,我在一台6核12线程的机器上,压缩一个1.2G的文件。使用-T -9 也...
2020-03-02 14:16:52
7249
原创 Python3 Gearman 使用
网上很多资料对python gearman的使用都是用的gearman模块,然而这个模块仅支持python2.x ,使用python3的pip install安装,会因为不支持的python2语法报错,根本无法使用。 想用python3的资料特别少。安装首先先安装gearman:sudo apr-get install gearman libgearman-dev安装python3对应的...
2020-02-18 16:19:23
1963
原创 g++编译详解
g++编译详解资料准备:为了方便演示和讲解,在这里提前准备好几个简单的文件:test.cpp test.h main.cpp 文件内容如下:main.cpp//main.cppint main (int argc, char **argv){ return 0;}test.h//test.h#ifndef _TEST_H_ #define _TEST_H_ ...
2019-12-24 18:50:20
50163
9
原创 Linux下如何多线程打包
文件结构data # 待打包的文件夹├── DEBIAN # 这里放着各种安装包的描述、配置文件,还有安装前后执行的脚本等│ ├── control│ ├── copyright│ └── postinst├── opt # 安装目录下的相对内容├── etc # 安装目录下的相对内容└── usr # 安装目录下的相对内容打...
2019-12-12 11:01:06
2159
原创 Ubuntu 16.04 下编译dpkg和rpm
LUA_LIBS="-I/usr/lib64" LUA_CFLAGS="-I/usr/bin"libnss3-dev libnspr4-devgit clone https://github.com/rpm-software-management/rpm.git2016 git status2017 ls2018 cd rpm/2019 ls2020 clear2021...
2019-12-11 20:47:43
2450
原创 PHP安装gearman扩展编译报错:Makefile:194: recipe for target 'php_gearman.lo' failed
编译gearman-php报错:Makefile:194: recipe for target ‘php_gearman.lo’ failedubuntu下安装PHP7,编译安装gearman扩展时,make遇到这个报错。按照网上的教程,从wget http://pecl.php.net/get/gearman-1.1.1.tgz下载下来的版本无法编译通过,查询之后这个链接显示:php7暂时还...
2019-11-13 20:07:43
1278
原创 Ubuntu 16.04 安装使用最新版QQ 微信 (deepin-wine)
Ubuntu 16.04 安装使用最新版QQ 微信 (deepin-wine)技术简介这次安装软件的并非官方的版本,而是在x86Ubuntu上基于wine安装的QQ和微信2008年出现了一种名为wine的技术,这种技术在Linux平台实现了部分Windows的系统API和库,让用户可以在Linux端无缝使用Windows端的应用程序。后来国内深度社区将wine做了很好的封装并且在wine上...
2019-11-12 12:02:41
5913
6
原创 终端输入错误命令却得到一个python的报错
错误场景:更新系统Pythonubuntu16.04,系统自带python2.7.12和python3.5.2。 因为写代码要用到协程相关的库正好支持最低在python3.5.3。 于是下了个Python3.6把系统的python更新了。更新完成后系统终端出现了这样莫名其妙的问题:threedog@ThreeDog:~/python/Python-3.6.5$ dsadadTraceback...
2019-11-06 16:32:10
8803
10
原创 Linux中已安装软件的版本信息存放在什么地方?
采用dpkg包管理的系统/var/lib/dpkg/status/var/lib/dpkg/status-old这两个文件中,存放了系统中所有已安装的包的信息。通过命令dpkg -l 等命令查看的内容就是来源与这个文件。下面节选了一段我系统中mysql-server的安装包信息Package: mysql-server # 包名 dpkg -l 命令的第一列Status: inst...
2019-10-11 14:20:27
2441
原创 dpkg -l 命令详解
dpkg -l 命令详解dpkg -l 命令会列出系统中所有已安装的软件包信息。结合grep,可以过滤出自己想要的内容。输出第一列一般为两个字母,分别代表(期望状态和当前状态)期望状态标识:未知(u)安装(i)删除®清除§保持(h)当前状态标识:未安装(n)已安装(i)仅存配置(c)仅解压缩(U)配置失败(F)不完全安装(H)触发器等待(W)触发器未决(...
2019-10-11 11:22:48
24568
2
原创 g++编译报错:specialization of template.... in different namespace解决方案
specialization of template… in different namespace解决方案同样的代码,使用clang++编译通过,可是使用g++报错如下:error: specialization of 'template<class _Tp> struct std::hash' in different namespace [-fpermissive] clas...
2019-09-11 11:59:43
4891
1
原创 error: current translation unit is compiled with the target feature '-fsanitize=address' but the AST
使用cmake生成Makefile 编译C++项目时出现报错:error: current translation unit is compiled with the target feature '-fsanitize=address' but the AST file was not一般情况下,这个是由于两次编译时的flags不一样导致的。我这里首次执行cmake时,生成的flags....
2019-09-03 14:49:46
751
原创 Qt编译时出现GTK theme support ......no 解决方案
解决方案: 安装 libpng{}-dev的库sudo apt-get install libpng-devsudo apt-get install libpng12-devsudo apt-get install libpng16-dev上面三条视系统中的依赖版本,ubuntu16.04下使用的是libpng12一般libxxx库中安装的是.so文件而libxxx-dev库...
2019-08-30 15:59:01
924
4
原创 Linux Qt 加载 MySql “QMYSQL driver not loaded”
Linux Qt 加载 MySql “QMYSQL driver not loaded”查看是否存在MySQL的库在Qt的安装目录下~/ThreeDog/qt/5.7/gcc_64/plugins/sqldrivers/如果有的话查看库是否可用,ldd这里可以看到系统缺这几个库查看这几个库在系统中是否存在如果不存在sudo apt-get install opensslsudo...
2019-08-29 18:26:38
1470
原创 C++编译错误 :error: explicit qualification in declaration of xxx
explicit qualification in declaration
2019-08-29 18:08:24
4531
1
原创 200行Python实现效果逆天的连连看外挂
本文内容转自我本人的知乎回答:你看过/写过哪些有意思的代码? - 三级狗的回答 - 知乎 https://www.zhihu.com/question/275611095/answer/407984155 。转载请务必联系作者授权,并注明出处。博客里不能加小视频,上几张图展示下外挂的惊人效果,图中是将时间间隔设置为0的效果。前言python写的连连看外挂,图中时间间隔设置成了0,效...
2019-07-19 18:26:54
3588
3
原创 Golang交叉编译中的那些坑
最近两个月,一直在搞项目的国产化移植,把golang开发好的程序,运行在国产化平台上,操作系统基本都是基于Linux,但是CPU架构除了x86,还有ARM和MIPS,我们平时的Golang都是运行于x86 && x64 架构的CPU上,因此移植过程中遇到了好多坑,记录于此。Golang交叉编译交叉编译在X64上的ubuntu 16.04系统上编译出其他平台的可执行程序查...
2019-07-04 21:32:08
14796
6
原创 Golang交叉编译报错:go.o: compiled for a big endian system and target is little endian
Golang在X86下交叉编译龙芯平台程序报错go.o: compiled for a big endian system and target is little endian编译命令:CGO_ENABLED=1 GOOS=linux GOARCH=mips64 CC=/opt/tool/mips64el-unknown-linux-gnu-gcc go build -o bin/xx...
2019-06-28 19:54:16
1996
原创 ARM下源码编译etcd
ARM下源码编译etcdetcd由go语言编写,编译结果是一个二进制的可执行文件,因此不能跨平台。网络上没有找到ARM直接可用的etcd可执行程序(其实有,只是要积分才能下)。所以考虑在ARM平台下直接源码编译出etcd,需要提前准备ARM下的Go环境。可以直接在go的官网下载arm版本的压缩包,解压即可用。一、 下载etcd源码# 可根据自己的需求将3.2.0更换对应版本wget htt...
2019-06-12 18:26:05
3728
原创 修改Docker MySQL官方镜像字符集UTF8
通过MySQL提供的官方镜像启动MySQLdocker run -p 0.0.0.0:3306:3306 -e MYSQL_ROOT_PASSWORD=toor -d mysql:5.7参数-d 开启 deamon模式-p port 映射端口内部本地3306到容器的3306-e environment 设置密码 toor编码问题采用默认的 MySQL Docker 官方镜像启...
2019-06-11 10:50:22
5970
原创 Golang 编译报错: undefined: CObjects
Golang 编译报错: undefined: CObjects项目中使用了cgo,编译命令默认没有使用cgo导致报错,解决方案在编译命令前加上CGO_ENABLED=1# 编译命令CGO_ENABLED=1 go build -o bin/xxx xxx.go...
2019-05-24 11:03:26
2116
Deepin.tar.gz
2019-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人