随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求。近年来,互联网、移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云方案也随之进入了大众的视野。开普勒云是一个基于Kubernetes+Docker+Istio的微服务治理解决方案。

 

一、Microservices

1.1 解决大应用微服务化后的问题

现在各大企业都在谈论微服务,在微服务的大趋势之下技术圈里逢人必谈微服务,及微服务化后的各种解决方案。

1.2 当我们在讨论微服务的时候我们在讨论什么?

使用微服务架构有很多充分的理由,但天下没有免费的午餐,微服务虽有诸多优势,同时也增加了复杂性。团队应该积极应对这种复杂性,前提是应用能够受益于微服务。

1.2.1 如何微服务化的问题

  • 微服务要如何拆分
  • 业务API规则
  • 数据一致性保证
  • 后期可扩展性考虑

当然这不是本文主要讨论的问题,我不讲微服务具体要如何拆分,每个企业每个应用的情况都不太一样,适合自己的方案就是最好的拆分方案。我们主要来解决微服务化后所带来的一些问题。

1.2.2 微服务化后带来的问题

  • 环境一致性
  • 如何对资源快速分配
  • 如何快速度部署
  • 怎么做基本监控
  • 服务注册与发现
  • 负载均衡如何做

以上都是大应用微服务化所需要解决的基础问题,如果还按照传统的方式使用虚拟机来实现,资源开支将会非常大。那么这些问题要怎么解决呢?比如:

  • 流量管理
  • 服务降级
  • 认证、授权

当然面对上述这些问题我们广大的猿友们肯定是有解决方案的。

1.3 Service governance

1.3.1 Java 体系

假设我们是Java体系的应用,那解决起来就很方便了,比如我们可以考虑使用SpringCloud全家桶系列。也可以拆分使用:

  • Eureka
  • Hystrix
  • Zuul
  • Spring-cloud
  • Spring-boot
  • ZipKin

Java体系下能很方便的做以我们微服务化后的基础部分,但依然不能非常舒服地解决环境一致性,并且如果有其他语系的服务将很难融入进去。

我们来看基础编程语言一般有什么组合方式来解决基础问题。

1.3.2 其他体系

  • Consul
  • Kong
  • Go-kit
  • Jaeger/Zipkin

假设我们是使用Golang语言,这里再捧一下Golang语言。go语言简直就是天生为微服务而生的语言,实在不要太方便了。高效的开发速度及相当不错的性能,简单精悍。

跑题了~我们使用上面这些工具也可以组成一套还不错的微服务架构。

  • Consul: 当作服务发现及配置中心来使
  • Kong: 作为服务网关
  • Jaeger: 作为链路追踪来使
  • Go-kit: 开发组件

但是这种方案也有问题,对服务的侵入性太强了,每个服务都需要嵌入大量代码,这还是很头疼的。

二、Docker & Kubernetes

基于Docker+k8s搭建平台的实践方案。

2.1 Docker

Docker 是一个非常强大的容器。

  • 资源利用率的提升
  • 环境一致性、可移植性
  • 快速度扩容伸缩
  • 版本控制

使用了Docker之后,我们发现可玩的东西变多了,更加灵活了。不仅仅是资源利用率提升、环境一致性得到了保证,版本控制也变得更加方便了。

以前我们使用Jenkins进行构建,需要回滚时,又需要重新走一次jenkins Build过程,非常麻烦。如果是Java应用,它的构建时间将会变得非常长。

使用了Docker之后,这一切都变得简单了,只需要把某个版本的镜像拉下来启动就完事了(如果本地有缓存直接启动某个版本就行了),这个提升是非常高效的。

既然使用了Docker容器作为服务的基础,那我们肯定需要对容器进行编排,如果没有编排那将是非常可怕的。而对于Docker容器的编排,我们有多种选择:Docker Swarm、Apache Mesos、Kubernetes,在这些编排工具之中,我们选择了服务编排王者Kubernetes。

2.1.1 Docker VS VM

 

  • VM: 创建虚拟机需要1分钟,部署环境3分钟,部署代码2分钟。
  • Docker: 启动容器30秒内。

2.2 Why choose Kubernetes

我们来对比这三个容器编排工具。

2.2.1 Apache Mesos

Mesos的目的是建立一个高效可扩展的系统,并且这个系统能够支持各种各样的框架,不管是现在的还是未来的框架,它都能支持。这也是现今一个比较大的问题:类似Hadoop和MPI这些框架都是独立开的,这导致想要在框架之间做一些细粒度的分享是不可能的。

