《计算机网络简易速速上手小册》第6章:网络性能优化(2024 最新版)

在这里插入图片描述

文章目录

  • 6.1 带宽管理与 QoS - 让你的网络不再拥堵
    • 6.1.1 基础知识
    • 6.1.2 重点案例:提高远程办公的视频会议质量
      • 实现步骤
      • 环境准备
      • Python 脚本示例
      • 注意事项
    • 6.1.3 拓展案例1:智能家居系统的网络优化
      • 实现思路
      • Python 脚本示例
    • 6.1.4 拓展案例2:提升在线教育平台的教学质量
      • 实现方法
      • Python 脚本示例
  • 6.2 负载均衡技术 - 平衡艺术的网络版
    • 6.2.1 基础知识
    • 6.2.2 重点案例:Web应用的负载均衡
      • 实现步骤
      • 环境准备
      • Python 脚本示例
      • 脚本说明
      • 运行脚本
    • 6.2.3 拓展案例1:数据库读写分离
      • 实现思路
      • Python 脚本示例
    • 6.2.4 拓展案例2:使用健康检查提高服务可用性
      • 实现步骤
      • Python 脚本示例
  • 6.3 网络监控与管理 - 网络的守护者
    • 6.3.1 基础知识
    • 6.3.2 重点案例:使用 Python 进行基本的网络性能监控
      • 实现步骤
      • 安装所需库
      • Python 脚本示例
      • 脚本说明
    • 6.3.3 拓展案例1:实现网络设备的健康检查
      • 实现步骤
      • Python 脚本示例
    • 6.3.4 拓展案例2:构建实时网络流量分析工具
      • 实现步骤
      • Python 脚本示例
      • 脚本说明

第6章:网络性能优化

6.1 带宽管理与 QoS - 让你的网络不再拥堵

在这个数字化飞速发展的时代,我们的网络带宽就像是城市中的道路,而数据包则是在这些道路上行驶的车辆。但是,不同的车辆(数据包)有不同的目的地(应用),它们的重要性也各不相同。这就是带宽管理与服务质量(QoS)发挥作用的地方。

6.1.1 基础知识

带宽管理是指通过控制网络服务的数据流量和带宽分配来优化或提高网络服务的响应时间和数据处理能力的过程。简而言之,它帮助确保网络资源的合理分配,防止网络拥堵,并提高网络的整体性能。

**服务质量(QoS)**则进一步细化了带宽管理,通过给网络流量中的不同数据包设置优先级,确保关键应用(如实时视频会议、在线游戏等)获得必要的带宽,同时对不那么重要的应用(如文件下载、电子邮件)进行限制。

6.1.2 重点案例:提高远程办公的视频会议质量

在远程办公成为新常态的今天,确保视频会议的流畅性至关重要。使用Python,我们可以通过监控网络流量,并动态调整网络策略来优化视频会议的质量。

实现步骤

  1. 监控网络流量:使用Python的psutil库来监控网络流量,识别出视频会议流量的特征。
  2. 流量分类:根据流量特征,区分出视频会议流量与其他类型的网络流量。
  3. 优先级调整:为视频会议流量设置更高的优先级,使用Linux tc(Traffic Control)工具可以在网络层面进行这种设置。
  4. 带宽分配:为确保视频会议的流畅性,需要为其保留足够的带宽,同时对其他较不重要的流量进行限制。

为了提供一个具体的实现示例,我们将编写一个简单的 Python 脚本。这个脚本将演示如何使用psutil监控网络流量,并使用假设的逻辑来模拟为视频会议流量设置更高优先级的过程。请注意,实际的网络策略调整需要根据具体的网络设备和配置进行,这里仅提供一个概念性的实现框架。

环境准备

首先,确保你的Python环境中安装了psutil库。如果尚未安装,可以通过以下命令安装:

pip install psutil

Python 脚本示例

以下是一个简单的Python脚本,它演示了如何监控网络流量,并根据流量类型(在这个例子中是通过端口号假设识别视频会议流量)来调整优先级。

