自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 资源 (12)
  • 收藏
  • 关注

原创 【Qt流式布局改造支持任意位置插入和删除】

最近在做一个需求需要流式布局,虽然官方example里有一个流式布局范例,但是不能满足我的需求,我需要支持插入的流式布局,所以就改造了下。1、总体难度还行2、代码从官方示例中改进而来,基本能满足我的需求。

2024-11-23 11:16:20 438

原创 【不同平台Qt程序打包发布方法】

Qt程序开发完了面临一个很重要的步骤,那就是如何打包发布。Windows上只要有Inno Setup、Qt Installer Framwork等;Linux主要有AppImage、Deb、Rpm等。今天这篇文章就来讲一讲,介绍下我常用的那些方法。提示:方法很多,只列举一些1、第一种万金油,但是有点LOW2、第二种稍微高大上一点,但是不完美。

2024-10-24 14:24:05 752 1

原创 C++几种工厂模式和实现实例

常写C++代码的人一定对于工厂模式不陌生,今天这篇文章就介绍下几种常见的工厂模式并说明使用场景简而言之,工厂模式是一种设计模式,是对开闭原则编程的一种展现。所有的示例代码基于C++17版本,如果你用了C++11,就会报错,C++11没有std::make_unique这个方法(在memory头文件里)。1、根据个人的场景决定选用哪种方法,除非必要尽量不要使用简单工厂,违反开闭原则,容易引发问题。

2024-10-13 17:06:44 724

原创 【C++几种单例模式解读及实现方式】

单例模式几乎是每种语言都不可少的一种设计模式,今天就针对C++语言来解读下集中单例模式,并给出代码说明。1、C++11以上版本优先使用米尔斯单例,比双重检查锁性能强2、其他场景建议双重检查锁。

2024-10-13 14:41:31 483

原创 Clion使用vcpkg管理C/C++包

Linux上的库基本都可以通过apt或yum等包管理工具来在线安装包,好用是真的好用,无独有偶,windows上也有类似的包管理工具,那就是今天的主角vcpkg,用好vcpkg可以省很多事。vcpkg可以单独使用,也可以集成到IDE,今天就基于Clion讲解。1、总体我觉得是很好的,配置比apt麻烦点,但至少解决了缺乏包管理器的问题2、像那些诞生于类Unix的包比如ffmpeg在windows上也可以直接使用了,如果自己编译的话麻烦不小。

2024-09-21 14:10:02 3615

原创 Jetbrains开发工具使用通义灵码

之前用过tabnine等AI工具,tabnine还行,有免费版,但是效果有限,属于机械式地补全。pro版我没试过。最近发现上线了通义灵码,这个是阿里出的,感觉效果可以,至少超过tabnine免费版了。目前下载量也是一直在增长,重要就是目前免费。1、大家自行体验吧。

2024-09-18 22:13:08 897

原创 Windows使用ffmpeg获取麦克风数据

最近突发奇想,既然ffmpeg那么好用,为什么不能拿到Windows上来用呢?由于ffmpeg官方提供的是二进制文件,不是开发库。之前尝试过很多次移植都失败了,当我准备放弃的时候,突然一次意外发现让我重燃希望。所以ffmpeg在windows上到底好不好用呢?让我们拭目以待吧。ffmpeg:7.01、美中不足,但是对于快速开发足够了,毕竟我觉得ffmpeg还是比自带的好用一些,不知道是不是错觉。

2024-09-03 21:41:31 1159

原创 Windows上使用Inno Setup将应用程序打包成安装程序

有时候我们开发出来的软件是.exe文件+一些dll或配置文件,正常移交给客户就不太妥当了,一般客户需要的都是.exe这种压缩后的安装程序。今天九交给你们一个方法打包安装程序。1、普通的用法够了,其它的用法根据个人需要吧。

2024-09-03 20:44:46 2077

原创 Windows上MSYS2的安装和使用

