栈区:局部变量 函数的形式参数堆区:动态内存分配 malloc,free,calloc,realloc静态区:全局变量,静态变量,statint#include <stdlib.h> malloc,free的头文件返回类型void*向内存申请空间
malloc 开辟空间 malloc(空间大小值 *&
systemctl简单命令systemctl start xxx
systemctl stop xxx
systemctl enable xxx
# 查看服务状态
systemctl status xxx
journalctl --unit xxx
# 输出启动时序
systemd-analyze plot > plog.svg
还记得《驱动开发:内核LoadLibrary实现DLL注入》中所使用的注入技术吗,我们通过RtlCreateUserThread函数调用实现了注入DLL到应用层并执行,本章将继续探索一个简单的问题,如何注入ShellCode代码实现反弹Shell,这里需要注意一般情况下RtlCreateUserThread需要传入两个最重要的参数,一个是StartAddress开始执行的内存块,另一个是Start
某日二师兄参加XXX科技公司的C++工程师开发岗位第13面:
面试官:什么是RAII?
二师兄:RAII是Resource Acquisition Is Initialization的缩写。翻译成中文是资源获取即初始化。
面试官:RAII有什么特点和优势?
二师兄:主要的特点是,在对象初始化时获取资源,在对象析构时释放资源。这种技术可以避免资源邪路或内存泄漏,提高程序的健壮性和可维护性。
面试官
对于单链表的OJ练习,需要深刻理解做题的思路</font>,这样我们才能够在任何场景都能够熟练的解答有关链表的问题。关于OJ练习(1):其题目较为简单,思路也好理解,本章与1差不多,难度不大,核心点就在于理解解题思路。
我是一名刚刚参加过高考的毕业生我认为,现在是一个所有行业都无法脱离计算机的时代,编程是多数职业必须具备或需要涉猎的一项技术,恰今又是一个网络教学资源丰富价格低廉甚至于免费的时代,所以我认为学习编程是多数青年的必修课,编程会是未来生活、就业或进一步向高精尖职业靠近必不可少的人要有一技之长,现如今计算机行业爆满,仅仅依靠编程成为人中龙凤对于我等平流之辈是难于登天,所以我极度认同张鹏伟老师用照相机比喻编
一、RDMA lib库安装
1.1 介绍
广义的Verbs API主要由两大部分组成verbs和rdma_cm
Verbs API 操作RDMA的函数接口,也就是说业界的RDMA应用,要么直接基于这组API编写,要么基于在Verbs API上又封装了一层接口的各种中间件编写。(rdma_cm)
Verbs API向用户提供了有关RDMA的一切功能,典型的包括:注册MR、创建QP、Post Send
哈希表454. 四数相加 II题意:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0示例: 思路:本题我自
远程线程注入是最常用的一种注入技术,在应用层注入是通过CreateRemoteThread这个函数实现的,该函数通过创建线程并调用 LoadLibrary 动态载入指定的DLL来实现注入,而在内核层同样存在一个类似的内核函数RtlCreateUserThread,但需要注意的是此函数未被公开,RtlCreateUserThread其实是对NtCreateThreadEx的包装,但最终会调用ZwCr
单链表的OJ练习(1) # 反转链表 # 合并两个有序链表 #
某日二师兄参加XXX科技公司的C++工程师开发岗位第12面:
面试官:了解位运算吗?
二师兄:了解一些。(我很熟悉)
面试官:请列举以下有哪些位运算?
二师兄:按位与(&)、按位或(|)、按位异或(^),按位取反(~)、左移(<<)和右移(>>)。
面试官:好的。那你知道位运算有什么优势吗?
二师兄:优势主要有两点:1.速度快。2.节省寄存器/内存空间。
面试官:
哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言…作为一个将汇编、C语言、C++、操作系统融会贯通的男人,一个体会到编程乐趣的男人,我想跟大家分享一下这一切的起始能力:汇编,我会聚集分享学习汇编的意义及真正学会它的方式。会有一点点难学,也就是一点点啦~01 学习汇编的意义如果你是从事逆向开发或者底层开发的小伙伴,可能已经
结构体不能自引用正确方式:struct Node{int data;struct Node* next;};内存对齐规则1.第一个成员在于结构体变量偏移量为0的地址处2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处对齐数=编译器默认的一个对齐数于该成员大小的较小值vs默认为83,结构体总大小为最大对齐数(每个成员变量都有一对齐数)的整数倍4,如果嵌套了结构体的情况,嵌套的结构体对齐到自己
哈希表242. 有效的字母异位词题意:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。示例: 思路:我们可以先创建一个unordered_map用于记录s中元素出现的次数,然后再遍历t,让t出现元素次数减去s出现次数。最后在对map进行遍历,若map中存储的元素次
在笔者前一篇文章《驱动开发:内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核下遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectoryFile这个内核API函数来实现,该函数可返回给定文件句柄指定的目录中文件的各种信息,此类信息会保存在PFILE_BOTH_DIR_INFORMATION结构下,通过遍历该目录即可获取到文件的详细参数,如
STL之优先级队列(堆)的模拟实现与仿函数(8千字长文详解)
在学习数据结构时,单链表可谓是第一个需要跨越的台阶。从`C语言`到`数据结构`,单链表能够真正的反映我们`C语言`到底学的扎不扎实,那是因为,单链表对于`C语言`中的指针,结构体,以及函数模块的实现**有较高的要求。因此,通过本章的学习,要是能够自我实现单链表,那你的`C语言功底`会厚实,你的`代码能力`也会提升。
今天在学的时候,老师说希尔排序是直接插入排序的优化版本,但是我决定核心代码的部分决定完全可以按照直接排序那样写,为了方便记忆,我就改了一点点,辅助我记忆直接插入排序核心:将第一个元素直接当作有序序列的第一个元素,然后在剩余的无序序列的第一个元素a与有序序列从右往左进行比较大小,比a大的就往后移gap=1位置,直到找到比a小的元素b,然后在b的后面直接插入a就行,重复以上的步骤,直到有序序列的长度是
某日二师兄参加XXX科技公司的C++工程师开发岗位第11面:
面试官:在C++中,你都知道都哪些运算符?
二师兄:啥?运算符?+-*/=这些算吗?
面试官:嗯,还有其他的吗?
二师兄:当然还有,+=,-=,*=,/=,==,还有逻辑运算,位运算等。
面试官:好的。那你知道这些运算的优先级吗?
二师兄:记不住了,一般我都会加括号来表达我的意思。
面试官:好的。那你知道下
C++11是C++标准的一个新版本,它增加了很多C++没有的功能,相较性能而言,极大程度上提高了C++效率和易用;对于程序员而言,C++11更好的应用于系统开发和库开发,语法更加泛华和简单化,更加稳定和安全。因此C++11功能更加强大,而且能提升程序员的开发效率。以下我们来了解下C++11基于C++进行的主要功能升级都有那些吧!!变量类型推导为
文章和代码已经归档至【Github仓库:<https://github.com/timerring/algorithms-notes> 】或者公众号【AIShareLab】回复 算法笔记 也可获取。Trie树(字典树)Trie树是用来快速存储和查找 字符串集合的数据结构。某个字符串集合对应的有根树。树的每条边上对应有恰好一个字符,每个顶点代表从根到该节点的路径所对应的字符串(将所有经过
本次主要是补充一下智能指针章节的遗漏部分——weak_ptr指针 weak_ptr是C++11中引入的一种智能指针,它的作用就是配合shared_ptr对资源进行管理。由于weak_ptr设计的作用就是配合shared_ptr,因此其是一种“弱引用”,本身并不会增加所指对象的引用计数,也不会影响所指对象的生命周期。 &n