2021年第十届数学建模国际赛小美赛B题疾病传播的风险解题全过程文档及程序

2021年第十届数学建模国际赛小美赛

B题 疾病传播的风险

原题再现:

  空气传播疾病可以通过咳嗽或打喷嚏、喷洒液体或灰尘传播。另一方面,一些常见的传染病只能通过飞沫传播。请建立一个模型,以评估密闭空间内空气传播和液滴传播疾病的可能性。要考虑的因素至少包括空间大小、空间通风和合用时间。这里希望更准确地考虑人员分布和气流条件。请给出一般结果并详细说明一些具体示例,如飞机舱室和室内体育场。结果需要包括公式或算法、每个参数的含义以及每个参数的测量方法。

整体求解过程概述(摘要)

  空气传播和液滴传播的疾病更容易在密闭空间传播。对于感染风险的概率估计,在经典的Wells-Riley模型的基础上,考虑了更多的因素,建立了一个模型。
  在影响感染风险发生概率的诸多因素中,空间的大小决定了传染病的气传病原体浓度。此外,空间的通风主要包括两个方面:通风量和气流模式。气流模式通过影响病原体的空间分布来影响受限空间中人群暴露的风险。根据这些因素的影响特点,通过对初始Wells-Riley方程参数的修正,建立了一个更具针对性的受限空间空气传播和液滴传播概率评估模型。
  考虑到人口分布和气流条件对传染病传播风险的影响,采用元胞自动机模拟传染病在这两个附加因素影响下的传播。从人口流动和人口区域分布两个方面考虑人口分布。通过引入共定位时间内人员的总距离和最大位移等参数,构造了一个测量人员迁移量的方程。在元胞自动机中模拟人的均匀分布和随机分布等几种常见分布规律,寻找分布规律的相关系数。
  对于特定场景的仿真,我们将先前改进的模型与借助python代码实现的元胞自动机相结合,具体分析飞机座舱和室内体育馆的传播概率。通过调整改进的Wells-Riley方程中的参数和元胞自动机中的元胞状态,实现了以下设置。在飞机座舱场景中,人和通风模式被分为三个座舱;在室内体育场内,设置人员分布为规则正态分布,设置两种不同的通风方式,比较上述情况下的传播概率。
  最后,我们得出结论:对于受限环境中的现实人群,建议采取适度的人口控制和社会距离限制措施,以降低不同地区人群流动造成的传播风险;对于受限建筑的通风方式,建议采用分区通风和由内而外的通风方式,以降低病原体的传播率和传染病的传播风险。

模型假设:

  为了简化这个问题,我们做了以下基本假设,每个假设都是正确的。

  ➢假设1:当研究某一时刻的感染风险概率时,室内空气混合良好且处于稳定状态。
  理由:传统Wells-Riley模型的一些参数(如量子产率)依赖于反向计算,忽略了场地几何结构、传染源位置和气流模式对传染源空间分布的影响,这可能导致低估靠近传染源的易感人群的感染风险。在处理不同环境和案例的特殊性时,使用混合假设通常比在建模中假设特定环境和场景更合理。

  ➢假设2:不同病原体在传播过程中的空气动力学特性和暴露水平相同,在模拟传播概率时,不同病原体的致病性、存活率和大小等生理特性相同。
  理由:空气紊流使感染性病原体颗粒在空气中的分布和运动具有随机性,并影响病原体在人体呼吸道的沉积速率,直接影响人体对病原体的摄入剂量和对传染病的易感性。

  ➢假设3:空气中离散传染性颗粒物的随机分布符合泊松概率分布,而忽略通过泄漏、过滤等从受限空间移除的颗粒物数量。
  理由:根据泊松分布的统计特性,在建立模型时,可以在指数方程的指数项中加入一个与传染有关的参数,使其无量纲化,便于研究者设置参数。

问题重述:

  问题重述

  考虑到问题陈述中确定的背景信息和限制条件,我们需要解决以下问题:

  ⚫建立一个数学模型,包括空间大小、空间通风和共定位时间等因素,以评估空气传播和液滴传播疾病在受限空间中的传播概率,同时给出参数测量值。

  ⚫在问题1所建立的模型的基础上,加入人体分布和气流条件两个因素对模型进行细化,并给出了参数的测量方法。

  ⚫将改进后的模型应用于真实场景,例如飞机座舱和室内体育场。
