谷歌云GCP基础概念讲解

概览

云的基础是虚拟化:服务器,存储,网络。服务器是远程计算机的逻辑分区。存储是物理硬盘的逻辑划分。网络则是虚拟私有云。

谷歌是唯一一个拥有全球私有基础设施的公司;他们的谷歌云基础设施没有任何一部分通过公共互联网。换句话说,谷歌的云基础设施完全建立在他们自己的私有网络上,而不是依赖于公共互联网的网络基础设施。

谷歌以其为其服务开发革命性技术而闻名,一旦他们有了更好的版本,旧版本就会向全世界开源。

TensorFlow就是这些技术之一。 TensorFlow 是 Google 的 AI 引擎,也是 Google 搜索的核心。现在最新的是kubeFlow!

安全的全球专用网络:Google Cloud 是一个大型专用网络;没有任何东西通过公共互联网传播。使用 Cloud CDN 时,来自源的流量会穿过此专有光纤网络,并通过最靠近客户的位置进行传送。大多数研究公司选择 GCP,因为没有网络连接到互联网。

Kubernetes 引擎的创建者:Kubernetes 是由 Google 设计和创建的容器编排工具,用于管理其基础设施。部署了数百万个容器来托管 Google 服务,而 Kubernetes 是这些容器的核心。 Google 开源了这项技术,并提供了 Google 管理的 Kubernetes 引擎作为服务。

收费方式按秒计费,新用户前三个月有300美刀信用额度。

人工智能和机器学习服务:毫无疑问,谷歌是数据之王。数据越多,模型在人工智能世界中产生的结果就越准确。谷歌的机器学习服务是最好的。 Google 提供了多种 ML 服务来训练模型并处理模型训练管道。Kubeflow现在是 ML 操作的趋势。同样,KubeFlow 基于 Google 内部方法将 TensorFlow 模型部署到 Kubernetes,称为 TensorFlow Extended。

 

项目Project/Folder和权限IAM

整个GCP层级如下:组织(如果你的账户域名是组织类型比如google workspace账号的话)- 文件夹folder - 项目projects - 资源resource(gmail账号是无组织的)

IAM包括四种账户:Google Account, Service Account, Google Groups, Cloud Identity Domain。

IAM Policy:用json方式写的权限控制方式,成员,角色,资源,以及按需条件。

所有的资源服务都是一种API。从API&Service中就可以查看所有的API。有些服务在创建项目的时候就已经激活,有些则需要在使用的时候手动激活。

API Explorer可以轻松从网页尝试调试API(就算没激活都可以试用,厉害)。一般来说如果 API 请求失败,要么是没设置账户,要么是该服务还没被你激活。

Cloud Operations:Monitoring,Dashboard,Metrics Explorer,Alerting,通过group可以整合资源管理,通过setting可以增加pj和account统一管理。其他还有logging,error report,trace服务。

计费 Billing

计费账户:可以为每个部门单位创建计费账户,或者别的什么单位。可以在项目Project上(三个点)设置它的计费账户。或者可以在新建项目的时候选择收费账户。

操作需要的权限:(Billing Administrator role)或者 (Project Creator and Billing Account User)

Command:gcloud alpha/beta billing accounts list

注意:一开始的300美元积分,仅限第一个积分账户。最好把测试用的PJ都关联到第一个计费账户来使用。

预算和警报:预算和警报,是以计费账户为单位的。通过阈值在到达指定金额时,发送提醒邮件给我们,好让我们采取行动。

BillingExport:计费输出将费用数据输出到BigQuery。需要激活Bigquery Data transfer API。

如果你是发票结算账户,付款需要联系GCP销售团队,可以电汇或支票结算,每月将收到发票。

SDK

三种方法安装,docker,非docker,服务台的CloudShell。

# docker install
docker pull gcr.io/google.com/cloudsdktool/cloud-sdk:latest
docker run --rm gcr.io/google.com/cloudsdktool/cloud-sdk:latest gcloud version
# docker config
docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/cloud-sdk gcloud auth login
docker run --rm --volumes-from gcloud-config gcr.io/google.com/cloudsdktool/cloud-sdk gcloud config list
# not docker config
gcloud init

