自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 数据库客户端 Navicat Premium 12破解激活

选择安装目录,一直点击下一步下一步就可以了。

2024-04-25 16:16:56 101

原创 离线模式下载安装gcc-4.8.5

安装环境无外网的情况下,需要手动下载依赖包(有网,则不需要该步骤),一般是三个依赖包:mpc,gmp,mpfr,下载地址都是从gcc官网进入,需要下载的版本是gcc安装包解压后的文件(gcc-4.8.5/contrib/download_prerequisites)中,配置的版本(要大于等于该版本)按照依赖库的版本,将./contrib/download_prerequisites文件中信息更改,并且将(wget的下载操作注释掉)undefined reference to '_asan_init_v4'

2024-04-25 16:14:36 691

原创 centos7 fatal error: curl/curl.h: No such file or directory

若编译遇到此问题,可以查看环境是否libcurl库。发现未安装libcurl库。

2024-04-02 11:19:19 266

原创 C++中发送HTTP请求的方式

使用C++编程发送HTTP请求通常需要使用第三方的HTTP库或框架。在C++中,有几个受欢迎的HTTP库可供选择,例如Curl、Boost.Beast和cpp-httplib。另外,也可以自己实现socket来发送http请求。

2024-04-02 11:12:48 802

原创 basic_string.h不同版本引起的异常崩溃

程序运行时报错,查看core文件,发现basic_string.h报错经过排查发现编译文件CMakeLists中设置了_GLIBCXX_USE_CXX11_ABI = 0是C++中的编译宏, 用来控制string及list使用的版本。该宏仅在GCC5.1及后续版本中有效。string及list的新版本符号是std::__cxx11::basic_string 及 std::__cxx11::list。编译使用-D_GLIBCXX_USE_CXX11_ABI=1编译使用可以看到,编译后的符号是。

2024-03-18 09:17:26 332

原创 解决 version GLIBCXX_*.*.* not found

a> 查找当前环境上是否有高版本的libstdc++.so, 发现有高版本的库。linux机器,编译程序正常,但是运行程序报错。b> 将高版本的库复制到同一目录下。c> 修改软链接,指向新版本库。d> 验证程序,可以正常运行。

2024-03-13 16:29:34 369

原创 线程的使用

get_id 获得当前线程idYield 将当前线程时间片让渡给其他线程sleep_until 当前线程休眠直到某个时间点sleep_for 当前线程休眠一段时间。

2024-03-07 14:43:31 1227

原创 set -e执行出现命令未找到

分析,因为 set-e命令作用:脚本内该行命令下所有命令遇见异常返回,则直接退出;发现错误原因是该脚本是 windows格式下的文件,在linux环境下执行。发现是 set-e报出来。再次执行脚本,错误解决。

2024-03-05 10:44:49 482

原创 线程间通信方式

一般而言,在一个应用程序(即进程)中,一个线程往往不是孤立存在的,常常需要和其它线程通信,以执行特定的任务。如主线程和次线程,次线程与次线程,工作线程和用户界面线程等。这样,线程与线程间必定有一个信息传递的渠道。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的。线程间的通信涉及到4个问题:a.线程间如何传递信息;b.线程之间如何同步,以使一个线程的活动不会破坏另一个线程的活动,以保证计算结果的正确合理;c.当线程间具有依赖关系时,如何调度多个线程的处理顺序;

2024-03-01 16:05:22 990

原创 Linux挂载windows下的共享文件夹

这篇博客为大家介绍一下Linux上挂载Windows下的网络共享文件夹,实现不同系统间的文件同步。很多时候本地开发有多个项目,文件修改比较频繁,且为了避免Linux环境磁盘空间不足,需要将多个项目放置共享目录下,将其挂载在linux服务器下。

2024-02-29 13:20:36 531

原创 postman 工具安装使用教程一(java)

postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好。无论是开发人员进行接口调试,还是测试人员做接口测试,postman都是我们的首选工具之一。基础功能: 1 .常见类型的接口请求 2 .接口响应数据的解析 3 .接口管理(Collection) 4 .批量执行接口请求 5 .日志调试 6 .断言 7 .变量 8 .请求前置脚本 9 、接口关联 10 .常见的返回值获取。

2024-01-26 14:40:44 1124

原创 Python 开发环境的搭建

安装python-3.12.1-amd64 安装包的下载 安装 PyCharm Community2023.3 下载PyCharm Community(社区版) 并勾选下面两个复选框。

2024-01-25 15:20:42 1322

原创 python报错:TypeError: ‘str‘ object is not callable