import psutil
import timedef monitor_network_traffic(sample_interval=1):"""监控网络流量,并识别假定的视频会议流量:param sample_interval: 采样间隔时间(秒)"""while True:# 获取网络流量统计net_before = psutil.net_io_counters()time.sleep(sample_interval)net_after = psutil.net_io_counters()# 计算这段时间内的流量差异bytes_sent = net_after.bytes_sent - net_before.bytes_sentbytes_recv = net_after.bytes_recv - net_before.bytes_recvprint(f"Bytes Sent: {bytes_sent}, Bytes Received: {bytes_recv}")# 假设视频会议流量通过特定端口进行# 这里的逻辑是示例性的,实际中需要更精确的流量分析if bytes_sent > 1000000:  # 假设大于1MB的发送流量为视频会议流量adjust_network_priority("video_conference")def adjust_network_priority(service_type):"""调整网络优先级:param service_type: 服务类型"""if service_type == "video_conference":print("Adjusting network priority for video conference traffic...")# 这里应该包含调整网络优先级的代码# 实际应用中,这可能涉及到配置网络设备或使用网络管理工具# 例如,使用 Linux tc 工具设置 QoS 策略# 这部分代码留作读者实现if __name__ == "__main__":monitor_network_traffic()

注意事项

  • 上述脚本中的monitor_network_traffic函数会无限循环,监控网络流量,并在检测到假定的视频会议流量时(这里简单以发送流量大于1MB为条件),调用adjust_network_priority函数。
  • adjust_network_priority函数目前仅打印了一个消息,表示在实际应用中,这里应包含具体的网络优先级调整逻辑,如使用Linux的tc工具配置QoS策略。
  • 请注意,实际中识别特定类型流量(如视频会议流量)需要更复杂的分析,可能涉及到深度包检查(DPI)或特定应用程序接口(API)的使用,这里的示例仅用于演示目的。

这个脚本提供了一个基础框架,展示了如何利用Python开始网络性能优化的探索。根据你的具体需求和网络环境,你可以进一步发展和定制这个脚本。

6.1.3 拓展案例1:智能家居系统的网络优化

随着智能家居设备的增加,家庭网络中的流量也日益增多。优化智能家居系统的网络,确保关键服务(如安防监控)的稳定运行变得非常重要。

实现思路

  1. 设备识别:利用Python脚本识别网络中的智能家居设备,通过设备的MAC地址或IP地址进行标识。
  2. 服务分类:根据设备类型和服务内容,对网络流量进行分类,识别出需要高优先级处理的服务(如安防视频流)。
  3. 策略应用:为关键服务设置高优先级的网络策略,保证在网络拥堵时,这些服务仍能获得必要的网络资源。

为了进一步演示如何使用 Python 处理网络优化的实际应用场景,我们将提供简单的Python 脚本示例。请注意,这些示例主要用于概念演示,真实环境下的实现可能需要更复杂的逻辑和额外的网络管理工具。

Python 脚本示例

假设我们想要监控智能家居系统中的设备流量,并为关键服务(如安防视频流)保证带宽。这个脚本将模拟如何识别特定设备的流量(基于设备IP)并打印一个调整网络优先级的消息。

# 假设的智能家居设备IP列表
smart_home_devices = {'security_camera': '192.168.1.5','smart_tv': '192.168.1.6','thermostat': '192.168.1.7'
}def monitor_device_traffic(device_ip):"""模拟监控特定设备的网络流量:param device_ip: 设备的IP地址"""print(f"Monitoring network traffic for device: {device_ip}")# 在实际应用中,这里将包含分析设备流量的代码# 可以是通过网络监控工具或自定义脚本实现# 示例中仅模拟逻辑if device_ip == smart_home_devices['security_camera']:# 假设识别到安防摄像头的高优先级流量adjust_network_priority_for_device(device_ip, "High")def adjust_network_priority_for_device(device_ip, priority):"""调整特定设备的网络优先级:param device_ip: 设备的IP地址:param priority: 优先级"""print(f"Adjusting network priority for device {device_ip} to {priority} priority.")# 实际应用中,这里将包含调整设备网络优先级的实际代码# 例如,通过配置路由器或交换机的QoS设置if __name__ == "__main__":for device, ip in smart_home_devices.items():monitor_device_traffic(ip)

