新手 网站建设 书籍/百度网盘在线登录
一、什么是弹性机制
弹性,大家可以轻易的联想到橡胶,可伸缩性是弹性机制的一个很重要的特点,但是实际上弹性不等同于可伸缩性
- 弹性(Elasticity) 通常指的是系统能够自动适应负载的变化,即自动扩展和收缩资源。
- 可伸缩性(Scalability) 则侧重于系统能够通过增加或减少资源来处理更大规模的负载,通常是指静态扩展或手动扩展的能力。
我们可以看出,弹性强调动态响应负载波动,而可伸缩性则强调在需求增长时能够提供更大的处理能力,两者的概念是完全不同的。而动态调整,则是系统设计中最为关键的部分。
二、常见的系统指标
既然是动态的响应,必然是存在一些数据指标来反映当时系统的闲忙状态(再或者说是健康状态),那么常见的指标又有哪些呢?
我们可以想象一下,一台电脑的组成部分有哪些。从硬件部分来说的话,CPU、主板、内存、硬盘(磁盘)、显卡、电源、散热系统、输入输出设备、网络适配器等,而对常见服务器来说最核心的几个部分,就是CPU、内存、硬盘、网络
1、CPU
主要是指CPU利用率,我们在公司经常听到一句,XXX服务器CPU爆了,一般是指CPU利用率过高,过高会导致计算机性能下降、响应迟缓甚至系统崩溃
通过Linux的 top 命令。我们可以看到具体的使用率是多少
相信大家对CPU并不陌生,计算机在处理任务的时候,都是靠CPU来处理的,单核CPU一次只能处理一个任务,通过时间片轮转的方式来进行任务的批量处理,假设在一家工厂里,只有一个工人,有多个生产任务,但是工人一次只能处理一个任务,因此工人会先处理A一段时间,再处理B一段时间,这个就是时间片的轮转机制,如果处理的时间足够短,我们可以假设每个人任务都是在同步处理中,随着现代科技的发展,单核已经无法满足人们的诉求,于是我们增加了工人的数量,多核CPU也就出生了
多核CPU的出现,大大的提高了计算机处理的效率。当任务过多,工人都满负荷的时候,我们就会发现,很多任务都处理过慢,系统于是就开始出现卡顿现象
搞IT的朋友经常会说自己是单核的,无法同时处理多件事情,事情只能一件件的去做,但是实际上,人脑是可以同时处理多件事,毕竟好多人都是边吃饭边看剧,或者边吃饭边聊天的,所以你懂得。
上下文
再提提CPU的上下文切换成本,我们都知道,人在专心做一件事的时候,如果突然被其他事插入,再回头做之前的事,我们是需要一些时间来知道之前做到哪一步的。这就是切换成本。
CPU在进行任务切换的时候,也是存在切换成本的,CPU 的上下文切换(Context Switch) 是指操作系统从一个正在运行的进程或线程切换到另一个进程或线程的过程。上下文切换是实现多任务处理和多线程并发执行的基础。通过上下文切换,操作系统能够在多个进程或线程之间高效地分配 CPU 资源,使得系统能够同时处理多个任务,尽管每个任务并不是同时执行的。
上下文通常包括:
- 程序计数器(PC,Program Counter):指向下一条将要执行的指令的地址。
- 寄存器:包括通用寄存器、堆栈指针等,它们保存进程运行过程中临时使用的数据。
- 内存映射:进程的地址空间映射,存储进程在内存中的数据(如代码段、数据段、堆栈等)。
- CPU 状态:包含进程执行时的状态信息,如条件码、控制寄存器等
上下文切换的过程
上下文切换的具体步骤通常包括以下几个:
- 保存当前进程/线程的状态:
操作系统将当前进程或线程的上下文信息(如程序计数器、寄存器值、堆栈指针等)保存到该进程的 进程控制块(PCB,Process Control Block) 中。 - 选择下一个进程/线程:
操作系统通过调度算法决定下一个将要执行的进程或线程。这可能是处于就绪队列中的某个进程,或者由于某些事件(例如 I/O 完成)而重新获得 CPU 时间的进程。 - 恢复下一个进程的状态:
操作系统从下一个进程的 进程控制块(PCB) 中加载其上下文信息,恢复该进程的状态,包括程序计数器、寄存器、堆栈指针等。 - 切换到新进程:
CPU 会开始执行新进程的代码,并且继续从新进程的程序计数器指向的地址处开始执行。
为了避免上下文切换频繁造成的性能问题,操作系统会尽量减少不必要的上下文切换,例如:
- 合理分配时间片:确保每个进程能够充分使用 CPU,避免过多的上下文切换。
- 优化进程调度算法:采用更加智能的调度策略(如优先级调度、负载均衡)以减少上下文切换的次数。
核数越高,理论上服务器性能越好,因此在选择服务器的时候,要根据实际情况选择合适的核数。
2、内存
内存的工作原理
1.1 存储和读取数据:
写入:CPU 在执行任务时,会将需要处理的数据从硬盘加载到内存中,或者直接生成数据并写入内存。
读取:CPU 在需要使用数据时,会从内存中读取数据。如果数据在内存中找不到,操作系统会通过虚拟内 存将其从硬盘加载到内存中。
2、访问速度:
内存的访问速度远高于硬盘和 SSD(固态硬盘),因此它在计算机系统中扮演着至关重要的角色。CPU 会尽可能地将正在运行的数据保存在内存中,以减少对硬盘的访问,从而提高计算效率。
内存的大小和性能
容量:内存的大小决定了计算机可以同时处理多少数据和程序。通常来说,内存越大,计算机在同时运行多个程序时越不容易卡顿。
带宽:内存的带宽指的是内存可以在单位时间内传输的数据量。内存的带宽越高,计算机在执行大量数据处理任务时的效率就越高。
延迟:内存访问的延迟指的是从发出请求到获取数据所需要的时间。延迟越低,系统响应速度越快。
以买电脑举例,内存越大,电脑的性能一般越好。
这里顺便提一下 SWAP (交换空间)
Swap(交换空间)是操作系统中的一种内存管理技术,它通过将不常用的数据从 物理内存(RAM)临时移到硬盘上的一块区域,来释放内存空间以便存放当前正在运行的任务或数据。这样,即使物理内存不足,操作系统也能够继续运行多个进程。
-
Swap 的工作原理
在现代操作系统中,物理内存有限,当有大量进程或程序同时运行时,系统可能无法为所有进程提供足够的内存。在这种情况下,操作系统会使用 swap 技术,将一些暂时不需要的内存页(page)从物理内存中移动到硬盘上的一个特定区域,称为 交换空间(swap space)。这样,物理内存中的空间就会被释放出来,供其他更活跃的进程使用。
当某个被交换到硬盘的数据再次需要时,操作系统会将其从硬盘中交换回内存,并将当前不需要的数据移到硬盘中。这一过程叫做 交换(swapping)。 -
Swap 的优缺点
- 优点:
缓解内存不足问题:当物理内存不足时,swap 使得系统仍然可以继续运行,即使没有足够的 RAM。
提高系统的稳定性:通过 swap,操作系统可以避免由于内存耗尽而导致的程序崩溃或系统挂起。
增强系统的多任务能力:通过交换机制,操作系统可以让更多的程序并发运行,即使它们的内存需求总和超过了物理内存容量。 - 缺点:
性能下降:硬盘的读写速度远远慢于内存的速度。当数据被交换到硬盘后,读取这些数据的速度变得非常慢,导致系统性能显著下降。尤其是当系统频繁地进行交换时(即发生 交换抖动 或 thrashing),性能会大幅度下降。
硬盘寿命问题:交换操作会增加硬盘的读写负载,尤其是对于固态硬盘(SSD),频繁的交换可能会影响硬盘的寿命。因为 SSD 有写入次数的限制,频繁写入 swap 文件可能导致 SSD 损耗。
更高的延迟:由于 swap 操作依赖于硬盘,访问交换空间的延迟比访问物理内存要高得多。系统在进行 swap 时可能会出现 卡顿 或 延迟,尤其是在高负载情况下。
- 优点:
-
Swap 的使用场景
- 内存不足的情况:当系统物理内存不足时,swap 可以用来避免程序崩溃或系统崩溃。在此情况下,操作系统将不活跃的进程移到交换空间,以释放内存供更活跃的进程使用。
- 高负载情况下的内存管理:在服务器或工作站中,尤其是运行多个大型应用或虚拟化环境时,系统可能需要比物理内存更多的内存来保持系统的稳定性。此时,swap 可以作为一种后备机制来防止系统崩溃。
- 嵌入式系统或轻量级系统:一些嵌入式操作系统或轻量级 Linux 系统可能配置 swap 来处理突发的内存需求,尽管它们的物理内存较小。
我们通过内存的使用量作为指标,可以清晰的知道,服务器目前的状态。
3、磁盘
常见的磁盘类型包括 硬盘驱动器(HDD)、固态硬盘(SSD)、以及 光盘、软盘 等。磁盘通常用于长期存储操作系统、程序文件、文档、媒体文件等数据。其主要功能是提供非易失性存储,即即使电源关闭,存储的数据也能长期保持。
机械硬盘(HDD)
- 工作原理:HDD(Hard Disk Drive)是一种传统的磁性存储设备,它通过旋转的磁盘盘片和读写磁头来存取数据。数据存储在磁盘的不同区域(磁道)上,读写磁头则在这些磁道上方快速移动,读取或写入数据。
- 特点:
容量大:HDD 通常有很大的存储容量,可以达到几百 GB 到数 TB。
较慢的读写速度:由于机械结构的限制,HDD 的数据访问速度较慢。
价格便宜:相对于 SSD,HDD 的每 GB 价格较低,适合需要大量存储空间但对速度要求不高的场景。
易受震动影响:HDD 中的移动部件较多,因此较易受外部震动影响,可能导致数据丢失或硬盘损坏。
固态硬盘(SSD)
- 工作原理:SSD(Solid-State Drive)是利用闪存技术(NAND Flash)存储数据的一种硬盘,不依赖机械部件。SSD 将数据存储在固态存储芯片中,可以快速进行数据读写。
- 特点:
读写速度快:由于没有机械部件,SSD 提供比 HDD 更快的读写速度,通常在启动系统、加载程序或处理大型文件时,速度有显著提升。
耐用性强:SSD 不依赖移动部件,因而比 HDD 更耐用,抗震动能力更强。
功耗低:SSD 的功耗较低,尤其适合笔记本电脑等对电池续航有要求的设备。
价格较高:相对于 HDD,SSD 的每 GB 存储成本较高,因此其大容量 SSD 价格更贵。
混合硬盘(SSHD)
- 工作原理:SSHD(Solid-State Hybrid Drive)是结合了 SSD 和 HDD 特性的硬盘。它包含一个较小的闪存部分用于高速缓存,以及一个传统的机械硬盘用于大容量存储。
- 特点:
较好的性能与价格平衡:相比纯 HDD,SSHD 提供了较好的性能,同时比 SSD 便宜。
性能有限:虽然结合了 SSD 的快速缓存,但整体性能仍不如全 SSD。
光盘(CD、DVD、Blu-ray)
- 工作原理:光盘(如 CD、DVD、Blu-ray)使用激光束在盘面上读取和写入数据。光盘广泛用于数据备份、分发软件和媒体内容。
- 特点:
容量小:CD 一般容量为 700 MB,DVD 容量为 4.7 GB,Blu-ray 可达 25 GB 或更高。
便携性:光盘的便携性较强,但相比于其他存储介质,读写速度较慢。
软盘
- 工作原理:软盘是一种较为古老的磁性存储介质,主要用于较小的数据存储。数据通过磁头在盘片上进行读写。
- 特点:
容量小:3.5 英寸的软盘通常只有 1.44 MB。
过时:由于容量小、速度慢,软盘现已被现代存储技术淘汰。
外部存储设备
外接硬盘和固态硬盘:通过 USB、Thunderbolt 等接口与计算机连接的外部存储设备。外部硬盘(HDD 或 SSD)可以用作便携存储、备份、数据迁移等。
U盘:基于闪存的便携存储设备,适合存储和转移小量数据。容量从几 GB 到 1 TB 不等。
磁盘的性能指标
-
容量:磁盘的容量决定了它能存储的数据量。常见的磁盘容量从几百 GB 到几个 TB,甚至更大。选择磁盘时,容量是一个重要的考虑因素,尤其是在存储大量数据的场景下。
-
转速(仅限 HDD):
5400 RPM:较低的转速,常见于笔记本硬盘,较为节能,但性能较差。
7200 RPM:较高的转速,通常用于桌面硬盘,性能更好,读写速度更快。
数据传输速率:
HDD:由于机械部件的限制,HDD 的数据传输速率通常较低,通常在 100 MB/s 左右。
SSD:SSD 提供的读写速度通常较高,可以达到 500 MB/s 到几 GB/s,特别是 NVMe SSD(基于 PCIe 接口)可以提供更高的速度。
访问时间(Latency):
HDD:访问时间受限于磁头的寻址速度,通常较慢。
SSD:由于没有机械部件,SSD 的访问时间非常短,几乎是即时的。
寿命:
HDD:HDD 的寿命受到机械部件磨损的影响,长时间使用可能会发生故障。
SSD:SSD 的寿命由其闪存芯片的写入次数决定,但现代 SSD 的寿命已大大提高,一般足以满足日常使用。
常见的磁盘主要就是机械硬盘(下图)和固态硬盘。
机械硬盘是通过磁性材料和机械运动来存取数据。HDD 的工作原理与磁带的原理相似,通过磁头在旋转的磁盘上读取和写入数据。所以速度是比较慢的。但是价格比较便宜。一般来说,我们在买电脑的时候,都是SSD+HDD,把SSD当做系统盘。HDD当做普通盘。这样来说,性价比最高。
常用的磁盘监控主要监控的是磁盘 I/O 性能(Disk I/O Performance)以及磁盘的使用率。
当存在磁盘大量读写的任务时,磁盘的IO使用率会大大增大,因为磁盘的读写本身比较慢,所以此时的系统性能相对比较差。而磁盘如果满了,也无法在写入数据,常见的就是日志文件过多,导致文件写入失败,数据库磁盘满了也会导致数据库写入失败(要写日志文件),因此关注磁盘的IO以及磁盘的使用量,也是服务器的数据指标。
三、网络
上行网络和下行网络
上行网络和下行网络是描述数据在网络中传输方向的术语,通常用于区分数据从用户到服务器(上行)与从服务器到用户(下行)的流向。这两个概念在很多网络应用中具有重要意义,尤其是在互联网、移动通信和宽带服务中。
上行网络(Uplink)
定义:上行网络是指数据从客户端(如用户设备、计算机或手机)发送到网络或服务器的过程。简单来说,就是数据上传的方向。
常见应用:
- 上传文件:比如将图片、视频等文件从用户设备上传到云存储或社交媒体。
- 视频通话:在视频通话过程中,从用户的摄像头捕捉到的视频数据通过上行链路传输给对方。
- 游戏数据:在线多人游戏中,玩家的输入和操作数据需要上传到游戏服务器。
速度:上行速度指的是从用户设备到网络或服务器的数据传输速率。与下行速度相比,上行速度通常较低,尤其在家庭宽带中。
影响因素:
- 带宽限制:宽带服务提供商通常提供较低的上行带宽,限制了用户上传的速率。
- 网络设备:无线路由器、网络卡等设备的性能会影响上行速度。
- 网络拥塞:多个用户或应用争用同一网络资源时,可能会降低上行速度。
下行网络(Downlink)
定义:下行网络是指数据从网络或服务器传输到客户端(如用户设备、计算机或手机)的过程。简单来说,就是数据下载的方向。
常见应用:
- 网页浏览:用户从服务器下载网页内容(如文字、图片、视频等)。
- 视频流媒体:例如从 YouTube、Netflix 等平台流媒体视频内容到用户设备。
- 软件下载:从互联网下载文件或应用程序。
- 速度:下行速度指的是从服务器或网络到用户设备的数据传输速率。一般来说,宽带网络的下行带宽较上行带宽大,因此下载速度通常较快。
影响因素:
- 带宽大小:互联网服务提供商提供的下行带宽决定了用户可以下载数据的最大速率。
- 网络拥塞:与上行类似,网络拥塞或路由器性能差都会影响下行速度。
- 服务器负载:服务器的负载情况也会影响数据的传输速度。如果服务器响应缓慢,可能会导致下载速度变慢。
网络带宽
在大多数网络通信中,下行速度通常高于上行速度,这也反映了大多数互联网应用的流量模式:用户更多的是从网络接收数据(如观看视频、浏览网页),而上传数据的需求相对较少。举例来说,家庭宽带服务通常提供 100 Mbps 的下行速度,而上行速度可能只有 10 Mbps 或更低。我们一般装宽带,也只关注下行速度。
这里提个大家常见的误区,百兆带宽,下载速率真的有一百吗?
网络带宽我们通常以以下单位表示:
比特每秒(bps,bits per second)
千比特每秒(Kbps,Kilobits per second)
兆比特每秒(Mbps,Megabits per second)
吉比特每秒(Gbps,Gigabits per second)
1Mbps(兆比特每秒) 代表的是每秒钟网络最多可以传输 1,000,000 位(比特)数据。1 Mbps = 1,000 Kbps(千比特每秒)。
这里的误区主要是因为单位的问题,一个是比特(b),一个是字节(B),1个字节等于8个比特。当然由于各种奇奇怪怪的原因(网络拥塞、延迟、丢包、协议开销等),实际上下载速率还要打折,百兆带宽实际的下载速率大概是8 MB/sec 到 11 MB/sec 之间。
我们可以发现带宽对网络数据传输有着很重要的作用。我们如果把网络当做一条高速公路的话,高速公路的车道越多,理论上单位时间能通过的车辆就越多。也不容易堵车(网络隐塞),从而吞吐量也能增加。
因此监控网络的传输速率也是十分重要的数据指标之一。看待性能问题的时候,一定也要关注网络,避免评估不到位。
三、总结
服务器的性能指标用于衡量服务器在处理不同任务时的效率和能力。不同的应用场景和需求可能关注不同的性能指标,但通常来说,服务器性能的评估会考虑以下几个关键指标:
CPU 性能指标
- CPU 使用率(CPU Utilization):
这是最常见的性能指标,表示 CPU 的当前使用情况。CPU 使用率过高可能意味着系统负载过重,进程竞争 CPU 资源。可以通过 top、vmstat 或 sar 等工具监控。 - CPU 负载(Load Average):
表示系统队列中等待执行的进程数量。一般情况下,负载值等于 CPU 核心数时表示合理的负载;如果负载超过核心数,则表示系统过载。
在 Linux 系统中,可以通过 uptime 或 top 查看。 - 时钟频率(Clock Speed):
CPU 的时钟频率(以 GHz 为单位)决定了 CPU 每秒钟能完成多少次操作。虽然时钟频率越高,处理能力越强,但也与 CPU 架构、核心数量、缓存等因素相关。 - 核心数(Cores)和线程数(Threads):
多核处理器可以提高并行处理能力,使服务器能够同时处理多个任务。线程数(通过超线程技术实现)进一步增强了处理能力。 - 指令集架构(ISA,Instruction Set Architecture):
CPU 支持的指令集决定了其计算能力和适用的任务类型。常见的有 x86、x86_64、ARM 等架构。
内存性能指标
- 内存使用率(Memory Utilization):
监控系统内存的使用情况。内存不足时,系统可能会开始使用交换空间(swap),导致性能下降。 - 内存带宽(Memory Bandwidth):
表示内存与 CPU 之间传输数据的速率,通常以 GB/s 为单位。高内存带宽有助于提高数据传输速率,特别是在内存密集型应用(如大数据处理、数据库)中。 - 内存延迟(Memory Latency):
内存访问的延迟是指从发出内存请求到收到数据的时间。较低的内存延迟可以显著提升性能,尤其是在需要频繁访问内存的数据密集型任务中。 - 内存容量(Memory Capacity):
服务器的总内存大小决定了它能够处理的数据量。对于内存密集型应用(如虚拟化、大型数据库、缓存等),内存容量尤为重要。
磁盘性能指标
- 磁盘 I/O 性能(Disk I/O Performance):
服务器的磁盘 I/O 性能决定了其处理大量数据时的效率,常通过以下指标来评估:
读/写速率(Throughput):表示磁盘每秒能够读取或写入的数据量,通常以 MB/s 或 GB/s 为单位。 - I/O 操作次数(IOPS,Input/Output Operations Per Second):衡量磁盘每秒钟能处理多少次读写操作。高 IOPS 对于需要频繁磁盘操作的应用(如数据库、虚拟化)尤为重要。
- 延迟(Latency):磁盘操作的延迟,通常以毫秒(ms)为单位。低延迟的磁盘能够更快速地响应 I/O 请求。
- 磁盘类型(Disk Type):
磁盘的类型直接影响性能。常见的磁盘类型有:
HDD(机械硬盘):低成本、大容量,但读写速度较慢。
SSD(固态硬盘):速度快、延迟低,适合高性能需求,但成本较高。
NVMe:基于 PCIe 接口的 SSD,提供更高的带宽和更低的延迟,适用于高端服务器。 - 磁盘阵列(RAID)配置:
使用 RAID 技术可以提高磁盘的性能和容错能力,常见的 RAID 配置有 RAID 0(条带化)、RAID 1(镜像)、RAID 5(分布式奇偶校验)等。
网络性能指标
- 带宽(Bandwidth):
网络带宽是指每秒钟能够传输的数据量,通常以 Mbps 或 Gbps 为单位。高带宽对于大数据传输、视频流等应用至关重要。 - 网络延迟(Latency):
网络延迟是指从数据发送到接收的时间。低延迟对实时应用(如 VoIP、在线游戏等)非常重要。 - 丢包率(Packet Loss):
丢包率表示网络中丢失的数据包的百分比。较高的丢包率可能导致通信不稳定,影响服务质量。 - 吞吐量(Throughput):
吞吐量表示在单位时间内实际传输的数据量,通常比带宽更能反映网络的实际性能。吞吐量受网络质量、路由器性能、丢包等因素影响。 - TCP/UDP 性能:
TCP 性能主要与延迟、带宽和连接数相关,而 UDP 性能则更加关注数据包丢失和时延,通常用于实时性要求较高的应用。
系统负载和响应时间
- 系统负载(System Load):
系统负载通常通过负载平均值来衡量,表示系统中活动的进程数量。如果负载过高,可能导致 CPU 或 I/O 资源瓶颈。 - 响应时间(Response Time):
响应时间表示从发起请求到接收到响应的时间。低响应时间是提高用户体验的重要因素,特别是在 Web 服务、API 请求等场景中。 - 并发连接数(Concurrency):
表示系统能够处理的同时连接的数量,通常与 Web 服务器、数据库等高并发服务的能力相关。
load average: 56.31, 55.92, 56.03:是系统一定时间内的平均负载,分别是1分钟、5分钟、15分钟。
内容还有好多。慢慢写吧。😭
相关文章:

