自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux系统 php使用protobuf

在linux下使用protobuf需要注意以下几点。

2023-09-11 17:29:38 201

原创 vscode Ubuntu配置cmake c++调试环境

在 CMake 配置完成后,你可以点击 CMake 图标上的 “Generate” 按钮,它将生成构建系统所需的文件(如 Makefile 或 Visual Studio 项目文件)。在 Visual Studio Code 中,打开左侧的 Extensions 标签,搜索并安装 “CMake Tools” 扩展。这个扩展提供了与 CMake 集成的工具,可以自动配置和运行 CMake 项目。1、在这种情况下,你通常不需要手动创建 tasks.json 文件,而是使用 CMake 扩展来自动生成任务。

2023-09-08 10:01:55 419

原创 vscode Ubuntu配置c++调试环境

在上面的示例中,“command” 是 “g++”,表示使用 g++ 编译器,“args” 则包含了编译参数,如 -g(生成调试信息)、“main.cpp”(要编译的源文件)、“-o”(指定输出文件名)等。在你的项目中,你可以创建一个 .vscode 文件夹,并在其中创建一个 tasks.json 文件,用于配置编译任务。在 Visual Studio Code 中创建一个新的文件夹以作为你的 C++ 项目目录,并在该目录中创建一个新的 C++ 源代码文件,例如 main.cpp。

2023-09-08 09:57:55 448

原创 linux 挂载共享目录

【代码】linux 挂载共享目录。

2023-08-31 11:04:18 290

原创 mysql 添加远程访问

注释bind-address ,或者将其改为 bind-address = 0.0.0.0。sudo service mysql restart #重启mysql。

2023-08-31 10:52:25 42

原创 QThread 线程

总结来说,QThread 中线程的退出原理是通过调用线程的 quit 或 exit 方法请求线程退出,然后等待线程的 run 方法执行完毕后发出 finished 信号,可以在该信号的槽函数中执行一些清理操作。quit 方法会请求线程退出,但不会立即终止线程的执行,而是等待线程执行完 run 方法后再退出。线程的退出信号:QThread 提供了一个 finished 信号,当线程的 run 方法执行完毕时,会自动发出这个信号。run 方法:QThread 中的线程逻辑主要在 run 方法中实现。

2023-05-31 17:37:59 1528

原创 网络字节序

网络的字节序是指在计算机网络中数据的传输顺序,它与不同计算机体系结构中数据的存储方式有关。在网络传输中,数据需要以一种统一的格式进行传递,以确保不同主机之间的互操作性。

2023-05-31 17:35:23 423

原创 在Qt中,信号(signal)是怎样传递的

此外,我们还在MyWidget类中重写了event()函数,以便于处理窗口关闭事件(QEvent::Close事件)。当收到该事件时,我们可以在event()函数中进行处理,并返回true表示事件已经被处理掉了。在该函数中,Qt会根据信号和槽的相关信息,构造一个事件并将其插入到应用程序的事件队列中。当一个事件到达时,Qt会调用该对象的event()函数,并将事件传递给它。在event()函数中,我们可以根据事件类型进行处理,并返回一个bool值表示事件是否被处理掉了。

2023-03-21 18:09:58 1916

原创 C++11 std::move是

在上述示例代码中,我们创建了两个std::vector对象vec1和vec2,并将vec1中的元素移动到vec2中。在移动元素时,我们使用了std::move将左值转换为右值引用,从而实现了元素的移动操作。使用std::move时并不会移动对象本身,而是将对象的所有权从一个对象转移到另一个对象,并且在移动之后原始对象的值处于未定义状态。移动语义:通过std::move将对象的资源所有权从一个对象转移到另一个对象,这样就可以避免不必要的内存拷贝和分配,从而提升程序的性能。

2023-03-21 18:04:23 454

原创 C++ 右值引用(Rvalue reference)

