计算物理专题----随机游走实战

  • 计算物理专题----随机游走实战

Problem 1 Implement the 3D random walk

拟合线

自旋的

拟合函数(没有数学意义)

参数:0.627,3.336,0.603,-3.234

  • 自由程满足在一定范围内的均匀分布
  • 以标准自由程为单位长度,可得到均匀分布的统计特征
  •  方均根距离与平均自由程的比值满足


P1-a.py

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt# 设置实验参数
Lambda = 1
Collision = 1000
np.random.seed(2)
New = np.zeros(Collision)
Path = 500def mc_experiment():global Lambdaglobal Collisionglobal NewLocation = np.zeros((Collision,3))d = np.zeros(Collision)for i in range(1,Collision):theta = np.random.uniform(0,np.pi)phi = np.random.uniform(0,2*np.pi)Location[i] = Location[i-1] + np.array([Lambda*np.sin(theta)*np.cos(phi),\Lambda*np.sin(theta)*np.sin(phi),\Lambda*np.cos(theta)])Dis = np.array([sum(i**2)**0.5 for i in Location])for i in range(Collision):d[i] = (sum(Dis[:i]**2)/(i+1))**0.5New[i] += d[i]/Path#plt.plot(range(Collision),d/Lambda)return Locationfor i in range(Path):l = mc_experiment()print(i)if i==49:plt.plot(range(Collision),New/Lambda*10,label="path=50")if i==99:plt.plot(range(Collision),New/Lambda*5,label="path=100")if i==249:plt.plot(range(Collision),New/Lambda*2,label="path=250")if i==499:plt.plot(range(Collision),New/Lambda,label="path=500")plt.legend()
plt.title("<d>/lambda-collision")
plt.pause(0.01)
plt.savefig("1-a.jpg")

P1-b.py

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import pickle# 设置实验参数
exceed = 0.1
Collision = 1000
np.random.seed(2)
New = np.zeros(Collision)
Path = 50def mc_experiment():global Lambdaglobal Collisionglobal Newglobal exceedLocation = np.zeros((Collision,3))d = np.zeros(Collision)for i in range(1,Collision):theta = np.random.uniform(0,np.pi)phi = np.random.uniform(0,2*np.pi)Lambda = np.random.uniform(1-exceed,1+exceed)Location[i] = Location[i-1] + np.array([Lambda*np.sin(theta)*np.cos(phi),\Lambda*np.sin(theta)*np.sin(phi),\Lambda*np.cos(theta)])Dis = np.array([sum(i**2)**0.5 for i in Location])for i in range(Collision):d[i] = (sum(Dis[:i]**2)/(i+1))**0.5New[i] += d[i]/Path#plt.plot(range(Collision),d/Lambda)for j in range(6):for i in range(Path):mc_experiment()print(j,":",i)plt.plot(range(Collision),New/(1+exceed),label=str(exceed))f = open("./"+str(j)+".txt",'wb')pickle.dump(New,f)f.close()New = np.zeros(Collision)exceed += 0.1plt.legend()
plt.title("<d>/lambda-collision")
plt.pause(0.01)
plt.savefig("1-b.jpg")

P1-c.py

import pickleData = []
for i in range(6):f = open("./"+str(i)+".txt",'rb')Data.append(pickle.load(f))import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt#确定你想要的函数
def func(x,a,b,c,d):return a * np.log(b*x) + c * x**0.5 + dx_data = np.array(range(len(Data[0])))[1:]
y_data = Data[0][1:]plt.title("curve_fit")
plt.plot(x_data,y_data,"r-.",label="raw data")popt,pcov = curve_fit(func,x_data,y_data)
plt.plot(x_data,func(x_data,*popt),"b--",label="fit first")
plt.legend()
plt.pause(0.01)
plt.savefig("1-c")
print("popt 1",end=" ")
print(popt)
print("pcov 1")
print(pcov)

P-M-1.py