聊聊系统的弹力设计-服务器性能指标篇(一)
一、什么是弹性机制 弹性,大家可以轻易的联想到橡胶,可伸缩性是弹性机制的一个很重要的特点,但是实际上弹性不等同于可伸缩性 弹性(Elasticity) 通常指的是系统能够自动适应负载的变化,即自动扩展和收缩资…...

MQ:kafka-消费者的三种语义
文章目录 前言(一) 创建topic(二) 生产者(三)消费者1. At-most-once Kafka Consumer2. At-least-once kafka consumer3. 使用subscribe实现Exactly-once4. 使用assign实现Exactly-once 前言 本文主要是以kafka 09的client为例子,详解kafka c…...

中国1km分辨率SSP119情景(SSP119、SSP245 SSP585),模式逐月降水量数据集(2021-2100)
目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 干旱监测平台 中国1km分辨率SSP119情景EC-Earth3模式逐月降水量数据集(2021-2100) 简介 该数据集为中国多情景多模式逐月降水量数据,空间分辨率为0.0083333(约1km),时间为2021年1月-2100年…...

21天掌握javaweb-->第8天:前后端分离架构与Axios请求
前后端分离架构概念 前后端分离架构是一种现代Web应用开发模式,其中前端和后端分别独立开发和部署,通过API进行数据交互。这种架构使得前端专注于用户界面和用户体验,而后端则专注于业务逻辑和数据处理。 优势 开发效率高:前后端可以并行开发,减少了开发时间。技术栈灵活…...

