![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
文章平均质量分 64
hokool
这个作者很懒,什么都没留下…
展开
-
C++共享指针shared_ptr的理解分享
【代码】C++共享指针shared_ptr的理解分享。原创 2024-06-12 17:41:24 · 309 阅读 · 0 评论 -
C++部分关键字的作用-__declspec(dllexport)、__declspec(dllimport)、__attribute__、__cdecl
则提供了GCC和Clang编译器的扩展功能,可以用于多种不同的用途。当你在一个DLL中定义一个函数或变量,并希望它能够被其他应用程序导入和使用时,你可以使用。来指定函数的返回值不被修改(pure)、函数不抛出异常(nothrow)、函数不会返回(noreturn)等特性。这是GCC和Clang编译器提供的一种属性声明机制,用于给函数、变量或类型添加额外的元数据或行为。来声明这些函数或变量,这样编辑器才知道它们是需要从DLL中导入的。关键字通常是不可用的,而在GCC/Clang中,所用的条件差不多,使用。原创 2024-06-05 18:25:58 · 368 阅读 · 0 评论 -
inline内联函数-虚函数(virtual)可以是内联函数(inline)吗?
【代码】inline内联函数-虚函数(virtual)可以是内联函数(inline)吗?原创 2024-05-10 09:31:27 · 435 阅读 · 0 评论 -
堆和栈的内存管理区别
堆和栈的内存管理区别数据结构的差异C++中堆和栈的区别三种内存对象的比较内存分布上的堆和栈一级缓存和二级缓存数据结构的差异堆:先进先出栈:先进后出的、自顶向下C++中堆和栈的区别管理方面,需要自己分配、清除空间大小方面,堆最大可达4G(32位),而栈大小有限制,一般8M碎片方面:堆分配和回收一段时间后可能产生碎片,栈一定不会生长方向:栈往低地址生长,堆往高地址生长分配方式:栈可动态分配也可静态分配,堆只能动态分配分配效率:栈是机器系统提供的数据结构,而堆是语言层提供的数据结构,效率不一原创 2022-03-01 22:52:56 · 3652 阅读 · 0 评论 -
malloc和new的底层实现
malloc底层实现当开辟的空间小于128k时,调用brak()函数;当开辟的空间大于128k时,调用mmap(),malloc采用的是内存池的管理方式,以减少内存碎片。先申请大块内存作为堆区,然后将堆区分为多个内存块。当用户申请内存时,直接从堆区分配一块合适的空闲块。采用隐式链表将所有空闲块,每个空闲块记录了一个未分配的、连续的内存地址。new底层实现关键字new在调用构造函数的时候实际上进行了如下的几个步骤:创建一个新的对象将构造函数的作用域赋值给这个新的对象(因此this指向了这个新的对象原创 2022-02-24 20:47:56 · 656 阅读 · 0 评论 -
学习KMP算法-力扣28实现strStr()
例题:力扣-实现strStr().链接: 实现strStr().文章目录什么是KMPKMP有什么用呢什么是前缀表最长公共前后缀前缀表与next数组时间复杂度分析构造next数组使用next数组来做匹配前缀表统一减一 C++代码实现前缀表(不减一)C++实现什么是KMPKMP的名字由来是由这三位学者发明的:Knuth, Morris和Pratt,所以取了三位学者的首字母。所以叫KMPKMP有什么用呢KMP主要应用在字符串匹配上。KMP的主要思想史当出现字符串不匹配时,可以知道一部分之前已经匹配的原创 2022-02-17 20:00:35 · 361 阅读 · 0 评论 -
什么是ROP系统攻击
文章目录ROP系统攻击初步了解寄存器内存管理常见汇编指令再究ROP攻击ROP系统攻击初步了解ROP全称为Return-oriented Programming(面向返回的编程)是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构成恶意代码。ROP的核心思想(1)攻击者扫描已有的动态链接库和可执行文件,提取出可以利用的指令片段(gadget),这些指令片段均以ret指令结尾,即用ret指令实现指令片段执行流的衔接。(2)操作系统通过栈来进行函数的调用和返回。函数原创 2021-12-17 09:42:00 · 3173 阅读 · 0 评论 -
逻辑右移和算术右移的区别
逻辑右移和算术右移有什么区别:“>>>” 逻辑右移“>>” 算术右移逻辑右移就是不考虑符号位,右移一位,左边补零即可算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1;否则,就补0所以算术右移也可以进行有符号位的除法,右移n位就等于除2的n次方例如,8位二进制数11001101分别右移一位逻辑右移就是[0]1100110算术右移就是[1]1100110...原创 2021-10-23 10:14:28 · 10565 阅读 · 2 评论 -
解决虚拟机开机黑屏[sda] Assuming drive cache: write through
1. Host SMbus controller not enabled解决方法: 在/etc/modprobe.d/blacklist.conf 文件里添加blacklist i2c_piix42. intel_rapl: no valid rapl domains found in package 0解决方法: /etc/modprobe.d/blacklist.conf 文件里添加blacklist intel_rapl3. sd 0:0:0:0: [sda] Assuming drive原创 2020-06-26 00:11:12 · 19929 阅读 · 6 评论 -
javascrip写倒数器(设置循环的延迟)
昨晚突然被要求用javascript写一个倒数,于是去补了一下语法随后完成了任务。这里我直接贴上javascript部分的代码在这里中利用了setTimeout函数function run(){ var x=document.getElementById("shuru").value;//获取输入框元素 x = parseInt(x); //将获取的元素转换类型 var t...原创 2020-05-07 07:29:27 · 193 阅读 · 0 评论 -
Oracle静态参数文件跟动态参数文件(整理笔记10)
pfile默认init+实例名.ora ,是一个文本文件,可以编辑spfile默认spfile+init+实例名.ora,是一个二进制文本,不能修改两个文件可以通过命令create pfile from spfile或者create spfile from pfile来创建区别:启动次数,spfile优先pfilepfile是静态文件,修改后数据库必须重启读取文件spfile是动态文...原创 2019-11-17 22:40:10 · 667 阅读 · 0 评论 -
python多线程多进程与Java区别(整理笔记9)
JavaJava编写的程序都运行在Java虚拟机里面,每用到Java命令启动一个Java应用程序,就会启动一个JVM进行。在同一个JVM进程中,有且只有一个进程,就是他自己。在这个JVM环境中,所有程序代码的运行都是运用线程来运行的。JVM找到程序的入口点main(),然后运行main()方法,这样就产生了一个线程,这个线程称之为主线程,当main方法结束后,主线程运行完成。JVM进程也随即...原创 2019-11-15 20:38:53 · 1666 阅读 · 0 评论 -
解决Memory for crash kernel (0x0 to 0x0) notwithin permissible range错误
Memory for crash kernel 解决方法在使用Red Hat Enterprise Linux Server release 5.3的时候出线下面问题Memory for crash kernel (0x0 to 0x0) notwithin permissible range于是去查了些资料(1)在开机时,迅速按下任意键,如回车键Enter,进入到一个引导界面(2)按键...原创 2019-09-01 19:30:26 · 3948 阅读 · 2 评论