- 博客(21)
- 收藏
- 关注
原创 使用 libbpf-bootstrap 编写eBPF程序
3.只编写内核态代码的时候,使用 JSON 即可完成分发、加载、打包的过程,对于完整的、需要用户态和内核态进行交互的 eBPF 应用或工具,可以在 WASM 中编写复杂的用户态处理程序进行控制和处理,并且将编译好的 eBPF 字节码嵌入在 WASM 模块中一同分发,在目标机器上动态加载运行。2.基于 libbpf一次编译处处运行的特性,将用户态、内核态的编译和运行的完全分离,通过标准 JSON 或 WASM模块的方式进行分发,无需进行重新编译,应用启动占用资源少,时间短,甚至容器启动更短。
2022-12-22 22:47:26
1141
原创 new operator和operator new的区别?
new的底层是调用operator new( )分配内存的。该函数调用malloc申请内存。2.是调用构造函数(就是你new的类类型或者string等类型的构造函数)。new就是new operator,调用new的时候编译器做了三件事,1.是用operator new( )分配内存,3.返回相应的指针。
2022-09-11 09:38:34
322
原创 记录一下关于vscode中‘mutex‘ in namespace ‘std‘ does not name a type,解决方法
vscode问题解决
2022-07-22 11:42:03
1619
1
原创 李实验linux
as86 -0 -a -o bootsect.o bootsect.s两种汇编器(Assembler)。一种是能产生16位代码的as86汇编器,使用配套的ld86链接器;另一种是GNU的汇编器gas(as),使用GNU ld链接器来链接产生的目标文件。这里我们首先说明as86汇编器的使用方法。汇编器专门用来把低级汇编语言程序编译成含机器码的二进制程序或目标文件。汇编器会把输入的一个汇编语言程序(例如srcfile)编译成目标文件(objfile)。汇编的命令行基本格式是:as86 [选项] -.
2022-04-20 15:42:25
337
原创 142环形链表
class Solution{public:ListNode*get(ListNode *headA,ListNode *headB){ListNode* curA=headA;ListNode* curA=headB;int lenA=0,lenB=0;while(curA!=Null){lenA++;curA=curA->next;}while(curB!=Null){lenB++;curB=curB->next;}curA=headA
2022-04-20 14:28:27
911
原创 两两交换链表中的节点
class Solution{public:ListNode* swapPairs(ListNode* head){ListNode* dummyHead =new ListNode(0);dummyHead->next=head;ListNode* cur=dummyHead;while(cur->next !=nullptr && cur->next->next !=nullptr){ListNode* tmp =cur->nex
2022-04-18 22:13:53
362
原创 反转一个单链表
原理就是指针指向进行反转。那么就要便利每一个结点。那就得用循环,循环的终止条件是遍历到尾部结点。改变指针的方向,就需要两个指针,一个前一个后。后面的指向前面的就完成了。在这之前把这两个指针接下来的落脚点找好。指向前面这个结点的指针,最后要跑到它的下一个结点。所以在它指向它后面结点之后,就和下一个结点断了联系了。所以在这之前应该把下一个结点保存好。那指向后面结点的指针要落脚在指向前一个结点的指针。clss Solution{public:ListNode * re(ListNode* he
2022-04-17 22:02:28
669
原创 链表的增删改查
第一 怎么写一个单链表单链表是由好多个结点连接起来的。 那么一个结点要链接下一个结点。java的表达方式就是这个结点里面必须要生成下一个结点对象。结点里面得有一个存储元素值得变量。用什么来写一个结点了。需要先写一个类对象模板,在这个模板里面生成这个类对象作为下一个结点,和定义一个变量元素,当然一个类里面需要构造函数。class ListNode{int val;ListNode next;ListNode(){}ListNode(int val){this.val=val;
2022-04-15 00:03:53
1077
原创 CPU的管理
多进程图谱(CPU,内存),文件操作试图(IO,磁盘文件)CPU管理的直观想法如何使用CPU需要知道CPU的工作原理。设置pc的初值,cpu就运行起来。但是CPU的运行速度是其他外界比如:输入,输出,显示设备的等的的速度比较慢。如果只执行一个程序,当执行到在显示屏上显示东西时,这个速度特慢,那么CPU就需要等。这就影响了CPU的运行效率。那么操作系统时管理cpu的,你管理一个东西,就得让这个东西变得好啊。对cpu来说那就是充分利用其效率,发挥其最大作用。那么怎么才能充分利用了,那就让它在等待空闲得时
2022-04-14 16:56:43
1096
原创 数据结构链表
203删除链表中等于给定值val的所有节点链表的删除就是用这个元素的前一个,跳过这个元素进行,链接下一个元素删除时需要用到前一个元素,所以我们需要获取到前一个结点,删除链接中给定的值,所以需要循环遍历这个值,所以需要用到当前节点,去判断是否这个值,并且,在删除时前一个要链接当前元素的下一个元素,也需要用到如果要删除的元素就是第一个元素了,那就没有前一个元素了,所以我们可以添加一个虚节点等于给定值,需要做个条件判断做算法题:完成本算法,需要哪些动作,这些动作中需要用到哪些变量或者对象,
2022-04-12 00:01:50
493
原创 系统调用是怎么实现
故事是这样的。system和我们的命令都在一个内存中,那么会不会有这样的接口,可以之间到内存中读数据存数据。当然不行,那样的话,谁都可以这样数据也不安全啊,操作系统的也是个对内存没有控制权的傀儡或者徒有虚名。那么问题来了,我们怎么设计,不如用户随意读取数据,但可以提供一直安全的读取策略了。 怎么不让用户jump 随意进入数据:用一种处理器把内存分为用户态...
2022-04-11 21:41:55
257
原创 操作系统的接口
什么是接口?命令行,输入命令图形按钮应用程序命令是什么?其实就是一些程序接受命令,执行命令的shell也是一段程序操作系统启动后会执行一个程序,也就是shell.通过shell我们又可以运行我们自己的命令。通过scanf("%s",smd);实现接受屏幕上命令的输入,之后通过if (!fork()){exec(cmd);}实现对CPU的使用去运行我们的命令,之后在命令中即函数中通过printf(ECHO:%s\n",argv[1]);}实现屏幕输出字符。系统调用由哪些接口:任
2022-04-11 20:30:56
320
原创 system
现在已经建立起对硬件的数据结构树并且进入到了system.system由许多文件编译而成,这么多文件我们怎么找到它运行的开头了,怎么进管理了。这就引出了著名的makefiles.makefiles是一个把所有文件进行树状管理的程序。system是从head.s开始的。head.s主要做些什么事了。第一进行了初始化。第二从head.s跳入到main.c。通过压栈的方式调用main函数。所以要先把一些个调用函数都压进栈中,之后一个个弹出来main.c主要干些啥事了。进行了一系列的初始化,比如内存 ,中断
2022-04-11 19:56:07
389
原创 bootsect.s 的故事
.globl begtext,begdata,begbss,endtext,enddata,endbss.text //文本段begtext:.data //数据段begdata:.bss //未初始化数据段begbss:.textentry start //关键字entry告诉链接器“程序入口”start: mov ax, #BOOTSEG mov ds, ax mov ax, #INITSEG mov es, ax mov cx, #256 .
2022-04-10 23:05:44
165
原创 GCC编译
编译一个C文件gcc -wall hello.c -o hello会产生一个hello的文件运行它,./hello用GCC编译一个错误的代码,用GCC -wall 编译会给出错误代码定位。GCC不加-wall就不会GCC编译多个文件:第一个C文件main.c#include <stdio,h>#include "hello.h"int main(void){hello("hello,world!\n");return 0;}第二个h
2022-04-08 22:42:24
1598
原创 引导扇区代码注释bootsect.s
.globl begtext,begdata,begbss,endtext,enddata,endbss .globl用于定义随后的标识符是外部或者全局的,全局标识符,供ld86链使用.text //文本段begtext:.data //数据段begdata:.bss //未初始化数据段begbss:.text.text等是伪操作符,告诉编译器产生文本段,.text用于标识文本段的开始位置。此处的.text、.data、.bss表明这3个段重叠,不分段!entry sta.
2022-04-08 21:17:29
480
原创 用python把散点坐标制作为vtkpolyData数据类型
import vtkx=[[0,0,0],[4,0,0],[4,4,0],[0,4,0],[1,1,1],[3,1,1],[3,3,1],[1,3,1]]y=[[0,1,2,3],[4,5,6,7],[0,1,5,4],[1,2,6,5],[2,3,7,6],[3,0,4,7]]#把点添加到数据结构中points = vtk.vtkPoints()for i in range(8): points.InsertPoint(i,x[i])#把面添加到数据结构中ploys = ...
2022-03-28 15:27:19
368
原创 loadNodeFromFile `returnNode` argument is deprecated. Loaded node is now returned directly if `retur
slicer.util.loadUI(path)Load UI filepathand return the corresponding widget.RaisesRuntimeError– if the UI file is not found or if no widget was instantiated.slicer.util.loadVolume(filename,properties={},returnNode=False)Load node from file....
2021-06-07 11:23:45
110
原创 考研计算机网络复试问题
1.什么是WAN? WAN或“广域网”是设计用于连接多个较小局域网(LAN)的计算机网络。您的家庭网络是您的LAN,它通过WAN连接到您的邻居,通常由您的Internet服务提供商管理。您可以将互联网本身视为一个巨大的广域网。2.OSPF协议? 是使用分布式的链路状态协议。 一.和那些路由器交换信息? 向本自治系统中所...
2020-05-07 22:34:26
2299
1
原创 计算机网络复试问答(下)
一.ICMP 协议因为IP是一个无连接,不可靠,最大交付的协议,所以为了更有效的转发数据和提高交付成功的机会,就出现了ICMP网际控制报文协议。可以提供主机或路由器报告差错情况和提供有关异常的情况的报告。ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。差错报告报文主要有:1.终点不可达 即当路由器或主机不能交付数据包时就向源点发送终点不可达数据报文。(不能交付)...
2020-05-07 16:05:54
1009
原创 数据规整化
一:合并 df1=DataFrame({'key':['b','b','a','c','a','a','b'], 'data1':range(7)})df2=DataFrame({'key':['a','b','d'], 'data2':range(3)}
2018-01-25 19:06:01
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人