MSYS2这个工具我是越用越喜欢,很多东西放在Linux上如鱼得水但是放在Windows上就没那么好用,比如ffmpeg,opencv等直接引用就行了,这个工具真的很省事。接下来带你们看看它的妙用。1、好好研究确实妙用无穷。

2024-08-29 23:18:06 2066

原创 交叉编译Qt5.12.8附带编译opengl

最近有个项目使用Qt5的ARM64版,有一种方法是直接在板子上安装Qt5,这种方法最简单,但是板子效率低一些,编译慢,画面也不太流畅所以才切换到交叉编译方向来。这篇文章基于Ubuntu-20.04编译,板子的系统也是20.04,接下来我会给出我的编译心得,包括一些注意事项,请仔细查看,能少走不少弯路。工具:aarch64-linux-gnu-91、本身并不难,找到诀窍才是重要的,选不对版本和工具链够头疼的,还是那句话:尽量维持环境一致性。

2024-08-25 22:29:46 2278 10

原创 mpv播放器在rk3399上配置硬解码

mpv播放器应该来说相当轻量了,但是我研究了下文档发现它确实内有乾坤,可能没想象中那么简单。接下来我就来说说怎么在rk3399上使用mpv硬解码播放视频。虽然官方给了我们gstreamer+mpp实现硬解码,不过这显然是不成熟的方案,对于实际应用上还差点距离。要想真正封装成应用还需要借助SDL2或QT5等工具进一步包装,这个以后可以给一个示例。gstreamer+mpp调用硬解码播放视频注意:这个方法理论上适用于所有使用MPP解码的平台,包括RK3288,RK3588等。

2024-08-23 22:06:16 1196 6

原创 查看linux开发板gpu使用量

有时候我们开发的时候可能需要看下gpu占用,安卓就很简单了,linux稍微有点麻烦,需要开下几个配置文件,这几个文件会随着gpu运行状态的变化内容发生变化。不同的板子可能略有差别,但差不多。1、可以写个脚本或程序将数据图形化2、读不要权限,写要权限。

2024-08-22 09:58:15 355

原创 解决rga拷贝数据慢的一个方法

最近接了一个项目,里面要用到解码,然后切割,旋转和转成rgb。我选择使用mpp+rga形式解决,但是有个问题,rga处理的是无缓内存,将转好的rgb复制过来耗时巨大,思来想去还是要借用rga本身的能力将无缓内存自动复制到有缓内存里面,这个功能确实很好。1、rk3399整体rga性能偏弱,绞尽脑汁也提升不了多少,终究是廉颇老矣。

2024-08-19 21:33:14 423

原创 Icon theme “elementary“ not found.或Icon theme “gnome“ not found.解决

运行Qt5图形的时候报的错,问题很简单,缺少两个theme包,直接安装就行了。

2024-08-18 19:42:27 285

原创 解决firefly rk3399使用ffmpeg硬解码rga报错的问题

注意:这篇文章只对firefly rk3399有效,可能对rk3568和rk3588有效!如果你不是Ubuntu-20.04你最好刷成Ubuntu-20.04,理论上对Ubuntu-18.04也是适用的,只不过我需要使用Ubuntu-20.04,所以就在Ubuntu-20.04上测试了。

2024-08-18 11:04:33 715

原创 firefly rk3399使用ffmpeg硬解码

注意:这篇文章仅针对firefly设备,我在rk3399上操作成功,理论上也适合rk356x或358x系列的,我手上没有这些设备,所以没法测试。今天这个方法比较简单,使用起来也有些限制,但是对于很多人来说够用了。1、实测1080p解码是5-6ms一帧,绝大多数场景够用了。

2024-08-18 10:43:01 1244

原创 C++ Poco框架判断请求方式是GET还是POST

作为服务器开发者GET和POST等Method还是要区分的,不同的请求方法要走不同的逻辑。这篇文章很简短但是基于另一篇文章,如果你已经了解Poco了就不用看了。手把手教你使用Poco框架开发服务器应用1、看似简单的一个小函数却是决定成败的关键。

