自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 protobuf复杂场景下的使用,包含多层嵌套结构体,repeated等(六)

protobuf复杂场景使用,包含多层结构体嵌套,repeated等成员参数情况。

2024-02-05 11:49:12 503

原创 protobuf程序运行报错error while loading shared libraries: libprotobuf.so.8: (三)

因此需要创建ld指向文件 /etc/ld.so.conf.d/libprotobuf.conf ,内容如下:(然后,需要执行:sudo ldconfig 命令)通过find查找 libprotobuf.so.8 文件,发现在/usr/local/lib下。确认,是否配置了LD路径,写到/etc/profile中,还需要执行source。找不到libprotobuf.so.8库文件,这一般是库文件路径没有添加正确。写了一个测试程序运行是,显示找不到库文件。注:需要root权限进行操作。

2024-02-05 10:52:35 265

原创 protobuf之带有repeated成员实例使用(五)

protobuf之带有repeated成员实例使用(五)

2024-02-01 13:59:21 255

原创 protobuf之实例使用(四)

protobuf安装后,在含有protoc执行文件的路径下,执行protoc程序,可以将.proto文件转换为.h和.cc文件。

2024-02-01 12:00:24 204

原创 protobuf安装(二)

本文使用2.5.0版本,protobuf安装详细步骤。

2024-01-30 11:58:36 148

原创 protobuf简介(一)

Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。protobuf是类似与json、xml一样的数据描述语言(数据格式)protobuf非常适合于RPC数据交换格式。

2024-01-30 11:10:15 218

原创 QTableWidget表头变色塌陷问题处理

在QTableWidget表格中,点击表格内容,表头会塌陷,变换了颜色,其解决办法如下。

2023-08-16 10:20:24 166

原创 cannot open shared object file: No such file or directory

在一台Linux上编译库文件和执行文件后,放到另一台Linux机器上,执行报错,显示: cannot open shared object file: No such file or directory。首先确认执行文件(test)放在对应的环境变量bin和库文件(libtest.so)放在了对应的环境变量lib下。假设环境变量$(HOME)为 /root ,则执行文件(test)放在 /root/bin/目录下,库文件(libtest.so)放在 /root/lib/目录下。

2023-03-31 22:39:07 4460 1

原创 Qt之make: Nothing to be done for ‘first‘

Qt之make: Nothing to be done for ‘first‘的三种方法。

2023-01-17 17:00:47 1602

原创 C语言strstr()函数用法-字符串查找

strstr()函数是一个参数为两个字符指针类型,返回值是char*类型的函数。用于找到子串(str2)在一个字符串(str1)中第一次出现的位置(不包括str2的串结束符),并返回该位置的指针,如果找不到,返回空指针(NULL)。这里因为传进来的地址指向的内容不会在发生改变,所以我们在两个形参(char*)前加上const。它包含在string.h头文件中。

2023-01-04 18:47:50 19578

原创 memcpy与memmove函数的区别和实现

memcpy与memmove都是C语言的库函数,在头文件string.h中,作用是内存拷贝。唯一的区别是,当内存发生局部重叠时,memmove保证了拷贝的结果是正确的,但是memcopy不一定是正确的。但是memcpy比memmove速度快。destination即目标空间,即要复制到哪个空间source即源空间,即要被复制的内存空间num即要复制多少个字节的内容到destinationvoid*即返回目标空间。

2023-01-02 18:14:55 1236

原创 C++ string详解,C++字符串详解

string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和c语言的字符串之间有着良好的接口。使用 string 类需要包含头文件2.定义 string 变量string s1;//获取字符串长度return 0;}变量 s1 只是定义但没有初始化,编译器会将默认值赋给 s1,默认值是"",也即空字符串。

2023-01-02 12:41:10 2947

原创 Qt QPushButton 一些操作设置

1.鼠标放在button上变成小手。2.按钮置灰,不可点击。

2022-10-24 17:28:02 4742

原创 C语言中printf的内容带有多个引号

{"HOST": "fes1", "TIME": "2022-10-12 15:50:01", "ALARM": "file故障"}输出这个内容时需要用到转义字符'\" ',增加了转义字符后,双引号就能正常输出了。\t 水平制表符。\" 插入双引号。\' 插入单引号。\\ 插入反斜杠。\v 垂直制表符。

2022-10-12 16:38:26 2854

原创 QtCreator 部分快捷键

编辑的时候前几个使用的频率特别高;调试的时候后几个使用的频率高,且调试的快捷键和VS类似。F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+I 自动对齐Ctrl+/ 注释行,取消注释行Ctrl+F 查找替换当前选中的内容,按下Ctrl+F,会列出所有和你选的内容一样的语句Ctrl+1 ...

2022-03-20 10:35:02 310

原创 Linux修改系统日期和时间

1.进入root账户下。suroot 或 su root修改系统日期与时间date -s "2022-01-23 10:25:25"[root@localhost ~]# date2022年01月 22日 星期六 00:08:27 UTC[root@localhost ~]# date -s "2022-01-23 10:25:25"[root@localhost ~]# date2022年 01月 23日 星期日10:25:27 UTC最后输入 hwclock -.