但它的基础语言不是Golang,不在我们的技术栈里,我们对它的维护成本将会增高,所以我们首先排除了它。

2.2.2 Docker Swarm

Docker Swarm是一个由Docker开发的调度框架。由Docker自身开发的好处之一就是标准Docker API的使用。Swarm的架构由两部分组成:

它的使用,这里不再具体进行介绍。

2.2.3 Kubernetes

Kubernetes是一个Docker容器的编排系统,它使用label和pod的概念来将容器划分为逻辑单元。Pods是同地协作(co-located)容器的集合,这些容器被共同部署和调度,形成了一个服务,这是Kubernetes和其他两个框架的主要区别。相比于基于相似度的容器调度方式(就像Swarm和Mesos),这个方法简化了对集群的管理.

不仅如此,它还提供了非常丰富的API,方便我们对它进行操作,及玩出更多花样。其实还有一大重点就是符合我们的Golang技术栈,并且有大厂支持。

Kubernetes 的具体使用这里也不再过多介绍,网站上有大把资料可以参考。

2.3 Kubernetes in kubernetes

kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署、调度和节点集群间扩展。

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它,等等...

2.4 Kubernetes is not enough either

到这里我们解决了以下问题:

  • Docker: 环境一致性、快速度部署。
  • Kubernetes: 服务注册与发现、负载均衡、对资源快速分配。

当然还有监控,这个我们后面再说。我们先来看要解决一些更高层次的问题该怎么办呢?

在不对服务进行侵入性的代码修改的情况下,服务认证、链路追踪、日志管理、断路器、流量管理、错误注入等等问题要怎么解决呢?

 

这两年非常流行一种解决方案:Service Mesh。

三、Service Mesh

处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。

  • 用来处理服务间通讯的专用基础设施层,通过复杂的拓扑结构让请求传递的过程变得更可靠。
  • 作为一组轻量级高性能网络代理,和程序部署在一起,应用程序不需要知道它的存在。

在云原生应用中可靠地传递请求可能非常复杂,通过一系列强大技术来管理这种复杂性: 链路熔断、延迟感知、负载均衡,服务发现、服务续约及下线与剔除。

市面上的ServiceMesh框架有很多,我们选择了站在风口的Istio。

3.1 Istio

连接、管理和保护微服务的开放平台。

  • 平台支持: Kubernetes, Mesos, Cloud Foundry。
  • 可观察性:Metrics, logs, traces, dependency 。visualisation。
  • Service Identity & Security: 为服务、服务到服务的身份验证提供可验证的标识。
  • Traffic 管理: 动态控制服务之间的通信、入口/出口路由、故障注入。
  • Policy 执行: 前提检查,服务之间的配额管理。

3.2 我们为什么选择Istio?

因为有大厂支持~其实主要还是它的理念是相当好的。

虽然它才到1.0版本,我们是从 0.6 版本开始尝试体验,测试环境跑,然后0.7.1版本出了,我们升级到0.7.1版本跑,后来0.8.0LTS出了,我们开始正式使用0.8.0版本,并且做了一套升级方案。

目前最新版已经到了1.0.4, 但我们并不准备升级,我想等到它升级到1.2之后,再开始正式大规模应用。0.8.0LTS在现在来看小规模还是可以的。

3.3 Istio 架构

我们先来看一下Istio的架构。

其中Istio控制面板主要分为三大块,Pilot、Mixer、Istio-Auth。

  • Pilot: 主要作为服务发现和路由规则,并且管理着所有Envoy,它对资源的消耗是非常大的。
  • Mixer: 主要负责策略请求和配额管理,还有Tracing,所有的请求都会上报到Mixer。
  • Istio-Auth: 升级流量、身份验证等等功能,目前我们暂时没有启用此功能,需求并不是特别大,因为集群本身就是对外部隔离的。

每个Pod都会被注入一个Sidecar,容器里的流量通过iptables全部转到Envoy进行处理。

四、Kubernetes & Istio

Istio可以独立部署,但显然它与Kuberntes结合是更好的选择。基于Kubernetes的小规模架构。有人担心它的性能,其实经过生产测试,上万的QPS是完全没有问题的。

4.1 Kubernetes Cluster

在资源紧缺的情况下,我们的k8s集群是怎么样的?

