计算物理专题----随机游走实战
- 计算物理专题----随机游走实战
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就足够了,但是从数学的角度上看,这很难得到完整的证明,因为绝大多数的小数位是内置函数和内置定量的精度所控制的) |
相关文章:

计算物理专题----随机游走实战
计算物理专题----随机游走实战 Problem 1 Implement the 3D random walk 拟合线 自旋的 拟合函数(没有数学意义) 参数:0.627,3.336,0.603,-3.234 自由程满足在一定范围内的均匀分布以标准自由程为单位长度,…...

《思维与智慧》简介及投稿邮箱
《思维与智慧》自1982年创刊,经国家新闻出版署批准,由河北省教育厅主管,河北行知文化传媒有限责任公司主办的益智励 志类大众文化期刊。 《思维与智慧》办刊宗旨是:“开发思维,启迪智慧,滋润心灵”&#x…...
flask+python快速搭建
app.py """APP 入口模块""" from traceback import format_excfrom api_limiter import limiter from flask import Flask, jsonify import loggingfrom controller import api_sql_blueapp Flask(__name__) limiter.init_app(app) app.regist…...

基于微信小程序的美术馆预约平台设计与实现(源码+lw+部署文档+讲解等)
前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…...

ruoyi-vue-pro yudao 项目商城 mall 模块启用及相关SQL脚本
目前ruoyi-vue-pro 项目虽然开源,但是商城 mall 模块被屏蔽了,查看文档却要收费 199元(知识星球),价格有点太高了吧。 分享下如何启用 mall 模块,顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xm…...

default 和 delete 与默认构造函数 的使用
前言 使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点: 正文 编译器生成的默认构造函数: 如果类A没有定义任何构造函数,那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个…...

【开发篇】一、热部署
文章目录 1、手工启动热部署2、自动启动热部署3、热部署范围配置4、关闭热部署功能 1、手工启动热部署 日常开发与调试,改几行代码想看效果就得手动点重启,很繁琐,接下来考虑启动热部署。首先引入springboot开发者工具: <dep…...
点云从入门到精通技术详解100篇-定子装配过程中基于深度学习的易变形材料的点云分割(下)
目录 4.3.2 校正网络 4.3.3 浅层特征提取网络 4.3.4 空间边界 Transformer 深层特征提取网络 4.3.5 损失函数...

谷歌浏览器关闭自动更新功能
背景:自动化测试需要下载webdriver驱动,然而浏览器自动更新会导致原来的驱动版本与现有浏览器版本不匹配,所以要禁用掉浏览器自动更新功能。 1.右键-我的电脑-打开管理; 2.选择任务计划程序-任务计划程序库-找到两个chrome自动更新…...
电商业务--技术负责人 250K*15
职位描述 研发团队管理 系统搭建 技术管理 系统架构 岗位职责 负责/参与到中大型负责系统的整体架构和设计; 根据业务特点和行业最佳实践,设计符合多个市场物流业务需求,且具备可扩展能力的系统架构和业务架构承担团队稳定性建设工作&#…...
MySQL只同步单个表或多个表,非全部同步!
replicate-do-table 是 MySQL 复制配置中的一个选项,它允许您指定要在从服务器上复制的表。如果您想要只复制主服务器上特定的表到从服务器,您可以使用这个选项。 以下是如何操作 replicate-do-table 的步骤: 停止从服务器: 在从服务器上执行…...
【论文基本功】【LaTeX】个人常用易忘LaTeX命令
【论文基本功】【LaTeX】个人常用易忘LaTeX命令 1. 基本符号2. 引用3. 字体及符号大小4. 其他参考 1. 基本符号 符号LaTeX命令备注 ∣ ⋅ ∣ | \cdot | ∣⋅∣| \cdot |绝对值 ∣ ∣ ⋅ ∣ ∣ || \cdot || ∣∣⋅∣∣\| \cdot \|范数 ⌈ ⋅ ⌉ \lceil \cdot \rceil ⌈⋅⌉\lce…...
JVM参数调优——G1收集器
开启 G1 Collector G1收集器的出现除了提供可控的低延迟GC,解决历史收集器的一些弊病,同时还尽力简化调优参数 对于大多数应用,开启收集器,再配置一下Xms和Xmx就足够了(不建议配置Xmn) -XX:UseG1GC核心参…...
Linux cp命令使用指南:详细教程及实际应用场景解析
文章目录 Linux中的cp命令使用指南1. 简介1.1 Linux操作系统简介1.2 文件系统和目录结构1.3 cp命令概述 2. cp命令基本用法2.1 复制文件2.2 复制目录2.3 复制多个文件或目录2.4 递归复制2.5 强制覆盖已存在文件2.6 保留文件权限和属性 3. 高级用法3.1 保留符号链接3.2 仅复制更…...

树结构数据在table中回显 treeselect disabled
<el-table-column label"产业认定" align"center" prop"industryIdentification"><template slot-scope"scope"><treeselectv-if"scope.row.industryIdentification"v-model"scope.row.industryIdentif…...

BOA服务器移植
BOA服务器移植 1、源码下载 http://www.boa.org/ News! (last updated 23 February 2005) Latest Released Version (0.94.13) here (signature here) --- 下载地址1.1 boa简介: 其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器ÿ…...

洛谷刷题入门篇:顺序结构
链接如下:https://www.luogu.com.cn/training/100#problems 一、Hello,World! 题目链接:https://www.luogu.com.cn/problem/B2002 题目描述 编写一个能够输出 Hello,World! 的程序。 提示: 使用英文标点符号;Hello,World! 逗…...

LVS+Haproxy
LVSHaproxy 一、Haproxy简介1.1、Haproxy应用分析1.2、Haproxy的特性1.3、常见负载均衡策略1.4、LVS、Haproxy、Nginx区别1.5、 Haproxy的优点1.6、常见的Web集群调度器 二、Haproxy部署实例四、日志定义优化 一、Haproxy简介 Haproxy 是一个使用C语言编写的自由及开放源代码软…...

Linux知识
文章目录 一、Apt1、查看操作系统信息2、换源3、比较4、用法5、ubuntu获取源码 二、pkg-config三、调试glibc 一、Apt 1、查看操作系统信息 使用以下命令查看本机的操作系统和位数信息: uname -m && cat /etc/*release输出: x86_64 DISTRIB_I…...

Java基础(三)
前言:前面主要涉及到java的基本语法,接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。 目录 数据结构 泛型 集合 分类 Collection的分类 collection常用方法 collection遍历方式 迭代器 for循环 Lambda表达式 Lis…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...