2022-01-23 20:00:21 8412

原创 sizeof的使用与内存对齐

1.sizeof是一个单目运算符,不是一个函数。sizeof运算符是获取其操作数所占内存空间的字节数,sizeof的操作数可以是类型名,也可以是表达式。int a = 1; double b = 1.5; sizeof(int);//结果为4 sizeof(a);//结果为4 sizeof(a+b);//结果为8获取double 类型数组darray的元素个数:int count = sizeof(darray) /sizeof(double);计算字符串长度应该使用strlen函数

2022-01-01 22:05:20 881

原创 Linux常用命令

一.基本命令1.1 关机和重启关机shutdown -h now 立刻关机shutdown -h 5 5分钟后关机poweroff 立刻关机重启shutdown -r now 立刻重启shutdown -r 5 5分钟后重启reboot 立刻重启二、目录操作命令2.1 目录切换 cd命令:cd 目录cd / 切换到根目录cd /usr 切换到根目录下的usr目录cd ../ 切换到上一级目录 或者 cd ..cd ~ 切换到home目录cd

2021-12-30 16:40:41 134

原创 tableWidget内容中的元素居中

将单个单元格的内容设置为居中ui.tableWidget->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);将部分行和列的单元格内容设置居中 for (int i=0;i<5;i++) { for (int j=0;j<8;j++) { ui->tableWidget->item(i,j)-&

2020-08-05 15:51:43 7378

原创 QDateEdit日历修改之QCalendarWidget 样式设置

1. QDateEdit控件显示日历,需要用下面的setCalendarPopup(true);ui.dateEdit->setCalendarPopup(true);2. 日历样式的修改需要用到QCalendarWidget控件。其样式的调整可以在QSS中调整。下面就图中的标记进行说明:1)左右两边的箭头,是用代码实现的。QToolButton*prevBtn...

2019-08-08 19:38:19 8901 8

原创 信号与槽函数

信号与槽机制(signal&amp;slot)作为Qt最重要的特性,提供了任意两个Qt对象之间的通信机制。信号会在某个特定情况或动作下触发,槽是用于接收并处理信号的函数。信号和槽有如下三个连接方式:1.一个信号可以与另一个信号相连。也就是一个信号触发另一个信号发射。2.同一个信号可以与不同的多个槽函数相连。3.同一个槽函数也可以响应多个不同的信号。...

2018-06-26 16:40:42 2531

原创 指针和引用的区别

1.指针是变量的地址,引用是变量的别名。指针本身也是一个变量,指针的值是另一个变量的内存地址,指针指向这个变量,指针和指针指向的变量是两个不同的变量。引用是给变量起了一个别名,可以认为引用于原变量是同一个变量,只是这个变量有两个不同的名字。(1)sizeof运算符的意义不同,指针进行sizeof得到的是指针本身占用的空间,返回结果为4个字节;而引用进行sizeof得到的是原变量占用的空间,返回结果...

2018-06-13 14:17:22 302

原创 QDateTime、QString,int互转与拆分

【代码】QDateTime、QString,int互转与拆分。

2018-06-06 14:13:50 18077 1

原创 函数重载和函数覆盖的区别

1.函数重载是同一个类中的不同方法,函数覆盖是不同类中的同一方法;2.函数重载的参数列表不同,函数覆盖的参数列表相同;3.重载函数调用时根据参数类型选择方法,覆盖函数调用时根据对象类型选择方法。...

2018-05-26 10:31:15 722

原创 重载函数、覆盖函数的名字隐藏问题

所谓名字隐藏是指父类中有一组重载函数,子类在继承父类时如果覆盖了这组重载函数中的任意一个,则其余没有被覆盖的同名函数在子类中是不可见的。class Base{public: virtual void printf(int a){cout&lt;&lt;"Base print int"&lt;&lt;a&lt;&lt;endl;} virtual void printf(char a){c...

2018-05-26 08:48:49 64

原创 栈空间和堆空间的区别

在程序中,数据存储在不同的区段,通常将整个数据区分为四部分:栈存储区,堆存储区,全局及静态存储区,常量存储区。1.栈空间主要存储函数参数和局部变量。存储数据是先进后出,由编译器负责分配和释放回收。2.堆存储区主要存储动态分配的内存块,编译器不会自动处理,需要程序员负责分配和回收。有可能产生内存泄漏,在不断分配和释放空间的过程中,造成空间逐渐碎片化,每块可用空间都很小。3.全局及静态存储区主要存储全...

2018-05-23 16:52:12 1425

原创 main函数执行前后都发生了什么

1.main函数第一行代码执行之前会调用全局对象和静态对象的构造函数,初始化全局变量和静态变量。2.main函数最后一行代码执行之后会调用在atexit中注册的函数,并且调用顺序和注册顺序相反。...

2018-05-14 10:19:01 1686

原创 malloc/free与new/delete的区别

1.malloc/free是C语言提供的库函数,通过函数调用访问,需要传递参数并接收返回值;而new/delete是C++提供的运算符,有自己的一套语法规则和运算方式。2.malloc/free函数只能应用于基本类型,而new/delete不但可以应用于基本类型,还可以应用于面向对象中的自定义类型。3.malloc函数返回的是void* 类型,程序需要显示地转换成所需要的指针类型;new操作符后面...

2018-05-14 10:18:48 111

原创 C++寻找素数

C++寻找素数,下面代码是每行输出10个素数。计算100以内的素数。100也可以修改为任意数。int main(){ bool bflag = false; int inum = 0; for (int i = 2; i &lt;= 10000; i++) { bflag = false; for (int j = 2; j &lt; i; j++) { if (i%j...

2018-05-04 14:23:27 8233

原创 Qt界面关闭主窗口,若其Qdialog弹框没有关闭,程序无法退出

Qt界面关闭主窗口,若其Qdialog弹框没有关闭,程序无法退出需要在主窗口设置属性:Qt::WA_QuitOnClose将主窗口属性设置为:fm.setAttribute(Qt::WA_QuitOnClose,true);Qt::WA_QuitOnClose属性是使窗口如果是最后一个关闭的时候触发事件lastWindowClosed();然后主程序收到事件退出a.conne...

2018-03-14 16:46:45 5236 2

原创 QT加载jpg、jpeg、gif图片不可见问题解决

QT加载jpg图片、gif动图时,图片不可见问题是没有加载QT的图形库解决办法:1. 在Qt文件夹里有个plugins文件夹内,imageformats是图片的库,里面有jpg,gif等。2. 将qt文件夹中plugins文件夹拷贝到指定文件夹下:如E:\SVN\plugins3. 在程序主函数中指定该路径:   int main(int argc, char *argv[]){

2017-09-18 14:08:01 4665

原创 qtabwidget表内容设置

1.qtabwidget表格整行选择设置:ui.tableView_grid->setSelectionBehavior(QAbstractItemView::SelectRows);2. qtabwidget表格设置只能选中一行:ui.tableView_grid->setSelectionMode(QAbstractItemView::SingleSelection);3. qtabw

2017-08-31 19:31:37 3786

原创 qtablewidget控件滚动条设置

qtablewidget控件的滚动条分为纵向滚动条设置和横向滚动条设置.纵向滚动条设置:ui.tableWidget_grid->verticalScrollBar()->setStyleSheet("QScrollBar{background-color:rgb(218,222,223); width:10px;}" "QScrollBar::handle{background-color:

2017-08-31 19:05:11 15593 5

原创 qtabwidget表头字体大小、字体颜色、背景颜色设置

如下是对tabwidget表头的设置。background-color是对表头背景颜色的设置。font是对字体大小,字体颜色,字体格式设置。ui.tableWidget_grid->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color:rgb(40,143,218);font:13pt '宋体';col

2017-08-31 18:52:57 42778 8

原创 隐藏tabwidget 上的tab标签

隐藏tabwidget上的tab标签有如下两种方式。方式一是亲测可以实现的,方式二是在网上看的说可以实现。方式一:ui.tabWidget->findChildren().at(0)->hide(); 方式二:注方式二对qt的版本有要求,需要在5.0以上,在5.0以下的,tabBar()是受保护的,是protected的,不被外部调用。ui.tabWidget->tabBar(

2017-04-21 11:14:52 10256 1

原创 QTableView用法小结

QTableView常用于实现数据的表格显示。下面我们如何按步骤实现学生信息表格:一 添加表头 //准备数据模型 QStandardItemModel *student_model = new QStandardItemModel(); student_model->setHorizontalHeaderItem(0, new QStandardItem(QObj

2017-04-07 09:06:49 777

原创 C++中map的用法

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识

2017-02-14 13:28:34 652

原创 C++排序之冒泡法

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,...

2017-02-07 13:58:41 11125 3

原创 C++排序之直接插入排序法

直接插入排序算法是将一个记录插入到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,...

2017-02-07 09:09:41 4960 2

原创 C++排序之直接选择排序法

直接选择排序算法是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的其起始位置,然后再从剩余未排序的序列元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素排序完毕。代码实现如下:#include using namespace std;void print(int a[], int n ){ cout<<n <<":

2017-02-06 14:54:38 5619

世纪秒和日期时间转换工具

非常好用的小工具:世纪秒和日期时间互转工具,该工具是.exe执行文件,放在windows任意位置点开直接执行。可快速进行SOC时间转为日期时间,日期时间转换为SOC时间。

2024-01-30

c++的protoc-3.20.3-win64

protoc-3.20.3-win64,适应C++,可将.proto转换为.h 和.cc。

2024-01-30

commons-fileupload-1.3.jar

commons-fileupload-1.3.jar 最新包

2013-07-23

空空如也

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

TA关注的人

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