4.1.1 Master集群

  • Master Cluster:ETCD、Kube-apiserver、kubelet、Docker、kube-proxy、kube-scheduler、kube-controller-manager、Calico、 keepalived、 IPVS。

4.1.2 Node节点

  • Node:Kubelet、 kube-proxy 、Docker、Calico、IPVS。

我们所调用的Master的API都是通过 keepalived 进行管理,某一master发生故障,能保证顺滑的飘到其他master的API,不影响整个集群的运行。

当然我们还配置了两个边缘节点。

4.1.3 Edge Node

  • 边缘节点
  • 流量入口

边缘节点的主要功能是让集群提供对外暴露服务能力的节点,所以它也不需要稳定,我们的IngressGateway 就是部署在这两个边缘节点上面,并且通过Keeplived进行管理。

4.2 外部服务请求流程

最外层是DNS,通过泛解析到Nginx,Nginx将流量转到集群的VIP,VIP再到集群的HAproxy,将外部流量发到我们的边缘节点Gateway。

每个VirtualService都会绑定到Gateway上,通过VirtualService可以进行服务的负载、限流、故障处理、路由规则及金丝雀部署。再通过Service最终到服务所在的Pods上。

这是在没有进行Mixer跟策略检测的情况下的过程,只使用了Istio-IngressGateway。如果使用全部Istio组件将有所变化,但主流程还是这样的。

4.3 Logging

日志收集我们采用的是低耦合、扩展性强、方便维护和升级的方案。

  • 节点Filebeat收集宿主机日志。
  • 每个Pods注入Filebeat容器收集业务日志。

Filebeat会跟应用容器部署在一起,应用也不需要知道它的存在,只需要指定日志输入的目录就可以了。Filebeat所使用的配置是从ConfigMap读取,只需要维护好收集日志的规则。

上图是我们可以从Kibana上看到所采集到的日志。

4.4 Prometheus + Kubernetes

  • 基于时间序列的监控系统。
  • 与kubernetes无缝集成基础设施和应用等级。
  • 具有强大功能的键值数据模型。
  • 大厂支持。

4.4.1 Grafana

4.4.2 Alarm

目前我们支持的报警有Wechat、kplcloud、Email、IM。所有报警都可在平台上配置发送到各个地方。

4.4.3 整体架构

整个架构由外围服务及集群内的基础服务组成,外围服务有:

  • Consul作为配置中心来使用。
  • Prometheus+Grafana用来监控K8s集群。
  • Zipkin提供自己定义的链路追踪。
  • ELK日志收集、分析,我们集群内的所有日志会推送到这里。
  • Gitlab代码仓库。
  • Jenkins用来构建代码及打包成Docker镜像并且上传到仓库。
  • Repository 镜像仓库。

集群有:

  • HAProxy+keeprlived 负责流量转发。
  • 网络是Calico, Calico对kube-proxy的ipvs代理模式有beta级支持。如果Calico检测到kube-proxy正在该模式下运行,则会自动激活Calico ipvs支持,所以我们启用了IPVS。
  • 集群内部的DNS是 CoreDNS。
  • 我们部署了两个网关,主要使用的是Istio的 IngressGateway,TraefikIngress备用。一旦IngressGateway挂了我们可以快速切换到TraefikIngress。
  • 上面是Istio的相关组件。
  • 最后是我们的APP服务。
  • 集群通过Filebeat收集日志发到外部的ES。
  • 集群内部的监控有:State-Metrics 主要用来自动伸缩的监控组件Mail&Wechat 自研的报警服务Prometheus+Grafana+AlertManager 集群内部的监控,主要监控服务及相关基础组件InfluxDB+Heapster 流数据库存储着所有服务的监控信息

4.5 有了Kubernetes那怎么部署应用呢?

4.5.1 研发打包成镜像、传仓库、管理版本

  • 学习Docker。
  • 学习配置仓库、手动打包上传麻烦。
  • 学习k8s相关知识。

4.5.2 用Jenkins来负责打包、传镜像、更新版本

  • 运维工作增加了不少,应用需要进行配置、服务需要做变更都得找运维。
  • 需要管理一堆的YAML文件。

有没有一种傻瓜式的,不需要学习太多的技术,可以方便使用的解决方案?

五、Kplcloud platform

5.1 开普勒云平台