定义了一个str的变量,这个和Python自带函数str的命名冲突了,所以发生这个错误。确实,这是一个情况。这种情况的解决办法就是:严格遵守命名规范,避免命名冲突。但是更改了变量之后,还是会出现冲突(有缓存)重新restart一下。

2024-01-24 15:37:52 367

原创 python报错:Inconsistent use of tabs and spaces in indentation

Python的缩进错误通常出现在混合使用制表符(tab)和空格进行缩进的情况下。虽然它们在视觉上可能看起来相同,但实际上,他们被计算机解析为不同的字符。Python是一种以可读性为优势的编程语言。其设计者在制定语法规则时,选择了一个独特的方式来定义代码块——通过缩进。代码段中,某一行的开头tab,变空格了。

2024-01-23 15:26:13 531

原创 Visual Studio离线版本下载安装

includeOptional/–includeRecommended:安装所选的工作负载组里面的推荐项/安装所选工作负载里面全部可选项。–add 工作负载:添加一个工作负载,工作负载id对应将在下面列出。若要下载多个工作负载组件,可以多加几个–add参数。将下载完成后的 D:\VS2023 目录打包, 拷贝至需要安装的设备上。下载完成后,出现很多安装包目录,和 vs_setup.exe 文件。需要将官网页面拉在最下方,点击较早的下载,选择老版本进行下载。下载速度比较慢,0.01%的增加。

2024-01-19 10:58:15 1576

原创 进程与线程介绍

进程:是操作系统分配和调度系统内存资源、CPU时间片等资源的基本单位,为正在运行的应用程序提供运行环境;线程:是操作系统/CPU能够进行运算调度的最小单位,它被包含在进程之中,进程包含一个或者多个线程。简单总结一下上面六种 Linux 内核提供的进程通信机制:1)首先,最简单的方式就是管道,管道的本质是存放在内存中的特殊的文件。也就是说,内核在内存中开辟了一个缓冲区,这个缓冲区与管道文件相关联,对管道文件的操作,被内核转换成对这块缓冲区的操作。

2024-01-02 16:38:16 603

原创 内核日志排错

例如可以用 echo “/tmp/corefile-%e-%p-%t” > /proc/sys/kernel/core_pattern 设置生成的 core 文件保存在 “/tmp/corefile” 目录下,文件名格式为 “core-命令名-pid-时间戳”还可以通过修改 /proc/sys/kernel/core_pattern 来控制生成 core 文件保存的位置以及文件名格式。注意rc.local在不同的环境,存储的目录可能不同,su下可能在/etc/rc.d/rc.local。

2023-12-29 14:40:46 1219

原创 memmove 内存映射引起崩溃问题

由内存映射引起崩溃问题memmove函数:主要作用是从源内存块拷贝一定数量的字节到目标内存块,但只有在源地址和目标地址不重叠时才会拷贝数据。2,只有目标内存块的大小小于源内存块的大小,可能会导致数据被截断,造成不可预期的结果。因此怀疑读取队列大小,并映射地址空间完成之后,有操作对map队列写入数据,导致读取队列数据集大于映射出来的地址空间。七,总结:1,确定异常代码段(看日志, 查看core文件, 查看系统日志文件syslog)检查代码,果然发现对错误消息插入队列的时候未调用锁,而直接进行写数据的操作。

2023-12-28 12:54:44 529

原创 大端序小端序

大端模式:是指数据的高字节保存在内存的低地址中;小端模式:是指数据的高字节保存在内存的高地址中;

2023-12-27 15:03:28 525

原创 僵尸进程原理

父进程在接收到该信号后,应该调用 wait() 或 waitpid() 系统调用来获取子进程的退出状态,释放子进程占用的资源,并从系统进程表中移除子进程的相关信息。僵尸进程不占用实际的系统资源,但它们的存在可能会浪费一些系统进程表的空间,当大量的僵尸进程积累时,可能会影响系统的性能和稳定性。综上所述,避免僵尸进程的产生需要父进程负责及时处理子进程的退出状态,释放子进程的资源。或者有多个子进程死亡。使用 fork() 创建子进程后,在父进程中调用 wait() 或 waitpid() 等待子进程的退出。

2023-12-26 08:41:52 908

原创 信号知识总结

信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可以给进程传递数据。信号的概念,信号的来源,,信号的机制,查看singal信号四要素,进程对信号的响应,信号处理函数与相关结构信号安装的各个函数,发送信号函数,信号集及信号集操作,阻塞信号相关函数,遇到的问题

2023-12-25 10:20:29 1537

原创 异步非阻塞模式,connect返回-1,errno为115