我们的工作

  我们的工作主要包括:

  问题1

  在经典的Wells-Riley模型的基础上,以量子值和泊松分布为核心,建立了一个考虑更多因素的受限空间气载和液滴传播概率模型。
  分析了空间尺寸对传播概率的影响。在不考虑气流、人员分布和流动性的情况下,当敏感人群暴露或吸入滴核的概率降低时,受限空间的体积越大,均匀分散在整个空间中的等效滴核浓度越低。
  分析空间通风对传播概率的影响。空间的主要通风包括两个方面:通风量和气流组织。通气量是影响感染概率的一个重要因素,已在原始方程中考虑。除通风量外,室内气流模式还影响气溶胶的空间分布,进而影响受限空间内人群的暴露风险。

  问题2

  为了准确分析人口分布对传染病传播概率的影响,可以引入元细胞自动机来模拟传染病的传播。人口分布因素可以从两个方面考虑:人口流动性和人口分布形态。人员的流动性与人员在同一地点时间内的移动或静止程度有关。受限空间内人员的流动性越好,易感人员与已易感人员之间接触的机会就越大,感染的可能性也就越大。人的分布方式大致可以分为随机分布、均匀分布等几种情况。当同一人群在受限空间内呈现不同的分布模式时,感染概率差异较大。
  可以引入人的移动性在同一地点的时间、每个人的总旅行距离、最大位移的乘积、受限空间的面积等参数,利用它们构建关系来度量人的移动性的大小。
  人的分布模式对传播概率的影响可以通过引入一个参数来表示。为了找到这个参数,使用元胞自动机进行仿真。通过调整初始状态下不同单元的分布状态来模拟该参数的值,从而模拟随机分布、均匀分布等情况下该参数的值。

  问题3

  要描述特定场景中的感染概率,需要考虑不同场景的空间结构以及人群在空间中进行的活动分析。除中间运动区外,室内运动场的观众服从正态分布。机舱内人员分布在多个频段。在前面的问题中修改的Wells-Riley模型可以与元胞自动机代码结合使用,通过改变相应的python代码并为两种场景中的每一种实现不同的空气交换气流条件,比较不同场景中感染概率随共存时间增加的变化。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