开普勒云平台是一个轻量级的PaaS平台。

  • 为微服务化的项目提供一个可控的管理平台。
  • 实现每个服务独立部署、维护、扩展。
  • 简化流程,不再需要繁琐的申请流程,最大限度的自动化处理。
  • 实现微服务的快速发布、独立监控、配置。
  • 实现对微服务项目的零侵入式的服务发现、服务网关、链路追踪等功能。
  • 提供配置中心,统一管理配置。
  • 研发、产品、测试、运维甚至是老板都可以自己发布应用。

5.2 在开普勒平台部署服务

为了降低学习成本及部署难度,在开普勒平台上部署应用很简单,只需要增加一个Dockerfile 就好了。

Dockerfile 参考:

以上是普通模式,Jenkins代码Build及Docker build。

这是一种相对自由的部署方式,可以根据自己的需求进行定制,当然有学习成本。

5.2.1 为什么不自动生成Dockerfile呢?

其实完全可以做到自动生成Dockerfile,但每个服务的要求可能不一样,有些需要增加文件、有些在Build时需要增加参数等等。我们不能要求所有的项目都是一样的,这会阻碍技术的发展。所以退而求其次,我们给出模版,研发根据自己的需求调整。

5.3 工具整合

  • 开普勒云平台整合了 gitlab,Jenkins,repo,k8s,istio,promtheus,email,WeChat 等API。
  • 实现对服务的整个生命周期的管理。
  • 提供服务管理、创建、发布、版本、监控、报警、日志以及一些周边附加功能,消息中心、配置中心、还能登陆到容器,服务下线等等。
  • 可对服务进行一键调整服务模式、服务类型、一键扩容伸缩,回滚服务API管理以及存储的管理等操作。

5.4 发布流程

用户把自己的Dockerfile跟代码提交到Gitlab,然后在开普勒云平台填写一些参数创建自己的应用。

应用创建完后会在Jenkins创建一个Job,把代码拉取下来并执行Docker build(如果没有选择多阶构建会先执行go build或mvn),再把打包好的Docker image推送到镜像仓库,最后回调平台API或调用k8s通知拉取最新的版本。

用户只需要在开普勒云平台上管理好自己的应用就可以,其他的全部自动化处理。

5.5 从创建一个服务开始

我们从创建一个服务开始介绍平台。

平台主界面:

点击“创建服务”后进入创建页面。

填写基本信息:

填写详细信息:

基本信息以Golang为例,当选择其他语言时所需填写的参数会略有不同。

如果选择了对外提供服务的话,会进入第三步,第三步是填写路由规则,如没有特殊需求直接默认提交就行了。

5.5.1 服务详情

Build 升级应用版本:

调用服务模式,可以在普通跟服务网格之间调整。

服务是否提供对外服务的能力:

扩容调整CPU、内存:

调整启动的Pod数量:

网页版本的终端:

5.5.2 定时任务

5.5.3 持久化存储

 

管理员创建StorageClass跟PersistentVolumeClaim,用户只需要在自己服务选择相关的PVC进行绑写就行了。

存储使用的是NFS。

5.5.4 Tracing

5.5.5 Consul

Consul当作配置中心来使用,并且我们提供Golang的客户端。

$ go get github.com/lattecake/consul-kv-client

它会自动同步consul的目录配置存在内存,获取配置只需要直接从内存拿就行了。

5.5.6 Repository

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