6.1.4 拓展案例2:提升在线教育平台的教学质量

在线教育平台需要确保教学视频的高清流畅传输,特别是在大规模在线课堂中更是如此。

实现方法

  1. 流量监控:使用Python监控教学平台的流量,特别是视频流量。
  2. 动态调整:根据实时网络状况,动态调整视频流量的优先级,确保教学视频流畅。
  3. 资源保障:为教学视频预留充足的网络带宽,通过动态带宽分配确保教学视频的质量。

Python 脚本示例

假设我们需要监控在线教育平台的教学视频流量,并根据流量情况动态调整优先级以保证视频传输的质量。以下脚本将展示如何模拟这一过程。

# 假设的在线教育平台服务IP
education_service_ip = '192.168.2.10'def monitor_education_service_traffic(service_ip):"""模拟监控在线教育服务的网络流量:param service_ip: 服务的IP地址"""print(f"Monitoring network traffic for education service: {service_ip}")# 在实际应用中,这里将包含分析服务流量的代码# 可以是通过网络监控工具或自定义脚本实现# 示例中仅模拟逻辑# 假设识别到教育服务的高优先级流量adjust_network_priority_for_service(service_ip, "High")def adjust_network_priority_for_service(service_ip, priority):"""调整在线教育服务的网络优先级:param service_ip: 服务的IP地址:param priority: 优先级"""print(f"Adjusting network priority for education service {service_ip} to {priority} priority.")# 实际应用中,这里将包含调整服务网络优先级的实际代码# 例如,通过配置路由器或交换机的QoS设置if __name__ == "__main__":monitor_education_service_traffic(education_service_ip)

这个脚本示例提供了一个基本的框架,展示了如何通过 Python 脚本监控和调整网络流量的优先级,以满足不同应用场景的需求。实际部署时,需要根据具体网络环境和设备进行详细的配置和调整。

这些案例展示了如何利用 Python 进行网络流量的监控和管理,以及如何通过带宽管理和QoS 技术优化特定场景下的网络性能。这些实践不仅提高了网络的效率和用户体验,也展示了网络管理在不同应用场景中的灵活性和重要性。

6.2 负载均衡技术 - 平衡艺术的网络版

负载均衡技术是网络工程中的一项重要技术,它的核心目的是分散处理和通信的负载,从而提高系统的整体性能和可靠性。通过有效地分配进来的请求或网络流量到多个服务器上,负载均衡确保了任何单一的服务器不会过载,同时提高了服务的可用性和响应速度。

在这里插入图片描述


6.2.1 基础知识

负载均衡器可以是软件或硬件设备,它位于客户端和服务器之间,工作于第4层(传输层)或第7层(应用层)上,根据特定的算法决定入站流量应该被路由到哪个服务器。

负载均衡算法包括但不限于:

  • 轮询(Round Robin):依次将新的请求分配给下一个服务器,循环进行。
  • 最少连接(Least Connections):将新的请求分配给当前连接数最少的服务器。
  • 源IP哈希(Source IP Hash):根据请求的源IP地址决定将请求分配给哪个服务器,保证特定用户的请求总是被路由到同一个服务器。

会话保持(Session Persistence)是负载均衡中的一个重要概念,确保用户的会话在多次请求中能够被路由到同一个后端服务器,对于需要保持用户登录状态的应用尤为重要。

6.2.2 重点案例:Web应用的负载均衡

假设你有一个高流量的Web应用,需要确保应用的高可用性和响应速度。使用Python,你可以创建一个简单的负载均衡器,它将根据轮询算法将请求分配给一组后端服务器。