2024-08-09 22:34:59 411

原创 waveInAddBuffer死锁的大雷解决

从来没有一个bug让我这么抓狂,足足查了3天3夜,官方文档翻了一遍说的基本无用。具体项目就是使用waveIn系列函数获取windows系统麦克风数据,虽然windows上有好几种方法获取麦克风数据,我最终还是选择了它。

2024-08-09 22:17:47 890

原创 C++ Poco服务端框架中JSON的使用

上面一篇文章教你学会了Poco开发服务端应用,这个教程教会你使用JSON。一般传JSON的时候都是POST请求,很少有人把JSON序列化放在GET请求里,不安全。如果你不会开发服务端就先看下下面的文章,通俗易懂。我直接开门见山了,默认环境已经有了。手把手教你使用Poco框架开发服务器应用1、最后的总结才是最核心的部分,特别适合初学者,能少走很多弯路。

2024-08-08 21:26:26 960

原创 手把手教你使用Poco框架开发服务器应用

最近接触一个服务器项目,想来想去还是用C++来开发,C++应该来说没有像Spring那么顶顶大名的的框架,但是好的框架还是有的,要不然纯手写服务器要开发到什么时候。今天选的Poco就是相当不错的一个框架,不说多丰富吧,至少开发服务器用到的东西都有了。接下来从0开始教你使用Poco开发服务器应用1、Poco很强大我演示的只是冰山一角,后面我还会演示Poco的其它功能,今天的Demo只能说很简单。

2024-08-06 23:01:59 983

原创 解决Poco找不到MySQL::client的问题

最近在研究Poco,一个很强大的C++库,当我要使用MySQL的时候找不到,解决这个问题其实很简单,不需要大费周折。提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2024-08-02 18:03:55 459 1

原创 使用pulseaudio库简单获取麦克风数据

有时候我们需要在Linux系统上获取麦克风声音数据,也有些情况下我们需要多个应用同时获取麦克风数据或者一个应用同时获取多个麦克风的数据这些都是可以实现的,我们只要使用今天的主角就行了PulseAudio。1、这些是简单应用,还有复杂的以后再说包括混流等等2、可以随意打开任意多个client指向同一个麦克风设备,alsa默认做不到。

2024-07-30 18:18:33 323

原创 Powershell自定义带参数的别名

之前写了一篇文章定义别名让powershell尽可能接近Unix风格,增强两者的互操作性,今天给出方法可以定义带参数的别名。1、设置难度不大,功能受到一定的限制。

2024-07-29 18:50:23 325

原创 powershell自定义命令别名

有时候在windows上使用powershell时候常常苦于别名问题,像我这样的习惯Linux的命令的人感觉很别扭,所幸powershell自己内置了一些别名,但是还远远不够,特别是我希望定义一些和Linux上几乎一样的命令比如mkdir(powershell内置叫md)、mv(powershell内置叫move)这一类的就需要手动操作了。终于到这一步了,我这里使用的是powershell7,powershell2可能略有差别,但是我个人还是喜欢powershell7,所以所有的都是基于7的。

2024-07-26 18:52:18 954

原创 Windows系统上Clion配置Qt5

对于qtcreator我有很多地方需要吐槽,很多设计我觉得真的可以好好参考下jetbrains,因为我从eclipse时代过来的,这个软件让我感觉比eclipse还难用。对比起来jetbrains的基于JVM的骚操作也不是那么难以接受了。废话不多说,Clion配置Qt5除了form的功能没有(我没配出来),其它我感觉强过qtcreator,接下来有需要的小伙伴可以看下我的操作,假如你真的想这么用的话。1、这种方法配置很简单,Clion会处理大部分工作,比如一些基础库地引用,如果使用其他库直接追加就行了。

2024-07-26 17:17:08 549

