- 博客(1858)
- 问答 (2)
- 收藏
- 关注
转载 HTTP协议超级详解
HyperTextTransferProtocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。
2025-03-07 21:30:07
31
转载 一篇文章搞懂http协议(超详细)
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。HTTP是一种用作获取诸如 HTML 文档这类资源的协议。
2025-03-07 21:28:07
113
转载 C++条件变量唤醒问题 & notify_one() 唤醒不及时问题
noyify_all能够让所有的等待线程感知,所以能够直接选出来获得锁的。因为我对于 C++中条件变量的等待唤醒部分、的区别方面有些疑点,因此就有了以下的同。的沟通,希望同样能够帮助到大家。
2025-03-07 21:26:19
21
转载 C++ notify_one之前应不应该加锁问题探讨
在C++里,condition_variable::notify_one没有参数,所以不需要加锁就能调用。原因是,假如线程B获取锁、调用notify_one之后,线程A立即唤醒了,但A唤醒后就要获取锁,此时锁还在线程B手里,A只能再次阻塞,这样就相当于一次无效唤醒。如果B调用notify_one之前不去获取锁,就没有这个 问题了。在这个例子中,线程B notify_one之前还是要加锁的。实际上,因为存在虚假唤醒问题,所以wait操作总是会带一个predicate的。t2: 线程A wait阻塞。
2025-03-07 21:22:49
15
翻译 C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)
将类型名作为强制类型转换运算符的做法是C语言的老式做法,为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成,把基类指针转换成派生类指针,把一种函数指针转换成另一种函数指针,把转换成非常量指针等。C++ 引入新的强制类型转换机制,主要是为了克服C语言强制类型转换的以下三个缺点。
2025-03-05 21:35:30
15
转载 cpp-httplib用法入门
但是对使用者来说,在linux平台,httplib要求gcc必须高于4.8,像centos7环境必须升级gcc。解压压缩包,可以看到所有的代码都包含在httplib.h这个头文件中,httplib本身是无须编译的。在windows平台,httplib要求vs至少是2015以上,或者qt版本5.9以上。此外,如果需要使用HTTPS,httplib还依赖openssl 1.1.1。将httplib.h拷贝到工程目录,或者配置好头文件依赖,按F7编译。下面用一个简单的例子,说明在linux、vs、qt如何使用。
2025-03-05 21:34:05
21
转载 C++并发编程的高级接口:async() 和 Futures
作为一名程序员,我们必须确保f的生命周期(注意是f,而不是它引用的共享状态)不小于已启动的线程。例如在如下代码中,我们在当前线程中修改变量c,而在另一个异步线程(std::async启动的后台线程)中读取c,这是一个非同步的并发访问,会出现所谓的数据竞争,结果是未定义的,除非使用互斥锁或原子变量进行同步。如果当前有一个线程可用,则会异步启动,但如果没有线程可用或者系统环境不支持多线程,调用将被推迟,直到明确表示需要它的结果(调用get())或只是希望传递的可被调用对象完成(调用wait())。
2025-03-05 21:33:01
15
转载 《深入理解C++类型转换:探索 static_cast、reinterpret_cast、dynamic_cast 和 const_cast》
在C++编程中,类型转换是一项基础而强大的特性,允许开发者在不同数据类型间转换和操作数据。本文将详细分析C++的四种类型转换:static_cast、reinterpret_cast、dynamic_cast 和 const_cast。通过精心设计的示例和深入讲解。强调理解这些转换只是改变了编译器对地址解释的方式,而非创建或转换实际对象。加深您对C++类型转换的理解。
2025-03-05 21:31:01
37
转载 C++14::lambda函数的类型
auto 自动类型推导关键字隐去了一切有关对象类型的信息,通过typeid关键字我们可查阅一般对象(甚至是函数指针)的类型信息。Lambda的类型,是个不具名function object(或称functor)。除了能得到两个对象均是lambda函数外,无法通过typeid关键字获得额外的信息。
2025-03-05 21:29:37
5
转载 httplib库的使用(支持http/https)(一)
httplib库是一个以C++11特性编写的库,所以编译器也需要能支持C++11的。库在使用时只需包含一个头文件即可,非常方便。下载地址注意:此库为线程阻塞,使用时还请注意。
2025-03-05 21:25:30
73
转载 cpp-httplib 源码剖析
cpp-httplib是一个c++封装的http开源库,仅包含一个头文件,不过代码行数达到8000多行,相比于上一节中讲述的Tinyhttpd ,该库功能就比较完善,并且可以在简单的项目中使用。cpp-httplib 服务端采用select IO多路复用模型,工作的处理方式,主要包含的类Server、Client、Request、Response。上述进行简单的举例,方便掌握处理流程。借助该库还可以实现http推送功能,更多应用可以参考库中自带的例子。
2025-03-05 21:22:59
19
转载 第三方库httplib的使用
回调函数是上面介绍的请求和响应结构体,在使用的时候可以定义一个void(const Request &, Response &)类型的函数进行传入,httplib会自动调用对应方法。通过MultipartFormData 结构中包含了name,用于区分每个MultipartFormData的名字,content是文件的主要内容,filename是文件原本的名字,content_type的上传文件的类型。
2025-03-04 09:27:37
34
转载 简单的 curl HTTP的POST&GET请求以及ip port连通性测试
100 Continue 是 HTTP/1.1 中的一种状态码,表示服务器已经收到了请求头,并且客户端应该继续发送请求体。端口直接进行登录,另一个为我们使用网关接口,进行登录转发到登录系统,进行登录操作。,项目部署完成后我们需要进行项目后端接口的测试功能,但是由于客户那边么有条件安装类似于。注意:我们测试环境密码校验部分已经注释,可以随意填写,所以测试密码为随机填写。我们使用curl 进行测试接口,接口使用网关接口,首先我们使用。我们测试的登录一共有两个接口,其中一个是我们。命令来模拟登录接口的登录测试。
2025-03-04 09:26:36
82
转载 Boost.Regex库在linux上的编译安装,使用
Boost是C++中仅次于STL的一套库,它的功能比STL更加全面。。需要说明的一点是,Boost目前还不是C++标准库的一部分,因此如果要使用Boost中的库,需要自己安装一下。2. Boost.Regex的编译最新的Boost库是1.42.0,在使用Boost.Regex之前,需要先下载Boost库,可以通过下面两种方式下载:(1)Http下载,下载地址是我个人比较推荐使用svn客户端来下载,这样的话,如果要更新直接svn update一下,就不用再去重新下载了。
2025-03-04 09:23:22
18
转载 3-1 HTTP全解(IP、端口port、域名、URL、curl命令)
1.前言HTTP:超级文本传输协议protocol:协议、礼节、入门李爵士发明的三样东西:WWW=URL+HTTP+HTML。
2025-03-04 09:21:10
17
转载 【Postman】Postman模拟服务(mock)使用教程
这样我们就得到了一个mock server的地址,也就是说,这个mock server是postman在自己的服务器上为我们创建的,只要我们打开postman,我们都可以直接用这个地址来访问mock的API。点击下图中的Example,在出现的界面内点击“Add Example”,就会创建一个该Request的一个Response。点击新创建的测试用例旁边的箭头,再点击“Mocks”,在切换出的界面中,点击“Create a mock server”。”,选择“Add Request”添加请的请求。
2025-03-04 09:19:21
28
转载 体验了11个主流大模型:ChatGPT一骑绝尘,智谱清言国产最佳
因为好奇各家的大模型技术和产品能力,我过去用过非常多的的大模型App。最近趁着假期,对之前用过的一些国内外主流的大模型应用做了一次相对系统的体验和梳理。涵盖了11款的大模型产品,八个体验维度。当然先声明下,这并不是技术型量化评测,更多的是站在用户视角,体验这些产品对日常工作生活带来的便利性。
2025-03-01 14:02:39
105
翻译 安装boost的regex模块
参考:http://onlamp.com/pub/a/onlamp/2006/04/06/boostregex.html?boost是c++下的强大的library库,本文讲一下怎么安装boost的正则表达式模块。建议用静态链接库,不然的话你还得再运行的机器上再单独安装boost的regex模块。现在回在/usr/local/regex下生成动态和静态的链接库。1:下载boost源文件。解包后进入到根目录。
2025-02-28 22:05:24
15
转载 正则大全,一定有你需要的,进来搜
(Regular Expression,简称regex或regexp)是编程中一个非常强大的工具,它用于匹配字符串中字符的组合。今天,我将为大家总结100个常用的正则表达式。这些正则表达式涵盖了各种常见的匹配需求,但请注意,正则表达式可能因具体需求而有所调整。在实际应用中,建议根据具体情况进行测试和优化。
2025-02-28 16:41:37
31
原创 SLAM网站连接
SLAM 几何基础_slam算法的几何基础-CSDN博客多传感器融合定位十五-多传感器时空标定(综述)_多传感器融合之手眼标定-CSDN博客
2025-02-28 16:27:23
296
转载 自动化魔法:用Python实现在多个Word文档中一键搜索
通过这个简单的Python脚本,你可以轻松地在大量.docx文件中搜索指定的文本,大大提高了工作效率。希望这篇文章对你有所帮助!自动化魔法:用Python实现在多个Word文档中一键搜索_python搜索word文件内容-CSDN博客。
2025-02-28 12:43:57
17
转载 c++11 读写锁实现
2. 对于更老的代码(c++11之前,没有conditional_variable),可能需要根据。3. 补充一个windows下的信号量。在一些读多写少的业务场景下,
2025-02-27 17:57:33
19
转载 【SSH】如何通过 SSH 跳板实现免密码登录(跨平台通用)
在实际开发或运维中,面对复杂网络环境,我们常常需要通过跳板机(Jump Host)连接到目标服务器。为了提高操作效率,SSH 免密码登录是一种高效且安全的选择。本文将从基础概念到实际操作,详细介绍如何通过跳板实现免密码登录,并涵盖 Windows、Linux 和 macOS 等主流平台。本文详细介绍了通过 SSH 跳板机实现免密码登录的完整流程,包括公钥配置、权限设置和工具支持等。通过合理配置,可以显著提高复杂网络环境下的开发效率。
2025-02-27 13:17:57
28
转载 ssh执行远程命令的坑
既然是终端分配导致的,那么根据ssh -T参数的含义,是否可以disable伪终端的分配呢?可以进行试验,执行如下命令。登入shell终端,手动执行上面的命令,一切ok。但是放到crontab中无法执行,重定向输出到文件,得到如下信息。直接在终端里执行shell命令,与crontab里执行,本质区别是二者环境变量的差异。使用 ssh -t -t 执行,发现crontab下运行正常,问题得以解决。注意到ssh命令中的-t参数,是用来控制给ssh分配伪终端。注意到上述问题出错信息,结合ssh -t参数的含义,
2025-02-27 12:48:23
14
转载 出现GDB No symbol “xxx“ in current context的几种原因分析
编译的时候,如果使用了-g选项,GCC4.8及其以上的版本默认使用-gdwarf-4 -fno-debug-types-section选项,也就是使用DWARF4调试信息格式。如果gdb的版本只支持DWARF2或者DWARF3,在使用gcc编译的时候可以使用-gdwarf-2或-gdwarf-3选项来指定调试信息格式,已和gdb保持一致。建议编译的时候使用-g选项的时候,同时使用-Og可以关闭编译优化(-O选项较低gcc版本不支持)。2、编译的可执行程序的调试信息格式与GDB所支持的不一致。
2025-02-25 21:32:25
89
转载 图说C++对象模型:对象内存布局详解
文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能有所不同。文章如果有解释不清、解释不通或疏漏的地方,恳请指出。这篇文章主要来讨论C++对象在内存中的布局,属于第二个概念的研究范畴。而C++直接支持面向对象程序设计部分则不多讲。虚函数表解析。含有虚函数或其父类含有虚函数的类,编译器都会为其添加一个虚函数表,vptr,先了解虚函数表的构成,有助对C++对象模型的理解。
2025-02-25 21:30:39
27
转载 CMake 项目构建和代码测试
CMake 是非常常见的 C++ 代码构建工具,在 C++ 项目构建中被广泛使用。本文我们将以著名的 CMake 入门示例为例,进行 CMake 的使用汇总。除配置变量外,CMake还可以自定义变量,它们通常用于保存一些路径,例如:cmake12set(SRC main.cpp add.cpp sub.cpp mul.cpp div.cpp) # 设置 SRC 变量。
2025-02-25 21:26:41
32
转载 using 的三大作用汇总
using到底是干嘛的?using的功能总有一种覆盖面广的感觉,似乎并没有特定的功能。其实using的功能主要可以总结为两个 “引入”、一个 “别名”。其中两个引入是指和,一个别名是指。但实际上又并非这么简单,using在类中又被赋予了更多的意义,本文将就上面讲到的这些内容作整理总结。
2025-02-25 15:47:50
12
转载 STM32 ICP、ISP、IAP、Bootloader、SWD、JTAG究竟是什么?它们之间有什么关系?
从代码写入单片机的方式上去区分主要分为3种:ICP、ISP、IAP一、ICP(In Circuit Programing):在电路编程,可通过CPU的Debug Access Port 烧录代码,比如ARM Cortex的Debug Interface主要是SWD(Serial Wire Debug)或JTAG(Joint Test Action Group);ICP 主要通过CPU的DAP(Debug Access Port) 烧录代码,下面以ARM Cortex-M3/M4 为例,展示Debug Int
2025-02-24 16:35:00
199
转载 STM32F407串口IAP远程升级程序
在产品研发阶段,可以采用ICP烧录程序,能通过仿真器进行调试快速找出bug,但是需要相关硬件电路,如图1所示。在产品研发完成后,由于JTAG相关的电路会占用单板上的体积,所以一般会把这部分电路给删去,删去之后就无法使用仿真器进行程序更新和调试。图1 JTAG电路烧录的程序存放在Flash中,STM32程序启动或复位时,起始地址是0x08000000,然后按既定顺序依次运行程序,如图2所示。
2025-02-24 16:33:57
53
转载 C++内存管理:shared_ptr/weak_ptr源码(长文预警)
本文主要讲述c++提供的shared_ptrweak_ptr和,以及详解MSVC中STL提供的智能指针源码。
2025-02-23 21:41:10
23
转载 share_ptr循环引用产生原因及其解决方案
根据之前的分析可知,前三句代码执行完后,Person对象的引用计数为1,Car对象的引用计数为2。根据代码执行顺序,share_ptr指针指向new创建的一个Person对象,也就是图中栈空间的person指针指向了堆空间的Person对象,引用计数为1,同理,car指针也指向了堆空间的Car对象,引用计数亦为1。接下来,Person对象里的成员m_car指向Car对象,Car对象的引用计数加1后为2,Car对象的m_person也指向Person对象,Person对象引用计数也加1为2。
2025-02-23 21:39:19
29
转载 weak_ptr弱引用智能指针详解
这个指针天生一副小弟的模样,也是在C++11的时候引入的标准库,它的出现完全是为了弥补它老大天生有缺陷的问题。相比于上一代的智能指针来说,新进老大可以说近乎完美,但是通过引用计数实现的它,虽然解决了指针独占的问题,但也引来了引用成环的问题,这种问题靠它自己是没办法解决的,所以在C++11的时候将和一起引入了标准库,用来解决循环引用的问题。什么是循环引用的问题呢?在shared_ptr的使用过程中,当强引用计数为0是,就会释放所指向的堆内存。那么问题来了,如果和死锁一样,当两个shared_ptr互相引用,那
2025-02-23 21:38:04
20
转载 STC单片机 IAP(EEPROM)的使用
**************************** 擦除一扇区 ****************************//**************************** 读一字节 ****************************//**************************** 写一字节 ****************************/在ISPEN(ISP_CONTR.7) =1时,对ISP_TRIG 先写入46h,再写入B9h,ISP/IAP命令才会生效。
2025-02-23 21:27:33
57
转载 如何使用万用表检测芯片I/O口好坏
为检测管脚是否被烧坏,除了使用上面的方法检测I/O口到GND的保护二极管外,还需要检测I/O口到VCC的保护二极管。依次测量每个I/O口,如果万用表显示的参数为0.7V左右,则表示芯片的内部I/O到GND的保护二极管正常,即打线也是完好的,若显示的参数为0V,则表示芯片内部的打线已被拉断。依次测量每个I/O口,如果万用表显示的参数为0.7V左右,则表示芯片的内部I/O到VCC的保护二极管正常,若显示的参数为0V,则表示芯片此端口已被损坏。首先将万用表调到二极管检测挡位,被测芯片不要供电,将万用表的。
2025-02-23 21:25:02
42
转载 单片机三种烧录方式ICP、IAP和ISP详解
1、ICP使用SWD接口进行烧录程序。常用的烧录工具为J-Link、ST-Link、Nu-Link。与之配套的烧录软件为J-Flash、NuMicro_ICP_Programming_Tool、st-link utility。2、ISP是使用引导程序通过USB/UART等接口进行烧录的,首先就是需要有BoodLoad程序。最常见的烧录方式就是学习8051单片机时使用的STC-ISP烧录工具了。3、IAP就是通过软件实现在线电擦除和编程的方法,没有使用任何工具。
2025-02-22 17:30:40
101
转载 STM32 ICP、ISP、IAP、Bootloader、SWD、JTAG究竟是什么?它们之间有什么关系?
从代码写入单片机的方式上去区分主要分为3种:ICP、ISP、IAP一、ICP(In Circuit Programing):在电路编程,可通过CPU的Debug Access Port 烧录代码,比如ARM Cortex的Debug Interface主要是SWD(Serial Wire Debug)或JTAG(Joint Test Action Group);ICP 主要通过CPU的DAP(Debug Access Port) 烧录代码,下面以ARM Cortex-M3/M4 为例,展示Debug Int
2025-02-22 17:26:10
197
空空如也
cnds的c-ide好使么,我怎么一直发生错误啊,哪位大神指点一下!
2017-05-17
关于c++ 文件流打开后,判断存在和是否打开的区别?
2017-05-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人