实现步骤

  1. 确定后端服务器:列出所有可用的后端服务器地址。
  2. 选择负载均衡算法:在这个例子中,我们使用轮询算法。
  3. 请求分发:负载均衡器接收到请求后,根据算法将请求转发到选定的后端服务器。

为了实现一个简单的负载均衡演示,我们将创建一个Python脚本,模拟Web应用的负载均衡过程。这个脚本将使用轮询算法来分配请求到一组模拟的后端服务器。请注意,这个示例为了简化,只模拟了请求的分配过程,并没有实际处理网络请求。

环境准备

请确保你的 Python 环境已经安装好。这个脚本不需要额外的第三方库。

Python 脚本示例

import itertools
import timeclass SimpleLoadBalancer:def __init__(self, servers):self.servers = serversself.server_cycle = itertools.cycle(servers)def dispatch_request(self, request):"""模拟请求分发"""selected_server = next(self.server_cycle)print(f"Dispatching request '{request}' to server {selected_server}")# 在实际应用中,这里会将请求转发到选定的服务器self.simulate_server_processing(selected_server)@staticmethoddef simulate_server_processing(server):"""模拟服务器处理请求"""print(f"Server {server} is processing request...")time.sleep(1)  # 模拟处理请求需要一定时间print(f"Server {server} has finished processing request.")if __name__ == "__main__":servers = ['Server1', 'Server2', 'Server3']load_balancer = SimpleLoadBalancer(servers)# 模拟10个连续的请求for i in range(1, 11):load_balancer.dispatch_request(f"Request{i}")

脚本说明

  • 这个脚本定义了一个SimpleLoadBalancer类,它接受一个服务器列表作为输入,并使用itertools.cycle来创建一个无限循环的服务器迭代器,模拟轮询算法。
  • dispatch_request方法模拟了请求的分发过程,它选择下一个服务器并打印出分配的服务器。
  • simulate_server_processing方法模拟服务器处理请求的过程,这里简单地使用time.sleep(1)来表示服务器正在处理请求。

运行脚本

当你运行这个脚本时,它会模拟10个连续的请求被分发到三个服务器上,按照轮询算法的顺序。这个简单的演示说明了负载均衡器如何在多个服务器之间分配请求,以提高应用的可用性和响应能力。

这个示例是一个非常基础的负载均衡模拟,实际的负载均衡器功能要复杂得多,包括但不限于处理实际的网络请求、动态添加或移除服务器、进行健康检查以及根据不同的算法(如权重、最少连接数等)进行请求分发。在生产环境中,通常会使用成熟的负载均衡解决方案如Nginx、HAProxy或云服务提供商提供的负载均衡服务。

6.2.3 拓展案例1:数据库读写分离

在一个数据库密集型的应用中,读写分离可以显著提高性能。负载均衡器可以用来实现这一目的,将读请求分配给一组只处理读操作的数据库服务器,而写请求则被路由到主数据库服务器。

实现思路

  1. 识别请求类型:基于请求的性质(读或写),负载均衡器需要能够识别并合理分配请求。
  2. 配置服务器组:配置两组服务器,一组处理读请求,另一组处理写请求。
  3. 请求路由:负载均衡器根据请求类型,将请求路由到合适的服务器组。

Python 脚本示例

在这个案例中,我们将模拟一个简单的读写分离逻辑,将读请求和写请求分别路由到不同的服务器组。为了简化,我们不会实际连接数据库,而是通过打印消息来模拟请求的路由过程。

read_servers = ['ReadServer1', 'ReadServer2']
write_servers = ['WriteServer1']
read_server_cycle = itertools.cycle(read_servers)def route_request(request_type, query):"""根据请求类型路由到读或写服务器"""if request_type == 'read':server = next(read_server_cycle)print(f"Routing read request '{query}' to {server}")elif request_type == 'write':server = write_servers[0]  # 假设只有一个写服务器print(f"Routing write request '{query}' to {server}")else:print(f"Unknown request type: {request_type}")if __name__ == "__main__":queries = [('read', 'SELECT * FROM table'), ('write', 'UPDATE table SET column=value')]for query in queries:route_request(*query)

