当前位置: 首页 > news >正文

使用 Python 实现随机中点位移法生成逼真的裂隙面

使用 Python 实现随机中点位移法生成逼真的裂隙面

  • 一、随机中点位移法简介
    • 1. 什么是随机中点位移法?
    • 2. 应用领域
  • 二、 Python 代码实现
    • 1. 导入必要的库
    • 2. 函数定义:随机中点位移法核心逻辑
    • 3. 设置随机数种子
    • 4. 初始化二维裂隙面
    • 5. 初始化网格的四个顶点
    • 6. 初始化步长
    • 7. 开始迭代生成裂隙面
    • 8. 钻石步( Diamond Step )
    • 9. 方形步( Square Step )
    • 10. 更新步长和粗糙度
    • 11. 返回最终结果
    • 12. 调用函数并可视化结果
  • 三、完整代码
  • 四、结果展示与分析
  • 五、扩展与应用
    • 1. 三维裂隙面生成
    • 2. 工程领域应用
    • 3. 性能优化

裂隙面在地质学、岩石力学、计算机图形学等领域有着广泛的应用。它们的随机性和分形特性使得模拟真实裂隙面成为一项重要的研究课题。本文将通过 Python ,结合经典的 随机中点位移法( Random Midpoint Displacement , RMD ),逐步创建一个二维的随机裂隙面,并详细解析每一步代码的实现过程。

先看下效果图:
在这里插入图片描述


一、随机中点位移法简介

1. 什么是随机中点位移法?

随机中点位移法是一种简单且高效的分形生成算法。它的基本思想是从一个大尺度开始,通过不断细化网格,并在每次细化时为中间点添加随机扰动,从而生成具有大尺度结构和小尺度细节的表面。

这一方法的特点是:

  • 高效性:算法复杂度较低,适合生成大规模的表面。
  • 随机性:通过随机扰动,模拟自然界中裂隙、地形等不规则表面的特性。
  • 分形特性:生成的结果具有分形维数,能很好地模拟自然界的粗糙表面。

2. 应用领域

  • 地质学:生成裂隙面,用于研究地下水流动、岩石的强度和稳定性。
  • 计算机图形学:生成自然地貌(如山脉、地形)或粗糙材质。
  • 工程应用:模拟裂隙网络,分析裂隙对渗透率的影响。

二、 Python 代码实现

让我们直接进入代码部分,并通过逐行详解,帮助你全面掌握随机中点位移法的实现。


1. 导入必要的库

import numpy as np
import matplotlib.pyplot as plt
  • numpy :用于处理多维数组和数学计算。我们将借助它来创建二维数组并进行随机数生成。
  • matplotlib.pyplot :用于可视化生成的裂隙面。这是 Python 中非常强大的绘图库。

2. 函数定义:随机中点位移法核心逻辑

def midpoint_displacement_2d(size, roughness, seed=None):"""使用随机中点位移法生成二维粗糙裂隙面。参数:- size: 裂隙面的网格尺寸(必须是2的幂次方+1,例如65, 129, 257等)。- roughness: 粗糙度参数,控制表面的起伏程度。- seed: 随机数种子,用于生成可重复的结果。返回值:- surface: 生成的二维裂隙面。"""

函数说明

  • size :二维数组的大小,必须为 2^n + 1 (如 129 , 257 等)。这种结构使网格能够在每次迭代中被整齐地细分。
  • roughness :粗糙度参数,控制生成裂隙面的起伏程度。值越大,表面越粗糙;值越小,表面越平滑。
  • seed :随机数种子,用于确保生成的结果是可重复的。指定种子后,每次运行都会生成相同的裂隙面。

3. 设置随机数种子

    if seed is not None:np.random.seed(seed)

解释

  • 如果用户提供了 seed 值,那么我们使用 np.random.seed(seed) 设置随机数生成器的种子。
  • 这样可以确保生成的随机数序列是固定的,从而保证结果的可重复性。

4. 初始化二维裂隙面

    surface = np.zeros((size, size))
  • np.zeros((size, size)) :创建一个大小为 (size, size) 的二维数组,初始值全为 0
  • 这个数组将表示裂隙面的高度值,每一个元素对应网格的一个节点。

