- 博客(202)
- 收藏
- 关注
原创 Python:卷积神经网络基础
卷积神经网络(CNN)受到人类视觉皮层的启发,在从结构化网格数据(如图像)中提取特征的空间层次结构方面特别有效。图像自然地被表示为多维阵列-通常是具有对应于高度、宽度和颜色通道的维度的3D张量(例如,红色、绿色和蓝色)。这种结构化表示使图像成为CNN的理想候选者,CNN利用卷积运算来有效地处理输入数据的局部区域。尺寸为4x 4x 3的红绿蓝(RGB)图像的3D张量。与将输入数据视为平面向量的传统神经网络不同,CNN通过应用在图像上滑动的过滤器(或内核)来保留数据中的空间关系。
2025-03-23 10:48:54
774
原创 “深入浅出”系列之QT:实战篇(4)MultimediaPlayer视频播放器
通过这个项目,你将学会如何利用Qt强大的和等核心组件,从零开始构建一个功能完整的视频播放器。我们不仅会实现播放、暂停、进度控制等基础功能,还会深入探讨如何优化播放性能、支持多格式解码,甚至添加字幕、音量调节和全屏播放等进阶特性。无论你是想夯实Qt实战能力,还是为简历增添一个亮眼项目,这个实战教程都将为你提供清晰的思路和可复用的代码框架。
2025-03-22 10:13:59
410
原创 Python:CNN卷积神经网络发展
在CNN出现之前,训练神经网络对图像进行分类的标准方法是将其扁平化为像素列表,并将其通过前馈神经网络输出图像的类别。扁平化图像的问题在于图像中的基本空间信息被丢弃。1989年,Yann LeCun和他的团队推出了卷积神经网络--过去15年来计算机视觉研究的支柱!与前馈网络不同,CNN保留了图像的2D性质,并且能够在空间上处理信息!
2025-03-21 15:45:05
650
原创 Python:ResNet
在上图 SE 模块中,首先会经过 Ftr 操作,该操作是通过一系列的卷积操作,得到了通道数为 C 的特征;式中, s 是由激励操作得到的通道重要程度信息, z 是由挤压操作得到,1W z 代表了全连接操作,其中1W 的维度是 C/ r ×C , r 代表一个缩放参数,作者取值为 16,是为了减少通道数和计算量,1W z 的维度为1×1×C/ r ,再经过 Re LU 函数,再与维度为C×C/ r 的2W 进行相乘,最后经过 sigmoid 函数,得到输出维度为1×1×C 的 s。SE 模块如下图所示。
2025-03-21 15:44:01
801
原创 Yolo目标检测:从传统图像算法到深度学习的发展历程
对计算机而言,能够“看到”的是图像被编码之后的数字,它很难理解高层语义概念,比如图像或者视频帧中出现的目标是人还是物体,更无法定位目标出现在图像中哪个区域。目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别,并在该目标周围绘制边界框,标示出每个目标的位置,如所示。图1 图像分类和目标检测示意图图1(a)是图像分类任务,只需对这张图片进行类别识别。图1(b)是目标检测任务,不仅要识别出这一张图片中的类别为斑马,还要标出图中斑马的位置。
2025-03-20 22:15:52
630
原创 “深入浅出”系列之C++:消息中间件
ActiveMQ是Apache软件基金下的一个开源软件,支持JMS规范,支持 OpenWire、STOMP、AMQP和MQTT多种通信协议,能够进行持久化,支持Java 、C/C++、.NET、Perl、PHP、Python、Ruby等多种客户端语言,有监控,有管理界面,但是社区活跃度相对不高,有用户反馈会有丢失消息的情况。RPC是指远程过程调用,也就是说两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的处理业务,处理完后然后在A服务器继续执行下去,把异步的消息以同步的方式执行。
2025-03-20 21:04:36
693
原创 杂谈篇:(23)IT架构师的未来-哪些技能将决定你的职业高度?
例如在电商行业的大型促销活动中,像 “618”“双十一” 这样的关键节点,每秒都会产生海量的数据交互和交易处理,IT 架构师所设计的系统架构要能承载住如此高并发的业务压力,保障系统平稳运行,而这背后也意味着他们能够在这样的大舞台上展现自己的专业价值,积累丰富的经验。架构师需要了解这些数据之间的内在联系、数据的流向以及不同业务场景下数据的使用方式等,进而在设计 IT 系统时,构建出高效的数据存储结构、合适的数据库选型以及便捷的数据查询和分析机制,保障系统对业务流程中数据处理的高效性和准确性。
2025-03-20 20:58:25
897
原创 杂谈篇:(22)一个编程十年的感悟
马尔科姆·格拉德威尔的“一万小时定律”指出,持续投入一万小时的努力,足以使人在某个领域达到专家水平。按照每周20小时的练习量计算,每天大约需要投入3小时,十年左右才能达成这一目标。从我写下第一行C代码算起,至今已超过十年。期间,我编写了超过三十万行代码,其中一部分在微信写的代码,曾服务过超过一亿的用户。尽管写了这么多代码,我仍不敢自诩为专家。但多年的“打工”生涯,日复一日地敲代码,也让我积累了不少感悟。“工多艺熟”,这些感悟既是对编程技术的思考,更是对职场人生的体味。
2025-03-20 20:57:40
1124
原创 “深入浅出”系列之C++:100个C++开源项目
SQLiteCpp是一个对Sqlite数据库进行C++封装的开源库,代码行数约2,500行。它提供了简洁易用的接口,使得在C++项目中操作Sqlite数据库变得轻松自如。
2025-03-20 20:53:43
1054
原创 “深入浅出”系列之C++:计算机组成原理
输入设备就是计算机的"耳朵",接收你的指令CPU就是计算机的"大脑",处理所有任务内存是"临时记事本",断电就会忘光光存储设备是"档案室",永久保存你的资料输出设备就是计算机的"嘴巴",告诉你处理结果这五大"家族成员"通过"总线"这条高速公路紧密联系,共同完成从接收指令到输出结果的全过程。就是这么简单!最有趣的是,理解了这些原理后,你会发现:电脑卡了?肯定是某个"家族成员"忙不过来了升级电脑?就是找出最弱的"家族成员"进行强化。
2025-03-19 16:04:55
766
原创 “深入浅出”系列之Linux篇:(15)TCP 和 UDP 可以使用同一个端口吗?
TCP 和 UDP 可以使用同一个端口吗?可以!但这只是冰山一角。通过我们的讨论,你现在知道了:TCP 和 UDP 的端口表是完全独立的(就像 DNS 同时用 TCP 和 UDP 的53端口)客户端 TCP 端口被一个进程占用后,其他进程就别想用了(至少在同一IP下)客户端 UDP 端口有两种用法,不绑定时很随意,绑定后很专一服务端 TCP 进程通过 SO_REUSEADDR 可以玩出高可用的花样服务端 UDP 进程用 SO_REUSEPORT 能实现真正的端口共享和负载均衡。
2025-03-19 15:55:06
854
原创 “深入浅出”系列之QT:(20)在Qt中集成VLC进行视频播放与处理
在多媒体开发领域,视频播放器的选择至关重要。VLC作为一款功能强大的开源播放器,支持多种视频格式和流媒体协议,并且提供了丰富的SDK供开发者使用。尽管市面上有许多优秀的播放器,但由于缺乏SDK支持,限制了它们的广泛应用。本文将介绍如何在Qt中集成VLC进行视频播放,并展示如何通过VLC的回调机制获取视频数据进行进一步处理。
2025-03-19 15:52:26
271
原创 “深入浅出”系列之QT:(19)交叉编译
交叉编译ffmpeg命令:./configure --prefix=host --enable-static --disable-shared --disable-doc --cross-prefix=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux- --arch=arm --target-os=linux。任何编译器包括嵌入式编译器,为了确保环境正常,你可以先查看对应的编译器版本是否ok,g++ -v arm-linux-g++ -v。
2025-03-19 15:51:19
237
原创 杂谈篇:(4)Qt/C++大佬专区开发经验
关于Qt事件传递的一个说明:通常写win32程序,鼠标消息应该是直接发给指定窗口句柄的,指定窗口没有处理就会转化成透传消息,交给父窗口处理。你在一个普通文字label上点击,父窗口也能收到鼠标事件。Qt应该是所有消息都发给了顶层窗口,所以事件分发逻辑是自己处理,主窗口收到鼠标事件然后Qt自己分发给指定子控件,QEvent会有ignore或者accept表示自己处理了没有,例如鼠标点击事件,事件分发器发现没有被处理,数据重新计算然后分发给父窗口。这样父窗口收到的事件坐标就是基于自己窗口内的。
2025-03-19 15:49:44
711
原创 杂谈篇:(19)用 Qt 不怕被告吗?
看见很多人好像推荐用 Qt 开发,但 Qt 做商业软件 ,LGPL 好像是要开源,或给钱商业授权,不然会收到律师函。你们都是怎么样。
2025-03-18 22:50:07
549
原创 杂谈篇:(18)Qt未来前景如何?
Qt的前景和C++是类似的,大红大紫肯定不可能,但也不会死。这是非常有诱惑力的。Qt的表现(主要是待遇方面)一直不是非常亮眼,但是提供的岗位数量较多,嵌入式、医疗、智能 硬件等等,我统计过与C++相关的岗位技术栈排名第一的是linux,第二就是Qt。这么说吧,除非下一次工业革命,突破图灵、冯诺依曼计算机体系,C++是不可能垮掉的, Qt的生命力,在国内我觉得起码还有10年高峰期,虽然这个高峰比不上这些年的风口。我有一次用反编译程序,打开了一个C++写的程序,反编译得到的汇编语言和源码一对照,对应的非常好。
2025-03-18 22:48:01
562
原创 “深入浅出”系列之Linux篇:(16)gcc/g++/gdb
gcc,全称 GNU Compiler Collection,是一款强大的开源编译器,支持多种语言(C、C++、Objective-C 等)。但今天,我们只专注它在C/C++ 编译领域的表现。把你写的代码从“人话”翻译成机器能看懂的“机器语言”。即:将你的程序代码编译成计算机能够识别的机器语言(01机器码)。预处理:处理宏定义、头文件、条件编译等。编译:将预处理的代码转成汇编代码。汇编:把汇编代码转成机器代码(生成目标文件)。链接:将目标文件生成可执行文件。开发阶段-O0或-O1,方便调试。生产环境。
2025-03-18 22:41:43
768
原创 “深入浅出”系列之Linux篇:(14)Linux C/C++ 环境搭建
装个 Valgrind,跑一遍程序,就能快速找到内存泄漏问题。简单高效,C/C++ 开发必备!
2025-03-18 22:40:48
1055
原创 “深入浅出”系列之C++:CMake进阶
CMake 是一个跨平台的项目构建工具,通俗点说,它会帮你生成 Makefile 或其他编译系统需要的构建文件。在实际开发中,你可能会遇到这样的情况:某些库并没有安装在系统默认的路径(比如/usr/lib或),导致无法找到它们。这时候,就需要告诉 CMake 应该去哪里找这些库。在运行时,CMake 会按照以下顺序依次查找库:1、用户指定的提示路径如果在中使用了HINTS或PATHS参数,这些路径会被优先考虑。2、全局配置的路径。
2025-03-18 22:37:04
884
原创 “深入浅出”系列之C++:Makefile
Makefile 就是一个编译指挥官,你把编译规则写在里面,之后用一条简单的命令make,它就会按照规则自动完成所有的编译任务。打个比方,你是项目经理,Makefile 就是你的笔记本,记录着项目的“施工计划”:每个目标(比如可执行文件main)的来源(哪些源文件);这些目标要用什么命令生成;有哪些需要重复利用的部分(比如中间文件*.o一句话:Makefile 帮你自动化处理那些又多又烦的编译流程!在写 Makefile 时,如果规则中有重复的编译逻辑,比如把.c文件编译成.o文件,一直重复写。
2025-03-18 22:32:58
769
原创 杂谈篇:(17)现在QT好找工作嘛?
leetcode不是那么重要,因为用Qt的公司所在行业不太一样,有不一样的技术门类,做Qt不像互联网行业,没有前后端分离这个说法(这里不是指界面与逻辑的分离),并不是说我光会写个软件界面就可以了,它与对应行业的功能实现是紧密相关的,以WPS为例,这算是国内使用Qt的代码量最大的项目了,难道绘制一个表格直接用Qt原生的组件吗?Qt的优势在于跨平台,工业应用领域没有敌手,工作很容易找,windows桌面开发差点意思,因为可替代的太多了,比如c#+,php等。基本上学会上面的知识,就可以满足大部分基础qt岗位。
2025-03-18 17:10:21
402
原创 Python:深度学习模型提升的的关键技术
这些方法各有特点,有的简单直接,有的灵活高效,掌握它们,你就能轻松应对各种复杂的特征融合问题!例如,在编码器-解码器结构中,可以将编码器中的低层特征(包含更多细节信息)与解码器中的高层特征(包含更多语义信息)进行拼接,从而增强解码器的感知能力。通过学习一组权重,对不同尺度的特征进行加权,从而提高重要特征的响应。将输入特征通过不同尺度的池化操作(如全局平均池化),生成多尺度的特征表达,然后将这些特征上采样并拼接在一起。U-Net、FPN(特征金字塔网络)等分割网络中常用拼接来融合编码器和解码器的特征。
2025-03-16 11:15:14
687
原创 杂谈篇:(21)2025年的C++职业方向:为什么学了C++找不到工作?
在当今竞争极为激烈的编程领域当中,C++作为一门颇具经典性且极为强大的编程语言,一直以来都占据着十分重要的地位。无论是在嵌入式系统,还是在金融科技,亦或是在游戏开发等领域,C++都凭借它高效的性能以及强大的功能,发挥着不可替代的作用。不过想要在C++领域崭露头角,成为顶尖开发者,就得全面掌握多个核心领域的知识,还要积累丰富的项目经验,得知道怎样优化简历以及怎样应对面试。在此期间,必须紧跟行业趋势,持续学习并提升自己。接下来我将结合多年的C++编程经验,为大家详细介绍C++开发者的进阶之路。
2025-03-16 11:08:48
1033
原创 Python:从0开始搭建部署YOLOv8,环境安装+推理+自定义数据集搭建
ultralytics/README.zh-CN.md at main · ultralytics/ultralytics · GitHub(官方的中文说明页)Windows10系统pytorch、cuda11.0、cuDNN安装_吨吨不打野的博客-CSDN博客_cuda版本11一定要安装11吗。卸载项目依赖为你安装CPU版本pytorch,打开pytorch官网,使用对应命令下载GPU版本。二、cuda、cudnn、Pytorch等环境安装与卸载。cuda 和 cudnn 库的卸载与安装 - 知乎。
2025-03-16 10:53:53
735
原创 “深入浅出”系列之QT:(16)在Qt开发中处理与硬件交互
在Qt开发中处理与硬件交互相关问题时,开发者需要掌握Qt的核心机制(如信号与槽、事件处理),了解Qt提供的硬件交互API(如QSerialPort、QCanBus、QBluetooth等),并根据实际需求选择合适的实现方式(如通过HAL、使用设备驱动接口、直接操作硬件寄存器、使用GPIO接口等)。通过合理的代码设计和实现,可以确保Qt应用程序能够有效地与硬件设备进行通信,实现预期的功能和性能。
2025-03-12 18:07:49
871
原创 “深入浅出”系列之杂谈篇:(16)学习编程为何会遇到困难?
初学者乍一看感觉民间博客更清晰简单,于是向凡人学习,但有时候提炼的文字缺少了真谛,导致他的读者必然是一知半解的,只能从官方文档重开。随着不断发展,积极维护的官方文档可能变好,但一部分地方的官方文档则受到菜鸟编著者的污染,而这些编著者的大脑本身更早就受到污染(可能来自他们的菜鸟老师,或者他们写东西的时候也采纳了被污染的网络文本)。于是你查了一下,但搜索引擎不会给出太匹配的答案,某些人可以将信将疑地 睁只眼闭只眼地就 “不管了,先试试,成了”,但有些“癖”的人,则深深感到担忧,为什么程序可以执行?
2025-03-11 09:49:08
355
原创 “深入浅出”系列之杂谈篇:(15)CMake是不是阻碍了C++的发展?
C++的常用语法倒是能学会,但是CMake我是真的搞不定,花了很多时间去学它,但还是不得要领。
2025-03-11 09:47:55
236
原创 “深入浅出”系列之杂谈篇:(13)为什么工业软件开发一般用的都是QT?
界面刷新帧率10fps还是要的,再配上复杂的图形绘制,用户时不时的还会瞎操作几手,基本就得直接上native接口了,我们用下来的感觉,qt都不大顶得住,可能得换opengl或者dx。我在开发一个基于windows的工控机的软件 本来用C# wpf开发的 里面有个视频播放的要求, wpi的视频播放器控件使用很简单,弄好后在我自己电脑上运行没问题 放到工控机里面就播放不了了估计这个视频播放器没有自己的解码器,能不能支持很多格式也不好说。就我司的情况而言,能跑安卓的机子基本都会考虑编个安卓上去。
2025-03-11 09:47:09
602
原创 “深入浅出”系列之杂谈篇:(12)哪些领域必须用c++而不是c#?
我不喜欢用Linux搞Ul,适配太麻烦 了,尤其涉及多媒体,简直要人命,上UI直接用安卓就好了嘛,用Linux搞多媒体完全是在重复造轮 子,脱裤子放屁。用 c# 做分布式的计算,调用 AI,整合别人的 SDK 等等,在其它语言里面从 github 上面下几个包搞定的事情,用 c# 累死人。我现在主要用WIFI搞内网通信,功耗跟CAN差不多,传输距离也差不多,好处是传输速度比CAN 快,成本也比CAN便宜,部署方式灵活多变,民众接受度高,不用写说明书,小学生都会用。搞个内网穿透+,就能上外网。
2025-03-11 09:45:03
275
原创 “深入浅出”系列之C++:(38)基于redis实现分布式锁
分布式锁库的使用:除了自定义实现,可以考虑使用现有的分布式锁库或框架,如 Redisson(虽然主要是 Java 的,但有类似的 C++ 库)或者其他专门为 C++ 设计的库,以简化开发并确保实现的可靠性。多 Redis 实例(Redlock):为了提高分布式锁的容错性,可以实现 Redlock 算法,该算法在多个独立的 Redis 实例上获取锁,以减少单点故障的风险。这样,进程 B 在进程 A 持有锁期间无法获取锁,但在进程 A 释放锁后,进程 B 成功获取并释放锁。具体结果取决于启动顺序和锁超时设置。
2025-03-11 09:34:57
1156
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人