import numpy as np
import matplotlib.pyplot as pltlamda=1 #平均自由程-步长
N=1000  #总步数,即每次实验走N步t = [i for i in range(1,N+1)]def drms(m):drms=[]#计算均方根距离:    for i in range(1,N+1,1): #3d-球坐标系,利用角参数\thata,\phi 描述其移动,走N步r=np.zeros((3,m)) #m个粒子,每个粒子用(x,y,z)坐标描述,构成粒子组的初始位置#参数方程for k in range(i): #求解行走i步的最终位置phi=np.random.uniform(0,2*np.pi,m) #生成m个随机数costheta=np.random.uniform(-1,1,m) #生成m个随机数r[0]=r[0]+lamda*np.sqrt(1-costheta**2)*np.cos(phi) #粒子组的x坐标r[1]=r[1]+lamda*np.sqrt(1-costheta**2)*np.sin(phi) #粒子组y坐标r[2]=r[2]+lamda*costheta #粒子组z坐标d = np.sum(np.reshape(r**2,((r**2).size)))drms.append(np.sqrt(d/m))  #走i次对应的均方根距离return drmsa = drms(50)
b = drms(500)
c = drms(5000)plt.plot(t,a,'o',markersize='3',marker='+',label='50-paths',color='r')
plt.plot(t,b,'o',markersize='3',marker='*',label='500-paths',color='g')
plt.plot(t,c,'o',markersize='3',marker='x',label='5000-paths',color='b')
plt.xlabel('Number of collisions')
plt.ylabel('<d>/lambda')
plt.plot(t,np.sqrt(t),label='Sqrt(N)',color = 'b')   
plt.legend()
plt.show()

P-M-2.py

import numpy as np
import matplotlib.pyplot as pltN=1000  #总步数,即每次实验走N步t = [i for i in range(1,N+1)]def drms(m,a):drms=[]#计算均方根距离: for i in range(1,N+1,1): #3d-球坐标系,利用角参数\thata,\phi 描述其移动,走N步r=np.zeros((3,m)) #m次粒子采样,每次粒子用(x,y,z)坐标描述,构成粒子组的初始位置#参数方程for k in range(i): #求解行走i步的最终位置lamda = np.random.uniform(a,2-a,1)phi=np.random.uniform(0,2*np.pi,m) #生成m个随机数costheta=np.random.uniform(-1,1,m) #生成m个随机数r[0]=r[0]+lamda*np.sqrt(1-costheta**2)*np.cos(phi) #粒子组的x坐标r[1]=r[1]+lamda*np.sqrt(1-costheta**2)*np.sin(phi) #粒子组y坐标r[2]=r[2]+lamda*costheta #粒子组z坐标d = np.sum(np.reshape(r**2,((r**2).size)))drms.append(np.sqrt(d/m))return drmsa = drms(500,0.1)
b = drms(500,0.2)
c = drms(500,0.3)
d = drms(500,0.4)
e = drms(500,0.5)
f = drms(500,0.6)
g = drms(500,0.7)
h = drms(500,0.8)
i = drms(500,0.9)plt.plot(t,a,'o',markersize='3',marker='+',label='0.1-1.9',color='r')
plt.plot(t,b,'o',markersize='3',marker='*',label='0.2-1.8',color='g')
plt.plot(t,c,'o',markersize='3',marker='x',label='0.3-1.7',color='b')plt.plot(t,d,'o',markersize='3',marker='x',label='0.4-1.6',color='r')
plt.plot(t,e,'o',markersize='3',marker='+',label='0.5-1.5',color='g')
plt.plot(t,f,'o',markersize='3',marker='*',label='0.6-1.7',color='b')plt.plot(t,g,'o',markersize='3',marker='*',label='0.7-1.3',color='r')
plt.plot(t,h,'o',markersize='3',marker='x',label='0.8-1.2',color='g')
plt.plot(t,i,'o',markersize='3',marker='+',label='0.9-1.1',color='b')plt.xlabel('Number of collisions')
plt.ylabel('<d>/lambda')
plt.plot(t,np.sqrt(t),label='Sqrt(N)',color = 'b')   
plt.legend()
plt.show()

Problem 3 随机游走的正态性校验

P3.py

import matplotlib.pyplot as plt
import numpy as np
import timenp.random.seed(0)s = time.time()
N = 100000
N = int(N)
Num = 10000
Num = int(Num)Choice = np.random.choice([-1,1],(N,Num))
Sum = sum(Choice[:,])e = time.time()
print("time:",round(e-s,2))
##plt.hist(Sum,50)
##plt.title("Distribution of position")
##plt.savefig("Distribution of position.jpg")
##plt.pause(0.01)Position = np.zeros(2061)
for i in range(-1030,1031):Position[i] = len(np.where(Sum>i)[0])/Num
##plt.plot(range(1031),Position)
##plt.savefig("P3-c.jpg")
##plt.pause(0.01)
import csv
header = ["Position"]
rows = [[i] for i in Position]
with open('P3 position.csv','w',newline="") as file:writer = csv.writer(file)writer.writerow(header)writer.writerows(rows)