这个简单的示例演示了如何根据请求的类型(读或写)将请求路由到不同的服务器组。在实际应用中,你可能需要考虑更复杂的逻辑,比如写请求后的读请求一致性保证、读服务器的负载均衡等。

6.2.4 拓展案例2:使用健康检查提高服务可用性

负载均衡的另一个重要功能是通过定期的健康检查来确保后端服务器的可用性。如果检测到某个服务器失效,负载均衡器可以自动将其从服务器池中移除,直到它再次变为健康状态。

实现步骤

  1. 配置健康检查:为每个后端服务器配置健康检查端点。
  2. 定期检查:负载均衡器定期向每个服务器的健康检查端点发送请求。
  3. 更新服务器状态:根据健康检查的结果,更新服务器的健康状态,并据此调整流量分配。

Python 脚本示例

在这个案例中,我们将模拟一个简单的健康检查过程,定期检查服务器的健康状态,并根据检查结果更新服务器列表。

import randomservers = ['Server1', 'Server2', 'Server3']
healthy_servers = servers.copy()def health_check():"""模拟健康检查"""for server in servers:if random.choice([True, False]):  # 随机决定服务器是否健康print(f"{server} is healthy.")if server not in healthy_servers:healthy_servers.append(server)else:print(f"{server} is down.")if server in healthy_servers:healthy_servers.remove(server)def dispatch_request(request):"""根据健康检查结果分发请求"""if healthy_servers:server = random.choice(healthy_servers)  # 从健康服务器中随机选择print(f"Dispatching request '{request}' to {server}")else:print("No healthy servers available to dispatch the request.")if __name__ == "__main__":# 模拟定期健康检查for _ in range(3):  # 模拟三次检查过程print("\nPerforming health check...")health_check()dispatch_request("Request1")time.sleep(2)  # 假设每次检查间隔2秒

这个示例通过模拟服务器的随机健康状况,展示了如何根据健康检查结果来动态更新可用的服务器列表,并据此分发请求。在生产环境中,健康检查通常包括检查服务器的响应时间、错误率、资源利用率等指标,以确保请求只被路由到健康的服务器上。

在这里插入图片描述


6.3 网络监控与管理 - 网络的守护者

网络监控与管理是确保网络健康、性能最优化和安全的关键组成部分。它涉及到对网络组件(如路由器、交换机、服务器等)和服务(如HTTP、DNS等)的性能、可用性和故障进行实时监控、分析和调整。

6.3.1 基础知识

网络监控的核心目标是提供网络透明度,以便网络管理员可以理解网络的当前状态和表现,并在必要时进行优化或故障排除。常见的监控项包括带宽使用率、延迟、丢包率、设备状态和日志等。

网络管理则更加全面,不仅包括监控,还包括配置管理、故障管理、性能管理、安全管理和计费管理。网络管理的目的是确保网络资源得到有效利用,并满足服务质量(QoS)的要求。

常用的网络监控和管理工具有SNMP(简单网络管理协议)、NetFlow(网络流量分析)、Syslog(系统日志)等。

6.3.2 重点案例:使用 Python 进行基本的网络性能监控

在这个案例中,我们将使用Python来监控网络的基本性能指标,如带宽使用率和延迟。我们将使用psutil库来获取网络接口的统计信息,以及使用ping命令来测试网络延迟。

实现步骤

  1. 监控带宽使用率:定期检查特定网络接口的发送和接收字节,计算带宽使用率。
  2. 测试网络延迟:对特定目标执行ping操作,记录延迟时间。

为了实现主案例中提到的网络性能监控,我们将编写一个Python脚本,这个脚本将同时监控网络的带宽使用情况和测试网络延迟。我们将使用psutil库来监控带宽使用,以及使用subprocess模块执行ping命令来测试延迟。