两个错误:1,connect返回出现-1 2,FD_ISSET(sock, &rset) 检测集合异常此问题在windows环境下是正常的,但是在linux环境下是异常的,这个问题是一个历史的问题。linux环境下出现这种写法比较早,当时只判定写的文件集中的文件描述符,但是后来windows下也发展出现了这种写法,但是windows下读写都判断,读默认是被修改过的。实际上读的文件描述符在linux和windows都未改动了,只是windows默认让它改动了。

2023-12-21 14:51:05 1653

原创 cmake安装与基础语法学习3--之cmake编译构建

cmake编译构建。CMake 支持两种构建模式,分别为 源码中构建,源码外构建。生成构建系统:cmake -S . -B build执行构建:cmake --build build安装文件:cmake --install build可执行文件add_executable静态库target_include_directories动态库target_include_directories特殊的库add_library,add_library

2023-12-20 09:24:32 1178

原创 cmake安装与基础语法学习2 --之CMakeList语法

CMakeLists.txt 的语法,project 配置项目信息;set 设定编译,指定编程语言版本,配置编译选项,配置编译类型,添加include目录,设置变量;常见变量CMAKE_MODULE_PATH;add_compile_options 配置编译选项;add_definitions 添加全局宏定义;message 打印信息STATUS 或 (none);GLOB,MAKE_DIRECTORY;string字符串操作,list,数学表达式,find_program,add_subdirectory

2023-12-19 11:25:52 1289

原创 cmake安装与基础语法学习1 --之安装简介

cmake安装与基础语法学习;Cmake并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile),然后再以一般的建构方式使用。简单的说就是CMake基于Makefile做了二次开发。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。有些项目有最低版本要求,如果版本过低,可能项目会编译不了,可以升级CMake。A>卸载已经安装的旧版的CMake[非必需]。二、安装 cmake。

2023-12-15 15:49:42 435

原创 应用程序mock打桩2

应用程序mock打桩操作。该篇文章是对数据转换层,和数据发送层进行打桩。数据塞入线程队列的统一接入入口。ThreadProcess_T_CalSpi_Mock是消息处理进程类模板,消息数据以同步的方式添加后,以异步的方式消费;此处将消息发送到队列进行打桩,直接回调。该文章紧接上一篇文件介绍,应用程序mock打桩操作。该篇文章是对数据转换层,和数据发送层进行打桩。RecvProcessNorm 统一数据类型转,调用消息处理线程(在消息转换之处进行打桩)

2023-12-14 15:46:36 504

原创 应用程序mock打桩1

网络编程思想,针对发送数据层进行mock打桩,可以使用gtest测试应用,运用了仿函数,STL map 函数指针,多参数合并为一个数据

2023-12-12 14:30:11 832

原创 cmake 错误 “libgcov.a(_gcov_merge_add.o) is referenced by DSO“

原因就出在编译库的时候是不用加-ftest-coverage -fprofile-arcs的,因为这时候只是编译成.o的二进制文件,gcov要在生成.o文件后在.o文件中打桩,链接的时候需要加上target_link_libraries(*** gcov)。遇到libgcov.a is referenced by DSO问题,网上搜了搜,很多人遇到,有说加-shared,有说加–coverage,有说加-lgcov,都不能解决我的问题。链接的时候添加gcov库的链接。

2023-12-11 15:14:53 808

cmake从入门学习到精通,个人手写工程实例

个人实现的简单cmake工程,也许不能让你从菜鸟变成资深,但是可以让你从入门到对cmake有一定的学习了解

2023-12-20

cmake学习终结文档

cmake 是一个跨平台的自动构建工具,里面导语部分也已经给大家介绍了,cmake 主要是为了解决直接使用make+Makefile 这种方式无法实现跨平台的问题,所以 cmake 是可以实现跨平台的编译工具,这是它最大的特点,当然除了这个之外,cmake 还包含以下优点: 1.开放源代码。我们可以直接从 cmake 官网 https://cmake.org/下载到它的源代码。 2.跨平台。cmake 并不直接编译、构建出最终的可执行文件或库文件,它允许开发者编写一种与平台无关的 CMakeLists.txt 文件来制定整个工程的编译流程,cmake 工具会解析 CMakeLists.txt 文件语法规则,再根据当前的编译平台,生成本地化的 Makefile 和工程件,最后通过 make 工具来编译整个工程;所以由此可知,cmake 仅仅只是根据不同平台生成对应的 Makefile,最终还是通过 make工具来编译工程源码,但是 cmake 却是跨平台的。 3.语法规则简单。Makefile 语法规则比较复杂,对于一个初学者来说,通常并不那么友好,并且Makefile 语法规则

2023-12-20

空空如也

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

TA关注的人

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