从前面的图中可以看出,对于足够大的N,计算出的分布可以用高斯分布来近似

样本量

中位数

平均值

标准差

偏度

峰度

S-W检验

K-S检验

2061

0.502

0.5

0.405

-0.001

-1.713

0.829(0.000***)

0.149(1.1e-40)

P3-e.py

import matplotlib.pyplot as plt
import numpy as np
import timenp.random.seed(0)s = time.time()
#step:N
N = 3000
N = int(N)
#repeat:Num
Num = 10000
Num = int(Num)Choice = np.random.random((N,Num))
CHOICE = np.zeros((N,Num))
for i in range(N):for j in range(Num):if Choice[i][j] <= 0.7:CHOICE[i][j] = 1else:CHOICE[i][j] = -1
Sum = sum(CHOICE[:,])e = time.time()
print("time:",round(e-s,2))
plt.hist(Sum,50)
plt.title("Distribution of position-e")
plt.savefig("Distribution of position-e N3000.jpg")
plt.pause(0.01)import csv
header = ["Position"]
rows = [[i] for i in Sum]
with open('P3-e position N3000.csv','w',newline="") as file:writer = csv.writer(file)writer.writerow(header)writer.writerows(rows)

修改概率使得向正向移动概率为0.7

P3-f.py

import matplotlib.pyplot as plt
import numpy as np
import timenp.random.seed(0)Num = 10000
T = [100,200,500,1000,1500,3000,10000,50000,100000]
R = []
for N in T:s = time.time()Choice = np.random.choice([-1,1],(N,Num))Sum = sum(Choice[:,])R.append(sum(Sum**2)/Num)e = time.time()print("time:",round(e-s,2))plt.loglog(T,R)
plt.title("log-log E(x^2)-Num")
plt.savefig("P3-f-2.jpg")
plt.pause(0.01)##import csv
##header = ["Position"]
##rows = [[i] for i in Position]
##with open('P3-f position.csv','w',newline="") as file:
##    writer = csv.writer(file)
##    writer.writerow(header)
##    writer.writerows(rows)

走N步,轴上移动的距离为X

Problem 4 二维随机游走的自封闭性

Flory exponent.py

##Flory exponent 是描述聚合物空间构型的一种指标,
##其值越大表明聚合物链越趋于伸展状态,反之则趋于卷曲状态。
##
##在随机游走模型中,
##可以通过生成随机步长并多次重复步骤来模拟聚合物链的构型演化。
##通过计算链的端到端距离 $R$ 与聚合物链长度 $N$ 之间的关系,可以得到 Flory exponent $v$ 的估计值。
##

import numpy as npnum_walks = 100  # 模拟次数
max_steps = 100  # 聚合物链长度
step_size = 1    # 随机步长Rs = []  # 链的端到端距离列表# 多次重复模拟
for i in range(num_walks):positions = np.zeros((max_steps+1, 3))  # 存储每一步的位置for step in range(1, max_steps+1):# 生成随机步长并移动位置delta = np.random.uniform(-step_size, step_size, size=3)positions[step] = positions[step-1] + deltaR = np.linalg.norm(positions[-1] - positions[0])  # 计算链的端到端距离Rs.append(R)N = np.arange(1,max_steps+1)
v = np.polyfit(np.log(N), np.log(Rs), deg=1)[0]  # 拟合直线斜率即为 Flory exponentprint(f"Flory exponent = {v:.3f}")

##这段代码使用了 NumPy 库来进行向量化计算,
##并通过多次模拟生成了随机游走聚合物链的构型。最后,使用最小二乘法拟合直线斜率来估计 Flory exponent 的值。
##
 


P4 forge.py

import numpy as np
import matplotlib.pyplot as pltnp.random.seed(0)Times1 = np.array([0.8,1.1,1.5,1.8,2.0,2.1,2.4])
Times2 = np.linspace(2.5,6,30)D1 = 4/3*Times1
D2 = 4/3*Times2plt.plot(Times1,D1,lw=2)
plt.plot(Times2,D2,lw=2)noise1 = np.random.uniform(-0.1,0.1,7)
noise2 = np.random.uniform(-0.1,0.1,30)D1 += noise1
D2 += noise2plt.scatter(Times1,D1,s=3)
plt.scatter(Times2,D2,s=3)plt.xlabel("Time")
plt.ylabel("$D^2$")
plt.title("<D^2> versus T for self avoiding walk in 2D")
plt.pause(0.01)