SDK中所有的组建:使用gcloud components list可以列出来。知道了组件甚至可以猜出命令行。组件如下:

  • gcloud: The main google cloud component.
  • gcloud alpha: Set of commands used for early testing of new features.
  • gcloud beta: Beta release of new commands.
  • bq: Known as BigQuery component
  • gsutil: Used for Cloud storage operations.
  • core: Shared libraries for all the other components.
  • kubectl: Kubectl is used to control the Kubernetes cluster.

更新命令:gcloud components update

安装新的组件的推介方法:sudo apt-get install google-cloud-sdk-minikube

命令构成:

gcloud + release level (optional:alpha/beta) + component + entity + operation + positional args + flags

For example: gcloud + compute + instances + create + example-instance-1 + --zone=us-central1-a

登陆:gcloud auth login

配置:使用命令设置默认项目gcloud config set project <project ID>

当您登录 gcloud CLI 时,命令gcloud config list显示了当前配置,但是,我们可以有多个配置,gcloud config configurations list并将列出所有可用的配置。

要创建新配置,请使用gcloud config configurations create <name>命令。

撤销当前设置的PJgcloud config unset project

激活默认的配置gcloud config configurations activate default

Compute

从操作量来说(从多到少):Compute Engine - Kubernetes Engine - (Cloud Run / Cloud Functions / App Engine)

从workload包罗范围来(从多到少):Compute Engine - (Kubernetes Engine / Cloud Run) - Cloud Function - App Engine

App Engine:网络应用,手机后端,特定语言Python,HTTP only,专注快速开发,谷歌托管Docker。

Cloud Functions:事件触发,语言:Javascript,Go,Python,Java,不关心操作系统,时间执行540秒之内。因为它是事件触发所以对于workload(各种计算任务)更有用。

GKE:容器化服务,需要定义集群,可移植性,容器为部署单元。

Cloud Run:托管的GKE服务,用法和GKE基本相似除了:集群由谷歌管理,工作负载容器化,docker image,便宜,之需要关心应用的高可用性即可。

Compute Engine:能力越大责任越大。相当于EC2,没有容器化工作负载。

Preemptive VMs:抢占式虚拟机,24小时存活,适合处理批量作用,很像AWS的Spot,在创建regular Engine的时候选择它即可。便宜80%。

Predefined VMs:Standard, memory-optimized, compute-optimized

Instance:ssh for Linux, RDP protocol for windows.

要素:Image, Snapshot, Metadata(hostname, instance id, startup&shutdown scripts, custom metadata, service accounts info)

新建一个GCE可以从public image,custom image, snapshot, 或者任何可以启动的disk来创建。可以设置SA账号,并设置该服务器可以access的其他API。还可以设置防火墙firewall(http或者https访问)。

Startup script:这个相当于AWS的user data,是在启动的时候执行的命令。

gcloud命令:

  • 使用默认设置启动一个GCE:gcloud beta compute --project=[PROJECT_NAME] instances create instance-2 --zone=us-central1-a
$ gcloud compute instances create myinstance
Created [...].
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X  # 这里的外部IP可以用于外部的网络访问
STATUS: RUNNING
  • 列出所有GCE:gcloud beta compute instances list
  • 删除GCE:gcloud beta compute instances delete instance_name --zone zone_name
  • 设置防火墙80端口
$ gcloud compute firewall-rules create allow-80 --allow tcp:80
Created [...].
NAME: allow-80
NETWORK: default
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp:80
DENY:
DISABLED: False
  • 进行ssh连接:gcloud compute ssh --zone us-central1-a [username]@[instance_name/host_name],另外所有的ssh key都在GCE的metadata页面中。在这个页面可以设置key的pub文件。
$ gcloud compute ssh myinstance
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts.
...yourusername@myinstance:~#
  • 使用自定义的启动脚本创建GCE