5. 初始化网格的四个顶点

    surface[0, 0] = np.random.uniform(-1, 1)surface[0, -1] = np.random.uniform(-1, 1)surface[-1, 0] = np.random.uniform(-1, 1)surface[-1, -1] = np.random.uniform(-1, 1)

解释

  • 随机为二维数组的四个角点赋值,值范围为 [-1, 1]
  • 这四个顶点值将作为整个裂隙面生成的初始条件。

6. 初始化步长

    step_size = size - 1

解释

  • 设置初始步长为 size - 1
  • 步长是指当前迭代中,用于分割网格的大小。在每次迭代中,步长会减半,从而逐步细化网格。

7. 开始迭代生成裂隙面

    while step_size > 1:half_step = step_size // 2

解释

  • 使用 while 循环,直到步长小于或等于 1
  • 在每次循环中,计算半步长 half_step = step_size // 2 ,用于在网格的中点和边界点之间插值。

8. 钻石步( Diamond Step )

        for x in range(0, size - 1, step_size):for y in range(0, size - 1, step_size):avg = (surface[x, y]+ surface[x + step_size, y]+ surface[x, y + step_size]+ surface[x + step_size, y + step_size]) / 4surface[x + half_step, y + half_step] = avg + np.random.uniform(-1, 1) * roughness

说明

  • 目标:为每个网格单元的中心点生成一个新值。
  • avg :计算当前网格四个顶点的平均值。
  • np.random.uniform(-1, 1) * roughness :添加一个随机扰动,其幅度由 roughness 控制。
  • 更新后的值存储在网格的中心点位置 surface[x + half_step, y + half_step]

9. 方形步( Square Step )

        for x in range(0, size - 1, half_step):for y in range((x + half_step) % step_size, size - 1, step_size):avg = 0count = 0if x - half_step >= 0:avg += surface[x - half_step, y]count += 1if x + half_step < size:avg += surface[x + half_step, y]count += 1if y - half_step >= 0:avg += surface[x, y - half_step]count += 1if y + half_step < size:avg += surface[x, y + half_step]count += 1surface[x, y] = avg / count + np.random.uniform(-1, 1) * roughness

说明

  • 目标:为网格的每条边界点生成一个新值。
  • 通过计算边界点相邻的点的平均值,并添加随机扰动,为边界点赋值。

10. 更新步长和粗糙度

        step_size //= 2roughness /= 2

说明

  • 每次迭代后,步长减半,逐步细化网格。
  • 同时,降低随机扰动幅度(粗糙度),使得细节更平滑。

11. 返回最终结果

    return surface

说明

  • 返回生成的裂隙面(二维数组)。

12. 调用函数并可视化结果

size = 129
roughness = 1.0
seed = 42
surface = midpoint_displacement_2d(size, roughness, seed)plt.figure(figsize=(10, 8))
plt.imshow(surface, cmap='terrain', origin='upper')
plt.colorbar(label="Height")
plt.title("Random Midpoint Displacement Surface")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

说明

  • 参数:
    - size=129 :网格大小为 129 × 129
    - roughness=1.0 :初始粗糙度。
    - seed=42 :随机种子,用于生成可复现的结果。
  • 使用 matplotlib 绘制结果:
    - imshow :展示二维裂隙面。
    - cmap='terrain' :用地形色彩映射模拟裂隙表面。

三、完整代码