基于阻塞队列的生产者消费者模型动画演示
一个基于阻塞队列的生产者消费者模型的动画演示: 这是打包好的程序。程序是用 QT 写的。 通过网盘分享的文件:CP模型.7z 链接: https://pan.baidu.com/s/1YjC7YiSqHGqdr6bbffaDWg?pwde6g5 提取码: e6g5 CP模型...

DHCP和BOOTP选项及DHCP协议操作详解
DHCP和BOOTP选项及DHCP协议操作详解 DHCP与BOOTP简介 1. BOOTP(Bootstrap Protocol) 功能:提供静态配置的IP分配。用途:在早期用于无盘工作站启动时获取IP地址和基本配置。缺点:只能提供静态IP配置,无法动…...

数据结构--链表和单链表详解及实现
一.前言 数据结构思维导图如下,灰色标记的是之前讲过的,本文将带你走近单链表(红色标记部分),希望大家有所收获🌹🌹 二.链表的定义和概念 在讲单链表之前,我们先学习一下链表 2.1 链表的定义 链表是一种…...

vue3基础知识
书接上文,这篇继续来学习vue3的核心语法,可以先看上一篇再来看这篇效果更好。 1. computed computed 用于创建 计算属性,即基于其他响应式数据的值动态计算并缓存的属性。它的主要作用是优化性能和提高代码的可维护性,避免不必要…...