安装所需库

确保你已安装psutil库。如果未安装,可以通过运行以下命令来安装:

pip install psutil

Python 脚本示例

import psutil
import subprocess
import timedef monitor_bandwidth(interval=1):"""监控带宽使用情况"""old_stats = psutil.net_io_counters()time.sleep(interval)new_stats = psutil.net_io_counters()sent_bytes = new_stats.bytes_sent - old_stats.bytes_sentrecv_bytes = new_stats.bytes_recv - old_stats.bytes_recvprint(f"Sent: {sent_bytes} bytes, Received: {recv_bytes} bytes in the last {interval} second(s).")def ping_host(host="google.com"):"""测试网络延迟"""# Windows系统使用'ping -n 1',而Linux系统使用'ping -c 1'command = ['ping', '-c', '1', host]try:output = subprocess.check_output(command, stderr=subprocess.STDOUT, universal_newlines=True)print(f"Ping {host} successful:\n{output}")except subprocess.CalledProcessError as e:print(f"Ping {host} failed:\n{e.output}")if __name__ == "__main__":print("Starting network performance monitoring...")while True:monitor_bandwidth()ping_host()time.sleep(10)  # 间隔10秒进行下一轮监控

脚本说明

  • monitor_bandwidth函数计算了指定间隔时间内的网络带宽使用情况,包括发送和接收的字节数。
  • ping_host函数执行一个ping操作到指定的主机(默认为"google.com")来测试网络延迟。它使用subprocess.check_output来执行命令,并捕获输出。
  • 在主函数中,脚本会无限循环,每10秒钟执行一次带宽监控和ping测试。

请注意,ping命令在不同的操作系统中可能有所不同(例如,Windows中是ping -n 1,而在Linux和MacOS中是ping -c 1)。根据你的操作系统,你可能需要调整命令参数。

这个脚本提供了一个基础的示例,展示了如何使用Python进行网络性能监控。在实际的网络管理和监控应用中,可能需要更复杂的逻辑来处理多种性能指标和网络条件,以及更高级的错误处理和用户界面。

6.3.3 拓展案例1:实现网络设备的健康检查

在这个案例中,我们将使用Python脚本定期检查网络设备(如路由器和交换机)的健康状态,包括设备的可达性和关键服务的状态。

实现步骤

  1. 设备可达性检查:通过ping命令检查设备的可达性。
  2. 关键服务状态检查:使用特定的协议(如HTTP、SSH)检查设备上关键服务的状态。

Python 脚本示例

这个脚本将使用 Python 来进行简单的网络设备健康检查,包括检查设备的可达性(通过 ping)和关键服务的状态(通过尝试建立 TCP 连接)。

import subprocess
import socketdef ping_device(device_ip):"""检查设备的可达性"""try:output = subprocess.check_output(['ping', '-c', '1', device_ip], stderr=subprocess.STDOUT, universal_newlines=True)print(f"{device_ip} is reachable.")except subprocess.CalledProcessError:print(f"{device_ip} is not reachable.")def check_service_port(device_ip, port):"""检查设备上的特定端口服务状态"""sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(1)  # 设置超时时间result = sock.connect_ex((device_ip, port))if result == 0:print(f"Service on {device_ip}:{port} is up.")else:print(f"Service on {device_ip}:{port} is down.")sock.close()if __name__ == "__main__":devices = ['192.168.1.1', '192.168.1.2']  # 假设的设备IP列表service_ports = [80, 22]  # 常见的Web服务和SSH服务端口for device in devices:ping_device(device)for port in service_ports:check_service_port(device, port)

6.3.4 拓展案例2:构建实时网络流量分析工具

在这个案例中,我们将构建一个简单的网络流量分析工具,使用Python捕获网络流量,并进行基本的分析,如识别流量类型和统计各类型流量的比例。