import numpy as np
import matplotlib.pyplot as pltdef midpoint_displacement_2d(size, roughness, seed=None):"""使用随机中点位移法生成二维粗糙裂隙面。参数:- size: 裂隙面的网格尺寸(必须是2的幂次方+1,例如65, 129, 257等)。- roughness: 粗糙度参数,控制表面的起伏程度。- seed: 随机数种子,用于生成可重复的结果。返回值:- surface: 生成的二维裂隙面。"""if seed is not None:np.random.seed(seed)# 初始化一个二维数组,并将四个顶点随机赋值surface = np.zeros((size, size))surface[0, 0] = np.random.uniform(-1, 1)surface[0, -1] = np.random.uniform(-1, 1)surface[-1, 0] = np.random.uniform(-1, 1)surface[-1, -1] = np.random.uniform(-1, 1)step_size = size - 1  # 初始步长while step_size > 1:half_step = step_size // 2# 钻石步:计算中点值for x in range(0, size - 1, step_size):for y in range(0, size - 1, step_size):avg = (surface[x, y]+ surface[x + step_size, y]+ surface[x, y + step_size]+ surface[x + step_size, y + step_size]) / 4surface[x + half_step, y + half_step] = avg + np.random.uniform(-1, 1) * roughness# 方形步:计算边点值for x in range(0, size - 1, half_step):for y in range((x + half_step) % step_size, size - 1, step_size):avg = 0count = 0if x - half_step >= 0:avg += surface[x - half_step, y]count += 1if x + half_step < size:avg += surface[x + half_step, y]count += 1if y - half_step >= 0:avg += surface[x, y - half_step]count += 1if y + half_step < size:avg += surface[x, y + half_step]count += 1surface[x, y] = avg / count + np.random.uniform(-1, 1) * roughness# 缩小步长,并降低粗糙度比例step_size //= 2roughness /= 2return surface# 参数设置
size = 129  # 网格尺寸(2^n + 1,例如65, 129, 257)
roughness = 1.0  # 粗糙度系数
seed = 42  # 随机种子(可选)# 生成裂隙面
surface = midpoint_displacement_2d(size, roughness, seed)# 绘制裂隙面
plt.figure(figsize=(10, 8))
plt.imshow(surface, cmap='terrain', origin='upper')
plt.colorbar(label="Height")
plt.title("Random Midpoint Displacement Surface")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

四、结果展示与分析

运行上述代码后,你将看到一个二维裂隙面,具有随机的高低起伏,形似真实的自然裂隙。裂隙面的粗糙度参数和网格分辨率可以根据需要调整,以满足不同的应用场景。

在这里插入图片描述


五、扩展与应用

1. 三维裂隙面生成

将此方法扩展到三维数组,可以生成更加复杂的三维裂隙网络。

2. 工程领域应用

模拟裂隙对流体流动的影响,分析裂隙面在接触力学中的作用。

3. 性能优化

使用并行计算或 GPU 加速,可以快速生成高分辨率的裂隙面。

相关文章:

使用 Python 实现随机中点位移法生成逼真的裂隙面

使用 Python 实现随机中点位移法生成逼真的裂隙面 一、随机中点位移法简介 1. 什么是随机中点位移法&#xff1f;2. 应用领域 二、 Python 代码实现 1. 导入必要的库2. 函数定义&#xff1a;随机中点位移法核心逻辑3. 设置随机数种子4. 初始化二维裂隙面5. 初始化网格的四个顶点…...

GPT分区 使用parted标准分区划分,以及相邻分区扩容

parted 是一个功能强大的命令行工具&#xff0c;用于创建和管理磁盘分区表和分区。它支持多种分区表类型&#xff0c;如 MBR&#xff08;msdos&#xff09;、GPT&#xff08;GUID Partition Table&#xff09;等&#xff0c;并且可以处理大容量磁盘。parted 提供了一个交互式界…...

【Triton-ONNX】如何使用 ONNX 模型服务与 Triton 通信执行推理任务上-Triton快速开始

模型部署系列文章 前置-docker 理解:【 0 基础 Docker 极速入门】镜像、容器、常用命令总结前置-http/gRPC 的理解: 【HTTP和gRPC的区别】协议类型/传输效率 /性能等对比【保姆级教程附代码】Pytorch (.pth) 到 TensorRT (.plan) 模型转化全流程【保姆级教程附代码(二)】Pytor…...

问题记录:[FATAL] [1735822984.951119148]: Group ‘manipulator‘ was not found.

前言&#xff1a;最近仿照UR5手眼标定的例程&#xff0c;在新的机械臂上进行手眼标定&#xff0c;还准备用easy_hand手眼标定包。将机器人功能包导入到工作空间后进行编译运行&#xff0c;启动launch文件&#xff1a; roslaunch easy_handeye eye_to_hand_CR7_calibration.lau…...

SpringCloudAlibaba实战入门之Sentinel服务降级和服务熔断(十五)