【Linux系统】Ubuntu 缓冲区机制
在Ubuntu中,和其他操作系统有个不一样的机制:缓冲区。这篇文章是对与缓冲区的详细介绍。 在 Ubuntu 中(以及其他基于 Linux 的操作系统),缓冲区(Buffer)是内核用于优化 I/O 操作的重要机制。它…...

ChatGPT 最新推出的 Pro 订阅计划,具备哪些能力 ?
OpenAI 最近推出了 ChatGPT Pro,这是一个每月收费 200 美元的高级订阅计划,旨在为用户提供对 OpenAI 最先进模型和功能的高级访问。 以下是 ChatGPT Pro 的主要功能和能力: 高级模型访问: o1 模型:包括 o1 和 o1 Pro…...

数据结构理论
内容来源青岛大学数据结构与算法课程,链接:数据结构与算法基础(青岛大学-王卓)_哔哩哔哩_bilibili 绪论 数据结构概述 数据结构和算法的定义:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存…...

es 3期 第14节-全文文本分词查询
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...

六安市第二届网络安全大赛复现
misc 听说你也喜欢俄罗斯方块? ppt拼接之后 缺三个角补上 flag{qfnh_wergh_wqef} 流量分析 流量包分离出来一个压缩包 出来一张图片 黑色代表0白色代表1 101010 1000 rab 反的压缩包 转一下 密码:拾叁拾陆叁拾贰陆拾肆 密文:4p4n5758…...