原创 qtcreator优化代码补全功能

对比Clion感觉它这个代码补全不太好用,至少没有jetbrains全家桶智能。不过我们可以通过调整下参数来优化效果。1、有一定的提升,但是还是有明显的延迟,不知道是不是设计缺陷还是我漏了参数2、臂jetbrains系列有差距。

2024-07-25 18:45:39 517

原创 C++对象模型之绕过private权限修饰符

咱们都知道C++语言在创建类的时候data member(数据成员)和fuchtion member(函数成员),在访问权限上有3个分别是privateprotected和public,我们都知道声明为private的成员只能在类内部被使用,但是这是一定的吗?其实这个策略上有一个漏洞,要了解这个漏洞你要理解C++的对象模型,这篇文章只是给你演示怎么理解对象模型,绝不是教你学坏这种方法在实际开发中不可取!1、C++的内存模型是相对复杂的概念,如果你想了解原理又绕不过去。

2024-07-22 21:00:47 715

原创 Windows11配置WSL2支持代理上网

说起来本来这个功能我也不需要的,只是最近突然有个需求就顺便研究了下,WSL2默认的网络方式是NAT,即WSL2的网卡本身是虚拟网卡,通过以太网或WIFI的地址转换来上互联网,我试了下是不能直接走代理的,最近比较忙没具体研究,但是我用另一种方式实现了,下面介绍给需要的人。注意:这个方法只能是WIndows11系统,WIndows10系统上的WSL2缺少了一项功能导致不可用。1、方法总体没什么难度,NAT方式暂时没研究透,后续有时间再研究2、WIndows10系统不支持mirrored,暂时需要另辟蹊径。

2024-07-09 22:08:33 5644

原创 WSL2编译使用6.6版本内核

最近出了一件不大不小的事,WSL2的内核又更新了,上次编译还是在5.10版本时,当时为了解决不能使用USB设备的问题,想想已经是好几年前的事情了。最近微软发布了6.6内核,今天就带着不太会的小伙伴体验下6.6的内核。1、不难,甚至很简单,我每次都是一把成功。

2024-07-09 21:40:06 1735

原创 【解决Windows11系统Windows Hello不能使用的问题】

最近买了一个Windows Hello摄像头,结果跟我说找不到合适的摄像头,经过多方研究终于解决了,说起来也狗血,这事情本来不应该发生的,只因为我做了一件事情。1、我使用中遇到的所有问题都得到了解决,如果你有解决不了的问题可以留言我们一起研究。

2024-07-08 21:17:31 11143 9

原创 C++一文讲透thread中的detach和join的差别

无论哪种语言线程在绝大多数项目中都是会用到的,C++也一样,C++包装了一个std::thread类可以简化程序员的编程,但在使用过程中也要注意区分用法,否则可能适得其反。今天要讨论的就是单纯的thread的join(等待)和detach(分离)两种情景,让不懂得人看完之后茅塞顿开。不管哪种方式启动的线程都要保证资源的回收,特别是当心主线程早于子线程结束的情况。

2024-06-19 18:12:19 1197

原创 一文讲透C++的volatile关键字

我们平常使用C++编程的时候可能volatile关键字用的并不多,这个关键字特性在底层硬件编程中用的很多。表示变量可能在程序控制之外被改变,例如被硬件中断或者其他程序所修改。因此,编译器在每次访问该变量时都会重新读取它的值,而不是使用缓存的值。所以它的主要特性就是每次访问都重新读取它的值,而不是使用缓存的值。1、volatile主要用于底层硬件编程,平常编写代码不一定用得上。2、volatile也可能进cache或寄存器,不保证同步,没有原子性,不保证内存顺序。

2024-06-18 17:20:15 435

原创 gstreamer+qt5实现简易视频播放器