一、Sentinel概述 1、Sentinel是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 一句话概括:sentinel即Hystrix的替代品,官网: https://sentinelguard.io/zh…...

Scrum中敏捷项目经理(Scrum Master)扮演什么角色?

敏捷开发模式已经逐渐被主流的软件研发团队所接受&#xff0c;其中Scrum是最具代表性的敏捷方法之一。Scrum框架中有三个核心角色&#xff1a;Product Owner&#xff08;PO&#xff09;、Scrum Master&#xff08;SM&#xff09;和Development Team&#xff08;DT&#xff09;。…...

SpringMVC(四)响应

目录 数据处理及跳转 1. 结果跳转方式 ①.ModelAndView ②.ServletAPI 1、通过HttpServletResponse进行输出 2、通过HttpServletResponse实现请求转发 3、通过HttpServletResponse实现重定向 ③.SpringMVC 1.直接输出 2.请求转发 3.重定向 2.ResponseBody响应json数…...

操作系统之文件系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

Android SPRD 工模测试修改

设备有两颗led灯&#xff0c;工模测试需全亮 vendor/sprd/proprietories-source/factorytest/testitem/led.cpp -13,6 13,10 typedef enum{#define LED_BLUE "/sys/class/leds/blue/brightness"#define LED_RED …...

C语言与操作系统

学习C语言有助于理解计算机底层原理和操作系统的工作方式 C语言自诞生以来&#xff0c;就与计算机底层操作紧密相连。作为一门高级编程语言&#xff0c;C语言提供了对硬件直接控制的能力&#xff0c;同时保留了结构化编程的特性&#xff0c;这使得它成为编写操作系统、编译器和…...

信息安全管理:网络安全

1 网络的定义和特征 1.1 网络的定义 &#xff08;根本懒得说。。你们自己wiki吧&#xff09; 网络的用处 What is a network…Devices in a network…LAN, WAN and InternetworksWhat do networks do for you… Sharing resourcesUse/share applications 1.2 网络的特征 Ch…...

python-leetcode-轮转数组

189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""n len(nums)k % n # 如果 k 大于 n&#xff0c;…...

Windows上安装Go并配置环境变量(图文步骤)

前言 1. 本文主要讲解的是在windows上安装Go语言的环境和配置环境变量&#xff1b; Go语言版本&#xff1a;1.23.2 Windows版本&#xff1a;win11&#xff08;win10通用&#xff09; 下载Go环境 下载go环境&#xff1a;Go下载官网链接(https://golang.google.cn/dl/) 等待…...

【JS】期约的Promise.all()和 Promise.race()区别

概述 Promise.all() 和 Promise.race() 都是 JavaScript 中处理多个异步操作的 Promise 方法&#xff0c;但它们的行为和返回结果有所不同。 Promise.all()和Promise.race() 1. Promise.all() Promise.all() 接受一个由多个 Promise 实例组成的可迭代对象&#xff08;例如数…...

【Linux】信号处理

一、Linux系统信号 1、常见的系统信号 常见的Linux系统信号 信号值描述1SIGHUP挂起&#xff08;hang up&#xff09;进程2SIGINT中断进&#xff08;interrupt&#xff09;程3SIGQUIT停止&#xff08;stop&#xff09;进程9SIGKILL无条件终止&#xff08;terminate&#xff09;…...

Diffusion Transformer(DiT)——将扩散过程中的U-Net换成ViT:近频繁用于视频生成与机器人动作预测(含清华PAD详解)

前言 本文最开始属于此文《视频生成Sora的全面解析&#xff1a;从AI绘画、ViT到ViViT、TECO、DiT、VDT、NaViT等》 但考虑到DiT除了广泛应用于视频生成领域中&#xff0c;在机器人动作预测也被运用的越来越多&#xff0c;加之DiT确实是一个比较大的创新&#xff0c;影响力大&…...

144:vue+leaflet 使用canvas绘制不同方向、不同颜色的模仿船只三角形

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。 查看本专栏目录 - 本文是第 144个示例 文章目录…...

c# 快捷键模块