在调用移动构造函数和移动赋值运算符时,我们通过std::move()将std::string类型的参数转换为右值引用,并使用std::unique_ptr对其进行管理。这样可以有效减少内存分配和拷贝操作,提高代码的效率和可读性。消除不必要的内存分配和拷贝:右值引用可以将临时对象或返回值作为右值引用传递给函数,并在函数内部直接移动或转移其资源所有权,避免了不必要的内存分配和拷贝操作。实现移动语义:右值引用可以方便地实现移动构造函数和移动赋值运算符,从而提高移动语义的效率和可读性。

2023-03-21 18:02:44 153

原创 Visual Studio工程中的Debug和Release区别

在Visual Studio中,Debug模式下通常会生成包含调试信息的符号表(.pdb文件),而Release模式下则不一定会生成。而在Release模式下,则更关注程序的执行效率和可靠性,不太需要包含符号表。同时,在Debug模式下也可以关闭符号表的生成,以减小可执行文件的大小和提高执行速度。运行时库不同:Debug模式下运行时库通常是多线程调试版本,而在Release模式下通常是多线程非调试版本。编译方式不同:Debug模式下编译器会在生成的可执行文件中包含调试信息,而Release模式下则不会。

2023-03-21 17:56:03 2159

原创 c++ 静态库和动态库区别,以及使用场景

C++中的库分为静态库和动态库两种。静态库在链接时被完整地复制到可执行文件中,而动态库则是在运行时加载到内存中。

2023-03-21 17:53:00 1670

原创 C++智能指针 unique_ptr、shared_ptr和weak_ptr区别

C++智能指针是一种RAII(资源获取即初始化)的技术,用于管理动态分配的内存,并避免内存泄漏。C++智能指针包括三种类型:unique_ptr、shared_ptr和weak_ptr。它们之间的区别在于所有权的管理方式和内存的释放时间。unique_ptr是一种独占型指针,即同一时刻只能有一个unique_ptr指向一个对象。unique_ptr适用于需要管理单个对象的情况,当unique_ptr被销毁时,它所占用的内存也会随之被释放。

2023-03-21 17:46:14 694

原创 Qthread线程

例如,C++11 标准库引入的 std::thread 类也提供了一个 joinable() 方法,该方法可以用于检查线程是否可以被取消,并且在必要时可以调用 detach() 方法来强制分离该线程的执行。但是,这种方法需要对被取消线程的代码进行修改,增加线程取消点,从而允许线程在特定的位置上被取消。例如,在使用 QThread 进行文件读写时,可以将文件读写操作放在子线程中进行,从而避免了阻塞主线程的情况,同时也规避了多线程访问同一文件的可能导致的数据不一致问题。这使得应用程序的可移植性更好。

2023-03-21 17:35:09 165

原创 select, poll, 和 epoll区别

select, poll, 和 epoll 都是 Linux 下用于实现 I/O 多路复用的机制。

2023-03-21 17:26:42 365

原创 map和unordered_map区别

map和unordered_map都是C++中的关联容器,用于存储键值对。其主要区别在于底层实现方式和性能表现。

2023-03-21 17:20:49 6644 1

原创 阻塞和非阻塞网络、异步和非异步网络区别点

阻塞和非阻塞主要区别在于是否等待对方响应,而异步和非异步主要区别在于回调操作的方式。在实际的网络编程中,我们需要根据具体的需求选择合适的方式来进行开发,以满足程序的特定需求。

2023-03-21 16:42:13 747

原创 Qt项目 无法解析的外部符号_WinMainCRTStartup

在编译Qt项目的时候突然说找不到_WinMainCRTStartup函数,_WinMainCRTStartup是Qt的主函数。找不到可能是main函数不在工程中。选中main.cpp点击编译。

2022-11-29 14:19:59 1379

原创 char与int之间的关系