import numpy as np
import matplotlib.pyplot as plt
import random
import copy
lst=[]
class Modal:def __init__ (self):#参数表self.stay_time = 6 #共处的时间 tself.air_speed = 0.3 #空气的供应速度 Qself.length = 9 #三维空间的长self.width = 50 #三维空间的宽self.height = 100 #三维空间的高self.volume = self.length*self.width*self.height #空间的大小 Vself.direction = [(0,1),(1,0),(0,-1),(-1,0)] #行人移动的方向self.search = [(1,1),(1,0),(1,-1),(0,1),(0,-1),(-1,1),(-1,0),(-1,-1)] #元胞的邻居self.turn = 1#回合数目self.people_rate = 0.2 #该点有人的概率-正态分布/均匀分布self.people_move_rate = 0 #人们流动比例self.people_change_dir_rate = 0 #转向概率self.create_sick_rate = 0.01 #新增病人self.people_getsick = 0.7 #患病概率
# self.people_rate = 0.2 #人的分布(均匀)self.breath_speed = 0.48 #人均呼吸速率 pself.virus_possibility = 0.25 #每一轮感染者产生病毒的概率self.sickfromvirus = 0.7 #易感者遇到病毒被感染的概率self.virusdead = 0.5 #病毒死亡的概率
# self.people_rate = 0.2 #人的分布(均匀)self.rec_sick = 1self.rec_infect_cnt = 0self.miu1 = self.length/2 #正态分布参数self.miu2 = self.width/2 #正态分布参数self.sigma1 = (self.length/20)**2 #正态分布参数self.sigma2 = (self.width/20)**2 #正态分布参数self.rho = 0 #正态分布参数
# self.n = 500 #通风中的人数
# self.f = 0.3 #室内空气的呼气分数self.people_cnt = 0 #统计人数#初始化self.mapsize = (self.length, self.width) #空间的大小self.map = np.zeros(self.mapsize,int) #空间的初始化self.map_temp = copy.deepcopy(self.map) #当前的状态图self.map_temp_sp = copy.deepcopy(self.map) #记录特殊人员 self.map_virus = copy.deepcopy(self.map) #病毒元胞图self.time=0.001 self.people_direct = copy.deepcopy(self.map) #记录人行走的方向self.x_nscale=[2,6]self.y_nscale=[i for i in range(11,16)]+[j for j in range(31,36)]+[k for k in range(0,5)]self.x_scale = [0,1,3,4,5,7,8]self.y_scale = [i for i in range(5,11)]+[j for j in range(16,31)]+[k for k in range(36,51)]def fnormal(self,x1,y1):#这里使用的是二维正态分布函数来模拟人的正态分布#越往中间人出现的概率越大x = self.miu1y = self.miu2f1 = (1/(2*3.14*self.sigma1*self.sigma2*np.sqrt(1-self.rho*self.rho)))*np.exp(-1/(2*(1-self.rho*self.rho))*((x-self.miu1)**2/self.sigma1**2 -2*rho*(x-self.miu1)*(yself.miu2)/(self.sigma1*self.sigma2) + (y-self.miu2)**2/self.sigma2**2))x = x1y = y1f = (1/(2*3.14*self.sigma1*self.sigma2*np.sqrt(1-self.rho*self.rho)))*np.exp(-1/(2*(1-self.rho*self.rho))*((x-self.miu1)**2/self.sigma1**2 -2*rho*(x-self.miu1)*(yself.miu2)/(self.sigma1*self.sigma2) + (y-self.miu2)**2/self.sigma2**2))return f/f1def possibility(self,p):#蒙特卡洛模拟是否达到某个概率k = random.random()return k < pdef add_virus(self):#每个回合感染者都有概率传播病毒元胞p = np.random.rand()if p < self.virus_possibility:returnfor i in range (self.mapsize[0]):for j in range (self.mapsize[1]):if self.map_temp[i][j] == 2:self.map_virus[i][j] = 1returndef work_virus(self):#病毒的走动for x in range(self.mapsize[0]):for y in range(self.mapsize[1]):if self.map_virus[x][y] == 1:flag = 0
dir = random.sample([0,1,2,3],1)[0]
new_x = x + self.direction[dir][0]
new_y = y + self.direction[dir][1]
if new_x<0 or new_x>=self.mapsize[0] or new_y<0 or 
new_y>=self.mapsize[1]:continueelse:self.map_virus[x][y],self.map_virus[new_x][new_y] = 
self.map_virus[new_x][new_y],self.map_virus[x][y]#两个位置状态互换return def dead_virus(self):#病毒有概率死亡或沉底
for x in range (self.mapsize[0]):for y in range(self.mapsize[1]):if self.map_virus[x][y] == 1 and self.possibility(self.virusdead):self.map_virus[x][y] = 0def arrange(self):#整合地图从而可视化self.map = copy.deepcopy(self.map_temp)for i in range(self.mapsize[0]):for j in range(self.mapsize[1]):if self.map_virus[i][j] == 1:self.map[i][j] = 3returndef rand_make(self): #初始化人的分布x_nscale = self.x_nscaley_nscale = self.y_nscale for x in range(self.mapsize[0]):for y in range(self.mapsize[1]):if not(x in x_nscale or y in y_nscale):self.map_temp[x][y] = 1
self.people_direct[x][y] = random.randint(0,3)
self.people_cnt += 1else:self.people_direct[x][y] = -1self.map_temp[random.sample(self.x_scale,1)[0]][random.sample(self.y_scale[0:6],1)[0]] = 2self.map_temp[random.sample(self.x_scale,1)[0]][random.sample(self.y_scale[6:22],1)[0]] = 2self.map_temp[random.sample(self.x_scale,1)[0]][random.sample(self.y_scale[22:],1)[0]] = 2x1 = random.sample([i for i in range(0,8)],3)y1 = random.sample([j for j in range(11,15)],3) dict1 = dict(zip(x1,y1))for x,y in dict1.items():self.map_temp_sp[x][y]=3self.map_temp[x][y]=1else:self.map_temp[x][y]=2x2 = random.sample([i for i in range(0,8)],3)y2 = random.sample([j for j in range(31,35)],3)dict2 = dict(zip(x2,y2))for x,y in dict2.items():self.map_temp_sp[x][y]=3self.map_temp[x][y] = 1else:self.map_temp[x][y]=2self.map_temp_sp[3][1] = 4self.map_temp[3][1] = 1self.map_temp_sp[4][1] = 4self.map_temp[4][1] = 1self.map_temp_sp[5][1] = 4self.map_temp[5][1] = 1returndef infect(self,x,y): #感染
self.flag = 0infect_num = 1 #统计邻居一共有多少个人患病
# miu = 66.91
# sigma = np.sqrt(1.53)q = np.random.rand()*40+30for id in self.search:tmp_x = x+id[0]tmp_y = y+id[1]if tmp_x<0 or tmp_x>=self.mapsize[0] or tmp_y<0 or tmp_y>=self.mapsize[1]:continue if self.map_temp[tmp_x][tmp_y] == 2:infect_num += 1for id in self.search:new_x = x+id[0]new_y = y+id[1]if new_x<0 or new_x>=self.mapsize[0] or new_y<0 or new_y>=self.mapsize[1]:continuepeople_getsick = 100*(1-np.exp(-infect_num*q*self.breath_speed*self.stay_time*(1-self.volume*(1-np.exp(-
self.air_speed*self.stay_time/self.volume))/(self.air_speed*self.stay_time))/self.air_speed))if self.map_temp[new_x][new_y] == 1 and self.possibility(people_getsick):self.map_temp[new_x][new_y] = 2self.flag = 1self.rec_sick += 1returndef work_people(self,x,y):#人的走动if not self.possibility(self.people_move_rate):returndir = self.people_direct[x][y]if not self.possibility(self.people_change_dir_rate):dir += random.randint(0, 3)dir %= 4new_x = x + self.direction[dir][0]new_y = y + self.direction[dir][1]if new_x<0 or new_x>=self.mapsize[0] or new_y<0 or new_y>=self.mapsize[1]:returnif self.map_temp[new_x][new_y] != 0:returnself.people_direct[x][y],self.people_direct[new_x][new_y] = 
self.people_direct[new_x][new_y],self.people_direct[x][y]self.map_temp[x][y],self.map_temp[new_x][new_y] = 
self.map_temp[new_x][new_y],self.map_temp[x][y]#两个位置状态互换return# def work_staff(self,x, y):
# flag2 = 0
# if not self.possibility(self.people_move_rate):
# return
# dir = self.people_direct[x][y]
# r1 = [i for i in range(4)]
# r2 = [j for j in range(2)]
# random.shuffle(r1)
# random.shuffle(r2)
# for i in range(4):
# if x in self.x_nscale and y in self.y_nscale:
# dir = r1[i]
# elif x in self.x_nscale and y in self.y_scale:
# dir = r2[random.randint(0,1)]
# new_x = x + self.direction[dir][0]
# new_y = y + self.direction[dir][1]
# if self.map_temp[new_x][new_y] == 0 and new_x>=0 and new_x<self.mapsize[0] and 
new_y>=0 and new_y<self.mapsize[1] and ((new_x not in self.x_scale) and (new_y not in self.y_scale)):
# break;
# else:
# flag2 = 1
# if flag2 == 0:
# self.people_direct[x][y],self.people_direct[new_x][new_y] = 
self.people_direct[new_x][new_y],self.people_direct[x][y]
# self.map_temp[x][y],self.map_temp[new_x][new_y] = 
self.map_temp[new_x][new_y],self.map_temp[x][y]
# #两个位置状态互换
# returndef work_staff(self,x, y):#乘务员走动flag2 = 0if not self.possibility(self.people_move_rate):returndir = self.people_direct[x][y]r1 = self.x_nscaler2 = [i for i in range(11,16)]+[j for j in range(31,36)]self.x_nscale=[2,6]random.shuffle(r1)random.shuffle(r2)for i in range(6):new_x = r1[random.randint(0,len(r1)-1)]new_y = r2[i]if self.map_temp[new_x][new_y] == 0 and new_x>=0 and new_x<self.mapsize[0] and 
new_y>=0 and new_y<self.mapsize[1] and ((new_x not in self.x_scale) and (new_y not in self.y_scale)):break;else:flag2 = 1if flag2 == 0:self.people_direct[x][y],self.people_direct[new_x][new_y] = 
self.people_direct[new_x][new_y],self.people_direct[x][y]self.map_temp[x][y],self.map_temp[new_x][new_y] = 
self.map_temp[new_x][new_y],self.map_temp[x][y]self.map_temp_sp[x][y],self.map_temp_sp[new_x][new_y] = 
self.map_temp_sp[new_x][new_y],self.map_temp_sp[x][y]#两个位置状态互换returndef show(self,i=0):#可视化j = iself.arrange()plt.figure(j,figsize=(50,50))plt.imshow(self.map)ax = plt.gca()
y = [i-0.5 for i in range(0,9)]x = [j-0.5 for j in range(0,50)]plt.xticks(x)plt.yticks(y)plt.grid()returndef create_sick(self,x,y):#人在接触病毒的时候有概率被感染
# if self.possibility(self.create_sick_rate):
# self.map_temp[x][y] = 2
# self.rec_sick += 1 if (self.map_temp[x][y] == 1) and (self.map_virus[x][y] == 1):if self.possibility(self.sickfromvirus):self.map_temp[x][y] = 2self.rec_sick += 1def go(self):self.rand_make()try_num = 100while(1):self.work_virus()self.add_virus()self.dead_virus()self.show(100-try_num)#行人走动for i in range (self.mapsize[0]):for j in range (self.mapsize[1]):if not self.map_temp[i][j] == 0:self.work_people(i,j)for i in range(self.mapsize[0]):for j in range (self.mapsize[1]):if self.map_temp[i][j] == 2:self.infect(i,j)elif self.map_temp[i][j] == 1:self.create_sick(i,j)lst.append(self.rec_sick)try_num -= 1if(try_num == 0):break;
if __name__ == '__main__':modal = Modal()modal.go()
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