$ gcloud compute instances create nginx \--metadata-from-file startup-script=startup.sh
  • 创建一个服务器集群用于负载均衡的过程:创建一个模板,然后创建目标池,这可以用于之后的负载均衡,然后在池中创建两个目标GCE,最后列出所有服务器,最后创建负载均衡
$ gcloud compute instance-templates create nginx-template \--metadata-from-file startup-script=startup.sh
$ gcloud compute target-pools create nginx-pool
$ gcloud compute instance-groups managed create nginx-group \--base-instance-name nginx \--size 2 \--template nginx-template \--target-pool nginx-pool
$ gcloud compute instances list
$ gcloud compute forwarding-rules create nginx-lb \--ports 80 \--target-pool nginx-pool
$ gcloud compute forwarding-rules list
NAME: nginx-lb
REGION: us-central1
IP_ADDRESS: X.X.X.X  # 这个地址可以访问lb地址了
IP_PROTOCOL: TCP
TARGET: us-central1/targetPools/nginx-pool
  • 所有的清理命令
$ gcloud compute forwarding-rules delete nginx-lb
$ gcloud compute instance-groups managed delete nginx-group
$ gcloud compute target-pools delete nginx-pool
$ gcloud compute instance-templates delete nginx-template
$ gcloud compute instances delete nginx
$ gcloud compute instances delete myinstance
$ gcloud compute firewall-rules delete allow-80
  • 以上都是来自官方的codelabs,真的很好:https://codelabs.developers.google.com/codelabs/cloud-compute-engine?hl=zh-cn#0

如果是windowsGCE需要用RDP客户端,这对于Linux就是ssh。

Auto Scaling

  • Predictive autoscaling:针对instance group进行预测性的扩展,一般在组创建三天后生效,因为需要预测的base data。
  • Cool down period:从启动到可用的时间。
  • Minimum&Maximum number of instances:和AWS一样,是扩展的范围。
  • Auto healing:健康检查功能,检测如果发现异常,会重建实例的功能,如果不开健康检查功能,那么只有在实例不跑了的时候才会重建。
  • Rolling updata/restart/replace:滚动更新,有助于重新启动或替换组中的实例。可能需要重新启动或类似的维护补丁。策略:maximum surge(最大的更新速率或数量)/maximum unavailable(重启更新时候的最大不可用数量)。
  • gcloud:
gcloud compute instance-groups managed \
set-autoscaling instance-group-2 \
--max-num-replicas 3 \
--min-num-replicas 1 \
--target-cpu-utilization 0.60 \
--cool-down-period 120 \
--zone=us-central1-a

Google Kubernetes Engine/Cluster

  • 术语:
  • Pod 是一个集合,里面可以有多个容器,共享一个PodIP,一个Pod就是一个application的copy。
  • Node 是一个虚拟机实例,一个Node可以有一个或者多个Pod,docker和kubernetes预装在这些虚拟机里。
  • Services 是endpoint for user,PodIP在重启的时候IP会变,但是service可以提供不变的服务端点。
  • Deployment 翻译为部署,每个pod都是容器构成的,一个容器其实就是一段代码,部署就是这些代码的复制,它的作用就是确保pod维持需要数量的运行。
  • Deamonset:Node节点级别的控制,确保软件的copy在每个节点运行。
  • Secrets:运行容器的时候使用的敏感数据,作为环境变量存储。runtime时候使用。现在只能用kubecli CLI设置
  • Configmaps:非敏感数据的环境变量。在runtime时候使用。现在只能用kubecli CLI设置
  • 工作方式:
  • 通过deployment.yaml文件定义pod的config以及要配置的数量。kube会据此创建实例,并在数量不够的时候进行替换。
  • 如果我们需要用Service暴露实例,每次更新实例,服务的endpoint都会映射到新的podIP。
  • 创建GKE的三个部分是:Cluster basics, Node pools, Cluster(automation, networking, security(可以设置SA), metadata, features)
  • 对于Workload可以进行设置和deploy。设置内容:application name, namespace, labels, cluster。这里namespace很重要,他是区分不同code的方式,比如一个node可以有很多版本的code,这里就是通过namespace区分的。
  • Service是attach pod也就是组织pod是,以及整合他们的IP为一个endpoint给用户,并且可以进行load balancer。通过对应用的expose进行设置。我认为这是一个设置对外端口的步骤,所以用暴露这个单词。
  • IP组织方式:Load Balancer IP(对外开放的接口)--> Cluster IP --> NodeIP
  • 删除cluster:gcloud container clusters delete [cluster-name] --zone [zone]
  • 命令行合集:
# enable api
gcloud services enable container.googleapis.com
# create cluster
gcloud container clusters create fancy-cluster --num-nodes 3
# create container
# enable cloud build api
gcloud services enable cloudbuild.googleapis.com
# create image
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
# deploy container to gke
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
# delete pod
kubectl delete pod/<POD_NAME>
# check the status of pod service and deployment
kubectl get all
# espose the service
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
# get the service info of cluster ip, external ip and ports
kubectl get service
# scale the deployment to 3
kubectl scale deployment monolith --replicas=3
# rebuild application image with a new version!
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
# deploy the new version without downtime
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

codeslabs:https://codelabs.developers.google.com/codelabs/cloud-deploy-website-on-gke#0

Cloud Run:

  • 事件驱动。web服务restAPI后端。轻量级数据转换。使用webhooks的业务工作流程。
  • image可以来自Container Registry。
  • 部署image后会有一个端口URL,通过requests请求就可以执行在image中部署的代码了。

APP Engine

  • HTTP/HTTPS应用程序开发平台。web开发和移动后端开发。
  • 每个项目只能有一个APP Engine。
  • 版本控制
  • split traffic可以进行canary test。
  • 可以缓存内置静态资源。
  • 可以开启本地开发服务器,一个命令即可。
  • 数据库的首选是NoSQL数据库Firestore。

codelabs:https://codelabs.developers.google.com/codelabs/cloud-app-engine-python3#0

Storage

Google Cloud Storage

  • 根据使用频率可以分几个classes:
  • Multi-regional - Part of Standard now
  • Regional - Part of Standard now
  • Nearline
  • Coldline
  • Archive
  • 可托管静态网页,和S3一样。
  • 可署名URL
  • 使用Service Account的私钥来为生成的 URL 生成加密签名
  • gcloud auth activate-service-account --key-file [path/to/key_file.json]
  • 需要的包:pip3 install pyopenssl
  • 创建url:gsutil signurl -d 10m -u gs://[bucket_name]/demo.txt
  • 文件操作
# create
gsutil mb gs://<bucketname>
# list
gsutil ls
# upload
gsutil mv ./demo.txt gs://[bucketname]
gsutil cp ./demo.txt gs://[bucketname]
# multithread upload
gsutil -m mv . gs://cloudstoragelab/
# upload bigfile by chunks
gsutil -o GSUTIL:parallel_composite_upload_component_size=10M mv [bigfile] gs://[bucketname]
  • 文件生命周期设置
# get
gsutil lifecycle get gs://cloudstoragelab/
# set rules by json file
gsutil lifecycle set rules.json gs://[bucket_name]

Bigtable

  • NoSQL
  • 每行中的单个值都被索引,该值称为行键。
  • Cloud Bigtable 非常适合以极低的延迟存储大量单键数据。比如IoT数据,动态实时查询,时间序列,图数据。
  • 它支持低延迟的高读写吞吐量,是MapReduce操作的理想数据源。

codelabs:https://codelabs.developers.google.com/codelabs/cloud-bigtable-intro-java#0