实现步骤

  1. 捕获网络流量:使用scapy库捕获网络接口上的流量。
  2. 流量分析:分析捕获的数据包,识别流量类型(如HTTP、DNS)。
  3. 统计分析:统计各类型流量的数量或比例。

Python 脚本示例

为了实现实时网络流量分析,我们需要使用scapy库来捕获和分析网络包。这个案例将展示如何使用scapy捕获流量,并简单分类统计 HTTP 和 DNS 请求的数量。

首先,确保安装了scapy库:

pip install scapy

然后,使用以下脚本进行流量捕获和分析:

from scapy.all import sniff
from scapy.layers.http import HTTPRequest
from scapy.layers.inet import IP, TCP
from scapy.layers.dns import DNSdef packet_callback(packet):if packet.haslayer(HTTPRequest):print("HTTP Request: {} -> {}".format(packet[IP].src, packet[IP].dst))elif packet.haslayer(DNS):print("DNS Request: {} -> {}".format(packet[IP].src, packet[IP].dst))if __name__ == "__main__":print("Starting network traffic analysis...")sniff(filter="tcp", prn=packet_callback, store=False, count=0)

脚本说明

  • 拓展案例1的脚本使用ping命令和socket库来检查网络设备的可达性和服务状态。这是网络管理中常见的健康检查方法之一。
  • 拓展案例2的脚本使用scapy库来捕获网络流量,并通过检查数据包层来识别HTTP和DNS请求。这个简单的示例演示了如何对网络流量进行基本的实时分析。

这些脚本提供了实现网络监控与管理功能的基础,可根据实际需求进行进一步的开发和扩展。在生产环境中,这些任务可能需要更复杂的逻辑和错误处理,以及对性能和安全的考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络_1.5 计算机网络的性能指标

1.5 计算机网络的性能指标 一、总览二、常用的八个计算机网络性能指标1、速率(1)数据量(2)速率(3)数据量与速率中K、M、G、T的数值辨析(4)【练习1】计算发送数据块的所需时间 2、带宽…

Unity引擎学习笔记之【角色动画器操作】

角色动画Character Animation 一、使用方法 1. 添加一个静态的角色模型,并确保这个角色模型绑定了Avatar 2. 创建一个动画器控制器 Animator Controller 3. 将动画器控制器拖动添加到Player的Animator控制器上 4. 双击即可打开控制器 5. 将带有动画的预设&#xf…

docker下nacos(1.2.0)的持久化

一、创建数据库 运行以下代码自动创建数据库和表 CREATE DATABASE IF NOT EXISTS nacos_config /*!40100 DEFAULT CHARACTER SET utf8 */; USE nacos_config;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for config_…

[Python] 如何在控制台进行输入输出

可莉今天带你来学习Python基础中在控制台的输入输出~ 接下来跟着可莉来学习吧~ 可莉将这篇博客收录在了:《Python》 可莉推荐的博主主页:Keven ’ s blog 目录 通过控制台输出 格式化输出 通过控制台输入 总结 通过控制台输出 我们通过print函数可以…

[VulnHub靶机渗透] WestWild 1.1

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

leetcode正则表达式匹配问题(困难)

1.题目描述 2.解题思路,这道题自己没做出来,看了官方的题解,感觉对自己来说确实是比较难想的。使用了动态规划的解决方案,这种方案看题解都不一定能看明白,不过有个评论画图讲解的非常明白。其实仔细看题解的话&#…

从一个小故事讲解观察者模式~

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 什么是观察者模式? 观察者模式在我们的日常生活中极其常见。 先来看看观察者模式的定义: 观察者模式定义了对象之间…

面试八股文(3)

文章目录 1.HashSet如何检查重复2.comparable和Comparator区别3.ConcurrentHashMap和Hashtable区别4.线程和进程5.并发与并行的区别6.为什么使用多线程7.使用多线程可能带来问题8.线程的生命周期和状态9.什么是上下文切换10.线程死锁11.产生死锁四个条件12.如何避免死锁 1.Hash…