Sarcomere仿人灵巧手ARTUS,20个自由度拓宽机器人作业边界
Sarcomere Dynamics 是一家深度技术先驱,通过开发和商业化仿人机械来改变机器人行业。专注于为科研人员,系统集成商和制造商提供更实惠、更轻便且更灵活的末端执行器替代品。凭借创新的致动器技术,创造了一款紧凑、轻便且非常坚固的机械手Art…...

Django drf 基于serializers 快速使用
1. 安装: pip install djangorestframework 2. 添加rest_framework到您的INSTALLED_APPS设置。 settings.pyINSTALLED_APPS [...rest_framework, ] 3. 定义模型 models.pyfrom django.db import modelsclass BookModel(models.Model):name models.CharField(max_length64)…...

pycharm集成环境中关于安装sklearn库报错问题分析及解决
在输入pip install sklearn后,出现如下提示: pip install sklearn Collecting sklearn Using cached sklearn-0.0.post12.tar.gz (2.6 kB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-…...

AI - 浅聊一下基于LangChain的AI Agent
AI - 浅聊一下基于LangChain的AI Agent 大家好,今天我们来聊聊一个很有意思的主题: AI Agent ,就是目前非常流行的所谓的AI智能体。AI的发展日新月异,都2024年末了,如果此时小伙伴们对这个非常火的概念还不清楚的话&a…...

《【Linux】深入理解进程管理与 fork 系统调用的实现原理》
一、引言 在 Linux 操作系统中,进程管理是核心功能之一。进程是操作系统进行资源分配和调度的基本单位。理解进程管理的原理以及 fork 系统调用的实现对于深入掌握 Linux 系统的运行机制至关重要。本文将深入探讨 Linux 中的进程管理以及 fork 系统调用的实现原理&a…...

docker-compose部署skywalking 8.1.0
一、下载镜像 #注意 skywalking-oap-server和skywalking java agent版本强关联,版本需要保持一致性 docker pull elasticsearch:7.9.0 docker pull apache/skywalking-oap-server:8.1.0-es7 docker pull apache/skywalking-ui:8.1.0二、部署文件docker-compose.yam…...

AI 总结的的 AI 学习路线
一、入门阶段:数学基础与编程语言 数学基础 线性代数 当年白纸黑字推演, 都是泪啊,草稿本都用了一卷。 学习向量、矩阵的基本概念,包括向量的加法、减法、点积和叉积,矩阵的乘法、转置等运算。例如,在计算…...

离散傅里叶级数(DFS)详解
1. 引言 离散傅里叶级数(Discrete Fourier Series, DFS)是信号处理领域中一项基础且重要的数学工具,用于分析和处理周期性的离散信号。它通过将离散时间信号表示为一组正弦和余弦的和,从而使得信号在频域上得到更清晰的描述。与连…...

Java 类加载机制详解
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

1.1 Beginner Level学习之“编写简单的发布服务器和订阅服务器”(第十一节)
学习大纲: 1. 编写发布服务器节点 在 ROS 中,节点是连接到 ROS 网络的可执行文件。我创建了一个名为 talker 的发布者节点,它会向一个主题 chatter 不断发送消息。 首先,进入你的工作包 beginner_tutorials(假设你已…...

AIQuora:开启论文写作新篇章
在这个信息爆炸的时代,学术写作已成为研究者不可或缺的技能。然而,面对繁重的写作任务,许多学者和学生常常感到力不从心。AIQuora,一个专业的文理工科论文智能写作助手,以其免费开题报告生成功能,为学术写作…...

【C语言】库函数常见的陷阱与缺陷(1):字符串处理函数
目录 一、 strcpy 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全替代 1.4. 代码示例 二、strcat 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全替代 2.4. 代码示例 三、strcmp 函数 3.1. 功能与常见用法 3.2. 陷阱与缺陷 3.3. 安全替代 3.4. 代…...

Mysql索引原理及优化——岁月云实战笔记
根据Mysql索引原理及优化这个博主的视频学习,对现在的岁月云项目中mysql进行优化,我要向这个博主致敬,之前应用居多,理论所知甚少,于是将学习到东西,应用下来,看看是否有好的改观。 1 索引原理…...

AGCRN论文解读
一、创新点 传统GCN只能基于静态预定义图建模全局共享模式,而AGCRN通过两种GCN的增强模块(NAPL、DAGG)实现了更精细的节点特性学习和图结构生成。 1 节点自适应参数学习模块(NAPL) 传统GCN通过共享参数(权重…...

Python机器学习笔记(五、决策树集成)
集成(ensemble)是合并多个机器学习模型来构建更强大模型的方法。这里主要学习两种集成模型:一是随机森林(random forest);二是梯度提升决策树(gradient boosted decision tree)。 1…...

Kafka单机及集群部署及基础命令
目录 一、 Kafka介绍1、kafka定义2、传统消息队列应用场景3、kafka特点和优势4、kafka角色介绍5、分区和副本的优势6、kafka 写入消息的流程 二、Kafka单机部署1、基础环境2、iptables -L -n配置3、下载并解压kafka部署包至/usr/local/目录4、修改server.properties5、修改/etc…...

如何使用 Python 实现链表的反转?
在Python中实现链表的反转可以通过几种不同的方法。这里,我将向你展示如何使用迭代和递归两种方式来反转链表。 1. 迭代方法 迭代方法是通过遍历链表,逐个节点地改变其指向来实现反转的。 class ListNode: def __init__(self, val0, nextNone): …...