BigQuery

  • 经济高效的云数据仓库。关键词:分析
  • BigQuery Data Transfer Service支持从 Google SaaS 应用(Google Ads、Cloud Storage)、Amazon S3 和其他数据仓库(Teradata、Redshift)将数据传输到 BigQuery。
  • 可以使用 Cloud Dataflow pipeline、Cloud Dataproc jobs或直接使用 BigQuery 流提取 API 将流数据(例如日志或 IoT 设备数据)写入 BigQuery。
  • bq query --use_legacy_sql=false --dry_run 'SELECT * FROM bigquery-public-data.stackoverflow.posts_answers LIMIT 1000'其中的dry_run可以提示计算成本。
  • Partitioning and Clustering(提高查询效率,降低成本):分区是将数据分割成较小的独立单元,以提高性能和可扩展性,而聚类是将相关数据放在一起以提高查询性能和减少磁盘 I/O 操作。分区通常是水平的,而聚类则是垂直的。水平分区是按行分割数据,减少单个存储单元上的数据量,而垂直分区是按列分割数据,将相关的数据物理上放置在一起。
CREATE OR REPLACE TABLE `stackoverflow.questions_2018_clustered`
PARTITION BYDATE(creation_date)
CLUSTER BYtags AS
SELECTid, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count, tags
FROM`bigquery-public-data.stackoverflow.posts_questions`
WHEREcreation_date BETWEEN '2018-01-01' AND '2019-01-01';

Cloud SQL

  • 对标传统关系型数据库MySQL,PostgreSQL,SQLServer,提供这些数据库的托管服务
  • 使用 CloudSQL 作为 Drupal 或 WordPress 等平台的 CMS(内容管理服务)后端
  • Cloud SQL 非常适合轻松入门或提升和迁移现有 SQL 数据库。
  • 但对于现代云数据库,Cloud SQL 存在一些局限性。诸如水平扩展、区域方面的全球可用性等限制。 GCP 的 Cloud Spanner 服务解决了这些限制,并为解决方案提供了无需停机即可水平扩展的能力。总体而言,CloudSQL 的常见用例是将 SQL 数据库从本地提升并转移到云端。
  • 命令行合集:(也可以使用UI)
# create sql instance
gcloud sql instances create [instance-name]
# create database in the instance
gcloud sql databases create [database-name] --instance [instance-name]
# connect to CloudSQL / need activate CloudSQL Admin API
gcloud sql connect [project name] --user=root --quiet
# or user mysql client
mysql -h [IP-of-instance] -u [user] -p
# delete the instance
gcloud sql instances delete [instance-name]

Cloud Spanner

  • Modern cloud-based RDBMS-现代的基于云的关系型数据库。
  • 计算和存储分离,跨区复制的高可用性。(可以一个region多个zone,或者多个region)
  • 跨区域复制以提供高可用性。目前最多可对 4 个区域进行复制。
  • 自动分片sharding(水平分割)
  • 高可用性、全球范围内的强一致性、RDBMS和水平扩展。无需管理高可用性副本和只读副本。
  • 命令行合集:
gcloud spanner instances list
gcloud spanner databases list --instance [INSTANCE-ID]
gcloud spanner instances delete [Instance-ID]

Cloud Datastore升级到了Firestore

  • 自动扩展、高性能和易于应用程序开发而构建的 NoSQL 数据库。
  • Firestore更像是document数据库,collection group适合应用开发后台数据库
  • ACID原子属性交易事物,高读写操作。
  • 关键词:key-value pair、NoSQL database、之类的关键字时App Engine or app,SQL like query language
  • 独特术语:
  • Kind - > Table
  • Entity - > row
  • Property - > Column
  • Key - > Primary key
  • Firebase 存储在幕后使用storage bucket。所以,它是带有移动SDK(移动软件开发工具包)的云存储。

Networking

VPC

  • 谷歌的VPC是全球资源。子网是区域资源。VPC就像是谷歌里的一个大城市,子网就像是街区,里面的instance就像是大楼。
  • VPC设置的IP分配有自动模式和自定义模型。

Load Balancer

  • 三种类型:HTTPS Load Balancer,TCP Load Balancer,UDP Load Balancer.
  • 根据流量来源,来决定是内部internal还是外部external的HTTPSLB
  • TCP-LB提供单区域或多区域的LB
  • 要求SSL offload的情况使用SSL Proxy
  • 不要求SSL但是需要全球traffic或者IPv6的情况使用TCP Proxy