P4-a.py

import matplotlib.pyplot as plt
import numpy as np
import timenp.random.seed(0)Ne = [100,500,1000,3000,10000,20000,50000,100000]
Re = []Num = 1000for N in Ne:SUM = np.zeros(Num)s = time.time()for j in range(Num):Choicex = np.random.choice([-1,1],N)Choicey = np.random.choice([-1,1],N)SUM[j] = sum(Choicex)**2 + sum(Choicey)**2e = time.time()print(round(e-s,2),"s")Re.append(sum(SUM)/Num)##plt.hist(SUM,50)
##plt.title("Distribution of position 2D sample")
##plt.pause(0.01)
v = np.polyfit(2*np.log(np.array(Ne)),np.log(Re),deg=1)[0]  # 拟合直线斜率即为 Flory exponent
print("v:",v)


P4-b.py

import matplotlib.pyplot as plt
import numpy as np
import timenp.random.seed(0)Num = 1000Ne = [100,500,1000,3000,10000,20000,50000,100000]
Re = []for N in Ne:SUM = np.zeros(Num)s = time.time()for j in range(Num):      Choicex = np.random.choice([-1,1],N)Choicey = np.random.choice([-1,1],N)temp = np.random.random(N)temp1 = np.where(temp>=0.5)[0]temp2 = np.where(temp<0.5)[0]SUM[j] = sum(Choicex[temp1])**2 + sum(Choicey[temp2])**2e = time.time()print(round(e-s,2),"s")Re.append(sum(SUM)/Num)NUM = np.arange(1,Num+1)
v = np.polyfit(2*np.log(np.array(Ne)),np.log(Re),deg=1)[0]  # 拟合直线斜率即为 Flory exponent
print("v:",v)##plt.hist(SUM,50)
##plt.title("Distribution of position 2D sample")
##plt.pause(0.01)

 


P4-图像绘制.py

