- 博客(123)
- 资源 (23)
- 收藏
- 关注
原创 C++11后的右值引用和左值引用的区别
在C++编程中,引用是一种特殊的类型,允许对另一个变量进行间接操作。C++标准(C++11及后续版本)引入了左值引用(Lvalue Reference)和右值引用(Rvalue Reference),以帮助程序员编写更高效和灵活的代码。
2024-12-12 15:28:36
894
原创 C++中std::mutex和std::condition_variable的区别
作用:提供独占锁,保护共享资源,防止数据竞争。用法:加锁 (lock()或) 和解锁 (unlock(),自动解锁由 RAII 管理)。特性:不涉及线程间的等待和通知,仅用于互斥访问。std::mutex:用于保护共享资源,确保同一时刻只有一个线程执行关键区代码。:用于在线程之间提供等待和通知机制,以处理复杂的线程同步问题。
2024-11-28 11:18:50
431
原创 为什么C++中析构函数可以声明成虚函数,而构造函数不可以?
多态环境下析构基类指针所指向的派生类对象时,需使用虚析构函数以确保派生类析构函数被正确调用。在包含虚函数的基类中,几乎总是应该将析构函数声明为虚函数。如果基类需要成为抽象类,可以将析构函数定义为纯虚函数,但仍然需要提供其实现public:// 纯虚析构函数public:构造函数不能是虚函数,因为在对象的构造过程中,类型信息尚未完整,无法使用虚函数机制。使用虚函数是为了实现多态性,而多态性是指对象的行为在运行时能动态决定,并且依赖于对象类型信息,这些信息只有在构造完成后才能完全获得。
2024-11-27 17:43:58
1050
原创 gRPC 双向流(Bidirectional Streaming RPC)的使用方法
首先,定义一个 Protobuf 文件chat.proto// 双向流 RPC在这个例子中,服务器和客户端可以通过双向流(Bidirectional Streaming RPC)方式进行实时通信。客户端通过终端输入消息,并通过 gRPC 发送到服务器,服务器接收到消息后回显给客户端。这个示例展示了 gRPC 强大且灵活的流处理能力,在实际项目中可以根据需求进行扩展和修改。这个错误提示说您在导入路径中循环引用或缺少某些必要的元数据。
2024-11-26 17:49:46
824
原创 在 Linux 上编译 Protobuf 文件以生成 Go 代码所需要的步骤和依赖环境
的目的是为了在生成文件时保持与源文件路径的一致性。这在使用多层次目录结构的项目中尤为重要,可以避免生成的文件被放置在意外的目录中。可以从 GitHub Releases 页面下载预编译的二进制文件,或者使用包管理器进行安装。首先,确保已经安装了 Go 语言开发环境,然后安装。目录添加到系统的 PATH 环境变量中,通常这些工具会放在。文件串行的结构中,从而保持目录结构的组织和一致性。生成的 Go 文件和 gRPC 文件都会在与。下载适用于您的系统的预编译二进制文件(例如,
2024-11-20 17:33:13
688
原创 gRPC之Protobuf用法的介绍
Protobuf 支持定义服务(service),用于描述 RPC 接口。每个服务包含一个或多个 RPC 方法,每个方法定义了请求和响应消息类型。// 指定生成的 Go 代码包路径// 这里定义服务和消息。
2024-11-20 17:23:50
297
原创 gRPC(Google Remote Procedure Call)的用法介绍文档
gRPC(Google Remote Procedure Call)是由Google开发的一个高效、开源的远程过程调用(RPC)框架,而不是gIPC。它支持多种编程语言,Go语言就是其中之一。gRPC主要功能包括高效的序列化与反序列化、双向流、负载均衡、身份验证、以及中继和时间管理等特性。它适用于构建高性能、跨平台的微服务系统。
2024-11-19 17:40:00
222
原创 ZeroMQ的介绍之Poller详解
zmq.Poller是用作监控多个 ZeroMQ socket 的事件的机制,支持POLLINPOLLOUT和POLLERR事件。这种机制允许在单个线程内处理多个 socket 的读写事件,使得开发者能够更高效地实现高性能 I/O 多路复用。常见使用场景包括代理服务器、负载均衡器、高并发服务器和复杂消息路由。POLLIN用于监听读事件,POLLOUT用于监听写事件,通过结合使用这些事件,可以实现更灵活的 I/O 操作控制。
2024-09-25 14:31:08
708
原创 ZeroMQ的介绍之身份标识符(Identity)
主要用于标识和区分每个客户端,特别是在使用高级 ROUTER 和 DEALER socket 时,确保消息能够路由到正确的客户端。它可以用于会话管理、负载均衡和任务分派等复杂应用场景。在实际开发中,设置唯一且合适的客户端身份,可以大大简化服务器端的逻辑,实现高效、可靠的消息传递和处理。
2024-09-25 14:25:01
508
原创 ZeroMQ的介绍,以及常用的应用场景模式(二)
Pair (一对一):简单的、直接的双向通信,适合两个节点之间的点对点通信。Survey/Respondent (广发/应答):典型的广播式请求和应答,适用于需要向多个节点广播请求并收集所有响应的情形。Bus (总线):用于需要多节点广播、分布式一致性以及广泛传播的场景。Forwarder Device (转发设备):自定义消息代理或者智能消息路由。这些模式加上之前介绍的四种模式,使得 ZeroMQ 成为一个非常灵活且强大的通信库,能够满足从简单到复杂的多种通信需求。
2024-09-25 14:17:44
786
原创 ZeroMQ的介绍,以及常用的应用场景模式(一)
ZeroMQ (ZMQ) 是一个高性能异步消息传递库,适用于构建可伸缩的分布式或并发应用。其设计结合了消息队列的灵活性和低层次网络编程的性能,并提供了一种简单统一的编程接口,使开发者能够方便地建立复杂的通信模式。
2024-09-25 14:11:40
1795
原创 Protocol Buffers在golang里面的使用
Proto标签在Protobuf生成的Go代码中起到了指定字段编码方式的重要作用。通过定义.proto文件并使用protoc工具生成Go代码,可以方便地进行结构化数据的高效序列化和反序列化。如果你有更多问题或需要进一步帮助,请告诉我!
2024-09-15 15:36:34
839
1
原创 大模型全量微调和LoRA微调详细说明,如何避免灾难性遗忘
全量微调是指在微调阶段,更新模型中所有参数。这个过程通常在大规模数据集上进行,以适应新的任务或改进性能。LoRA微调是一种低秩适应方法,主要通过在特定的层和特定的尺寸上添加一些低秩矩阵,然后只更新这些低秩矩阵。它旨在减少微调过程中计算和存储成本。通过全量微调和LoRA微调,可以根据任务需求和资源限制选择合适的方法。全量微调适用于需要高灵活性和高性能的任务,而LoRA微调适用于计算资源有限的场景。为了避免灾难性遗忘,可以采取定期微调、冻结部分参数、使用蒙特卡罗Dropout、体验重放和知识蒸馏等策略。
2024-09-03 16:50:34
1126
原创 Azure和Transformers的详细解释
Transformers 通过引入注意力机制,以并行化和捕捉长距离依赖的优势克服了传统序列模型的局限,迅速成为自然语言处理领域的主流选择。通过不断的迭代和创新,Transformers 在文本、图像、音频等多模态处理任务中展现出巨大的潜力和应用前景。
2024-09-03 15:35:19
1656
原创 开源工具(如CMU Sphinx)来实现语音转换文字
PocketSphinx 是一个强大的开源语音识别工具,适用于实时和嵌入式环境。它相对轻量,但在识别精度上可能不如一些商用解决方案。通过上述步骤,你可以使用PocketSphinx进行基本的语音识别,并扩展其功能以满足更复杂的需求。如果需要更高的准确率和更多的功能,你也可以考虑商用服务如Google Cloud Speech-to-Text、Microsoft Azure Speech Service或IBM Watson Speech to Text。
2024-09-02 16:27:46
1224
原创 window 挂载linux 网盘
背景:因为很多情况下,作为开发人员,我们都希望用Linux的编译环境,但是可以用windows下各种IDE来写code;
2024-02-04 19:37:18
694
1
原创 c++11后面引入的新特性(三)
一:移动构造函数在 C++ 11 标准之前(C++ 98/03 标准中),如果想用其它对象初始化一个同类的新对象,只能借助类中的复制(拷贝)构造函数。拷贝构造函数的实现原理很简单,就是为新对象复制一份和其它对象一模一样的数据。需要注意的是,当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝(而非浅拷贝)的方式复制该指针成员。有关深拷贝和浅拷贝以及它们的区别,读者可阅读《C++深拷贝和浅拷贝》一文做详细了解。...
2022-01-18 16:37:03
236
原创 C++11后面引入的新特性(一)
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么?#pandas_23 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文
2021-12-07 17:01:53
1058
原创 JDBC编程 -------处理Blob数据类
BLOb(Binary long object) 是二进制长对象的意思,Blob列通常用于存储大文件,典型的用于存储一张图片或者一个声音文件。由于他们的特殊性,需要用特殊的格式存储。使用Blob列可以把图片或者声音等二进制文件保存在数据库,并可以从数据库中恢复指定其文件。如果需要将图片插入数据库中,显然不能用普通 的SQL语句操作,因为有一个关键的问题那就是Blob常量无法表示。自然而然,所以将要把Blob数据插入数据库中需要使用PreparedStatement,该对象有一个方法,就是SetBi
2020-07-30 15:13:31
662
原创 JDBC编程---JDBC基础以及连接MySql数据库
一:JDBC基础 JDBC全称为 Java Database Connectivity。即为java数据库连接,它是一种可执行SQL语句的API。程序可通过JDBC连接到关系型数据库,并且使用结构化查询语言(SQL数据库标准的查询语言)来完成对数据库的查询和更新。与其他数据库编程环境相比,JDBC为数据库提供了标准的API。所以使用JDBC的数据库可以跨平台开发,如果全部使用标准的SQL语句,也可以说夸数据库开发。也就是说,如果使用一个JDBC开发一个数据库应用,那么该应用既可以在windows..
2020-07-22 17:23:07
459
原创 MySql在windwos下的安装
1 先去MySql官网去下载相应的windows下64位版本,现在基本都是64位的这里的下载你可以选择版本,安装8.0以下基本就行了,不要太靠近,过来人的经验吧。2 将下载过的压缩包解压,并且配置my.ini,可以自动生成,也可以配置配置以下的.ini[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\TOOL\mysql-5.7.29-winx64# 设置mysql数据库的数据的存放目录datadir=D..
2020-07-10 18:40:53
255
原创 Qt之mvc模式——QHeadView详解已经应用
QHeaderView类为项目视图提供标题行或标题列。QHeaderView显示项目视图(如QTableView和QTreeView类)中使用的标题。它取代了Qt3的QHeader类,QHeader类以前用于相同的目的,但是为了与item视图类保持一致,它使用了Qt的模型/视图体系结构。QHeaderView类是模型/视图类之一,是Qt模型/视图框架的一部分。header使用qAbst...
2020-05-07 12:38:11
4425
原创 Qt5.8.0(64位)+ VS2015环境搭建(常见问题)
很长时间没有更新博客了,最近由于疫情大家都在办公,所以才有时间写一篇博客了。因为工作需要,我们的开发环境从老的云桌面迁移到新的云桌面了,自然所有的环境都要重装了,由于新的云桌面是Win10,不知道是不是系统问题了,反正在安装Qt和Vs2015过程中遇到各种问题了,所以写下博客以供大家参考了,若有什么不对的地方,望各位海涵!我们都知道了Qt分为不同的版本了,因为Qt是跨编程的,Qt_Lin...
2020-02-25 18:56:22
1844
原创 Qt Charts 动态实时绘制各种曲线图
在Qt Charts发布之前,Qt比较著名两个画图插件是 qwt和Qcustom, 其中Qcustom较轻量,只需要在project 中包含qcustomplot.h 和qcustomplot.cpp 几乎就可以使用。相比Qcustom,qwt功能更为强大,但是它的安装十分麻烦,阻挡了很多人(包括我)的使用。但是qwt只是对静态图表的表示非常不错,动态曲线性能并不突出。如果只是静态绘图,或...
2019-09-09 16:33:12
38094
49
原创 Qt Linguist 介绍和简单应用
简介Qt提供了一款优秀的支持Qt C++和Qt Quick应用程序的翻译工具。发布者、翻译者和开发者可以使用这款工具来完成他们的任务。发布者:承担了全面发布应用程序的责任。通常,他们协调开发者和翻译者的工作,可以使用lupdate工具同步源代码,进行翻译,使用lrelease同步工具为发布应用程序创建运行时使用的翻译文件。翻译者:可以使用Qt Linguist工具翻译应用程序的文本。当...
2019-05-31 19:16:53
20410
1
原创 视图代理(QML)
与 Qt model /view类似,在自定义用户界面中,代理扮演着重要的角色。模型中的每一个数据项都要通过一个代理向用户展示,事实上,用户看到的可视部分就是代理。 每一个代理都可以访问一系列属性和附加属性。这些属性及附加属性中,有些来自于数据模型,有些则来自于视图。前者为代理提供了每一个数据项的数据信息;后者则是有关视图的状态信息。代理中最常用到的是来自于视图的附加属性ListVi...
2019-01-25 17:06:34
1184
原创 QML下的动态视图
Repeater适用于少量的静态数据集。但是在实际应用中,数据模型往往是非常复杂的,并且数量巨大。这种情况下,Repeater并不十分适合。于是,QtQuick 提供了两个专门的视图元素:ListView和GridView。这两个元素都继承自Flickable,因此允许用户在一个很大的数据集中进行移动。同时,ListView和GridView能够复用创建的代理,这意味着,ListView和Grid...
2019-01-24 16:05:34
1707
原创 设计模式之装饰模式(c++实现)
装饰模式是结构型设计模式之一,使用一种对客户透明的方式来动态拓展对象的功能,Java IO中各种流的嵌套就是装饰模式的很好体现。 1. 装饰模式介绍装饰模式定义:动态地给一个对象添加一些额外的功能,比生成子类要灵活。 装饰模式的使用场景:需要透明且动态地拓展类的功能的场景。 装饰模式包括的角色: ...
2019-01-24 15:04:30
277
原创 Qt Quick Controls
自 QML 第一次发布已经过去一年多的时间,但在企业应用领域,QML 一直没有能够占据一定地位。很大一部分原因是,QML 缺少一些在企业应用中亟需的组件,比如按钮、菜单等。虽然移动领域,这些组件已经变得可有可无,但在桌面系统中依然不可或缺。为了解决这一问题,Qt 5.1 发布了 Qt Quick 的一个全新模块:Qt Quick Controls。顾名思义,这个模块提供了大量类似 Qt Widge...
2019-01-18 17:21:37
3105
1
原创 QML下的布局
上一章我们介绍了 QML 中用于定位的几种元素,被称为定位器。除了定位器,QML 还提供了另外一种用于布局的机制。我们将这种机制成为锚点(anchor)。锚点允许我们灵活地设置两个元素的相对位置。它使两个元素之间形成一种类似于锚的关系,也就是两个元素之间形成一个固定点。锚点的行为类似于一种链接,它要比单纯地计算坐标改变更强。由于锚点描述的是相对位置,所以在使用锚点时,我们必须指定两个元素,声明其中...
2019-01-17 16:46:09
1468
原创 qml下的定位器
QML 提供了很多用于定位的元素。这些元素叫做定位器,都包含在 QtQuick 模块。这些定位器主要有 Row、Column、Grid和Flow等。为了介绍定位器,我们先添加三个简单的组件用于演示:import QtQuick 2.0Rectangle { width: 48 height: 48 color: "blue" border.color:...
2019-01-16 17:04:25
1023
1
原创 QML自定义组件
如果我们了解几种 QML 的基本元素。QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用。这种组合元素就被称为组件。组件就是一种可重用的元素。QML 提供了很多方法来创建组件。不过,本章我们只介绍一种方式:基于文件的组件。基于文件的组件将 QML 元素放置在一个单独的文件中,然后给这个文件一个名字。以后我们就可以通过这个名字来使用这个组件。例如,如果有一个文件名为 Button.q...
2019-01-16 15:52:24
5295
原创 c++设计模式----观察者模式
设计模式是软件工程的基石脉络,如同大厦 的结构一样。设计模式的分类,可分为创建型模式,结构性模式,行为型模式。1 创建型模式:通常和对象的创建有关,涉及到对象的实例化方式。大概有五种模式工厂方法模式 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类 抽象工厂模式 创建一系列相关或者相互依赖的接口,而无需指定他们具体的类 建造者模式 将一个...
2019-01-08 14:19:55
273
1
原创 Windows 系统下VS2013安装插件VA_X_Setup2074(番茄插件)
Visual AssistX是一款非常好的Microsoft Visual Studio插件,它可以完全集成到Microsoft开发环境中,升级IDE,在不改变编程习惯的同时就可以利用Visual Assist X的便利。在Visual Studio中并没有集成该Visual Assist,需要我们自行安装。首先介绍一下再Windows 8之前的系统中安装VA_X的方式:1. 双击VA_X...
2019-01-07 16:20:53
3822
原创 QT之进程和进程间通信(IPC)
进程是操作系统的基础之一。一个进程可以认为是一个正在执行的程序。我们可以把进程当做计算机运行时的一个基础单位。关于进程的讨论已经超出了本章的范畴,现在我们假定你是了解这个概念的。在 Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序开启一个新的外部程序,并且与这个程序进行通讯。下面我们用一个非常简单的例子开始我们本章有关进程的阐述。//!!! Qt5QStr...
2019-01-03 15:32:52
11911
10
原创 QT中读取XML文件三种方式 的实例
第一部分:QXmlStreamReaderXML(eXtensible Markup Language)是一种通用的文本格式,被广泛运用于数据交换和数据存储(虽然近年来 JSON 盛行,大有取代 XML 的趋势,但是对于一些已有系统和架构,比如 WebService,由于历史原因,仍旧会继续使用 XML)。XML 由 World Wide Web Consortium(W3C)发布,作为 SH...
2018-12-25 11:23:20
52547
1
原创 QT中view/model中只视图选择模型QItemSelectionModel
选择是视图中常用的一个操作。在列表、树或者表格中,通过鼠标点击可以选中某一项,被选中项会变成高亮或者反色。在 Qt 中,选择也是使用了一种模型。在 model/view 架构中,这种选择模型提供了一种更通用的对选择操作的描述。对于一般应用而言,Qt 内置的选择模型已经足够,但是,Qt 还是允许你创建自己的选择模型,来实现一些特殊的操作。 Qt 使用QItemSelectionModel类获...
2018-12-21 17:18:49
3855
原创 QT模型类 model/view 之自定义读写模型
第一部分: 自定义只读模型model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView、QTableView和QTreeView提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面。但是,面对变化万千的需求,Qt 预定义的几个模型是远远不能满足需要的。因此,我们还必须自定义模型。类似QAbstractView类之于自定义视图,QAbst...
2018-12-21 16:01:13
1705
1
Grafana 是一个开源的度量分析和可视化套件,通常用于对时间序列数据进行监控、分析和可视化
2024-11-11
MobaXterm 是一个功能强大的远程计算工具箱,支持 SSH、RDP 和许多其他协议,并且内置了支持标签页的终端
2024-09-20
Everything(中文)
2024-05-22
Navicat Premium 64位.zip
2020-06-01
Qt之mvc模式——QHeadView详解已经应用
2020-05-07
Qtchar1.zip
2019-09-09
arrowpad.zip
2019-05-31
Qt做的简单的贪吃蛇游戏
2019-04-04
QML下的布局(垂直,水平,网格)
2019-01-17
qt quick 下qml的定位器(在qt5.0以上版本测试)
2019-01-16
QML自定义组件(基于qt5.6ming的)
2019-01-16
Xshell-6.0.01111安装包
2019-01-09
python3 64位 3.7.2150安装包
2019-01-09
tortoisesvn安装包64位英文版
2019-01-08
mysql community server的安装包
2019-01-08
Visual_Assist_X_10.8.2042.0番茄插件
2019-01-07
QT之进程和进程间通信(IPC)
2019-01-03
QT中读取XML文件三种方式 的实例
2018-12-25
QItemSelectionModel视图选择
2018-12-21
model?view 自定义模型
2018-12-21
model/view基本的原始qt框架应用,QListWidget、QTreeWidget和QTableWidget
2018-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人