Cloud DNS

  • 低延迟,高可用性
  • 域名系统
  • public&private

Event trigger

Cloud Functions

  • 最高memory:4GB
  • 最长执行time:9minites
  • 支持语言:Python,Java,Go,Node.js
  • usecase:文件处理,视频处理,小型微服务移动后端

codelabs:https://codelabs.developers.google.com/codelabs/cloud-starting-cloudfunctions#0

Cloud PubSub

  • 可以将 PubSub 视为 Apache Kafka 的替代方案,后者是开源替代方案。
  • Publisher > Topic > Message Storage > Subscription > Subscriber
  • delivery方式:push / pull
  • 关键词:Capture Streaming data、Pubsub、Decoupled(解藕),Asynchronous application architecture(异步应用构架)

Monitoring and Logging

Cloud Operations

Monitoring

Logging

  • Cloud Operations:Monitoring,Dashboard,Metrics Explorer,Alerting,通过group可以整合资源管理,通过setting可以增加pj和account统一管理。其他还有logging,error report,trace服务。这里讲Logging。
  • 通过Cloud Logging API和Log Router存储和整合。
  • Log viewer 功能可以query log
  • Logs dashboard
  • Logs-based metrics
  • Log Storage:50GB/项目免费配额,审计日志存储在单独的存储桶中,最长保留期为 400 天。对于其余日志,保留期限为 30 天。可以为此创建警报,以便一旦超过 50 GB 就用排除项目删除不必要的日志。

Trace

  • 追踪端点延迟
  • codelabs:https://codelabs.developers.google.com/codelabs/cloud-function-logs-traces#6

Profiler

  • Cloud Profiler 是一种统计性、低开销的分析器,可以持续从生产应用程序收集 CPU 使用情况和内存分配信息。
  • 根据不同的编程语言支持不同的分析内容,似乎Go的最多
  • codelabs:https://codelabs.developers.google.com/codelabs/cloud-profiler#0
  • 这中间有很多模拟程序,很有趣

Debugger:实时调试云应用程序,无需重新启动或停止

Error Reporting:自动收集和分析错误和异常

其他服务

  • 价格计算服务:Pricing Calculator:keyword:updated prices, latest prices, cost estimation
  • CI/CD:Deployment Manager
  • yaml文件整合资源
  • 一个resource代表一个API resource
  • Manifest文件是当前部署的只读主文件。它包含用户定义的资源和配置,以及由部署管理器创建的附加资源,以支持有用资源的创建。
  • Cloud Marketplace:Google Cloud Platform的一键部署解决方案。您可以从云市场部署任何流行的软件、CMS、工具或 API。 比如WordPress 是一个非常流行的内容管理系统。

SSL offload SSL卸载

SSL offload(SSL 卸载)是一种网络安全技术,旨在减轻服务器负载和提高性能。在 SSL offload 中,SSL(安全套接层)和 TLS(传输层安全)的加密和解密操作从服务器转移到专门的硬件设备或者专用的 SSL 加速器中进行处理。

通常情况下,当客户端与服务器之间建立安全连接时,会使用 SSL/TLS 协议对通信进行加密。加密和解密操作对服务器的 CPU 和内存等资源造成了较大的负担,特别是在高负载情况下。为了减轻服务器的负载并提高性能,可以使用 SSL offload 技术。

SSL offload 的工作原理如下:

  1. 客户端发起连接请求时,请求通过负载均衡器或者专用的硬件设备(如 SSL 加速器)。
  2. 负载均衡器或者 SSL 加速器接收到连接请求后,会负责 SSL 握手过程中的密钥交换、加密和解密操作。
  3. 一旦安全连接建立完成,负载均衡器或者 SSL 加速器将未加密的请求转发到后端的服务器上。
  4. 后端的服务器只需要处理未加密的请求,不需要负责 SSL 握手和加解密操作,从而减轻了服务器的负载。