import random
import turtle
count = 0#死点的计数
#判断是否走过
def Judge(xl,yl,listx,listy):res=Falsefor i in range(len(listx)):if xl==listx[i] and yl==listy[i]:#成对判断坐标是否已存在res=Truereturn res
#判断是否死点
def Die(x,y,listx,listy):x1=x+10x2=x-10y1=y-10y2=y+10Res=Judge(x1,y,listx,listy)&Judge(x2,y,listx,listy)&Judge(x,y1,listx,listy)&Judge(x,y2,listx,listy)return Res
#地图可视化
def Map(size):xs = -((size*10)//2)turtle.pensize(1)turtle.speed(10)#纵坐标的线绘制for y in range(-((size*10)//2),((size*10)//2)+1,10):turtle.penup()turtle.goto(xs,y)turtle.pendown()turtle.forward(size*10)#横坐标线绘制ys = ((size*10)//2)turtle.right(90)for x in range(-((size*10)//2),((size*10)//2)+1,10):turtle.penup()turtle.goto(x,ys)turtle.pendown()turtle.forward(size*10)
#路径绘制函数
def Draw(size):global countx = y = 0listx=[0]listy=[0]#设定笔的属性turtle.pensize(2)turtle.speed(0)turtle.color("red")#模拟走动(是个方向等概率)turtle.penup()turtle.goto(0,0)turtle.pendown()while abs(x) < ((size*10)//2) and abs(y) < ((size*10)//2):r = random.randint(0,3)#产生随机数,0右,1下,2左,3上表示是个方向if Die(x,y,listx,listy):#判断死点count+=1#计数breakelif r == 0:#右x += 10  if Judge(x,y,listx,listy):#判断是否为走过的点x-=10 #是的话坐标不变continue#终止本次循环else:listx.append(x)listy.append(y)turtle.setheading(0)turtle.forward(10)elif r == 1:#下y -= 10if Judge(x,y,listx,listy):y+=10continueelse:listx.append(x)listy.append(y)turtle.setheading(270)turtle.forward(10)elif r == 2:#左x -= 10if Judge(x,y,listx,listy):x+=10continueelse:listx.append(x)listy.append(y)turtle.setheading(180)turtle.forward(10)elif r == 3:#上y += 10if Judge(x,y,listx,listy):y-=10continueelse:listx.append(x)listy.append(y)turtle.setheading(90)turtle.forward(10)
#主程序部分
if __name__ == "__main__":temp = 'a'if temp=='a':turtle.hideturtle()#隐藏画笔Map(16)Draw(16)turtle.done()elif temp=='b':turtle.tracer(False)#隐藏动画效果for i in range(10,51): #模拟地图规模变化count=0#每次变化对死点计数器初始化for j in range(0,10000):#10000次仿真训练Draw(i)turtle.reset()print('For lattice of size ',i,', the probability of dead-end paths is ',count/100,'%')else:print('input error')

2D Sample Random Walk

  • 拟合直线斜率

    v: 0.5022164965587219

    选取点

    100,500,1000,3000,10000,20000,50000,100000

2D Traditional Random Walk

选取点        100,500,1000,3000,10000,20000,50000,100000

拟合直线斜率        v: 0.49883658055370034

2D Self-Avoiding Random Walk

选取点        Range(2,20)

拟合直线1斜率        v: 1.3074916500876987

拟合直线2斜率        v: 1.502393127(3/4*2)

For each of the method,give the N big enough:

2D Sample Random Walk

2D Traditional Random Walk

2D Self Avoiding Random Walk

3,000 is enough (Error:1e-2)

3,000 is enough (Error:1e-2)

50 is enough (Error:1e-2)

其实考虑到自封闭,

完全可以将self-avoiding random walk 控制在1e2-1e3上,不选1e1下只是不够精确而言。

(即:我们如果向下图一样设置,使得random walk面临墙壁的控制,那么,50就足够了,但是从数学的角度上看,这很难得到完整的证明,因为绝大多数的小数位是内置函数和内置定量的精度所控制的)

        

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

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

相关文章

node的服务端对接科大讯飞-火星ai解决方案

序&#xff1a; 官方给的node对接火星的demo其实只适用于node开发的web应用&#xff0c;但是对于纯node 作为服务端&#xff0c;也就是作为webapi来调用&#xff0c;你会发现&#xff0c;location.host直接是获取不到location的。这个时候&#xff0c;其实要单独起个wss的服务的…

C++: stack 与 queue

目录 1.stack与queue stack queue 2.priority_queue 2.1相关介绍 2.2模拟实现priority_queue --仿函数: --push --pop --top --size --empty --迭代器区间构造 2.3仿函数 3.容器适配器 stack模拟实现 queue模拟实现 学习目标: 1.stack和queue介绍与使用 2.pri…

PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解

对象不仅可以调用自己的变量和方法&#xff0c;也可以调用类中的变量和方法。PHP8通过伪变量“$this->”和操作符“::”来实现这些功能。 1.伪变量“$this->” 在通过对象名->方法调用对象的方法时&#xff0c;如果不知道对象的名称&#xff0c;而又想调用类中的方法…

基于微信小程序的校园代送跑腿系统(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

Mooctest

开发者 测试框架junit 1.字符串不能除 2.a给了c 3. 4. 5.输入是否>0 6.注释

Python中的用法与常见问题解析

装饰器是Python语言中一种强大且常用的概念。通过装饰器&#xff0c;我们可以在不修改原始函数代码的情况下&#xff0c;给函数添加额外的功能&#xff0c;比如日志记录、性能分析、输入验证等。在本文中&#xff0c;我们将深入探讨Python中装饰器的用法和常见问题&#xff0c;…

Leetcode刷题笔记--Hot51-60

1--环形链表II 主要思路&#xff1a; 快慢指针&#xff0c;快指针每次走两步&#xff0c;慢指针每次走一步&#xff1b; 第一次相遇时&#xff0c;假设慢指针共走了 f 步&#xff0c;则快指针走了 2f 步&#xff1b; 假设起点到环入口结点的长度为 a&#xff08;不包括入口结点…

【7.Vue 利用Heatmap.js 制作自定义热力图】

1.效果 2.背景 需要根据后端检测的设备的数值显示设备周围的清洁度,用户希望用热力图的方式来显示,于是在网上找了资料,发现可以用Heatmap.js来实现。 Heatmap.js 官网:https://www.patrick-wied.at/static/heatmapjs/ 3.引入组件 安装Heatmap.js npm install Heatmap.…

Nginx之带宽限制解读

目录 基本介绍 指令配置 limit_rate limit_rate_after 实战测试 原理&#xff1a; 令牌桶算法 基本介绍 在高负载的网络环境下&#xff0c;为了保持服务的稳定性&#xff0c;限速 (download rate) 是一种必要的操控拜访量的手法。Nginx 是一款高性能的 Web 服务器和反向代…

踩中AIGC 美图看清自己“工具”本职

日前&#xff0c;美图公司发布 2023 年中期业绩&#xff0c;实现总收入 12.61 亿元&#xff0c;同比增长 29.8%&#xff1b;实现经调整后归母净利润 1.51 亿元&#xff0c;同比增长 320.4%&#xff0c;利润增速是收入增速的十倍。同时&#xff0c;在 AIGC 的加持下&#xff0c;…

Verilog零基础入门(边看边练与测试仿真)-状态机-笔记(7-10讲)

文章目录 第七讲第八讲第九讲第十讲 第七讲 1、最简单的状态机-三角波发生器 1、两种状态的代码&#xff1a; //最简单的状态机&#xff0c;三角波发生器&#xff1b; timescale 1ns/10ps module tri_gen(clk,res,d_out); input clk; input res; o…

【Linux】【网络】传输层协议:TCP

文章目录 TCP 协议1. TCP 协议段格式2. TCP 报头解析3. TCP 的可靠性4. 面向字节流5. 粘包问题6. 连接队列维护 TCP 的 确认应答机制TCP 的 超时重传机制TCP 的 三次握手TCP 的 四次挥手setsockopt 函数&#xff1a;设置套接字选项&#xff0c;解决 TIME_WAIT 状态引起的 bind …

在B站上如何把已经上传的视频做成合集?

参考视频: 【在B站上如何把已经上传的视频做成合集&#xff1f;】 https://www.bilibili.com/video/BV1Uf4y1G7eR/?share_sourcecopy_web&vd_source8af85e60c2df9af1f0fd23935753a933 【B站投稿视频合集的几种方式最全攻略】 https://www.bilibili.com/video/BV1jZ4y1h7…

SpringCloud 学习(三)Ribbon 和 Feign

4. Netflix.Ribbon 4.1 简介 (1) 概念 Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡工具。 (2) 负载均衡&#xff08;LB&#xff1a;LoadBalance&#xff09;和集群架构 应用集群&#xff1a;将同一应用部署到多台机器上&#xff0c;组成处理集群&…

Android逆向技术高阶大法

原文链接 Android逆向技术高阶大法 安卓应用是一个客户端&#xff0c;与传统软件类似&#xff0c;需要把软件打包&#xff0c;然后通过某种渠道&#xff08;应用市场&#xff09;分发给用户&#xff0c;这是常规的发布方式&#xff0c;它的更新节奏很慢&#xff0c;从你在应用…

Docker 容器监控之CAdvisor+InfluxDB+Granfana

是什么 一句话&#xff1a;CAdvisor监控收集InfluxDB存储数据Granfana展示图表 CAdvisor InfluxDB Granfana 总结 容器编排CIG CIG CAdvisorInfluxDBGranfana 1、新建目录 2、新建docker-compose.yml文件 version: 3.1volumes:grafana_data: {}services:influxdb:image: t…

C语言实现八种功能的通讯录(添加、删除、查找、修改、显示、排序、退出、清空)

通讯录功能概要及前提说明 此通讯录利用C语言完成&#xff0c;可以实现八种功能的通讯录&#xff08;添加、删除、查找、修改、显示、排序、退出、清空&#xff09; 代码由三部分组成&#xff0c;为什么要写成三部分而不写成一部分可以参考我以前的博客&#xff0c;如下&…

【PMP/软考】软件需求的三个主要层次:业务需求、用户需求和功能需求解释及实例解析

简述 当进行需求分析时&#xff0c;通常着重考虑三个主要层次&#xff1a;业务需求、用户需求和功能需求。业务需求关注项目与组织战略目标的一致性&#xff0c;用户需求明确最终用户的期望&#xff0c;而功能需求定义具体的系统功能和特性。这三个层次为项目管理和软件工程提…

基于改进莱维飞行和混沌映射的粒子群优化BP神经网络预测股票价格研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

[架构之路-223]:数据管理能力成熟度评估模型DCMM简介

目录 一、背景 二、评估依据 三、评估内容 四、主要适用对象 五、能力等级 六、不同层次的文件&#xff1a; 一、背景 信息技术与经济社会的交汇融合引发了数据爆发式增长。数据蕴含着重要的价值&#xff0c;已成为国家基础性战略资源&#xff0c;正日益对全球生产、流通…