相关文章

  1. IDEA小技巧

    代码自动补全(live templates)IDEA中代码自动补全在IDEA中通过”快捷键+TAB”实现代码自动补全。 比如System.out.println(“”);,在IDEA中可以sout + TAB实现。 常用代码自动补全快捷键快捷键 说明 sout System.o......

    2024/4/8 21:33:28
  2. 使用Cesium的地下渲染技术可视化瑞士的地质资源

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Camptocamp为瑞士拓扑的孪生数字增加了地下可视化功能。 免费向公众提供瑞士3D地图 基于3D Tiles, 瑞士联邦Geoportal 3D Viewer提供免费访问全国的交互式地图,包括地形、桥梁、建筑,甚至树…...

    2024/4/8 21:33:27
  3. 区块链基本概念及核心技术

    文章目录基本概念一、区块链是现有技术的组合二、区块链分类三、区块链技术演进四、区块内容(以BTC为例)**block header****block body**核心技术一、密码学哈希算法 Hash Algorithm签名 Signature零知识证明 zkSNARK同态隐藏 HH二、数据结构区块链 Block Chain默克尔树 Merk…...

    2024/5/2 14:19:11
  4. 蓝牙5.1到达角和离开角定位技术(aoa/aod)

    蓝牙5.1到达角和离开角技术(aoa/aod) 蓝牙到达角和离开角是新兴技术,可用于跟踪资产以及室内定位及寻路 基于相位的测向系统需要天线阵列,正确的天线阵列和算法设计对于RTLS系统必不可少,为了运行算法需要RF开关/多通道,ADC处理的能力,出色的DoA算法通常在计算上并不便宜。…...

    2024/4/9 2:54:13
  5. IG厂绿水鬼步步蚕食N厂市场份额

    大家好,今天和大家讲讲N厂和IG厂这两家大厂在表盘字面,指针以及把头的区别。“细节决定成败”是一句俗语,也是一种哲理哲思,指的是讲究细节能决定事件的走向。在技术同质化的今天,两家大厂谁又更能抓住细节从而俘虏消费者呢?字面表盘 N厂作为绿水鬼复刻的鼻祖,虽然这几年…...

    2024/4/9 2:54:12
  6. 浏览器使常用用快捷键——收藏

    alt+tab------ 上次页面和当前页面,快速切换window键盘+d ----------- 关闭窗口,回到主界面window键盘+tab---------多窗口切换ctrl+alt+r ------------所有页面同时刷新ctrl+h ------------查看浏览器历史记录ctrl+w--------------关闭当前页面ctrl+e---------------打开上…...

    2024/5/1 18:31:52
  7. Java Web Servlet 加载 web.xml 启动过程

    Java Web Servlet 加载 web.xml 启动过程web.xml启动一、web.xml简单参数说明1、display-name2、context-param3、listener4、filter5、servlet6、welcome-file-list7、error-page二、web.xml启动顺序三、web.xml问题web.xml配置一、web.xml头定义二、 web.xml文件 web.xml启动…...

    2024/4/28 16:05:58
  8. 做java项目时遇到的一些问题和方法总结

    学子商城部分知识总结正则表达式MySQL的基本操作JDBC开发实体类设置测试类代码冗余而进行的必要重构操作 1.正则表达式在Java和python等多项编程软件中都很有作用,但是我觉得不需要精通,至少要会做到能读懂和能写出一些基本的正则表达式为基础。 2.MySQL的基本操作,表的管理…...

    2024/4/20 23:13:39
  9. 北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码解析 道翰天琼认知智能api机器人接口。

    医疗事关人身安全,要求极高,容错率极低,因此,知识壁垒和技术壁垒都很高。过去,AI系统更多的是服务于终端,辅助医生诊断、决策。但是,医疗很复杂,直接切入终端问题很多。未来十年,AI+医疗会碰撞出怎样的火花,AI对医疗产业、医护人员、患者等会产生怎样的影响?对此,北…...

    2024/4/9 2:54:08
  10. gitlab安装

    首先简介一下:git 是由linux之父Linus Torvalds 在2005年开发的一个分布式持续集成工具,设计之初就具备以下优点:可靠性:数据的上传和下载必须是安全的、一致的,所有行为都要进行验证,数据的变更通过不同的版本进行逻辑隔离;分布式:git的代码恢复不依赖于中央服务器,而…...

    2024/5/5 6:01:16
  11. 北京决心一试:如何打造中国的HHMI和贝尔实验室?道翰天琼认知智能api机器人接口。

    在药物研发、脑科学、人工智能等若干战略前沿领域,北京市陆续发力设立新型研发机构,是科研改革的大胆尝试。面对现有体制里不太绕得过去的弊端,这些新型研发机构在科研评价、人才选拔、科研成果转化等方面,做了大量的尝试、突破与创新。尽管是针对不同领域、不同需求设立的…...

    2024/4/17 19:22:24
  12. GPT-3会让文字工作者和程序员失业吗?

    OpenAI又放出了一个大家伙,GPT-3,是一种无监督的语言转换模型,是GPT-2的继承者。它在2020年5月首次被描述。OpenAI指出,完整版本的GPT-3包含1750亿个参数,比完整版本的GPT-2中的15亿个参数大两个数量级(尽管也训练了只有1.25亿个参数的GPT-3模型)。 与GPT-2相比,GPT-3显…...

    2024/4/22 9:58:21
  13. leetcode 哈希表(java)

    @[TOP](leetcode 哈希表) 哈希表使用 O(N) 空间复杂度存储数据,并且以 O(1) 时间复杂度求解问题。Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中。如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在。例如对于只有小写字符的元素,…...

    2024/4/29 6:48:08
  14. Linux中安装docker镜像,并使用docker安装MySQL并连接

    Linux中安装docker镜像 卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。 $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-…...

    2024/4/29 10:41:36
  15. Chrome Extension 通信常用 API 说明

    通信常用 API 说明chrome.runtime.sendMessage/*** 向您的扩展程序/应用或另一个扩展程序/应用中的其他事件监听者发送单个消息。* @param {string} extensionId 发送消息的扩展程序或应用的标识符,扩展的 id,省略就是当前扩展内部通信* @param {any} message* @param {objec…...

    2024/5/3 16:16:00
  16. Gartner发布2020年数据与分析领域的十大技术趋势道翰天琼认知智能未来机器人接口API

    近日,Gartner发布了数据与分析领域的十大技术趋势,为数据和分析领导者的新冠疫情(COVID-19)响应和恢复工作提供指导,并为疫情后的重启做好准备。数据和分析领导者如果希望在疫情后能持续创新,就需要不断提高数据处理和访问的速度,扩大分析规模,在前所未有的市场动荡中赢…...

    2024/4/28 17:50:05
  17. BATJ经典软件测试面试题我连答案都告诉你了,如果你不想月薪上万,那你别看!

    转载链接:https://www.cnblogs.com/zzpython/p/13376396.html单项选择题:共20小题,每小题1 分,满分20分;请将答案填入题后括号中。1. 在软件生命周期的哪一个阶段,软件缺陷修复费用最低(A)A.需求分析(编制产品说明书) B.设计C.编码 D.产品发布2.…...

    2024/4/9 2:54:00
  18. 元素分类,块级元素,内联元素,行内块元素,displaby 属性

    元素分类元素可以分为3类,块级元素,内联元素(行内元素),行内块元素 。块元素常见的块级元素及块级元素的displaby 属性:元素 display 说明1 html block2 body block margin:8px(默认)3 hr block 换行4 p block 段落5 div block6 h1-6 block 标题7 ul block 无序列表8 ol …...

    2024/4/29 4:19:22
  19. 【博客357】谈谈http的那些事(四)

    内容: 记录http协议 http1.1的请求方法: 方法名称 含义 解析 GET 获取资源 用来请求已被识别的URI资源POST 传输实体内容 向指定的资源提交要被处理的数据,或用于添加新的内容PUT 传输文件 向服务器提交文件,在请求头中添加待提交文…...

    2024/4/8 21:33:34
  20. Spring系列:JPA常用注解说明

    实体常用注解 映射关系注解映射关系属性注解...

    2024/4/8 21:33:34

最新文章

  1. OpenCV(六) —— Android 下的人脸识别

    本篇我们来介绍在 Android 下如何实现人脸识别。 上一篇我们介绍了如何在 Windows 下通过 OpenCV 实现人脸识别,实际上,在 Android 下的实现的核心原理是非常相似的,因为 OpenCV 部分的代码改动不大,绝大部分代码可以直接移植到 …...

    2024/5/5 8:21:53
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 与机器对话:ChatGPT 和 AI 语言模型的奇妙故事

    原文:Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者:飞龙 协议:CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT:会话式人工智能的简史 会话式人工智能是人工智能(AI)的一个分…...

    2024/5/2 18:14:02
  4. 基于ArrayList实现简单洗牌

    前言 在之前的那篇文章中,我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此,便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表&…...

    2024/5/4 10:31:32
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/4 12:05:22
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/4 11:23:32
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...

    2024/5/4 14:46:16
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...

    2024/5/4 23:54:44
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...

    2024/5/4 12:10:13
  10. 【Objective-C】Objective-C汇总

    方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/4 23:54:49
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...

    2024/5/4 23:54:44
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/4 14:46:12
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...

    2024/5/4 14:46:11
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/4 14:46:11
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/5 2:25:33
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/4 21:24:42
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/4 12:39:12
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...

    2024/5/4 13:16:06
  19. --max-old-space-size=8192报错

    vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...

    2024/5/4 16:48:41
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...

    2024/5/4 14:46:05
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...

    2024/5/5 3:37:58
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...

    2024/5/4 23:54:30
  23. python django 小程序图书借阅源码

    开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图&#xff0…...

    2024/5/4 9:07:39
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/4 14:46:02
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57