文章目录 命名空间和类类成员静态成员 静态方法GenerateHotkeyIdWndProcGetWindowHandleAndSourceRegisterUnregister 静态方法&#xff08;外部调用&#xff09;RegisterHotKey 和 UnRegisterHotKey 委托HotKeyCallbackHandler 枚举HotkeyModifiers 应用示例 using System; us…...

npm install 安装选项 -d -s -g

在使用 npm install 时&#xff0c;-d、-g 和 -s 是不同的选项&#xff0c;它们分别代表不同的安装模式或行为。以下是它们的详细解释&#xff1a; 1. -d&#xff1a;--save-dev 含义&#xff1a;将包安装为开发依赖&#xff08;devDependencies&#xff09;。使用场景&#…...

【每日学点鸿蒙知识】worker线程数量、判断用户是否进行权限决定、图片上传类型错误、request锁释放时机、H5问题

1、HarmonyOS 怎么判断worker线程创建了几个&#xff1f; 因为有数量限制&#xff0c;所以想查询当前的worker数量&#xff0c;避免创建失败&#xff0c;还有&#xff0c;是同时运行的worker数量有限制&#xff0c;还是同一个应用能创建的worker线程有限制 1、查询当前的work…...

0xc0000020错误代码怎么处理,Windows11、10坏图像错误0xc0000020的修复办法

“0xc0000020”是一种 Windows 应用程序错误代码&#xff0c;通常表明某些文件缺失或损坏。这可能是由于系统文件损坏、应用程序安装或卸载问题、恶意软件感染、有问题的 Windows 更新等原因导致的。 比如&#xff0c;当运行软件时&#xff0c;可能会出现类似“C:\xx\xxx.dll …...

智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之7 附件(文档)

为AI聊天工具添加一个知识系统 Part1 人性化&去中心化 前情提要 这一次我们暂时抛开前面对“智能工厂的软件设计”的考虑--其软件智能 产品就是 应用程序。直接将这些思维方式和方法论 运用在其具体应用场景中。本文是其中的一个应用场景。 今天用了 一个新的AI助手工具…...

智能化人才招聘系统是怎样的?

随着企业规模的扩大和业务范围的拓展&#xff0c;人才招聘成为了企业发展的关键环节。然而&#xff0c;市面上的人才招聘系统琳琅满目&#xff0c;质量参差不齐&#xff0c;许多企业发现&#xff0c;并非所有系统都能满足他们的需求&#xff0c;特别是智能化的需求。今天&#…...

memcached的基本使用

memcached是一种基于键值对的内存数据库&#xff0c;一般应用于缓存数据&#xff0c;提高数据访问速度&#xff0c;减轻后端数据库压力。 安装 这里以Ubuntu为例&#xff0c;其他系统安装方法请看官方文档。 sudo apt-get update sudo apt-get install memcached启动 memca…...

【Unity3d】C#浮点数丢失精度问题

一、float、double浮点数丢失精度问题 Unity3D研究院之被坑了的浮点数的精度&#xff08;一百零三&#xff09; | 雨松MOMO程序研究院 https://segmentfault.com/a/1190000041768195?sortnewest 浮点数丢失精度问题是由于大部分浮点数在IEEE754规范下就是无法准确以二进制…...

机器学习中回归预测模型中常用四个评价指标MBE、MAE、RMSE、R2解释

在机器学习中&#xff0c;评估模型性能时常用的四个指标包括平均绝对误差&#xff08;Mean Absolute Error, MAE&#xff09;、均方误差&#xff08;Mean Squared Error, MSE&#xff09;、均方根误差&#xff08;Root Mean Squared Error, RMSE&#xff09;和决定系数&#xf…...

2412d,d语言中写汇编

