使用 QuTrunk+Amazon Deep Learning AMI(TensorFlow2)构建量子神经网络
量子神经网络是基于量子力学原理的计算神经网络模型。1995年,Subhash Kak 和 Ron Chrisley 独立发表了关于量子神经计算的第一个想法,他们致力于量子思维理论,认为量子效应在认知功能中起作用。然而,量子神经网络的典型研究涉及将经典的人工神经网络模型(在机器学习中广泛用于模式识别的重要任务)与量子信息的优势相结合,以发展更高效的算法。这些研究的一个重要动机是经典神经网络难以训练,特别是在大数据应用中更是如此。希望可以利用量子计算的特性,如量子并行性或干涉和纠缠效应作为资源。
基于QuTrunk+AI框架构建量子神经网络的解决方案,与 Mindspore 及 paddle 结合实践已经发布过相关实战的文章。而 TensorFlow 作为一个非常流行和重要的 AI 深度学习框架,QuTrunk 也同样支持与之结合一起使用。本文主要介绍在亚马逊云科技实验环境中使用 QuTrunk 结合 TensorFlow 来完成量子神经网络构建的实验。实验之前,我们首先介绍下本示例中使用到的两个技术资源:Amazon DLAMI 和 TensorFlow。
1、Amazon DLAMI 及 TensorFlow 简介
1.1 Amazon DLAMI
亚马逊云科技提供的 Amazon Deep Learning AMI(缩写为 DLAMI)可以帮助用户快速的部署部署好深度学习实验环境和快速上手实验。它具有如下特点:
预装框架:DLAMI 目前主要有2个主要的规格:DL Base AMI 和 DLAMI with conda和。DL Base AMI 未安装框架,仅安装了 NVIDIA CUDA 和其他依赖项。DLAMI with conda 则全部都包含,不仅完全配备了 TensorFlow、PyTorch、Apache MXNet 机器学习框架,也预先配置了 NVIDIA CUDA 和 NVIDIA cuDNN。它使用 Conda 环境来隔离每个框架,用户可以在它们之间随意切换,而不用担心它们的依赖关系冲突;预装 GPU 软件:即使使用仅 CPU 的实例,DLAMI 也将具有 NVIDIA CUDA 和 NVIDIA cuDNN。无论实例类型如何,安装的软件都相同。
模型服务和可视化:使用 Conda 的深度学习 AMI 预装了两种模型服务器,一种用于 MXNet,另一种用于 TensorFlow,以及 TensorBoard,用于模型可视化。
1.2 TensorFlow2
TensorFlow 是一个用于机器学习和人工智能的免费开源软件库。它可以用于一系列任务,但特别关注深度神经网络的训练和推理。 TensorFlow 由谷歌大脑团队开发,用于谷歌内部研究和生产。初始版本于2015年根据 Apache License 2.0 发布。Google 于2019年9月发布了 TensorFlow 的更新版本,名为 TensorFlow 2.0。TensorFlow 可用于多种编程语言,包括 Python、JavaScript、C++ 和 Java。 这种灵活性适用于许多不同行业的一系列应用。
TensorFlow 2.0 引入了许多变化,最重要的是 TensorFlow eager,它将自动微分方案从静态计算图改变为最初由 Chainer 和后来的 PyTorch 流行的“按运行定义”方案。其他主要变化包括删除旧库、不同版本 TensorFlow 上的训练模型之间的交叉兼容性以及 GPU 性能的显著改进。
2、实验环境搭建
2.1 启动 Amazon Deep Learning EC2 实例
2.1.1、打开 EC2 Dashborad
登录亚马逊云科技的管理控制台,点击右上角 Region 下拉菜单切换到需要创建的资源的 Region,本示例使用亚太新加坡站点的资源。然后从 Services 选择 EC2,打开 EC2 Dashboard。
2.1.2、创建 EC2 访问密钥对
依次点击服务->计算->EC2 打开 EC2 的主页面。首先创建好秘钥对便于后面登录到 EC2,依次点击左侧导航栏的网络与安全->密钥对->创建密钥对。
完成创建后自动下载秘钥,保存好秘钥文件备用。
2.1.3、AMI 选择
返回到 EC2 主页,选择启动实例,打开实例配置页面,先设置实例名称设置为 QNNDemo_Tensor,然后选择镜像版本,搜索框输入 Deep Learning 进行搜索,打开镜像搜索结果页面,显示如下:
快速启动 AMI 中有8个搜索结果,本示例使用的是 TensorFlow2,选择搜索结果中:Deep Learning AMI GPU TensorFlow 2.11.0 (Ubuntu 20.04) 20221220 这个镜像。
2.1.4、实例类型确定
选定镜像后再确定需要创建的实例类型。镜像的实例类型可以在实例下面的实例类型中查询,例如查询 GPU 是实例类型,根据条件过滤,可以看到有如下 gpu 实例类型:
亚马逊云科技提供了大量的实例类型可供用户选择,用户可以从经济和需求角度出发,选择合适的镜像来创建实例。对于深度学习,亚马逊云科技推荐是使用 GPU 实例 P3,P4,G3,G4,G5和G5g。各 GPU 实例类型的配置如下:
P3具有 8 NVIDIA Tesla V100 GPUs
P4具有8 NVIDIA Tesla A100 GPUs
G3具有4 NVIDIA Tesla M60 GPUs
G4具有4 NVIDIA T4 GPUs
G5具有o 8 NVIDIA A10G GPU
G5g则有基于Arm的 Amazon Graviton2 processors。
如果经济上受限或者对于性能要求不是非常高,亚马逊云科技也提供了相对经济的深度学习 CPU 实例和推理实例。深度学习推荐的 CPU 实例有三种:C5(不是所以的region都提供)、C4、C3等实例类型。
C5 实例最多有72个 Intel vCPU。C5 实例擅长科学建模、批处理、分布式分析、高性能计算(HPC)以及机器和深度学习推理。
C4 实例最多有36个 Intel vCPU。
亚马逊云科技推理实例旨在为深度学习模型推理工作负载提供高性能和高成本效率。具体来说,Inf1实例类型使用 Amazon Infentia 芯片和 Amazon Neuron SDK,后者与 TensorFlow、PyTorch 和 MXNet 等流行的机器学习框架集成。客户可以使用 Inf1 实例以最低的云成本运行大规模机器学习推理应用程序,如搜索、推荐引擎、计算机视觉、语音识别、自然语言处理、个性化和欺诈检测。Amazon EC2 Inf1 实例具有多达16个 Amazon Infentia 芯片和 100 Gbps 的网络吞吐量。
本示例只是用于简单深度学习实验,从节省成本考虑,选用的实例类型是 CPU 类型,选择的是普通是 t2.medium。用户也可以根据需要选择其他带 GPU 的实例。
2.1.5、创建和启动实例
实例类型确定后然后选择密钥对、网络设置及存储。最后点击启动示例提交创建。其他配置如下:
提交后示例创建中,待状态转变为正在运行即可开始使用。
3、量子神经网络构建
使用量子+深度学习构建量子神经网络基本流程差不多一一致,主要流程如下:
为了便于学习和理解,我们本示例程序同样采用单量子比特来构建一个简单的神经网络,构建的神经模型架构如下:
本示例模型主要由3个部分组成:
输入电路/数据点电路:前面3个门,分别为:
模型电路:后面3个门,对应分别为:
期望值电路:对线路执行 PauliZ 算符
3.1、环境准备
3.1.1、登录 EC2 实例
EC2 页面选中刚才创建的这个示例,点击右键选择连接,选择 ssh 客户端,显示如下:
根据秘钥文件保存的目录,使用如下命令即可访问
ssh -i "qutrunk-asia.pem" ubuntu@18.141.145.32
3.1.2、QuTrunk 安装
执行如下命令安装 QuTrunk 最新版本到 EC2 环境上:
ubuntu@ip-192-168-150-172:~$ pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
ubuntu@ip-192-168-150-172:~$ pip3 install qutrunk -i https://pypi.tuna.tsinghua.edu.cn/simple
QuTrunk 安装完成后,在 python3 命令行交互模式下,测试是否安装成功:
ubuntu@ip-192-168-150-172:~$ python3
Python 3.10.7 (main, Dec 20 2022, 07:32:05) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.>>> import qutrunk
>>> qutrunk.run_check()
============QuSL instruction:===========
qreg q[2]
creg c[2]
H * q[0]
MCX(1) * (q[0], q[1])
Measure * q[0]
Measure * q[1]
===============Draw circuit=============┌───┐ ┌─┐
q[0]: ┤ H ├──■───┤M├───└───┘┌─┴──┐└╥┘┌─┐
q[1]: ─────┤ CX ├─╫─┤M├└────┘ ║ └╥┘c: 2/════════════╩══╩═0 1
==========circuit running result=========
[{"0b00": 57}, {"0b11": 43}]
===========circuit running info==========
{"backend": "BackendLocal", "task_id": "7478c36b8ec941dbaed9b14f64a854a3", "status": "success", "arguments": {"shots": 100}}
qutrunk v0.2.0 is installed successfully! You can use QuTrunk now.
3.1.3、Jupyter Notebook Server 设置
为方便测试,本实验在 JupyterNotebook 环境下进行验证,DLAMI 环境上已经安装 Jupyter Notebook,只需进行简单的配置和启动即可。
1、设置 Jupyter server
首先设置首选密码:
ubuntu@ip-192-168-150-172:~$ jupyter notebook password
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/ubuntu/.jupyter/jupyter_notebook_config.json
2、启动 upyter notebook server
我们可以通过如下命令开启一个支持远程访问的 jupyter notebook:
$ jupyter notebook --ip=0.0.0.0
然后我们就可以在本地 PC 上访问了,打开浏览器,输入 EC2 的公网 IP:8888 即可访问,打开登录界面:
输入刚设置的密码登录到环境,点击新建按钮,然后选择 Python3
打开实验页面就可以开始基于 QuTrunk 的量子计算与深度学习框架结合的程序的开发了
3.2、程序实现
3.2.1 环境设置
安装完成后,设置程序使用的环境:
import randomimport numpy as np
import tensorflow as tf
from matplotlib import pyplot as pltfrom qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import Rx, Ry, Rz, PauliZ
3.2.2、定义量子线路相关函数
根据前面模型设计,主要包含3个神经网络组成部分的量子线路函数,还有一个量子线路合并函数
数据点电路函数如下:
def datapoint_circuit(rotations):beta0, beta1, beta2 = [float(f) for f in rotations]circuit = QCircuit()qreg = circuit.allocate(1)Rx(beta0) * qreg[0]Ry(beta1) * qreg[0]Rz(beta2) * qreg[0]return circuit
模型电路函数定义:
def model_circuit():circuit = QCircuit()q = circuit.allocate(1)angles = ["theta-1", "theta-2", "theta-3"]params = circuit.create_parameters(angles)Rz(params[0]) * q[0]Ry(params[1]) * q[0]Rx(params[2]) * q[0]return circuit
期望值函数定义:
def expectation():circuit = QCircuit()qreg = circuit.allocate(1)return PauliZ(qreg[0])
最后是电路组合函数定义:
def join_circuit(datapoint_cir, model_cir, inputs):params = {"theta-" + str(i): inputs[i] for i in range(len(inputs))}model_cir = model_cir.bind_parameters(params)datapoint_cir.append_circuit(model_cir)return datapoint_cir
3.2.3、定义梯度计算类
采用梯度下降的算法训练量子神经网络,为了方便调用,本示例将梯度计算定义为一个类
class CustomGradientTape:def __init__(self, inputs, exp_op, shift=np.pi / 2):self.inputs = inputsself.exp_op = exp_opself.shift = shiftdef gradient(self, loss, var_list):params = [var.numpy() for var in var_list]gradients = []for i in range(len(params)):shift_right = np.copy(params)shift_right[i] += self.shiftshift_left = np.copy(params)shift_left[i] -= self.shiftcircuit = join_circuit(datapoint_circuit(self.inputs), model_circuit(), shift_right)expectation_right = -1 * circuit.expval_pauli(self.exp_op)circuit = join_circuit(datapoint_circuit(self.inputs), model_circuit(), shift_left)expectation_left = -1 * circuit.expval_pauli(self.exp_op)gradient = expectation_right - expectation_leftgradients.append(tf.convert_to_tensor(gradient, dtype=tf.float32))return gradients
3.2.4、自定义层类
自定义层类包含了损失函数的定义,返回为迭代训练后的损失值
class ControlledPQC(tf.keras.layers.Layer):def __init__(self, optimizer, exp_op, var_list, grad):super(ControlledPQC, self).__init__()self.optimizer = optimizerself.exp_op = exp_opself.var_list = var_listself.grad = graddef call(self, inputs):params_list = [var.numpy() for var in self.var_list]circuit = join_circuit(datapoint_circuit(inputs), model_circuit(), params_list)loss = -1 * circuit.expval_pauli(self.exp_op)self.optimizer.minimize(loss, self.var_list, self.grad)return loss
3.2.5、模型设置及训练
首先根设置预先定义的参数,然后通过 TensorFlow 的 Adam 优化器优化上面的量子神经网络,,通过调整迭代次数 ITR 和学习率 LR 重新计算以使得这两个值达到非常接近。初始化设置如下:
ITR = 200
LR = 0.02
rand = random.Random()
random_rotations = tf.convert_to_tensor(np.random.uniform(0, 2 * np.pi, 3))
op = expectation()opt = tf.keras.optimizers.Adam(learning_rate=LR)
迭代循环计算和打印损失值。
control_params = [tf.Variable(rand.uniform(0, 2 * np.pi)) for _ in range(3)]
model = ControlledPQC(opt, op, control_params, CustomGradientTape(random_rotations, op))loss_list = []
for it in range(ITR):ls = model(random_rotations)loss_list.append(ls)if it % 10 == 0:print(f"{it}: {ls:.4f}")
运行后输出的结果如下:
0: -0.2399
10: -0.6203
20: -0.8689
30: -0.9746
40: -0.9969
50: -0.9967
60: -0.9973
70: -0.9991
80: -0.9999
90: -1.0000
100: -1.0000
110: -1.0000
120: -1.0000
130: -1.0000
140: -1.0000
150: -1.0000
160: -1.0000
170: -1.0000
180: -1.0000
190: -1.0000
从结果可以看到经过130次迭代之后损失值逐渐收敛到-1。
3.2.6、结果展示
为了更形象的展示训练结果,我们使用 plot 打印其曲线,实现方式如下:
plt.plot(loss_list)
plt.title("Learning to Control a Qubit")
plt.xlabel("Iterations")
plt.ylabel("loss")
4、总结
本文章详细展示了使用亚马逊云科技的 DLAMI 快速部署出深度学习的实验环境,并使用 QuTrunk 与 AI 框架 TensorFlow 结合完成构建量子神经网络的实验和输出测试结果,为量子计算+深度学习的开发者用户提供了一个简单的入门学习示例。
QuTrunk 是启科量子发布的一个开源的、灵活方便使用的、可以与各种考虑开源AI框架结合使用的量子编程框架。通过本文的展示,读者对量子编程 +AI 框架结合使用的方法有了基本了解,读者也可以访问启科开发者社区,深入了解 QuTrunk 的特性以便使用QuTrunk+AI的解决方案解决实际应用的中问题。更多的信息请点击 QuSaaS:启科开发者平台
作者:
Keith Yan(丘秉宜)中国首位亚马逊云科技 Community Hero。
黄文,启科量子DEVOPS工程师
Marz Kuo(郭梦杰),启科量子资深研发工程师,量子计算开源框架维护人
阅读原文:https://dev.amazoncloud.cn/column/article/63e48790e5e05b6ff897ca1b?sc_channel=CSDN
相关文章:
使用 QuTrunk+Amazon Deep Learning AMI(TensorFlow2)构建量子神经网络
量子神经网络是基于量子力学原理的计算神经网络模型。1995年,Subhash Kak 和 Ron Chrisley 独立发表了关于量子神经计算的第一个想法,他们致力于量子思维理论,认为量子效应在认知功能中起作用。然而,量子神经网络的典型研究涉及将…...
python selenium浏览器复用技术
使用selenium 做web自动化的时候,经常会遇到这样一种需求,是否可以在已经打开的浏览器基础上继续运行自动化脚本? 这样前面的验证码登录可以手工点过去,后面页面使用脚本继续执行,这样可以解决很大的一个痛点。 命令行…...
第二章:创建虚拟机
创建Windows server:首先第一步就是打开我们的vm,然后找到上一章讲的主页图标创建新的虚拟机。点击这上面类似的,然后转站。博文地址:https://blog.csdn.net/ryduijftgvhj/article/details/127934939?spm1001.2014.3001.5502视频…...
码上【call,apply,bind】的手写
一、call (1)官方用法 call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 语法:function.call(要绑定的this值,参数,参数,…)。不一定这些参数都需要,这些参数都…...
代谢组学Nature子刊!抑郁症居然“男女有别”,脑膜淋巴管起关键作用!
文章标题:A functional role of meningeal lymphatics in sex difference of stress susceptibility in mice 发表期刊:Nature Communications 影响因子:17.694 发表时间:2022年8月 作者单位:中山大学中山医学院 …...
nacos配置中心搭建
网站每次更新版本都有短暂暂停,影响用户使用,返回经常不可用,需要改进 需要实现高可用,搭建负载均衡,实现jenkinsnacos不停机部署 nacos搭建预备环境准备 64 bit OS,支持 Linux/Unix/Mac/Windows&#x…...
uni-app低成本封装一个取色器组件
在uni-ui中找不到对应的工具 后面想想也是 移动端取色干什么? 没办法 也挂不住特殊需求 因为去应用市场下载 这总东西 又不是很有必要 那么 下面这个组件或许能解决您的烦恼 <template><view class"content"><view class"dialog&…...
APP 怎么免费接入 MobPush
1、获取 AppKey 申请 Appkey 的流程,请点击 http://bbs.mob.com/thread-8212-1-1.html?fromuid70819 2、下载 SDK 下载解压后,如下图: 目录结构 (1)Sample:演示Demo。(2)SDK&am…...
XGBoost
目录 1.XGBoost推导示意图 2.分裂节点算法 Weighted Quantile Sketch 3.对缺失值得处理 1.XGBoost推导示意图 XGBoost有两个很不错得典型算法,分别是用来进行分裂节点选择和缺失值处理 2.分裂节点算法 Weighted Quantile Sketch 对于特征切点点得选择ÿ…...
你是什么时候从轻视到高看软件测试的?
刚开始学软件测试很轻视,因为我那时很无知,这也是那时绝大多数人员的心态,那时中国最讲究“编程才是硬道理”。 如今却非常热爱软件测试,包括软件测试工具,方法,理论,技术。因为我在3年的测试工…...
基于ssm的航空售票系统
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经从做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言…...
滑动窗口最大值
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 …...
接口文档参考示例
接口文档参考示例 用户登录 - POST /api/login/ 接口说明:登录成功后,会生成或更新用户令牌(token)。 使用帮助:测试数据库中预设了四个可供使用的账号,如下表所示。 Untitled 请求参数: Untitled 响应信息: 登录成功: {"code": 30000, "message&qu…...
2010-2019年290个城市经济发展与环境污染数据
2010-2019年290个城市经济发展与环境污染数据 1、时间:2010-2019年 2、统计口径:全市 3、来源:城市统计NJ,缺失情况与年鉴一致 4、指标包括: 综合经济:地区生产总值、人均地区生产总值、地区生产总值增…...
web开发
目录 使用Idea搭建Web项目 使用Idea开发Web项目基本知识 tomcat配置信息 HTML /CSS 开发主页 Servlet 学习和掌握的内容: HTML/CSSServlet MVC模式和Web开发数据库基本应用和JDBC应用软件项目开发流程 环境及工具版本: Windows10,JDK1.8 Idea2…...
【数据结构】优先级队列----堆
优先级队列----堆优先级队列堆堆的创建堆的插入:堆的删除:PriorityQueue的特性PriorityQueue的构造与方法优先级队列 优先级队列: 不同于先进先出的普通队列,在一些情况下,优先级高的元素要先出队列。而这种队列需要提…...
Python深度学习实战PyQt5信号与槽的连接
本文讲解信号与槽的连接机制,详细示范各种类型的信号/槽连接的实现方法,这是图形用户界面的核心内容。还将介绍面向对象的程序设计,这是图形用户界面的基本思想目录1. 信号与槽(Signals and slots)信号与槽机制是 PyQt…...
Window 10 OpenCV 打开罗技(Logitech)摄像头速度慢问题解决
采用最新版OpenCV 4.7.0 摄像头对罗技摄像头进行视频图像抓取时,发现存在打开摄像头慢的问题。 测试环境如下: 系统Windows 10 专业版CPUIntel i7-7700K 4.20GHz 摄像头型号罗技Logitech C930c 网络摄像头OpenCV版本4.7.0语言C 测试结果表明ÿ…...
基于yolo的小球位置实时检测
基于yolo的小球位置实时检测 Yolo安装 操作系统:ubuntu 安装cuda和opencv git clone https://github.com/pjreddie/darknet.git cd darknet 修改Makefile文件,使GPU1,OPENCV1 make 2. 数据集处理 2.1 制作数据集 将小球放在摄像头前…...
【微服务】Elasticsearch数据聚合自动补全数据同步(四)
🚗Es学习第四站~ 🚩Es学习起始站:【微服务】Elasticsearch概述&环境搭建(一) 🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 在第二站的学习中,我们已经导入了大量数据到es中&…...
java面试题(十七)spring
2.1 请你说说Spring的核心是什么 参考答案 Spring框架包含众多模块,如Core、Testing、Data Access、Web Servlet等,其中Core是整个Spring框架的核心模块。Core模块提供了IoC容器、AOP功能、数据绑定、类型转换等一系列的基础功能,而这些功能…...
你知道 BI 是什么吗?关于 BI 系统的概述
BI 作为信息化建设中的关键一环,在企业中通常起到承上启下的作用,下能连接打通企业业务系统数据库,将各部门数据分类分级统一储存到数据仓库,简化存储取数流程,减少人力、时间成本;上能提供数据可视化报表…...
git:详解git rebase命令
背景 今天无意中打开 git 官网,发现 git 命令还是很多的,然而我们常用的就那几个,今天来学习一个也不怎么常用的命令 rebase 官网链接 都说学一个东西最好的方式就是读他的 官方文档,这里我读了一遍,把一些核心的地…...
第四章——随机变量的数字特征
文章目录1、数字特征的定义2、数学期望(均值)2.1、数学期望的定义及性质2.1.1、定义2.1.2、性质2.2、数学期望相关例题2.3、Yg(X)的数学期望2.4、Zg(X,Y)的数学期望2.5、随机变量函数的数学期望例题3、方差3.1、方差的定义与性质3.2、相关例题3.3、切比雪…...
vue2源码阅读理解-响应式数据原理
首先明确,vue2是如何实现响应式的? 通过object.defineProperty观察者模式实现,在创建vue实例的过程中,也就是介于beforecomputed~computed的过程中,会执行如下函数initState export function initState (vm: Componen…...
服务调用分布式session
目录一、nginx动静分离二、服务调用1、创建配置zmall-cart购物车模块2、创建配置zmall-order订单模块3、服务调用三、spring session实战1、什么是Spring Session2、为什么要使用Spring Session3、错误案例展示4、配置spring-session四、二级域名问题五、用户登录一、nginx动静…...
Maven知识点-插件-maven-surefire-plugin简介
Maven本身并不是一个单元测试框架,Java 世界中主流的单元测试框架为JUnit 和TestNG。 Maven 所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。 这一插件就是maven-surefire-plugin,可以称之为测试…...
如何借力Alluxio推动大数据产品性能提升与成本优化?
内容简介 随着数字化不断发展,各行各业数据呈现海量增长的趋势。存算分离将存储系统和计算框架拆分为独立的模块,Alluxio作为如今主流云数据编排软件之一,为计算型应用(如 Apache Spark、Presto)和存储系统࿰…...
linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)(脚本包含,父子脚本)
在 shell 编程中,当一个 shell 脚本被另一个 shell 脚本包含,即用 . 或 source 命令包含,则被包含的脚本在当前 shell 进程内执行,并且可以访问当前 shell 进程的环境变量和函数。 此时,$0 代表的是主脚本的名称&#…...
MySQL进阶篇之锁(lock)
05、锁 5.1、概述 1、介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据…...
网站建设分录/线上营销模式
定义结构 为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下: struct type_name { member_type1 member_name1; member_type2 member_name2; member_type3 member_name3; . . …...
wordpress的按装方法/网站关键词优化教程
mysql中text,longtext,mediumtext字段类型的意思 MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型…...
手机wordpress查看加密文章/网站开发建设步骤
Python中使用import语句来导入一个模块(module),或者用来导入一个包(package),模块的实质就是一个*.py文件,实现了一定逻辑功能,包含了变量、函数、类等代码块,包的实质就是一个项目工程,里面有很多*.py文件…...
招商网站建设方案/seo项目分析
作者:王继顺 宝尊电商 DBA,主要负责数据库监控告警以及自动化平台的设计开发工作,擅长数据库性能调优、故障诊断。 背景 随着公司各个环境的服务器数量增加,部署有多套 Prometheus(包括生产、测试、Tidb、Kubernetes …...
武汉平价做网站/合肥seo推广公司哪家好
对于你在这里所做的事情,使用反射似乎不是一个好的设计.最好使用Map< String,Integer>例如:static final Map VALUES_BY_NAME;static {final Map valuesByName new HashMap<>();valuesByName.put("width", 5);valuesByName.put("potato…...
怎么做二级网站/杭州seo排名优化
文章目录1.读MPS5023芯片:0x03ff即将前6位屏蔽2.读PXE1410CDM电压和电流:一个数&0x7ff,将这个数前5位全变为0,其余位不变2.1 1ine112.2 1ine16:一种方法2.3 1ine16:另一种方法3.读ADS7830的8个channel电…...