C/C++开源库推荐
C/C++开源库推荐
主要都是平常用到的,包含windows开发、android开发、后台开发、音视频开发、深度学习等等最后还附带几个其他语言开发的比较好的项目
GUI开发
- qt 跨平台开发库,内部封装了各种跨平台工具,但是大多数情况下都被用作开发跨平台客户端
- imgui 基于opengl/dx编写的GUI库,挺简单也挺好用的
- electron C++/NodeJS开发的跨平台GUI库,感觉其实就是简化版的chrome并做了某些功能的增强,分为main/render两部分,ui布局全是html/js/ts/vue/jsx,轻轻松松就可以开发出一个很漂亮的界面,毕竟前端模板太多了,可以配套用nodejs调用C++那一套,回调回C++混合开发,对执行效率要求不高的可以用
- sdl 跨平台GUI开发库,scrcpy用的就是这个
- SFML 跨平台的GUI库,以前开发游戏时写了一个demo,用了一次
- duilib 美化MFC项目
- skia google开源的gui库,android/chrome的UI都是用这个画的
- wxwidgets audacity好像用的就是这个gui库
- boden android/ios gui库,纯C++开发
- elements 跨平台ui库
远程控制
- freerdp rdp远程控制,在windows上还是mstsc最好用,linux/mac可以考虑freerdp
- aspia p2p远程工具,研究过其中代码挺不错的
- scrcpy PC控制android手机,需要打开adb
- synergy 效率工具,用一台机器共享鼠标键盘控制多台其他计算机,gui配置要激活,我一般直接用控制台启动,具体配置及启动方式请移步synergy控制台启动
- QtScrcpy 将synergy的gui用QT重写了并做了增强
- tigervnc 开源的vnc客户端与服务端
音视频开发
- ffmpeg 从事音视频开发必备库,avformat混流分流何种协议封装,avcodec音视频编辑器封装,ffplay.exe 是一个万能播放器,ffmpeg.exe 是个超级音视频处理工具,格式工厂就是把这个工具封装了一个界面,ffprobe码流分析工具
- openh264 思科开源的h264编解码库,号称最快,没有具体测试过
- x264 h264编解码库
- libvpx vp8/vp9编解码库
- vlc videolan的视频播放器,可提供api接口调用很方便
- QtAV 将ffmpeg封装成一个Qt播放器组件,在qt中用很方便
- rlottie lottie动画播放库,以前写QT项目时用到了,不过qt现在自己也有lottie播放组件了
音视频会议
- webrtc google开源的为浏览器提供实时通话的C++库,在浏览器上提供了一套接口,很方便的实现p2p视频通话,最近几年因为疫情这个库被大量用于音视频会议系统
- janus 纯C开发的音视频会议服务器,很多公司的服务器都是以这个为基础版本改出来的
- licode C++/js开发的音视频会议服务器,同样被很多公司拿出来用
- mediasoup 基于webrtc的 sfu服务器,以库的形式开放出来,可以嵌入自己的项目中
- media-server 基于webrtc的服务器
- freeswitch voip视频会议服务器
- kamailio sip注册服务器,编译安装配置好以后,下载个linphone就可以局域网视频通话,配置个rtpengine也可以转发rtp视频流
- osip sip信令封装库
- exosip osip的C++封装
- pjsip sip信令封装库
- jrtplib rtp封装库,对接国标GB28181用过
- ortp linphone用到的rtp封装库
压缩库
- p7zip 俄罗斯同志开发的压缩解压算法库,并提供安装程序,很出名养了一大批同类软件
- libzip 传统的zip压缩解压缩库
计算机视觉/深度学习
- opencv intel开源的图像处理库,里边包含了何种图像处理的算法,简单的人脸识别,抠图,图像拼接,边缘检测等等,还有dnn模块可以加载其他深度学习框架训练的模型进行推理,内部封装了ffmpeg,libjpg,libpng,支持图像io,视频io,很强大的C++计算机视觉库
- dlib 通用工具库,包含人脸识别/检测 json解析,网络,GUI等功能,里边包含很多功能
- PaddlePaddle 百度开源的深度学习框架,没有用这个训练过东西
- pytorch facebook开源的深度学习框架,目前学术界最流行的
- tensorflow google开源的深度学习框架
- darknet 目标检测方面的神,可惜原作者已放弃这方面的研究,现在已经有pytorch实现的yolov5,yolov7了,可以用更少的数据训练出不错的模型
- mxnet 亚马逊在用的深度学习框架
- onnxruntime 微软开源的深度学习推理框架,配合onnx使用
- caffe 贾扬清开发的深度学习框架,以前很多人都用这个,后来tensorflow出来后,大家纷纷开始转python用tensorflow
- mediapipe google开源的推理框架,谁用谁知道,确实是快
- ncnn 腾讯开源的推理框架,移动端很快
- mnn 阿里开源的推理框架
- mace 小米开源的模型推理框架
- Paddle-Lite 百度开源的推理框架
- lite.ai.toolkit 把一些推理框架做了封装的工具库
- libfacedetection yushiqi开源的人脸检测工具
- SeetaFace 好像是中科院某位教授开源的项目,检测识别效果不错,拿来即用的项目,当时用了里边的人脸检测确实是最快的
语音识别/深度学习
- kaldi 语音识别方面必知必会的库,以前研究过一段时间,程序不怎么用修改,需要修改shell脚本,而且训练的比较慢,我所属的公司都是快节奏的公司,后来就直接改用其他公司产品了,就再没有研究过
- wenet 国内某公司开源的语音识别系统,使用pytorch推理,效果比自己训练的kaidi好
- PaddleSpeech 百度开源的语音识别项目,效果比wenet好
- DeepSpeech 语音识别项目
- audacity 语料分析调整工具
- portaudio audioio工具
服务器
- nginx 俄罗斯同志开发的http服务器,代理服务器,还支持各种协议,用过的都说好,不过现在属于美国公司了
- srs 以前用他当做rtmp服务器
- ZLMediaKit 媒体服务器
- redis 缓存服务器,用来存储临时变量很方便,与db协同使用
- httpd apache开源的web服务器
- lighttpd 轻量级的web服务器
- memcached 缓存服务器,类似于redis
- kbengine C++开发的游戏服务器
游戏
- cocos2d-x cocos2d-x是一个C++开发的跨平台游戏开发库,现在游戏开发用cocos的应该比较少,大部分都是unity/ue4
- UnrealEngine 渲染效果最好的游戏引擎
直播
- obs-studio 很厉害的推流工具,使用qt开发的界面,UI设计的很漂亮,使用也特别简单,可以录屏,虚拟相机,推流,ndi等功能,插件化开发代码也很不错
IM工具
- tdesktop telegramdesktop官方的桌面客户端,编译起来比较费劲,代码和功能都优秀
- teamgram-tdesktop 开源teamgram-server开的tdesktop分支
- flamingo 开源im,包含server desktop android三个子项目
序列化
- protobuf 很常用的序列化工具,具有比json占用空间小,编解速度快的特点
- json modern c++开发的json解析库
- jsoncpp c++开发的json解析库
- tinyxml2 C++开发的xml解析库
- rapidjson 腾讯开源的json解析库
- pugixml 支持xpath的xml解析库
网络库
- libevent event驱动的跨平台网络库
- libuv 专门为nodejs开发的event库,是个独立的项目可以单独拿来用
- wangle facebook开源的网络库,根据java netty架构设计的,习惯netty的可以试试
- muduo reactor模式网络库
- grpc google开源的rpc项目
- brpc 百度开源的rpc项目,捐给了apache基金会,据说很强
- asio modern C++实现的网络库
- thrift apache基金会旗下的rpc项目
- rpclib 以前想找个小的rpc项目研究,就研究的这个
- crow modern c++ web服务器,类似于flask
- curl http客户端项目
- librdkafka 读写kafka服务器的client,以前搞大数据是用过
- zmq 与其他mq项目不同,zmq是以库的形式提供
- live555 在接入rtsp相机用过的项目
数据库
- postgresql 很流行的sql服务器
- mysql 项目中用的最多的sql服务器
- mongodb 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- sqlite 一款轻型的数据库,一般嵌入到项目内部
- leveldb google开源的非常高效的kv数据库
- mmkv 腾讯开源的高效kv数据库
加密解密
- openssl 加密解密库
- boringssl google从openssl中分离出来的加密解密库
- mbedtls 嵌入式项目中经常用的加密解密库
虚拟机
- qemu ffmpeg作者开源的模拟器,据说可以达到真机效果
- virtualbox oracle开源的x86模拟器
- botchs x86模拟器
- anbox 感觉像是一个把android虚拟机跑在linux上的东西,类似于docker,把每个安卓程序轻量级的跑在x86 linux主机上,android上的每个程序直接绘制在linux gui上
编译器
- gcc gcc编译器
- llvm llvm编译套件
工具库
- folly facebook开源的基础库
- abseil-cpp google开源的基础库
- boost boost工具库
- concurrentqueue 并发队列
构建工具
- cmake 跨平台构建工具,用的最广泛的工具,android/linux/windows几乎哪都再用
- ninja google工程师开源的构建工具类似于make
- vcpkg 相当于ubuntu上的apt-get install吧,只不过,vcpkg是下载编译安装到仓库,并且需要配合cmake使用
跨平台项目
- chromium chrome浏览器开源项目,很多项目都是这个项目的子项目
- v8 chromium项目的子项目
- nodejs 基于v8开发的让js独立于浏览器运行的开发平台
无分类工具
- TrafficMonitor 计算机网速流量检测工具,cmake构建的版本TrafficMonitor
- TranslucentTB 状态栏透明
golang项目
- frp 代理工具将局域网主机暴露到公网上,远程办公必备
- caddy nginx的golang版本
- syncthing 文件同步工具
- docker 轻量级虚拟机,相当于从软件层面的虚拟化,很方便
- k8s google开源的用于管理云平台中多个主机上的容器化的应用
- minikube k8s的单机版本
- Open-IM-Server 微信前团队开源的im服务器
- teamgram-server golang开发的开源telegram sever
rust项目
- rustdesk rust开发的远程客户端,服务端同样开源
- yew rust前端开发框架类似于react
- tauri 类似于electron,不过速度性能都比electron强
ts/js项目
- simple-peer 对webrtc接口做了封装,使调用更简单了
- deskreen 基于webrtc的投屏器,通过浏览器将桌面投到其他设备上
c#项目
- Wox windows启动器
java/kotlin项目
- dbeaver java开发的数据库连接客户端
- libgdx 基于java的跨平台游戏开发框架
python项目
- flask python web引擎
- django python web引擎
- scrapy 爬虫引擎功能很全
dart项目
- dio dart http网络库
- Best-Flutter-UI-Templates flutter开发的跨平台界面,在andriod/windows跑过,ui设计的不错,就是给人一种卡顿的感觉
php项目
- nextcloud 私人网盘,docker部署起来很方便
- zentaopms 开源项目管理软件
相关文章:

C/C++开源库推荐
C/C开源库推荐 主要都是平常用到的,包含windows开发、android开发、后台开发、音视频开发、深度学习等等最后还附带几个其他语言开发的比较好的项目 GUI开发 qt 跨平台开发库,内部封装了各种跨平台工具,但是大多数情况下都被用作开发跨平台…...

git常用命令速查表
1.git add -u [<路径>]: 把<路径>中所有跟踪(tracked)文件中被修改过或已删除文件的信息添加到索引库。它不会处理未跟踪(untracked)的文件。省略<路径>表示:即当前目录。 2.git add -a [<路径&…...

让两个文件夹里的图片名字一模一样
为了做测试集,对应数据和真值 import os import datetimeimage_names os.listdir(r\Images) #print(image_names) #print(len(image_names))mask_names os.listdir(rG:\Mask) #print(mask_names) #print(len(mask_names))#根据你提供的文件名排序结果来看,问题可…...

会议OA系统会议管理模块开发思路(layui搭建)
目录 一.为什么要进行开发 1.开发目的 2.项目流程 A.发起会议请求过程 1.首先实现我们的多选下拉框功能! 2.时间组件功能,并且提交我们新增加的会议内容 3.在进行发起会议编码时遇到的问题,BUG 3.1.有点时候js访问不到路径 3.2在增加…...

rsync 远程同步
目录 一、Rsync 简介 二、同步方式 备份的方式 三、常用Rsync命令 四、配置源的两种表达方法 五、配置服务端与客户端的实验 启动 rsync 服务程序 发起端(192.168.158.21) 编辑 六. 发起端(客户端)配置 rsyncinotify c…...

PostgreSQL数据库中,查询时提示表不存在的解决办法
最近遇到一个奇怪的问题,以前从来没有遇到过,在postgres SCHEMA下执行select * from table1语句时,提示表不存在,而实际这个表确是存在的,只不过是在public SCHEMA下。在public SCHEMA下执行这个sql语句是没有问题的。…...

视频传输网安全防护体系
在电脑、手机信息安全保护得到广泛关注和普及的今天,监控摄像头等设备的安全防护仍为大众所忽略,大量视频监控网络的前端设备和数据没有任何保护,完全暴露在互联网中。 前端IP接入设备与后端业务系统处于直连状态,一旦有攻击者或…...

C# Blazor 学习笔记(1):Blazor基础语法,组件化和生命周期
文章目录 前言基础语法路由Page 页面元素条件生成if / elseforforeach 绑定参数绑定(赋值,单向)参数绑定(双向)事件绑定字典绑定 attributes 组件化如何使用Parameter 参数注入使用回调函数组件声明回调组件注入回调组…...

flutter 导出iOS问题2
问题1:The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries) 参考 正如上图报错第三方…...