GitLab 服务更换了机器,IP 地址或域名没有变化时,可能会出现无法拉取或提交代码的情况。

当 GitLab 服务更换了机器&#xff0c;但 IP 地址或域名没有变化时&#xff0c;可能会出现无法拉取或提交代码的情况。 这可能是由于 SSH 密钥或 SSL 证书发生了变化。以下是一些可能的解决步骤&#xff1a; 这可能是由于 SSH 密钥或 SSL 证书发生了变化。以下是一些可能的解决…

常用API

API(全称 Application Programming Interface&#xff1a;应用程序编程接口) 就是别人写好的一些程序&#xff0c;给我们直接拿去调用即可解决问题的。 包 什么是包&#xff1f; 包是用来分门别类的管理各种不同程序的&#xff0c;类似于文件夹&#xff0c;建包有利于程序的管…

【AIGC】prompt工程从入门到精通--图片生成专题

本文为系列教程【AIGC】prompt工程从入门到精通的子教程。 一、介绍 与文本提示相比&#xff0c;找到最佳的提示词来生成完美的图片并没有那么成熟。这可能是因为创建对象自身的挑战&#xff0c;这些对象基本上是主观的并且往往缺乏良好的准确性度量方法。 本指南涵盖了基本…

1.PyTorch数据结构Tensor常用操作

import torch as t t.__version__2.1.1从接口的角度来讲&#xff0c;对tensor的操作可分为两类&#xff1a; torch.function&#xff0c;如torch.save等。另一类是tensor.function&#xff0c;如tensor.view等。 为方便使用&#xff0c;对tensor的大部分操作同时支持这两类接…

.NET 8 中 Android 资源生成的改进和变化

作者&#xff1a;Dean Ellis 排版&#xff1a;Alan Wang 随着 .NET 8 的发布&#xff0c;我们引入了一个新系统&#xff0c;用于生成访问 Android 资源的 C# 代码。 在 Xamarin.Android、.NET 6 和 .NET 7 中生成 Resource.designer.cs 文件的系统已经被弃用。 新系统生成一个名…

No Chromedriver found that can automate Chrome ‘x.x.xxxx‘的解决办法

一、前置说明 在使用Appium对Android设备自动化测试时&#xff0c;切换WebView时抛出异常&#xff1a; selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: No Chromedriver foun…

分布式训练类的定义以及创建分布式模型

一 、分布式训练类的定义 from ..modules import Module from typing import Any, Optional from .common_types import _devices_t, _device_tclass DistributedDataParallel(Module):process_group: Any ...dim: int ...module: Module ...device_ids: _devices_t ...ou…

iOS(swiftui)——网络连接(Moya)

Moya 是一个流行的 Swift 网络抽象层&#xff0c;被用于简化 iOS 应用程序中的网络请求。使用 Moya&#xff0c;可以定义网络请求的方式&#xff0c;增加类型安全性&#xff0c;因为所有的网络请求都是经过 Swift 类型系统检查的&#xff0c;并且 Moya 提供了一种很好的方式来将…

利用 Python 进行数据分析实验(五)

一、实验目的 使用Python解决问题 二、实验要求 自主编写并运行代码&#xff0c;按照模板要求撰写实验报告 三、实验步骤 1 爬取并下载当当网某一本书的网页内容&#xff0c;并保存为html格式 2 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值(自学正则表达式) …

交叉验证以及scikit-learn实现

交叉验证 交叉验证既可以解决数据集的数据量不够大问题&#xff0c;也可以解决参数调优的问题。 主要有三种方式&#xff1a; 简单交叉验证&#xff08;HoldOut检验&#xff09;、k折交叉验证&#xff08;k-fold交叉验证&#xff09;、自助法。 本文仅针对k折交叉验证做详细解…

ZooKeeper学习一

一、概念 ZooKeeper是一个开放源码的分布式协调服务&#xff0c;它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作&#xff0c;最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于ZooKeeper实现…

GO设计模式——4、单例模式(创建型)

目录 单例模式&#xff08;Singleton Pattern&#xff09; 优缺点 使用场景 饿汉式和懒汉式单例模式 单例模式&#xff08;Singleton Pattern&#xff09; 单例模式&#xff08;Singleton Pattern&#xff09;是一个类只允许创建一个对象&#xff08;或者实例&#xff…

基于ssm vue个人需求和地域特色的外卖推荐系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

利用管道、信号量、信号、共享内存和消息队列进行多进程通信

一.管道&#xff08;分为命名管道和匿名管道&#xff09; 管道的特点&#xff1a; ①无论是命名管道还是匿名管道&#xff0c;写入管道的数据都存放在内存之中。 ②管道是一种半双工的通信方式&#xff08;半双工是指终端A能发信号给终端B&#xff0c;终端B也能发信号给终端…

css的4种引入方式--内联样式(标签内style)、内部样式表(<style>)、外部样式表(<link>、@import)

1.内联样式&#xff08;Inline Styles&#xff09;&#xff1a;可以直接在HTML元素的style属性中定义CSS样式。 例如&#xff1a; <p style"color: red; font-size: 16px;">这是一段红色的文本</p>内联样式适用于对单个元素应用特定的样式&#xff0c;…

软件开发安全指南

2.1.应用系统架构安全设计要求 2.2.应用系统软件功能安全设计要求 2.3.应用系统存储安全设计要求 2.4.应用系统通讯安全设计要求 2.5.应用系统数据库安全设计要求 2.6.应用系统数据安全设计要求 软件开发全资料获取&#xff1a;点我获取

Linux 网络协议

1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线&#xff0c;连接起来&#xff0c;按照一定的规则&#xff0c;进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及&#xff0c;能够进行联网的设备将会是越来越多&#xff08…

ERP数据仓库模型

ERP数据仓库模型建设是一个复杂的过程&#xff0c;涉及到多个主题域。以下是一个详细的设计方案&#xff1a; 确定业务需求和目标 在开始设计数据仓库模型之前&#xff0c;需要了解企业的业务需求和目标。这包括了解企业的运营模式、业务流程、关键绩效指标等。通过与业务部门…

vue 商品列表案例

my-tag 标签组件的封装 1. 创建组件 - 初始化 2. 实现功能 (1) 双击显示&#xff0c;并且自动聚焦 v-if v-else dbclick 操作 isEdit 自动聚焦&#xff1a; 1. $nextTick > $refs 获取到dom&#xff0c;进行focus获取焦点 2. 封装v-focus指令 (2) 失去焦点&#xff0c;隐藏…

Unity 程序运行后的日志信息路径

Unity 游戏程序运行后&#xff0c;在后台有个路径文件专门用于日志信息记录。 当运行程序发生错误时&#xff0c;我们可以通过查用该日志&#xff0c;获取相关有用信息&#xff0c;对我们处理Bug会有很大帮助。 在Windows平台上&#xff0c;该路径是&#xff1a; C:\Users\&…