使用API有效率地管理Dynadot域名,使用API进将其他平台的域名转移至dynadot

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

Convolutional Neural Network (CNN) 识别手写数字字体

介绍: 卷积神经网络(Convolutional Neural Network,CNN)是一种在计算机视觉领域广泛应用的深度学习模型。它主要用于图像识别、目标检测、图像分割等任务。 CNN的核心思想是利用卷积操作提取图像的特征。卷积操作是一种基于滤波器…

vue3:23—自定义hooks

正是因为有了hooks,组合式才发挥出了威力 其实 hooks 和 vue2 中的 mixin 有点类似,但是相对 mixins 而言, hooks 更清楚复用功能代码的来源, 更清晰易懂。 如何定义hooks 具备可复用功能,才需要抽离为 hooks 独立文件函数名/文…

jsp粉丝社区系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 粉丝社区系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

SpringBoot注解--06--注解@Validated

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1 简述1.1 Validated作用1.2 所有参数注解含义1.3 异常处理1.4 Valid和Validated比较Valid级联校验 2.Validated 分组校验1.1为何要分组校验?1.2 代码案…

洞察数字未来:2023年腾讯全球数字生态大会全景解析

随着数字技术的飞速发展,全球正步入一个全新的数字生态时代。作为业界瞩目的科技盛会,2023年腾讯全球数字生态大会汇聚了众多行业领袖、技术专家和创新者,共同探讨数字生态的最新趋势、挑战和机遇。 本文将从大会的核心议题、分享内容及其价值…

【SpringBoot】模板设计模式应用

一、前言 常见的设计模式有23种,我们不得不提到模板方法设计模式,这是一种在软件开发中广泛使用的行为型设计模式之一。 二、模板方式是什么 全称是模板方法设计模式。 模板模式是一种行为设计模式。它的实现思路是,创建一个 模板方法 me…

【C语言】static关键字的使用

目录 一、静态本地变量 1.1 静态本地变量的定义 1.2 静态本地变量和非静态本地变量的区别 二、静态函数 2.1 静态函数的定义 2.2 静态函数与非静态函数的区别 三、静态全局变量 3.1 静态全局变量的定义 3.2 静态全局变量和非静态全局变量的区别 四、静态结构体变量 …

机器学习6-逻辑回归

逻辑回归是机器学习中一种常用于二分类问题的监督学习算法。虽然名字中包含“回归”,但实际上它用于分类任务,特别是对于输出为两个类别的情况。逻辑回归通过使用 logistic 函数将输入映射到一个在0,1范围内的概率值,然后根据这个概率值进行分类。 以下是逻辑回归的基本概念…

Kafka系列(一)【消息队列、Kafka的基本概念、Kafka的工作机制、Kafka可满足的需求、Kafka的特性、Kafka的应用场景】

kafka系列 一 一、消息队列1. 消息队列的来源2. 什么是消息队列3. 消息队列主要有哪些作用 二、Kafka的基本概念代理、生产者、消费者、消费者组主题、分区、副本、记录 三、了解 Kafka的工作机制-生产消息/消费消息四、Kafka可满足的需求五、Kafka的特性六、Kafka的场景 转自《…

[MFC] MFC消息机制的补充

之前写了[MFC] 消息映射机制的使用和原理浅析,还有些需要补充的,都记在这里。 MFC 消息的分类 MFC消息分为系统消息和自定义消息。 图片来源:C语言/C教程 大型源码案例分析:MFC消息系统的代码解析 易道云编程 系统消息分为窗口…

【前沿技术杂谈:开源软件】引领技术创新与商业模式的革命

【前沿技术杂谈:开源软件】引领技术创新与商业模式的革命 开源软件如何推动技术创新开源软件的开放性和协作精神促进知识共享和技术迭代推动关键技术的发展开源软件与新技术的融合 开源软件的商业模式开源软件的商业模式将开源软件与商业软件相结合 开源软件的安全风…