其实char和int这些数据类型没有区别,只有大小范围的差异,char可以和int之间相互转换。在内存中int可以表示出char的字符,char也可以和int进行运算。 char a = '1'; char b = 49; int c = 49; printf("%c %d\n", a, a); printf("%c %d\n", b, b); printf("%c %d\n", c, c); if (a==b&&b==c&&

2021-09-17 10:19:38 2640

原创 QCustomPlot图例

一、QCustomPlot图例设置ui.plot_->legend->setVisible(true); //设置可见ui.plot_->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop | Qt::AlignRight);//设置位置ui.plot_->graph(i)->setName(“小笨蛋”); //设置图例名字ui.plot_->legend->addE

2021-05-25 15:44:28 3011 1

原创 QCustomPlot使用技巧

QCustomPlot使用技巧(一)一、QCustomPlot坐标轴一个QCustomPlot里有四个坐标轴,其中xAxis、yAxis、xAxis2和yAxis2分别表示如图所示的4个方向的坐标轴,xAxis2和yAxis2默认隐藏,可以通过语句显示出来。 yAxis2->setVisible(true); //显示y轴2 即右侧坐标轴 xAxis2->setVisible(true); //显示x轴2 即上方坐标轴下面是坐标轴的常用操作,每一个坐标轴都可单独

2021-05-25 15:27:12 2516

原创 Qt 当想使用键盘的Up Down Left Right控制时,会被界面上的QPushButton截取事件

Qt 当想使用键盘的Up Down Left Right控制时,会被界面上的QPushButton截取事件今天做贪吃蛇时,想给用户一个按钮用于添加背景,但是会被界面上的按钮截取键盘事件再按上下左右就没反应了,查了才知道原来是,被按钮截取了添加一行这个就行了ui.choose_back_img->setFocusPolicy(Qt::NoFocus);...

2020-12-17 11:03:36 261

原创 百度你不知道的技巧使用

百度搜索引擎 技巧使用例如: “python” 屏蔽广告python- 能够减小搜索范围pythonfiletype:pdf 搜索文件intailpython 进行精准匹配pythoninurl:video 匹配带视频的关键词

2020-12-09 14:28:34 2367

原创 Cmake学习笔记

一、Cmake简介CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。二、使用cmd编译cmake步骤进入要执行项目的文件夹: cd projectname创建build: mkdir build进入build目录: cd build建立cmake工程缓存:cmake …进行编译: cmake --build .三、CMakeLists.txt简单编写首先创建 CMakeLists.txt 文件,并保存在与 main.c 源文件同个目录下。1.

2020-12-09 11:37:36 109

原创 Boost中string algo简单使用

示例代码#include<iostream>#include<boost/algorithm/string.hpp>#include<boost/format.hpp>#include<vector>#define print boost::formatusing namespace std;using namespace boost::algorithm; //所有字符函数加_copy返回字符串不加则无返回值 i表示忽略大小写 if判断i

2020-12-09 11:15:06 187

原创 Boost中smart_ptr简单使用

实例代码#include<iostream>#include<cstring>#include<boost/smart_ptr.hpp>using namespace std;using namespace boost;int main(){ /* scoped_ptr:不可拷贝,承载new。 scoped_array:不可拷贝,承载new []。 shared_ptr:可拷贝,承载new。 shared_array:可拷贝,承载new []。

2020-12-09 11:13:06 227

原创 Boost中Filesystem简单使用

Boost中Filesystem简单使用实例代码#include<boost/filesystem.hpp>#include<iostream>#include<cstring>using namespace boost::filesystem;using namespace std;int main() { path path1("D:/01.cpp"); //文件路径 path path2("01"); //目录路径

2020-12-09 11:10:48 205

vs2015证书.7z

Visual Studio 2015安装所需证书,安装好证书Visual Studio 2015 update 3才能安装

2021-09-22

TotalUninstaller.7z

Visual Studio完全卸载工具,该工具能将磁盘的所有vs残留卸载掉。

2021-09-22

空空如也

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

TA关注的人

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