syn报文什么时候会被丢弃?
开启tcp_tw_recycle且在NAT下 tcp_tw_recycle重复利用time_wait sockets,会记录最近的连接时间戳,并丢弃远程主机(PAWS机制)所有不严格大于该时间戳的报文。这意味着如果主机在nat下,那么该nat下所有设备将会受影响 TCP半连接队列满了 在半…...

【C++】开源:Linux端V4L2视频设备库
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端V4L2视频设备库。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…...

基于数据驱动的多尺度表示的信号去噪统计方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?
文章目录 前言现象原因如何顺序读取推荐阅读 前言 Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 现象 先看…...

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码
伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓IOS前端纯原生源码, 后端是java源码。...

C++推理
YOLOv5 OpenCV DNN C导出的 ONNX 模型示例的推理: https://github.com/Hexmagic/ONNX-yolov5/blob/master/src/test.cpphttps://github.com/doleron/yolov5-opencv-cpp-python YOLOv5 OpenVINO C推理示例: GitHub - dacquaviva/yolov5-openvino-cpp-p…...

Day10-作业(SpringBootWeb案例)
作业1:完成课上预留给大家自己完成的功能 【部门管理的修改功能】 注意: 部门管理的修改功能,需要开发两个接口: 先开发根据ID查询部门信息的接口,该接口用户查询数据并展示 。(一定一定先做这个功能) 再开发根据ID…...

