自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 类的类型转换函数

在C++中,类型转换函数允许在特定上下文中自动转换为其他类型。这些函数被称为转换函数(conversion functions)。

2024-05-03 01:02:10 1367 1

原创 typename 关键字

在这个例子中,T::InnerType 是一个嵌套类型,编译器在看到 T::InnerType 时并不知道它是一个类型还是一个成员变量名或成员函数名,因此需要使用 typename 明确告诉编译器这是一个类型。在 C++ 中,typename 关键字用于告诉编译器某个标识符是一个类型名字,而不是一个变量名字或者其他实体。在模板内部,有时候编译器无法确定某个标识符是类型名称还是成员函数名或成员变量名,此时就需要使用 typename 来明确告诉编译器这是一个类型。

2024-05-03 01:01:40 253

原创 C++——using 关键字

如果代码是这样的话,struct X {X x;Y y;x.f(1);y.f(1);y.f(1.0);return 0;执行结果如下:如果代码是这样的话。Y y;x.f(1);y.f(1);y.f(1.0);return 0;执行结果如下:为什么会这样呢?这是因为如果派生类中定义了与基类中同名的成员函数,则派生类中的同名函数会覆盖基类的函数。这被称为函数重写或函数覆盖。

2024-03-06 16:49:19 1886

原创 刚工作菜鸟的小总结2

using关键字可以用来定义一个类型的别名。例如 using SI_Error = int ,它的作用是将 SI_Error 这个名称与 int 类型进行关联,也就是说在后续代码中,可以使用 SI_Error 来代替 int 类型。如果程序中出现了 SI_Error ,我们就能清晰知道它实际上是一个整数类型。

2024-03-06 16:48:45 934

原创 写shell脚本时,不知道怎么用adb进入超级用户,可以这么做

这两句脚本执行成功会这样子,成功之后,就已经是 su 权限了。

2024-01-21 23:13:05 448

原创 C++11 =default,=delete

一个类中只要带有指针的成员你就需要自己定义类,自己写出 Big-Three,不能使用默认的。如果一个类中没有指针成员就可以断定大概率不用自己写 Big-Three,使用默认的类就好。带有指针的话,就有深拷贝和浅拷贝;如果只是单纯地把指针,四个字节拷贝过去,也就是两个指针指向同一块内存,这种就叫浅拷贝。深拷贝则是,指针所指向的那一块内存也要拷贝过去。例如复数的类,就是可以直接使用默认的 Big-Three。

2024-01-21 23:12:08 1158

原创 source 时发生Relocating ...Fatal Python error: Py_Initialize: Unable to get the locale encoding

根据错误信息 “Fatal Python error: Py_Initialize: Unable to get the locale encoding” 可以看出这是由于 Python 初始化时无法获取本地编码设置引起的问题。同时,ImportError: No module named ‘encodings’ 也表明 Python 编码相关的模块无法找到。因此,结合这两个错误,可以初步推断这是由于 Python 编码环境问题引起的。在 source 之前,可以尝试手动设置Python的编码环境。

2023-12-25 00:30:47 1228

原创 成员函数指针作为参数是,静态函数和非静态函数的区别

因此,在调用类的成员函数时,你应该使用 &ClassName::MemberFunction(类名::成员函数) 的语法来获得成员函数的地址,并将其传递给相应的函数或函数模板进行处理。静态成员函数是与类相关联的函数,而不是与类的实例(对象)相关联的。如果 Student::treat 是一个静态成员函数,那么在将其传递给函数参数时,不需要使用 & 运算符获取其地址,也不需要提供对象来调用它。这是因为,在 C++ 中,Teacher::hungry 表示的是成员函数本身,而不是它的地址。

2023-12-25 00:29:47 511

原创 关于回收套接字和释放上下文的顺序

假设在释放 pubContext 上下文之后,关闭 pubSocket 套接字之前,还存在为发生的数据,但此时已经释放了上下文的内存,当再次使用套接字进行数据传输是,就会出现悬空指针或访问无效内存的问题,因为上下文已经被释放了。:在网络编程中,使用套接字进行通信后,应该及时关闭套接字以释放系统资源。总结起来,回收套接字和释放上下文的顺序是为了保证正确的资源管理,先确保不再使用套接字后再释放与套接字相关的上下文,以防止悬空指针、内存泄漏或其他资源相关的问题。回收套接字和释放上下文的顺序是。

2023-12-05 22:32:13 470

原创 嵌入式中,为什么使用 cout 输出会导致段错误,而使用 printf 却不会

因此,我们可以说printf函数对于标准输出流的具体实现方式是透明的,即它不需要关心标准输出流的底层实现细节,只需要通过标准库提供的接口来进行输出操作即可。printf函数是C语言中的标准库函数,它通过传递参数列表来进行格式化输出,并且直接调用底层系统API将输出发送到标准输出流(stdout),标准输出流指针指向哪里(终端、文件、串口或者LCD屏幕等),它就输出到哪里。然而,与printf函数不同的是,cout输出并没有直接调用底层的系统API来进行输出操作,而是依赖于标准库提供的输出流机制。

2023-12-05 22:31:07 1089

原创 Linux 挂载文件系统为可读写 mount -uw / 和 mount -o remount,rw /

使用正确的挂载选项可以为文件系统的安全性和性能提供良好的保障。中的 -u 参数表示将已挂载的文件系统重新挂载为可读写模式,而 -w 参数表示以可写模式挂载。,用于指定额外的挂载选项。remount 参数表示重新挂载,rw 参数表示以可读写的方式挂载。命令在大多数情况下应该是能够重新挂载为可写的文件系统的,但在某些特殊情况下可能会失败。命令则更加具体和明确,通常能够成功地重新挂载为可写的文件系统。地指定了重新挂载,并将文件系统以可读写的方式挂载。,该命令可以成功地重新挂载为可写的文件系统。

2023-11-27 15:10:35 3554

原创 在工程中输出尽量用log而不用直接打印

例如,将日志级别设置为 ERROR 或 FATAL,则只会输出关键的错误信息,而不会输出调试或跟踪信息,从而避免了无用的输出信息占用过多的内存空间。由于嵌入式处理器的计算能力有限,如果程序中频繁地使用 printf 函数输出日志信息,可能会导致处理器过载,从而影响系统的实时性和响应速度。相比之下,printf 可能会产生大量的输出,占用过多的内存和处理时间,从而影响系统性能。:log 系统通常具有更好的移植性,可以在不同的平台和操作系统上使用,而 printf 则可能因为不同平台和编译器的差异而导致问题。

2023-11-27 15:09:12 637

原创 开发过程中,对于动态库的疑问和思考

一开始我是想着,有了头文件,不就已经有了我在代码中需要用到的关于 hiredis 的数据结构和函数定义了吗,在编译成可执行文件时,编译器不就可以找到对应的数据结构和函数定义了吗,就不会导致未定义的情况,就不需要在 Linux 系统下包含 libhiredis.so 了啊。,有了这个选项,链接器就需要去找到动态库的位置和名称,以便能够正确链接和加载动态库,一旦找到动态库,链接器就会把动态库的符号表信息记录在可执行文件中,然后再解析程序中对动态库的符号引用,以便能够正确地将动态库中的函数调用链接到程序中。

2023-11-24 17:12:11 1012

原创 关于 token 和证书

例如,在Web应用程序中,Token通常是一种加密的字符串,用于验证用户的身份和防止跨站点请求伪造(CSRF)攻击。在分布式系统中,Token可能使用更复杂的算法和数据结构来实现资源管理和控制。例如,在分布式数据库中,可以使用Token来协调不同客户端之间对同一数据块的读写操作,避免数据的破坏和不一致性。总的来说,证书更适合用于长期的身份验证和通信加密,而Token更适合用于临时的用户身份验证和授权访问。通过分配不同的Token给不同的客户端,可以实现对系统资源的均衡分配和利用,提高系统的性能和可用性。

2023-11-24 17:10:30 553

原创 在 Linux 环境下的简单调试技巧

可以使用backtrace(bt)来查看堆栈调试信息,它会列出当前执行路径上的函数调用序列,从当前函数一直到程序的入口处。每一行显示了函数的名称、源文件和行号(如果可用),以及函数调用的深度。在程序运行时,可以使用 next 命令逐行执行程序,或者使用 step 命令进入函数内部逐行执行。时,就可以不用设置断点,当你开始执行 run 指令时,程序就会停在出错的地方。使用 print 命令打印变量的值,或者使用 x 命令查看内存中的内容。退出GDB 在调试完成后,使用 quit 或 q 命令退出GDB。

2023-11-19 23:32:59 223

原创 Linux虚拟机中网络连接的三种方式

就是桥接模式使得虚拟系统可以跟外部系统通讯,但容易造成 IP 冲突。

2023-11-19 23:32:25 2998

原创 Makefile(详细教程)

make是一个命令工具,Makefile是一个文件,make执行的时候,去读取Makefile文件中的规则,重点是 Makefile 得自己写。cmake是一个命令工具,CMakeLists.txt是一个文件,cmake执行的时候,去读取CMakeLists.txt文件中的规则,重点是 CMakeLists.txt 得自己写。定义:变量名=变量值使用:$(变量名), ${变量值}clean:自定义函数,不是真正的函数,本质上是多行命令放在外面定义的函数内了。

2023-11-08 10:39:40 3278

原创 刚工作菜鸟的小总结1

在使用自定义头文件时,通常需要将自定义头文件包含在源文件中。如果自定义头文件中引入了其他头文件,那么在包含该自定义头文件时,也会包含进去引入的头文件。在上述代码中,file2.h 引入了 file1.h,而 main.cpp 中包含了 file2.h。

2023-11-08 10:17:36 92

原创 Linux编译时发生找不到程序的入口函数 main;usr/lib/crt1.o(.text+0x34): error: undefined reference to ‘main‘

最后一种就是,你以上两步都操作正确了,但是你的 main 函数写错了,例如你有可能写成 mian,或者小括号写成中文的小括号等等。发生这个错是表示找不到程序的入口函数 main,入口函数 main 是程序执行的起点,没有它无法进行链接和执行。放在最前面,相当于把包含 main 函数的源文件放在其他源文件的前面。函数,这时解决的方法就是,添加编译选项 -nostartfiles;函数,所以编译时就会报这个错。然后你编译的文件真的是不需要。这个文件的路径,一般在编译时,这些。的话,这样在编译时,并不会把。

2023-11-06 20:43:18 1477

原创 当你使用libcurl时,报一系列如下的错:undefined reference to ‘curl_global_init‘,undefined reference to ‘curl_global‘

即 LDFLAGS += -lzmq -lpthread -llog -lssl -lcrypto -lcurl。这个库时,我已经在使用到这个库的源文件上。根本原因就在这里了。当我的项目中需要用到。

2023-11-06 20:15:02 1284

原创 C++头文件中变量不能进行初始化

然而,如果你在多个源文件中包含了这个头文件,那么每个源文件都会有自己的一份全局变量的定义和初始化,这就违反了。属于全局变量,它的初始化在头文件中,而当多个源文件包含了该头文件时就会出现对这个全局变量重复定义的错误。所以,即使使用了头文件保护,也不能解决在多个源文件中对同一个全局变量进行初始化的问题。为了避免这种重定义错误,应该将全局变量的定义放在一个源文件中,并在其他源文件中使用。进行声明,这样全局变量只会被定义一次,避免了重定义错误。当你在头文件中定义和初始化一个全局变量时,并。

2023-11-03 13:18:08 317

原创 侯捷——2.C++标准库 体系结构与内核分析

allocators(分配器)是给containers(容器)分配内存的。当要创建容器时,必须先有分配器分配内存。在创建容器时,可以指定分配器,也可以不指定,编译器会默认指定分配器。

2023-10-25 19:44:59 277

原创 C++——函数指针与指针函数

指针函数在 C++ 中常用于动态内存分配、返回动态数据结构等场景。通过返回指针,我们可以在函数外部访问和操作函数内部动态分配的数据。需要注意的是,使用指针函数时要小心管理内存,避免内存泄漏和悬空指针等问题。

2023-09-30 11:37:30 608

原创 The Cherno——OpenGL

说OpenGL是一种图形API,是因为它提供了一组函数和规范用于描述和操作图形硬件。然而它本身并不是API,而是一种规范,这个规范定义了函数和操作的方式,以及它们应该如何工作。使用GLEW的注意事项:(1)首先需要创建一个有效的渲染OpenGL上下文,然后调用glewInit()去初始化扩展的入口。所以不能直接从GLEW中直接调用OpenGL函数,直到你调用了glewInit()。(2)在调用glewInit()之前,需要先创建一个渲染OpenGL的上下文。

2023-08-29 22:08:27 925

原创 SVN学习

SVN是代码版本管理工具,它能记住每次的修改、查看所有修改记录、恢复到任何历史版本和恢复已经删除的文件。SVN比起Git的好处就是使用简单,上手快;具备目录级权限控制,用户只能访问指定目录下的文件;且子目录就可以检出(Checkout),减少不必要的文件检出。SVN的基础操作:检出(checkout)、新增(add)、提交(commit)和更新(update)。SVN使用的注意事项:使用SVN管理代码之前最好的顺序是先更新,再修改再提交,这样做可以避免发生冲突。

2023-07-26 23:27:45 675

原创 C++判断大端小端

判断大小端

2023-05-24 15:32:27 2204 2

原创 星辰天合XSKYC++笔试

星辰天合笔试

2023-05-23 00:07:10 412 2

原创 C++笔试笔记2

多个公司的面经

2023-05-20 17:10:04 1593

原创 CVTE C++软开全程面试(一面、二面、群面、HR面)

CVTE面试全过程

2023-05-20 16:28:52 1196

原创 C++笔试笔记1(4399 西山居 深信服 剑心互娱 快手)

C++笔试笔记

2023-04-28 14:30:59 1296

原创 C++ 面试

自己总结的面经,后续会继续更新

2023-04-16 12:58:37 482 2

原创 HTTPS的原理以及HTTP和HTTPS的区别

HTTPS是基于HTTP和SSL/TLS的协议,安全性更强。是面试时对于网络方面的常见问题。

2023-04-13 09:26:00 573

原创 Lambda表达式

Lambda(匿名函数)是C++的新特性

2023-04-05 16:16:26 579

原创 C++——指针作为参数传递

指针作为参数进行传递是笔试和面试经常会考到的问题,也是我们学习C和C++时应该学会的知识

2023-03-29 22:14:20 2908

原创 预处理和宏定义

预处理和宏定义也是应聘笔试中常考察的一个知识点

2023-03-26 17:31:31 86

原创 C++基础知识(封装继承多态)

面试要点:C++的封装继承多态

2023-03-26 12:04:21 1163

原创 C++智能指针

平常动态申请内存有可能会出现内存泄漏,所以有了C++智能指针

2023-03-09 23:41:04 1394

原创 《数据结构》王道 第八章 排序

《数据结构》王道 第八章 排序 1. 排序的基本概念1.1 算法的评价指标2. 插入排序2.1 算法实现2.2 算法效率分析2.3 优化2.4 对链表进行插入排序1. 排序的基本概念1.1 算法的评价指标2. 插入排序2.1 算法实现2.2 算法效率分析2.3 优化2.4 对链表进行插入排序...

2022-05-26 09:34:34 2100

原创 《数据结构》王道 第七章 查找

《数据结构》王道 第七章 查找 1. 查找的基本概念1.1 基本概念1.2 算法的评价指标2. 顺序查找2.1 算法思想2.2 算法实现2.2.1 常规顺序查找2.2.2 带哨兵的顺序查找2.3 效率分析2.4 优化2.4.1 对有序表2.4.2 被查概率不相等1. 查找的基本概念1.1 基本概念1.2 算法的评价指标查找成功的情况下:查找失败的情况下:2. 顺序查找2.1 算法思想2.2 算法实现2.2.1 常规顺序查找2.2.2 带哨兵的顺序查找优点:无需判断

2022-05-21 12:37:51 1326

原创 《数据结构》王道 第六章 图

《数据结构》王道 第六章 图 1. 图的定义和基本术语1.1 图的定义1.2 无向图和有向图1.3 简单图和多重图1.4 顶点的度、入度、出度1.5 顶点-顶点的关系描述1.6 连通图和强连通图1.7 子图、生成子图1.8 连通分量(无向图)1.9 强连通分量(有向图)1.10 生成树、生成森林1.11 边的权、带权图/网1.12 无向完全图、有向完全图、稀疏图、稠密图2. 图的存储2.1 邻接矩阵法1. 图的定义和基本术语1.1 图的定义1.2 无向图和有向图1.3 简单图和多重图1.4

2022-05-09 11:17:04 2488 6

空空如也

空空如也

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

TA关注的人

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