最近在研究mpp,通过gstreamer实现了硬解码,但是我在想我可能需要一个播放器,我之前学过qt5所以就选择了qt5来结合gstreamer开发一个简单的播放器。今天的环境基于Windows,后续会把Linux的也补上的。注意:基于QT5,我觉得因为全平台特性,可能QT5比MFC还是有优势,代码只需要小改就可以轻松移植。1、不算太难,复杂的应用还需要继续琢磨。2、Windows上还是简单,我最终的目标是在开发板上实现gstreamer+qt5+硬解码播放,开发板上没有统一的接口。

2024-06-18 11:24:16 1495

原创 dos格式文档转unix格式

有时候我们在windows上编译的文件(主要是文本文档)拿到Linux(类Unix系统)上会发现出了很多乱码,这是因为两个系统上默认的格式有差异,不要着急,简简单单改下就行了。1、很简单却很实用,建议在操作前进行转换省去很多麻烦。2、还有个工具叫unix2dos,默认安装了dos2unix就会伴生安装,其实就是转回来的意思。

2024-06-17 17:33:09 1047

原创 Windows11安装并使用Gstreamer-1.0

Gstreamer这个工具的重要性就不用多说了吧,在一些视频播放和解码领域大放异彩。以前更多的是在Linux环境下使用它,今天介绍下在Windows环境使用。1、方法蛮简单的,用来当测试工具蛮好的,和主流播放器还有差距。

2024-06-16 20:52:10 2408 1

原创 gstreamer+mpp调用硬解码播放视频

以前一直在MPP上开发硬解码推理,最近想弄一个盒子支持调用mpp硬解码播放视频的。我使用的盒子是firefly的rk3399,这个板子的cpu说强也不强,说弱也不算太弱。1、目前实现了视频播放,接下来研究chrome硬解码和播放器硬解码。

2024-06-06 21:05:07 1376

原创 C++结合ffmpeg获取声音的分贝值

最近面对一个需求,就是需要传递声音文件到模型里推理完成语音转文字,问题是我们使用的是麦克风啊,由于这个特殊属性就需要有一个合理的方法来判断声音的开始,声音的结束和声音的长度。像科大讯飞这样的库已经有这个功能了,如果遇到没有这个功能的怎么办,还得靠自己。方法其实有很多,我们这里使用根据分贝来判断,首先就需要获取到分贝。1、代码完全基于单声道音频,没对多声道进行处理,理论上除了参考值不同对多声道音频也是能处理的。

2024-06-04 15:18:24 1389

原创 香橙派 AiPro硬解码能力详细测试

拿到这块开发板的时候号称可以同时硬解码20路1080p@30fps,事实是否真的如此,让我们拭目以待。1、官方诚不欺我,事实如此。2、编码能力标称是20路1080p@30fps,有时间再测测。

2024-05-30 15:05:19 717

原创 香橙派 AiPro通过Micro USB接口进行串口调试

最近在玩一个新玩具香橙派 AiPro,除了通过SSH方式连接开发板以外,它其实还有个Micro USB口接到了UART上,可以仅仅借用一条数据线轻松进行串口调试。1、蛮简单的。

2024-05-28 20:30:27 1078 2

原创 香橙派 AIPro开发板上手测评

1、香橙派 AIPro为AI而生,如果你正在找一款合适的开发板,不妨考虑下。

2024-05-28 17:02:51 1988

WSL2-Linux-Kernel-linux-msft-wsl-6.6.y.zip

WSL2 Linux 6.6内核完整包

2024-07-09

Dell PERC perccli64

这个是用在Dell PERC 9上的perccli,只有64位版本。

2024-03-05

MegaCLI的多操作系统版本

支持Windows、DOS、Linux、Solaris、FreeBSD等种类的操作系统,Ubuntu的版本官方不直接提供,可以看看我写的文章,里面有移植方法。

2024-02-29

MegaRAID阵列卡管理软件

适用于Ubuntu-22.04,CentOS7等

2024-02-29

WinSW启动程序和配置文件