源码阅读:p-limit
源码阅读:p-limit 源码阅读:p-limit简介源码解读学习与收获 源码阅读:p-limit 简介 p-limit是一个用于限制并发操作的包,它可以控制同时执行的异步操作数量。它提供了一种简单的方式来管理并发操作,以避免系统资源过…...

目标检测-击穿黑夜的PE-YOLO
前言 当前的目标检测模型在许多基准数据集上取得了良好的结果,但在暗光条件下检测目标仍然是一个巨大的挑战。为了解决这个问题,作者提出了金字塔增强网络(PENet)并将其与YOLOv3结合,构建了一个名为PE-YOLO的暗光目标检…...

优化性能压力测试的关键策略和技巧
在现代软件开发中,性能压力测试是不可或缺的一环。它可以帮助开发团队评估系统在负载压力下的性能表现,识别潜在的性能瓶颈,并采取适当的措施进行优化。然而,仅仅进行性能压力测试是不够的,关键的在于如何优化测试的过…...

VMware Linux 可视化增加磁盘
1、VMware 增加磁盘 2、disks挂载磁盘 此处我挂载的是20G磁盘,截图只是用5G的做过程演示例子。 3、验证挂载磁盘...

从 axios 源码学习设计模式
文章目录 一、源码分析1.1 axios 为什么可以多种方式调用1.2 拦截器实现注册使用:promise链式调用 二、从 axios 看设计模式axios 的精髓在哪2.1 抽象工厂axios.create -- 创建新实例的工厂 2.2 微内核设计2.3 适配器思想2.4 责任链模式2.5 桥接模式举例:…...

