- 博客(147)
- 资源 (215)
- 问答 (3)
- 收藏
- 关注
原创 《深入浅出DPDK》学习思维导图
《《深入浅出DPDK》全书在线阅读(附录+推荐阅读)》《《深入浅出DPDK》读书笔记(一):基础部分知识点》《《深入浅出DPDK》读书笔记(二):网卡的读写数据操作》《《深入浅出DPDK》读书笔记(三):NUMA - Non Uniform Memory Architecture 非统一内存架构》《《深入浅出DPDK》读书笔记(四):并行计算-SIMD是Single-Instruction Multiple-Data(单指令多数据)》《《深入浅出DPDK》读书笔记(五):同步互...
2020-10-31 20:39:30 905
转载 Linux网络协议栈:网卡收包分析
网卡收包内核网络模块如何初始化? 内核如何通过网卡驱动收发数据包? 驱动收到的数据怎么交给协议栈处理?《Linux网络协议栈:NAPI机制与处理流程分析(图解)》一,框架网络子系统中,在本文中我们关注的是驱动和内核的交互。也就是网卡收到数据包后怎么交给内核,内核收到数据包后怎么交给协议栈处理。在内核中,网卡设备是被net_device结构体描述的。驱动需要通过net_device向内核注册一组操作网卡硬件的函数,这样内核便可以使用网卡了。而所有的数据包在内核空间都是使...
2020-10-31 16:32:30 1175 1
原创 Linux网络协议栈:NAPI机制与处理流程分析(图解)
Table of ContentsNAPI机制NAPI缺陷使用 NAPI 先决条件非NAPI帧的接收netif_rx -将网卡中收到的数据包放到系统中的接收队列中enqueue_to_backlog____napi_schedule函数NAPI方式NAPI帧的接收NAPI接口struct napi_struct结构 -内核处理软中断的入口netif_napi_add函数 -驱动初始时向内核注册软软中断处理回调poll函数__napi_schedul...
2020-10-31 15:59:03 22036 4
转载 FD.io VPP:探究分段场景下vlib_buf在收发包的处理(dpdk_plugin.so)、rte_mbuf与vlib_buf 关系
Table of Contentsrte_mbuf、vlib_buf 关系及内存分布使用dpdk-收包接口函数使用dpdk 发包接口函数总结参考阅读在使用vpp老版本copy报文的时候,经常遇到mbuf泄露的问题,根本原因是在vlib_buffer分段场景下没有将rte_mbuf进行串联,导致dpdk发包时造成了泄漏。最新的版本已经彻底解决了此问题。下面来分析一下:rte_mbuf、vlib_buf 关系及内存分布首先,先来了解一下dpdk plugins。在pl..
2020-10-31 13:57:17 2718 1
转载 ethtool 原理介绍和解决网卡丢包排查思路(附ethtool源码下载)
Table of Contents1. 了解接收数据包的流程将网卡收到的数据包转移到主机内存(NIC 与驱动交互)通知系统内核处理(驱动与 Linux 内核交互)2. ifconfig 解释(1) RX errors(2) RX dropped(3) RX overruns(4) RX frame3. 网卡工作原理网卡收包网卡发包网卡中断处理函数缓冲区访问4. 丢包排查思路先查看硬件情况overruns 和 buffer sizeRed H
2020-10-31 13:41:42 3244 2
转载 FD.io VPP:vlib buffer pool(vlib_buffer) 内存初始化
Table of Contentsvlib buffer创建过程vlib_buffer相关内存初始化1、函数一开始就查询numa的个数2、遍历numa节点来初始化3、查询系统大页大小。4、接下来就是比较关键的常见buffer pool池初始化。mempool create 流程vpp mempool ops操作设置dpdk_buffer_pool_init函数处理逻辑1、只是调用rte_mempool_create_empty创建mempool结构体所需要的内存.
2020-10-31 13:05:14 2738
原创 DPDK 网卡收包流程
Table of Contents1、Linux网络收发包流程1.1 网卡与liuux驱动交互1.2 linux驱动与内核协议栈交互题外1: 中断处理逻辑题外2:中断的弊端2、linux发包流程2、DPDK 收发包流程2.1 网卡DMA描述符环形队列2.2 dpdk 收包流程1、构造收包队列2.启动3.收包3、 PCIE 带宽调优1)减少MMIO访问的频度。(2)提高PCIe传输的效率。(3)尽量避免Cache Line的部分写。4、软..
2020-10-31 12:45:49 7680 3
翻译 图论:柯尼斯堡桥问题、艾科西亚游戏
图论是与线连接的点的网络有关的数学分支。的主题图论起源于休闲数学问题(参见数字游戏),但它已发展成为数学研究的重要领域,并应用于化学,运筹学,社会科学和计算机科学。图论的历史可以追溯到1735年,当时瑞士数学家莱昂哈德·欧拉(Leonhard Euler)解决了柯尼斯堡桥问题。柯尼斯堡(Königsberg)桥梁问题是一个古老的难题,它涉及到是否有可能在横跨一条穿过岛屿的叉形河上的七座桥梁中的每一条上找到一条路径的可能性,但又不会跨过任何一座桥梁。欧拉认为没有这样的道路。他的证明仅涉及桥梁的物...
2020-10-31 11:46:55 972
翻译 Cilium架构:提供并透明地保护应用程序工作负载之间的网络连接和负载平衡
本文档介绍了Cilium体系结构。它着重于记录用于实现Cilium数据路径的BPF数据路径挂钩,Cilium数据路径如何与容器编排层集成以及在层之间共享的对象(例如BPF数据路径和Cilium代理)。数据路径Linux内核在网络堆栈中支持一组BPF挂钩,可用于运行BPF程序。Cilium数据路径使用这些挂钩来加载BPF程序,这些程序一起使用时会创建更高级别的网络结构。以下是Cilium使用的钩子的列表和简要说明。有关每个挂钩的详细信息,请参阅《BPF和XDP参考指南》。 XDP:X...
2020-10-30 21:59:17 1117 3
翻译 Cilium:BPF和XDP参考指南
Table of ContentsBPF体系结构指令系统辅助功能地图对象固定尾叫BPF到BPF呼叫准时制硬化减负工具链开发环境虚拟机本文档部分针对希望深入了解BPF和XDP的开发人员和用户。阅读本参考指南可能有助于拓宽您对Cilium的了解,但不是必须使用Cilium。请参阅入门指南和体系结构以获得更高级的介绍。BPF是Linux内核中一种高度灵活且高效的类似于虚拟机的构造,允许以安全的方式在各个挂钩点执行字节码。它被用于许多Linux..
2020-10-30 21:41:44 1944 8
翻译 Cilium提供并透明地保护应用程序工作负载之间的网络连接和负载平衡:什么是eBPF和XDP?
Table of Contents稳定的发行功能概述透明地保护和保护API基于身份的服务到服务通信的安全保护安全访问外部服务简单联网负载均衡监控和故障排除整合方式入门什么是eBPF和XDP?社区松弛特殊兴趣小组(SIG)每周开发人员会议执照https://github.com/cilium/ciliumCilium是开源软件,用于提供并透明地保护应用程序工作负载(例如应用程序容器或进程)之间的网络连接和负载平衡。Cilium在第3.
2020-10-30 21:22:05 806 3
翻译 AWS上的Cilium网络拓扑和流量路径
Table of Contents1准备1.1测试环境1.2容器网和nsenter1.3验证基本连接2个出口:Pod->主机-> VPC网络2.1容器内部网络1.2 Veth对连接到主机1.3出口BPF代码1.4主机路由表2入口2.1主机路由表2.2入口BPF代码2.3集装箱收货3小结参考文献相关阅读发表于2019-10-26 |最后更新2019-10-26这篇文章探讨了在AWS上由Cilium驱动的K8S集群...
2020-10-30 21:16:33 887 1
转载 深入理解 Cilium 的 eBPF(XDP)收发包路径:数据包在Linux网络协议栈中的路径
Table of Contents1 为什么要关注 eBPF?1.1 网络成为瓶颈1.2 eBPF 无处不在1.3 性能就是金钱2 eBPF 是什么?3 为什么 eBPF 如此强大?3.1 快速3.2 灵活3.3 数据与功能分离4 eBPF 简史5 Cilium 是什么,为什么要关注它?6 内核默认 datapath6.1 L1 -> L2(物理层 -> 数据链路层)6.2 L2 续(数据链路层 - 续)Step 1:NAPI poll
2020-10-30 21:06:07 4734 8
原创 《深入浅出DPDK》全书在线阅读(附录+推荐阅读)
Table of Contents文章目录推荐阅读原文附录附录A 缩略词附录B 推荐阅读文章目录《《深入浅出DPDK》读书笔记(一):基础部分知识点》《《深入浅出DPDK》读书笔记(二):网卡的读写数据操作》《《深入浅出DPDK》读书笔记(三):NUMA - Non Uniform Memory Architecture 非统一内存架构》《《深入浅出DPDK》读书笔记(四):并行计算-SIMD是Single-Instruction Multiple-Data(单指令多
2020-10-30 19:59:27 5405
原创 《深入浅出DPDK》读书笔记(十六):DPDK应用篇(基于DPDK的存储软件优化:SPDK)
Table of Contents基于DPDK的存储软件优化180.基于以太网的存储系统181.以太网存储系统的优化SPDK介绍182.SPDK介绍(1)兼容性(2)性能183.用户态存储驱动1. 用户态NVME驱动工作机制2. 内核态和用户态NVME性能比较184.SPDK中iSCSI target实现与性能1. SPDK中iSCSI target实现2. 基于SPDK的iSCSI target性能分析185.小结系列文章相关阅读基.
2020-10-29 22:00:23 3680 2
原创 《深入浅出DPDK》读书笔记(十五):DPDK应用篇(Open vSwitch(OVS)中的DPDK性能加速)
Table of ContentsOpen vSwitch(OVS)中的DPDK性能加速174.虚拟交换机简介175.OVS简介176.DPDK加速的OVS177.OVS的数据通路178.DPDK加速的数据通路179.DPDK加速的OVS性能比较14.4 小结系列文章相关阅读Open vSwitch(OVS)中的DPDK性能加速在NFV基础设施(NFVI)中有一个重要的组成部分,叫虚拟交换机。目前,虚拟交换机的实现已经有很多开源和商业的版本。开源的方案有.
2020-10-29 21:51:48 2033 3
原创 《深入浅出DPDK》读书笔记(十四):DPDK应用篇(DPDK与网络功能虚拟化:NFV、VNF、IVSHMEM、Virtual BRAS“商业案例”)
Table of ContentsDPDK应用篇DPDK与网络功能虚拟化157.网络功能虚拟化13.1.1起源158.发展159.OPNFV与DPDKNFV的部署160.NFV的部署1. 分解2. 虚拟化3. 云化4. 重构VNF部署的形态161.VNF部署的形态162.VNF自身特性的评估163.性能分析方法论164.性能优化思路VNF的设计165. VNF虚拟网络接口的选择166.IVSHMEM共享内存的PCI设备167
2020-10-29 21:45:32 4336 5
原创 《深入浅出DPDK》读书笔记(十三):DPDK虚拟化技术篇(加速包处理的vhost优化方案)
Table of Contents加速包处理的vhost优化方案142.vhost的演进和原理143.Qemu与virtio-net144.Linux内核态vhost-net145.用户态vhost146.基于DPDK的用户态vhost设计147.消息机制148.地址转换和映射虚拟机内存149.vhost特性协商150.virtio-net设备管理(1)设备创建(2)设置(3)服务启动(4)设备销毁151.vhost中的Checksum和TSO功能
2020-10-29 21:32:39 1250 2
原创 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)
Table of Contents半虚拟化Virtio132.Virtio使用场景133.Virtio规范和原理11.2.1 设备的配置1. 设备的初始化2. 设备的发现3. 传统模式virtio的配置空间4. 现代模式Virtio的配置空间134.虚拟队列的配置1. 初始化虚拟队列2. 描述符列表3. 可用环表4. 已用环表135.设备的使用1. 驱动向设备提供数据缓冲区2. 设备使用和归还数据缓冲区136.Virtio网络设备驱动设计
2020-10-29 21:12:11 1692 3
原创 《深入浅出DPDK》读书笔记(十一):DPDK虚拟化技术篇(I/O虚拟化、CPU虚拟化、内存虚拟化、VT-d、I/O透传)
Table of ContentsDPDK虚拟化技术篇X86平台上的I/O虚拟化120.X86平台上的I/O虚拟化121.X86平台虚拟化概述122.CPU虚拟化123.内存虚拟化124.I/O虚拟化1. I/O全虚拟化2. I/O半虚拟化3. I/O透传125.I/O透传虚拟化126.Intel®VT-d简介127.PCIe SR-IOV概述128.PCIe网卡透传下的收发包流程129.I/O透传虚拟化配置的常见问题130.小结系列文章
2020-10-29 21:00:04 1549 2
原创 《深入浅出DPDK》读书笔记(十):硬件加速与功能卸载(VLAN、IEEE1588、IP TCP/UDP/SCTP checksum、Tunnel)
Table of Contents109.硬件卸载简介110.网卡硬件卸载功能111.DPDK软件接口接收侧:发送侧:112.硬件与软件功能实现113.VLAN硬件卸载1. 收包时VLAN Tag的过滤2. 收包时VLAN Tag的剥离3. 发包时VLAN Tag的插入4. 多层VLAN的支持114.IEEE1588硬件卸载功能115.IP TCP/UDP/SCTP checksum硬件卸载功能116.Tunnel硬件卸载功能分片功能卸载117
2020-10-29 20:52:21 5253 3
原创 《深入浅出DPDK》读书笔记(九):流分类与多队列、流过滤、虚拟化流分类方式、流分类技术的使用
Table of Contents94.Linux内核对多队列的支持95.DPDK与多队列98.流分类99.RSS100.Flow Director101.服务质量102.虚拟化流分类方式103.流过滤104.流分类技术的使用105.DPDK结合网卡Flow Director功能106.DPDK结合网卡虚拟化及Cloud Filter功能8.4 可重构匹配表107.小结系列文章相关阅读93.说起网卡多队列,顾名思义,也就是传统网卡的DMA.
2020-10-29 20:33:52 3352 2
转载 Kubernetes复杂吗?Cube-新的容器管理服务产品
《介绍Calico eBPF数据平面:Linux内核网络、安全性和跟踪(Kubernetes、kube-proxy)》《在CentOS 7上安装使用Kubernetes:管理云平台多个主机上的容器化应用》《kubernetes(K8s):管理云平台中多个主机上的容器化的应用》Table of Contents背景Kubernetes 复杂吗?有什么解决方案吗?为什么要推出 Cube?Cube 的设计思路Cube 的功能亮点快速迁移成本降低更多的便利性结语
2020-10-29 20:14:57 283 1
原创 Linux内存管理之内存寻址:分段机制的实现方式
Table of Contentslinux中的分段机制linux中的GDT用户态和内核态的数据段以及代码段4个段任务状态段TSS寄存器保存区域内层堆栈指针区域地址映射寄存器区域链接字段其它字段3个局部线程存储(Thread-Local Storage,TLS)段与高级电源管理(AMP)相关的3个段与支持即插即用(PnP)功能的BIOS服务程序相关的5个段处理”双重错误”异常的特殊TSS段linux中的LDT段选择符段描述符段描述符表G
2020-10-29 20:02:00 859
原创 8086和8088微处理器之间的区别
尽管8086和8088处理器的体系结构和指令集相同,但是它们之间仍然存在差异。下表列出了2个微处理器之间的区别:序号 8086微处理器 8088微处理器 1 数据总线为16位。 数据总线为8位。 2 它具有3种可用时钟速度(5 MHz,8 MHz(8086-2)和10 MHz(8086-1))。 它具有3种可用时钟速度(5 MHz,8 MHz) 3 内存容量为512 kB。 存储器容量实现为单个1 MX 8存储器。 4 它具有存储器
2020-10-28 21:39:07 3985
翻译 JDK,JRE和JVM之间的区别
Table of ContentsJAVA开发套件JAVA运行时环境JAVA虚拟机JDK,JRE和JVM之间的差异JRE和JDK如何工作?JRE如何工作?JVM如何工作?推荐文章:JAVA开发套件Java Development Kit(JDK)是用于开发Java应用程序和applet的软件开发环境。它包括Java运行时环境(JRE),解释器/加载器(Java),编译器(javac),归档器(jar),文档生成器(Javadoc)以及Java开发所需的其他...
2020-10-28 21:26:53 354 1
转载 Linus改变世界的一次代码提交:git的诞生
吾诗已成。无论大神的震怒,还是山崩地裂,都不能把它化为无形!—— 奥维德《变形记》Table of Contents背景设计实现启示参考背景Linux 作为最大也是最成功的开源项目,吸引了全球程序员的贡献,到目前为止,共有两万多名开发者给 Linux Kernel 提交过代码。令人惊讶的是,在项目的前十年(1991 ~ 2002)中,Linus 作为项目管理员并没有借助任何配置管理工具,而是以手工方式通过 patch 来合并大家提交的代码。倒不是说 Linus 喜欢..
2020-10-28 20:58:30 406
转载 GitOps—通过CI/CD自动化构建虚拟机模版
《CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)》《什么是DevOps?人员,流程和产品的结合,过程、方法与系统的统称》Table of Contents概述:相关工具:环境需求步骤概要构建用于执行Packer命令的DockerIamge上传semantic-devlivery-gitlab镜像到Harbor在Gitlab中创建Access Token创建项目,并提交所有代码到仓库中修改.g...
2020-10-28 20:53:19 607 1
转载 Linux网络协议指令:ifconfig/netstat(net-tools)工具 .vs. iproute2
Table of Contents前言语法常见配置示例SS 命令参考链接前言为啥要替代?因为大多 linux 发行版已经不默认安装 ifconfig/netstat了,反而预装了 iproute2 套件。linux 的 ip 命令和 ifconfig 类似,但 ip 命令功能更强大,并旨在替代后者。ifconfig属于net-tools套件,已经不怎么维护,ip 所属的iproute2套件里提供了许多增强功能的命令。并且,大多数 linux 发行版已经预装了 iprou.
2020-10-28 20:45:02 420 1
转载 从串口驱动到Linux驱动模型
Table of Contents1.什么是Linux操作系统 ?A.关于类UNIX系统B.关于可移植性C.关于Linux的基本思想D.关于Linux的特点完全免费完全兼容POSIX1.0标准多用户、多任务良好的界面支持多种平台文件类型文件结构2.什么是Linux设备驱动3.关于串口的种种。RS-232RS-422RS-485RS232C串口通信接线方法(三线制)Linux内核是什么?系统调用接口进程管理内存管理虚拟
2020-10-28 20:38:48 506
转载 日志分析系统搭建分析与比较
Table of Contents一. 背景介绍二.日志系统比较1.怎样收集系统日志并进行分析A.实时模式:B.准实时模式2.常见的开源日志系统的比较A. FaceBook的ScribeB. Apache的ChukwaC. LinkedIn的KafkaD. Cloudera的FlumeE. 总结三.较为成熟的日志监控分析工具1.ELKA.ELK 简介2.ELK使用场景3.ELK的优势4.EFK5. Logstash 与FluentD(Flu
2020-10-28 20:22:20 1198
转载 Linux的文件系统及文件缓存知识点整理
Table of ContentsLinux的文件系统文件系统的特点ext系列的文件系统的格式inode与块的存储inode位图和块位图文件系统的格式目录的存储格式Linux中的文件缓存ext4文件系统层带缓存的写入操作带缓存的读操作Linux的文件系统文件系统的特点文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。 文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。 如果文件系统中有的文件是热点文件,近期经常被
2020-10-28 20:09:13 666 1
原创 CRC32(Cyclic Redundancy Check)循环冗余校验:推导
Table of Contents什么是循环冗余校验和CRC-32?CRC-32输出的长度是多少?CRC-8,CRC-16,CRC-32和CRC-64有什么区别?CRC32源代码CRC32算法详细推导CRC算法的数学基础CRC校验的基本过程原始的CRC校验算法改进一小步——从r+1到r从bit扩张到byte的桥梁CRC32示例什么是循环冗余校验和CRC-32?循环冗余校验(CRC)是用于检测数据损坏的错误检测码。发送数据时,会根...
2020-10-25 18:13:44 27868 11
转载 无锁队列的实现
《【共享内存】基于共享内存的无锁消息队列设计》《DPDK无锁队列rte_ring相关代码及示例程序(rte_ring.h,rte_ring.c,main.c,makefile)》《DPDK ring库:环形缓冲区的解剖》《无锁队列的实现》Table of Contents关于CAS等原子操作无锁队列的链表实现CAS的ABA问题用数组实现无锁队列小结关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知.
2020-10-25 17:49:15 274
原创 Linux网络报文捕获/抓包技术对比:napi、libpcap、afpacket、PF_RING、PACKET_MMAP、DPDK、XDP(eXpress Data Path)
Table of Contents1.传统linux网络协议栈流程和性能分析协议栈的主要问题针对单个数据包级别的资源分配和释放流量的串行访问从驱动到用户态的数据拷贝内核到用户空间的上下文切换跨内存访问2. 提高捕获效率的技术预分配和重用内存资源数据包采用并行直接通道传递.内存映射.数据包的批处理.亲和性与预取.3. 典型收包引擎3.1 libpcap3.2 libpcap-mmap3.3 PF_RING3.4 PACKET_MMAP
2020-10-25 17:18:06 7068 1
转载 DPDK内存篇(一): 基本概念
Table of Contents引言标准大页将内存固定到NUMA节点硬件、物理地址和直接内存存取(DMA)IOMMU和IOVA内存分配和管理结论推荐阅读引言内存管理是数据面开发套件(DPDK)的一个核心部分,以此为基础,DPDK的其他部分和用户应用得以发挥其最佳性能。本系列文章将详细介绍DPDK提供的各种内存管理的功能。但在此之前,有必要先谈一谈为何DPDK中内存管理要以现有的方式运作,它背后又有怎样的原理,再进一步探讨DPDK具体能够提供哪些与内存相关的.
2020-10-25 16:09:57 1080 1
转载 CPU Cache Line:CPU缓存行/缓存块
《CPU Cache Line伪共享问题的总结和分析》以下文章来源于小林coding,作者小林codingTable of ContentsCPU Cache 有多快?CPU Cache 的数据结构和读取过程是什么样的?如何写出让 CPU 跑得更快的代码?总结前言代码都是由 CPU 跑起来的,我们代码写得好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能。CPU 内部嵌入了 CPU Cache(高.
2020-10-25 15:55:49 4063 3
原创 什么是DevOps?人员,流程和产品的结合,过程、方法与系统的统称
《CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)》《为什么选择AWS for DevOps?》《What is DevOps?》Table of Contents什么是DevOps?DevOps模型已定义DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(D
2020-10-25 15:32:38 1041
C语言设计模式 PDF《C Design Pattern》
2024-04-17
C, GNUC GCC 预处理《The C Preprocessor》
2024-04-16
User Guide: Open Build Service
2022-05-13
CentOS Stream 9 nasm 安装包
2022-05-01
CentOS Stream 9 nasm 源码包
2022-05-01
Optimizing Linux Kernel with BOLT.pdf
2022-01-21
red_hat_enterprise_linux-8-customizing_anaconda-en-us.pdf
2022-01-18
cclinux-coreos-34.20211111.3.0-live.x86_64.iso
2021-11-11
Ftrace Kernel Hooks-More than just tracing.pdf
2021-10-22
cpumemory-What Every Programmer Should Know About Memory.pdf
2021-09-10
architecture-instruction-set-extensions-programming-reference
2021-09-10
System V Application Binary Interface - AMD64 Architecture
2021-09-10
Hidden Linux Metrics with Prometheus eBPF Exporter.pdf
2021-09-03
e2ap-v01.00.00.asn
2021-08-25
Intel 64 and IA-32 Architectures Software Developer’s Manual Combined
2021-07-07
谈谈你对Container Linux容器操作系统的理解
2021-11-14
Linux“实时补丁”导致CPU无法占满运行
2021-02-22
C语言如何将字符串“int”转化为int类型
2019-01-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人