使用 SSL offload 技术的主要优势包括:

  • 降低服务器负载:通过将 SSL 加解密操作从服务器转移到专用的硬件设备或者 SSL 加速器中,可以减轻服务器的负载,提高服务器的处理性能和吞吐量。
  • 提高性能:减轻了服务器的负载后,可以更有效地利用服务器资源,提高应用程序的性能和响应速度。
  • 简化管理:SSL offload 技术可以集中管理 SSL/TLS 证书和密钥,简化了 SSL/TLS 配置和管理的复杂性。

总的来说,SSL offload 技术是一种有效的网络安全技术,可以帮助提高服务器的性能和可用性,并简化 SSL/TLS 配置和管理。

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

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

相关文章

【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)

在线投稿&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 2024年计算机视觉与艺术国际学术会议&#xff08;CVA 2024&#xff09;作为2024年人工智能、数字媒体技术与交互设计国际学术会议&#xff08;ICADI 2024)的分会。此次大会旨在汇聚全球在计算机视觉与艺术…

Java知识巩固(十二)

I/O JavaIO流了解吗&#xff1f; IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。数据传输过程类似于水流&#xff0c;因…

基于SSM+小程序的智慧旅游平台登录管理系统(旅游2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 旅游平台开发微信小程序功能有管理员和用户。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;景点分类管理&#xff0c;旅游景点管理&#xff0c;景点购票管理&#xff0c;景…

我谈Canny算子

在Canny算子的论文中&#xff0c;提出了好的边缘检测算子应满足三点&#xff1a;①检测错误率低——尽可能多地查找出图像中的实际边缘&#xff0c;边缘的误检率&#xff08;将边缘识别为非边缘&#xff09;低&#xff0c;且避免噪声产生虚假边缘&#xff08;将非边缘识别为边缘…

量子容错计算

基本思想 容错量子计算的基本想法是&#xff0c;在合理编码后的量子态上直接量子计算&#xff0c;以至于不完全需要解码操作。假设有一个简单的量子电路&#xff0c;但不幸的是噪声影响着这个电路的每一个元件&#xff0c;包括量子态的制备、量子逻辑门、对输出的测量&#x…

代码随想录算法训练营第十一天(补) 栈与队列| 后序表达式、滑动窗口、高频元素、链表总结

目录 一、150. 逆波兰表达式求值 二、239. 滑动窗口最大值 三、347.前 K 个高频元素 四、总结 一、150. 逆波兰表达式求值 力扣题目链接(opens new window) 根据 逆波兰表示法&#xff0c;求表达式的值。 有效的运算符包括 , - , * , / 。每个运算对象可以是整数&#x…

【论文阅读】SRGAN

学习资料 论文题目&#xff1a;基于生成对抗网络的照片级单幅图像超分辨率&#xff08;Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network&#xff09;论文地址&#xff1a;https://arxiv.org/abs/1609.04802 代码&#xff1a;GitHub - x…

芯片上音频相关的验证

通常芯片设计公司&#xff08;比如QUALCOMM&#xff09;把芯片设计好后交由芯片制造商&#xff08;比如台积电&#xff09;去生产&#xff0c;俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证&#xff08;这里说的验证是FPGA&#xff08;现场…

SpringMVC实战:构建高效表述层框架

文章目录 1. SpringMVC简介和体验1.1 介绍1.2 主要作用1.3 核心组件和调用流程1.4 快速体验 2. SpringMVC接收数据2.1 访问路径设置2.2 接收参数2.2.1 param和json参数比较2.2.2 param参数接收2.2.3 路径参数接收2.2.4 json参数接收 2.3 接收cookie数据2.4 接收请求头数据2.5 原…

python爬虫实战案例——抓取B站视频,不同清晰度抓取,实现音视频合并,超详细!(内含完整代码)

文章目录 1、任务目标2、网页分析3、代码编写 1、任务目标 目标网站&#xff1a;B站视频&#xff08;https://www.bilibili.com/video/BV1se41117WP/?vd_sourcee8e376ccbc5aa4cfd88e6a7917adfd1a&#xff09;&#xff0c;用于本文测验 要求&#xff1a;抓取该网址下的视频&…

华为ICT题库-云服务部分

1651、关于创建数据盘镜像的约束条件&#xff0c;以下说法错误的是&#xff1f;&#xff08;云服务考点&#xff09; (A)使用云服务器的数据盘创建数据盘镜像时&#xff0c;要确保该云服务器必须有系统盘 (B)通过外部文件创建数据盘镜像必须明确指定操作系统类型 (C)使用云服务…

Docker快速上手教程:MacOS系统【安装/配置/使用/原理】全链路速通

背景 最近换了个 Macbook Air M3, 写个人项目需要用到 Docker,配置过程有一点点坎坷,还是得记录下避免重蹈覆辙。 什么。为什么是买 Air 而不是 Pro Max? 因为码农的钱也是钱啊。 这里我不会先讲原理,我认为工程的事情都是先看到现象,有了概念的轮廓,才应该去研究原理,…

Python基础学习(六)数据容器

代码获取&#xff1a;https://github.com/qingxuly/hsp_python_course 完结版&#xff1a;Python基础学习完结版 数据容器 基本介绍 数据容器是一种数据类型&#xff0c;有些地方也简称容器/collections。数据容器可以存放多个数据&#xff0c;每一个数据也被称为一个元素。存…

计算机网络IP地址分类,子网掩码,子网划分复习资料

IP 地址的概念 IP 地址是独立于硬件地址的逻辑地址&#xff0c;它是由软件提供的地址。 IP 地址是网络层地址。 IP 编址方案和分类 IP 地址由 32 位二进制数构成&#xff0c;分为前缀(网络地址)和后缀(主机地址) 同一网段中每台计算机的 IP 地址是唯一的网络地址的分配全球…

力扣21 : 合并两个有序链表

链表style 描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 节点大小相同时&#xff0c;l1的节点在前 何解&#xff1f; 1&#xff0c;遍历两个链表&#xff0c;挨个比较节点大小 同时遍…

20241027_北京郊游香山公园

这次是第二次去香山公园&#xff0c;天气不是很晴朗&#xff0c;有雾。 乘坐地铁到的时候&#xff0c;第一趟车&#xff0c;我这么聪明&#xff0c;那肯定是不会坐的&#xff0c;因为没有座位&#xff0c;路程30多分钟&#xff0c;我都20多岁了&#xff0c;身体那肯定顶不住。 …

241024-Ragflow离线部署Docker-Rootless环境配置修改

A. 最终效果 B. 文件修改 docker-compose.yml include:- path: ./docker-compose-base.ymlenv_file: ./.envservices:ragflow:depends_on:mysql:condition: service_healthyes01:condition: service_healthyimage: ${RAGFLOW_IMAGE}container_name: ragflow-serverports:- ${…

WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印uniapp插件使用说明

插件地址&#xff1a;WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印安卓库 简介 本插件主要用于旻佑热敏打印机打印票据&#xff0c;不支持标签打印。适用于旻佑的各型支持票据打印的热敏打印机。本插件开发时使用的打印机型号为MY-805嵌入式面板打印机&#xff0c;其他型号请先…

海外媒体发稿:如何打造媒体发稿策略

新闻媒体的发稿推广策略对于提升品牌知名度、吸引流量以及增加收入非常重要。本文将介绍一套在21天内打造爆款新闻媒体发稿推广策略的方法。 第一天至第七天&#xff1a;明确目标和定位 在这个阶段&#xff0c;你需要明确你的目标和定位&#xff0c;以便为你的新闻媒体建立一个…

66Analytics 汉化版,网站统计分析源码,汉化前台后台

66Analytics 汉化版,网站统计分析源码,汉化前台后台 本源码汉化前台后台&#xff0c;非其他只汉化前台版 网络分析变得容易。自托管、友好、一体化的网络分析工具。轻量级跟踪、会话回放、热图、用户旅程等 简单、好看、友好-大多数网络分析解决方案做得太多了&#xff0c;在大…