自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++中volatile作用

因为auto推导会自动去掉const和volatile这样的修饰,所以如果将y赋予第三个值,如z,那么这里的赋值过程将有可能出现编译器的优化,即y并不具有volatile特性。如上所述,代码里先将x的值赋给了y,随后更新了x,那么也要随即更新y的值,如果先令y=x,随后再赋值第一行,岂不是会造成数据的更新错误?是一个关键字,用于声明一个变量可能会被意外更改,因此编译器不应该进行优化,而应该在每次访问该变量时重新从内存中读取数据。,仅仅在一些特定的C++编译器里起一些并发的作用(具体来说,volatile。

2024-06-07 22:56:59 264

原创 大端序和小端序

在网络中,通常使用的是大端序(big-endian)。在大端存储方式中,数据的高位字节(最高有效字节)存储在内存的低地址处,而低位字节(最低有效字节)存储在内存的高地址处。换句话说,在一个多字节数据中,最高有效字节的地址是最小的,最低有效字节的地址是最大的。因此,网络中的数据通常以大端序的形式进行传输,不管发送端和接收端的计算机是采用大端序还是小端序,在进行网络传输时都要按照大端序的格式来处理数据。而在小端存储方式中,情况正好相反,数据的低位字节存储在内存的低地址处,而高位字节存储在内存的高地址处。

2024-06-07 22:27:12 394

原创 define和inline的区别

的函数进行内联展开,但并不是一定会成功。编译器可能会根据具体情况(比如函数体复杂度、函数调用次数等)来决定是否进行内联展开。用于函数修饰,告诉编译器尝试将函数内容内联展开。关键字修饰的函数,编译器也可能会对其进行内联展开,这取决于编译器的优化策略和具体情况。关键字只是对编译器的一个建议,编译器可以选择是否对该函数进行内联展开。关键字可以提示编译器进行内联展开,但并不能保证一定会被内联。关键字修饰函数并不一定会导致该函数被内联展开。通常情况下,编译器会尝试将标记为。另外,在C++中,即使没有使用。

2024-05-15 10:39:51 292

原创 C++循环include

你可以在不同的头文件中使用不同的预处理指令如#pragma once或#ifndef,但这样做可能会增加代码的复杂性和难以维护性。当两个头文件相互包含(循环包含)时,会导致编译错误或者意想不到的行为。在这种情况下,编译器可能会报告重复定义的错误或其他类型的问题。通过以上方式,可以避免循环包含问题,确保每个头文件只被包含一次。推荐的做法是在每个头文件中都使用类似的方式来避免重复包含,比如使用#ifndef。的方式来包裹头文件内容。这样可以确保每个头文件被包含一次,避免循环包含问题。来避免头文件的重复包含。

2024-05-15 10:38:27 176

原创 C++中堆与栈存放的数据

栈(Stack)栈是一种线性数据结构,采用“先进后出”(FILO)的原则。栈中存放的数据是以一种连续的方式进行存储和访问的,栈顶指针向下生长。栈主要用来存储函数的参数值、局部变量、函数返回地址等。栈的空间是有限的,通常在程序运行时分配和释放,自动管理,不需要手动释放。栈的数据存取速度比堆快,但空间较小。堆(Heap)堆是一种树形的数据结构,存储方式不连续,可以动态地分配和释放内存。堆中存放的数据是通过指针来引用和访问的,内存分配和释放由程序员手动管理。

2024-05-15 10:34:44 390

原创 常见网络攻击

跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者通过在受害者的浏览器中注入恶意脚本,从而在受害者的页面上执行恶意代码。在DDoS攻击中,攻击者通常控制一个庞大的网络(通常是僵尸网络或者机器人网络),利用这些受感染的计算机或设备向目标系统发起大规模的请求,使其网络、服务器或服务不可用。SQL注入是一种常见的安全漏洞,它利用应用程序对用户输入数据的处理不当,从而在执行SQL查询时插入恶意的SQL代码,从而实现对数据库的非法访问、篡改或者破坏。

2024-05-15 10:30:19 429

原创 原码,反码,补码以及相应的转换与计算

根据题意,乘以2即位左移一位,即数字变为11111110,发生溢出,此时最高位仍然表示符号位,那么对这个数字取补码即(1全部转换为0,0变为1,最后加1,符号位不变)为10000001+1=10000010=-2。总结起来,原码是最基础的表示方法,反码是对原码的改进,而补码是在反码基础上进一步优化得到的,具有更好的运算性质和效率。反码和补码的区别在于负数的表示方法不同。或者可以这么想,11111110这个数字如果加上10就会变为00000000,10代表的是十进制的2,即原数字+2=0,所以原数字=-2。

2024-04-29 11:10:51 270

原创 Linux下利用正则表达式查找16进制数字

要在Linux中的一个文件中查找所有16进制数字,可以使用grep命令结合正则表达式来实现。这样,上面的命令将会输出文件中所有匹配到的40字节的16进制数字。

2024-04-29 10:56:30 181

原创 DOCKER中CMD和ENTRYPOINT区别

在Docker中,CMD和ENTRYPOINT都用于定义容器启动时要执行的命令,但它们有一些重要的区别:

2024-04-29 10:52:51 201

原创 CORE DUMP

Core dump 指的是进程由于异常或错误而终止时,系统将进程的内存映像(包括进程堆栈、寄存器状态等)保存到磁盘上的文件。这个文件可以用于分析进程崩溃的原因和状态。这个命令会将 core dump 文件的大小限制设置为无限制,这样就可以保存任何大小的 core dump 文件了。加载 core dump 文件后,可以使用 GDB 的各种命令来查看进程的状态、调用栈、寄存器状态等信息,以帮助分析崩溃原因。运行程序时,如果发生崩溃,系统会将进程的内存映像保存到一个 core dump 文件中。

2024-04-22 21:02:04 399 3

空空如也

空空如也

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

TA关注的人

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