输出不同程序执行的时间
简单的测试工具代码,它可以输出不同程序执行的时间。我们可以使用Python的time模块来实现这个功能。 import timedef test_function(func, *args, **kwargs):"""测试函数执行时间的工具函数:param func: 待测试的函数:param *args: 函数的位置参数:…...

HDU 6391 组合数学 + DP
题意 传送门 HDU 6391 Lord Li’s problem 题解 仅考虑 S i ≠ T i S_i\neq T_i SiTi 的数量 m m m,最后答案除以 ( n m ) \binom{n}{m} (mn) 即可。考虑 X X X 的排列,最后答案除以 k ! k! k! 即可。 d p [ i 1 ] [ j ] dp[i1][j] dp[…...

StopWatch与ThreadLocal
目录 1、StopWatch 1、1作用: 1、2方法: 1、3使用方法 2、ThreadLocal 2、1什么是ThreadLocal 2、2简单例子 2、3使用ThreadLocal带来的四个好处 2、4主要方法 2、5ThreadLocal内存泄漏问题 1、StopWatch 1、1作用: 统计代码块耗时时…...

20. 有效的括号
给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括…...

微信小程序原生写法传递参数
微信小程序原生写法传递参数 data-xxx 自定义参数名 ,接收参数:方法(变量名) checkVip:function(event) {let that thisconsole.log(event,event)console.log(event.currentTarget.dataset.idx,index)let index Number(eve…...

JavaWeb+jsp+Tomcat的教务查询系统
点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88134601?spm1001.2014.3001.5503 jsp/tomcat7.05/MySQL5.7或8版本/ssm框架/spring/ Web框架:SpringBoot/ORM框架:Mybatis/安全框架:Shiro/分页插件&am…...

C# FTP下载 采用Ssh.Net方式
不要再用FTPClient了 nuget下载Ssh.Net 然后代码如下: /// <summary>/// SFTP操作类/// </summary>public class SFTPHelper{#region 字段或属性private SftpClient sftp;/// <summary>/// SFTP连接状态/// </summary>public bool Conne…...

【C++】做一个飞机空战小游戏(三)——模块化程序设计
[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——模块化程设设计 在前两讲当中,介绍了利用…...

Django使用WebSocket
1、websocket 相关 实现一个系统,20 个用户同时打开网站,呈现出来一个群聊界面 解决方案 轮询:让浏览器每隔2s向后台发送一次请求,缺点:延迟,请求太多网站压力大 长轮询:客户端向服务端发送请…...