原文 嗨,我只是想共享该要点,它展示了如何在ASM中用D编写你好. D中写汇编非常方便!这是我写的: extern(C) int main() {auto hip "hello D\n".ptr;size_t len 8;//write(1,消息,长度)asm {mov RDX, len;//缓冲长度mov RSI, hip;//消息缓冲mov EDI, 1;//Stdout文描…...

急救复试英语口语第一招:confidence

自信与内容是成功的关键 复试是每个考生面临的一道重要关卡&#xff0c;尤其是对于需要进行英语口语测试的同学而言&#xff0c;如何在有限的时间内展示自己的英语能力和综合素质&#xff0c;成为了一个关键问题。今天我们将从两个方面为大家分享应对复试英语口语的技巧&#…...

深入理解 pytest Fixture 方法及其应用

在 Python 自动化测试领域&#xff0c;pytest 是当之无愧的王者。提到 pytest&#xff0c;不得不说它的一大核心功能——Fixture。Fixture 的强大&#xff0c;让复杂的测试流程变得井井有条&#xff0c;让测试代码更加灵活和可复用。 那么&#xff0c;pytest 的 Fixture 究竟是…...

python实现自动登录12306抢票 -- selenium

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码&#xff0c;但是都不是最新的&#xff0c;我也是从网上找别人的帖子&#xff0c;看B站视频&…...

@RestControllerAdvice注解

RestControllerAdvice 是 Spring 4 引入的一个组合注解&#xff0c;它结合了 ControllerAdvice 和 ResponseBody&#xff0c;专门用于处理 RestController 类型的控制器中的全局异常、全局数据绑定和全局模型属性等问题。在 Spring Boot 中&#xff0c;RestControllerAdvice 通…...

04-微服务02

我们将黑马商城拆分为5个微服务&#xff1a; 用户服务 商品服务 购物车服务 交易服务 支付服务 由于每个微服务都有不同的地址或端口&#xff0c;相信大家在与前端联调的时候发现了一些问题&#xff1a; 请求不同数据时要访问不同的入口&#xff0c;需要维护多个入口地址…...

离线语音识别+青云客语音机器人(幼儿园级别教程)

1、使用步骤 确保已安装以下库&#xff1a; pip install vosk sounddevice requests pyttsx3 2、下载 Vosk 模型&#xff1a; 下载适合的中文模型&#xff0c;如 vosk-model-small-cn-0.22。 下载地址&#xff1a; https://alphacephei.com/vosk/models 将模型解压后放置在…...

Llama 3 后训练(三)

目录 4. 后训练 4.1 建模 图表解读 4.1.1 聊天对话格式 4.1.2 奖励建模 4.1.3 监督微调&#xff08;Supervised Finetuning&#xff09; 4.1.4 直接偏好优化&#xff08;Direct Preference Optimization&#xff09; 4.1.5 模型平均&#xff08;Model Averaging&#x…...

Cobbler+kickstart实现批量全自动装机

cobbler简介   cobbler 是一个系统启动服务boot server,可以通过pxe得方式用来快速安装&#xff0c;重装系统&#xff0c;支持安装不同linux发行版和windows。这个工具是用python开发&#xff0c;方便小巧&#xff0c;15k行代码&#xff0c;使用简单得命令完成pxe网络安装环境…...

【Pandas】pandas Series at

Pandas2.2 Series Indexing, iteration 方法描述Series.get()用于根据键&#xff08;索引标签&#xff09;从 Series 中获取值Series.at用于快速访问标量值&#xff08;单个元素&#xff09;的访问器Series.iat用于快速访问标量值&#xff08;单个元素&#xff09;的访问器 …...

optimum-habana 安装 optimum安装

目录 git地址: 运行必须参数设置 git地址: https://github.com/huggingface/optimum-habana git clone 以后 cd optimum-habana pip install . 运行必须参数设置 hpu改为 cuda, output = subprocess.run("pip list | grep habana-torch-plugin",shell=True…...

AutoDL服务器深度学习使用过程

前期准备 Xshell,Xftp,Pycharm专业版 step 1:实例开机&#xff08;无卡or有卡&#xff09;&#xff0c;Xshell连接 新建xshell会话&#xff1a; 登录指令格式为&#xff1a; ssh -p 38076 rootregion-1.autodl.com 在ssh -p 38076 rootregion-1.autodl.com命令中&#xff0…...

微信小程序:定义页面标题,动态设置页面标题,json

1、常规设置页面标题 正常微信小程序中&#xff0c;设置页面标题再json页面中进行设置&#xff0c;例如 {"usingComponents": {},"navigationBarTitleText": "标题","navigationBarBackgroundColor": "#78b7f7","navi…...

LeetCode算法题——有序数组的平方

题目描述 给你一个按非递减顺序排序的整数数组nums&#xff0c;返回每个数字的平方组成的新数组&#xff0c;要求也按非递减顺序排序。 题解 解法一&#xff1a;暴力解法 思路&#xff1a; 该题目可通过暴力解法解决&#xff0c;即利用for循环遍历数组&#xff0c;对数组每…...

【MyBatis-Plus 核心接口】BaseMapper 和 IService 深度解析

在使用 MyBatis-Plus&#xff08;简称 MP&#xff09;进行开发时&#xff0c;BaseMapper 和 IService 接口是我们老朋友了&#xff0c;不知道你会不会跟我一样好奇&#xff1a;为什么实现了 BaseMapper 或 IService 接口&#xff0c;我们就能轻松操作数据库&#xff1f;这背后有…...

SQL 建表语句详解

SQL 建表语句详解 在 SQL 中&#xff0c;创建表&#xff08;Table&#xff09;是数据库设计的基础。表是存储数据的基本单位&#xff0c;每个表由行和列组成。创建表的过程涉及到定义表的结构&#xff0c;包括列名、数据类型、约束等。本文将详细介绍 SQL 中的建表语句&#x…...

数据可视化-16. 日历图

目录 1. 日历图的概念 2. 日历图的适用场景 2.1 事件或活动的频率分析 2.2 数据的时间周期性分析 2.3 异常值检测 2.4 绩效监控 3. 日历图的缺陷 3.1 粒度受限于天数 3.2 数据密度过高时候难以解读 3.3 难以比较多个数据集 3.4 周期性较长的数据不易展示 4. 日历图…...

Docker 安装与常用命令

Docker 安装与常用命令 安装 Docker 如果您的系统尚未安装 Docker&#xff0c;可以使用以下命令安装 docker.io&#xff1a; 1. 安装命令&#xff1a; sudo apt install -y docker.io2、安装完成后&#xff0c;使用以下命令检查 Docker 是否成功安装&#xff1a; docker -…...

logback之自定义pattern使用的转换器

目录 &#xff08;1&#xff09;场景介绍 &#xff08;2&#xff09;定义转换器BizCallerConverter &#xff08;3&#xff09;logback配置conversionRule &#xff08;4&#xff09;测试效果 前文《logback之pattern详解以及源码分析》已经介绍了pattern&#xff0c;以及…...

Spring Cloud Alibaba2022之Sentinel总结

Spring Cloud Alibaba2022之Sentinel学习 Sentinel介绍 Sentinel是一个面向云原生微服务的流量控制、熔断降级组件。 Sentinel 分为两个部分&#xff1a; 核心库&#xff1a;&#xff08;Java 客户端&#xff09;不依赖任何框架/库&#xff0c;能够运行于所有 Java运行时环 …...

期末速成C++【知识点汇总完】

目录 第一章 C特点 命名空间-命名冲突 引用 new和delete 堆和栈 缺省参数 重载/隐藏/覆盖 初始化方式 第二章 面向对象的三大特征 成员变量 成员函数&#xff1a;构造函数和析构函数 访问权限和继承方式 空类 常const 静态static 友元friend 第三章 重…...

从 ELK Stack 到简单 — Elastic Cloud Serverless 上的 Elastic 可观察性

作者&#xff1a;来自 Elastic Bahubali Shetti, Chris DiStasio 宣布 Elastic Cloud Serverless 上的 Elastic Observability 正式发布 — 一款完全托管的可观察性解决方案。 随着组织规模的扩大&#xff0c;一个能够处理分布式云环境的复杂性并提供实时洞察的可观察性解决方…...

手机h5加桌面图标

手机h5应用1&#xff0c;网址浏览器添加到桌面&#xff0c;修改图标 关键代码 <!-- 手机h5加桌面图标 --> <!-- 安卓平台 chrome --> <link relapple-touch-icon-precomposed href<% BASE_URL %>logonew.png> <meta name"mobile-web-app-capab…...

Vue3,什么情况下数据会丢失响应式呢?

一、使用 reactive 定义的数据重新赋值 <template><h1>{{ foo.a }}</h1><h1>{{ bar.a }}</h1><button click"handleClick">点我</button> </template> <script setup> import { ref, reactive } from vuele…...