WinSW启动程序和配置文件,注册Windows服务使用。 WinSW wraps and manages any application as a Windows service. WinSW 3 can run on Windows platforms with .NET Framework 4.6.1 or later versions installed. For systems without .NET Framework, the project provides native 64-bit and 32-bit executables based on .NET 7.

2023-11-30

PulseAudio压缩包

PulseAudio(以前叫Polypaudio)是一个跨平台的、可通过网络工作的声音服务,其一般使用于Linux和FreeBSD操作系统。它可以用来作为一种简易改进的开放声音后台(ESD)替换。 PulseAudio运行于Microsoft Windows和POSIX兼容系统(如Linux和FreeBSD)。PulseAudio是自由软件,基于GNU宽通用公共许可证 (LGPL)2.1协议。

2023-07-12

get-platformio.py

platformio cli 配置脚本

2023-02-23

torchvision-0.4.2-cp36-cp36m-linux_aarch64.whl

网上大多数torchvision轮子包都是基于python3.7的,奈何我的环境是python3.6的不想安装3.7索性就自己编一个用(纯cpu,不支持cuda),与其搭配的torch-1.3.0请移步我的另一个资源

2020-06-17

torch-1.3.0a0+de394b6-cp36-cp36m-linux_aarch64.whl

之前做pytorch-1.3.0推理一直找不到基于arm64的板子的轮子包,索性自己编一个(基于cpu,不支持cuda),过程很艰辛经历了各种错误,这个版本是基于python3.6的,网上的大多数是基于python3.7的,适合当前python环境是3.6的而且不想增加3.7的人使用,与其搭配的torchvision-0.4.2请移步我的另一资源

2020-06-17

torchvision-0.3.0-cp36-cp36m-linux_aarch64.whl

网上pytorch基于arm版的whl还真的不是太好找,特别是基于python3.6版本编译的,与其搭配的pytorch-1.1.0请移步我的另一个资源

2020-06-17

torch-1.1.0-cp36-cp36m-linux_aarch64.whl

很多pytorch资源都是基于python3.7编译的,这样对于我们使用python3.6的用户来讲就很难找,这下好了我在arm64的板子上编译了cpu版的pytorch,与其搭配的torchvision-0.3.0版本请移步我的另一个资源

2020-06-17

tensorflow-2.0.0rc0-cp36-cp36m-linux_aarch64.whl

编了一夜才编译出来的tensorflow-aarch64-python3.6版本,现在tf2.0都是基于python3.7的,但是我们的系统环境是基于python3.6的所以就编了一个基于3.6的喜欢的留下小星星

2020-06-16

aarch64可用的bazel-0.24.1

这个是我在ubuntu18 arm64版编译出来的bazel-0.24.1版本,主要用于Tensorflow的编译工作

2019-11-30

aarch64可用的bazel-0.24.0

这个是我在ubuntu18 arm64 上编译出来的bazel-0.24.0版本,可以使用它来进行Tensorflow的编译

2019-11-30

tensorflow-1.10.zip

这个是我用bazel-0.15.0(aarch64)版编译出来的Tensorflow-1.10(aarch64)动态链接库,可以用在ubuntu18 arm64 上进行深度学习

2019-11-30

Disruptor.zip

这个是给安卓使用的Disruptor(线程撕裂者)演示demo,由英国证券公司LMAX开发的高并发队列,号称1核1秒600万单

2019-11-30

libDisruptor.a

这个是Distuptor(线程撕裂者)高并发框架的arm64 c++版本静态库,基于ubuntu18 arm64编译,需要boost库才能运行

2019-11-30

aarch64可用的bazel-0.15.0

ubuntu18 aarch64环境下编译出来的bazel-0.15.0,对应的tensorflow版本是0.12.0,费劲千辛万苦编译出来的,需要的可以下载下来试试,直接放到/usr/bin下增加权限sudo chmod a+x bazel就可以了

2019-11-25

空空如也

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

TA关注的人

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