简介:本文整理自作者于 2020 年云原生微服务大会上的分享《进击的 Spring Cloud Alibaba —— 框架与服务》,主要阐述了云原生环境下,Spring Cloud Alibaba 如何帮助开发者实现微服务;以及在提供 SCA 开发框架基础之上,如何配合更丰富的服务来帮助开发者在阿里云上实现微服务。

头图.png

作者 | 陈曦(良名)  Spring Cloud Alibaba 项目成员,start.aliyun.com 负责人。

导读:本文整理自作者于 2020 年云原生微服务大会上的分享《进击的 Spring Cloud Alibaba —— 框架与服务》,主要阐述了云原生环境下,Spring Cloud Alibaba 如何帮助开发者实现微服务;以及在提供 SCA 开发框架基础之上,如何配合更丰富的服务来帮助开发者在阿里云上实现微服务。

阿里巴巴云原生公众号后台回复 818 即可获取直播回看地址和大会 PPT 合集。

Spring Cloud Alibaba 微服务框架

1. Spring Based Framework 已经成为事实标准

根据 Jakarta 2019 年的调研报告,Spring Boot 拥有非常高的占比。熟悉 Java 语言的同学,应该对 Spring 框架都不会陌生。其倡导的依赖倒置、面向切面编程等特性已经形成了 Java 语言的事实标准,几乎所有三方框架都会提供对 Spring 框架的支持。

1.png

根据 JetBrings 2019 年的调研报告,61% 的用户会选择 Spring Boot 来代替传统的应用服务器。

2.png

这里有一个很有意思的点,为什么要“代替应用服务器”呢?回顾前面云原生的特点,我们要弹性,要自包含,要独立进程等等。如果此时部署应用还需需要启动应用服务器会将整个依赖层级复杂化。同时,云原生的各种弹性与调度能力,都同传统的应用服务器存在重叠。直接使用 Spring Boot 作为应用启动入口就成为更加“云原生”的选择。

回到微服务&云原生这个场景的下,Spring 提供用来支持开发工作的框架就是 Spring Cloud。

2. Spring Cloud 以微服务为核心的分布式系统构建标准

同样,还是先看下 Spring 是如何定义 Spring Cloud 这套框架的:

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.

这里提到了两个关重要特征:

  • 分布式系统中的常见模式
  • 任何分布式环境

“分布式系统中的常见模式”给了 Spring Cloud 一个清晰的定位,即“模式”。也就是说 Spring Cloud 是针对分布式系统开发所做的通用抽象,是标准模式的实现。这个定义非常抽象,看完之后并不能知道 Spring Cloud 具体包含什么内容。再来看一下 Spring 官方给出的一个 High Light 的架构图,就可以对这套模式有更清晰的认识:

3.png

可以看到这个图中间就是各个 Microservice,也就是我们的这个微服务的实现,周边周围的话就是去围绕这个微服务来去做各种辅助的信息事情。例如分布式追踪、服务注册、配置服务等,都绕微服务运行时所依赖的必不可少的的支持性功能。我们可以得出这样一个结论:Spring Cloud 是以微服务为核心的分布式系统的一个构建标准。

3. Spring Cloud Alibaba 的定位

既然说 Spring Cloud 是标准,那么自然少不了针对标准的实现。这里,为大家介绍下 Spring Cloud Alibaba 这套实现。先给出下面这张图帮助大家理解 Spring Cloud Alibaba 的定位:

4.png

这里给大家这么一个公式,这个叫做:“3 加 2”。

3 指的就是图中深色的部分,其实它就是 Spring Cloud 标准,一共有 3 层。中间颜色最深的部分就是及整个微服务最核心的内容,包括了“ RPC 调用”以及“服务注册与发现”。第二层,也就是围绕着核心的这一圈,是一些辅助微服务更好的工作功能,包括了负载均衡、路由、网关、断路器,还有就是追踪等等这些内容。再外层的话,主要是一些分布式云环境里通用能力。

“3 加 2”中的“2”,指的就是上图中最外面这一圈。这一部分就是这个我们 Spring Cloud Alibaba 的一个定义,它其实包含两个部分的内容:

右上部分是对于 Spring Cloud 标准的实现。例如,我们通过 Dubbo 实现了 RPC 调用功能,通过 Nacos 实现了“服务注册与发现”、“分布式配置”,通过 Sentinel 实现了断路器等等,这里就不一一列举了。

左下部分是我们 Spring Cloud Alibaba 对阿里云各种服务的集成。可能很多同学会有这样的一个问题:为什么要加上这一部分呢?此时回头审视一下 Spring Cloud ,它仅仅是一个微服务的一个框架。但是在实际生产过程中,单独使用微服务框架其实并不足以支撑我们去构建一个完整的系统。所以这部分是用阿里帮助开发者完成微服务以外的云产品集成的功能。

这里可能会很多同学会有这么一个担心:是不是使用了 Spring Cloud Alibaba,就会被阿里云平台绑定呢?在此,我们明确的告诉大家,这是不会的。为什么这么说呢?如上面说的,“3 加 2”中的 2 是被分为两个部分的。其中对 Spring Cloud 的实现是完全独立的,开发者可以只是用这部分实现运行在任何云平台中。当然,另一部分,由于天然是对阿里云服务的集成,这部分是和平台相关的。这里给开发者充分的自由,选择只是用其中的部分还是全部产品。当然,我们也非常欢迎开发者选择使用阿里云的全套服务,我们也会尽量保证使用整套产品时的连贯性与开发的便利性。

4. Spring Cloud 各套实现对比

Spring Cloud 作为一套标准,它的实现肯定不止一套,那么各套实现都有什么区别呢?我们来一起看一下下面这张图:

5.png

可以发现 Spring Cloud Alibaba 是所有的实现方案中功能最齐全的。尤其是在 Netflix 停止更新了以后,Spring Cloud Alibaba 依然在持续更新和迭代。

6.png

从 18 年 7 月份 Spring Cloud Alibaba 正式提交代码开始,就得到了大家广泛的关注。截止今天,Spring Cloud Alibaba 一共获得了超过了 1.5 万的 star 数,已经的领先于所有其他实现的总和。

根据今年 X-lab 开放实验室刚刚发布的《2020 年微服务领域开源数字化报告》,Spring Cloud Alibaba 已经成为最活跃的 Spring Cloud 实现。

7.png

数据来源《2020 年微服务领域开源数字化报告》,公众号后台回复关键词“微服务报告”获取报告全文。

5. Spring Cloud Alibaba 生态

作为一个云厂商,我们提供的服务是非常丰富的。可以看到除了围绕着 Spring Cloud 的标准实现以外,还有包括的数据、资源、消息、缓存等各种类型的服务。在不同类型的服务下,也有很多具体的产品可供用户选择。

8.png

这里罗列典型而非全部产品。更多的内容,可以参考阿里云官网

6. Spring Cloud Alibaba 用户数

截止到今天,Spring Cloud Alibaba 获得了数超过 1.5w 的 star 数。同时在 Github 上的项目依赖,就是对 Spring Cloud Alibaba 产生依赖关系的产品,也超过了 6000。最重要的,使用 Spring Cloud Alibaba 的公司超过 1000 家。当然不只是外部的公司在使用,我们自己其实也在使用。那经过了双十一的洗礼,其实整个这套框架它的这个稳定性可靠性都得到了印证。

9.png

从框架到服务

1. 提供开发者服务,更完整的 Java 开发体验

作为一套框架,Spring Cloud Alibaba 为开发者提供了便捷的编程模型,但是从开发者完整的工作流程上看,是不是还缺点什么?设想一下这样一个场景:作为一个开发者,应该说都做过这样的一个事情,就是从头从零开始去构建一个工程,一直到功能开发这么一个过程的一个过程:

10.png

从设计到功能开发,是一个比较长的一个周期的:先要做抽象设计,包括概要设计、架构设计等;然后是一些具象的设计,还有各种框架搭建与架构验证等工作。

在抽象设计阶段,我们要确定整体的架构模式,包括了微服务、Serverless、事件驱动等。以及在这些架构模式下各个应用的领域边界划分。

在具象设计阶段,我们要确定诸如应用分层、分包规则的。这里也有很多的标准可以参考:MVC 分层架构、DDD 领域驱动设计架构等等。在此之后,还有具体的业务模型与接口设计,这些暂不在本文的讨论范围之内。

在实现阶段,需要引入各种框架,并通过配置将这些框架与应用集成起来,完成工程骨架的创建。

最后,还需要将这套骨架运行起来以验证其可行性。

所有上面的工作完成以后,才可以正式的开始业务逻辑实现工作。

在上面的流程里,Spring Cloud Alibaba 能起到的作用是有限的。作为一套框架,为开发者带来的是编程模型上的便利。为了能让开发者更加轻松的完成这一系列流程,我们为大家带来两个重要的产品:“Java 工程脚手架”和 “Sandbox 云沙箱”。

2. Java 工程脚手架:更适合亚太区 Java 开发者的脚手架

11.png

很多开发者应该跟我一样,都有过这样的经历:创建新应用时,先找一个我们最熟悉的一个老应用,把它里边的业务代码全部清理干净。然后相关的各种配置名称全部改掉,最终做出一个空的一个应用模板。再把这个应用模板拿过来改个名子,就变成了一个新的应用。

当然可能有的同学会做的更多一些,例如长期维护这么一个空白模板在那里。下次拿过出来之后再改改个名字,就是一个新的应用。

这样做可能是一个相对保险的方案,但是缺点也非常明显:

  • 版本老旧,新特性无法享受
  • 团队知识无法沉淀
  • 重复劳动

我们通过提供 Java 工程脚手架来解决这个问题。下面就是 Java 工程脚手架的页面:

12.png

在这里,开发者设置项目的基本信息,例如:开发语言、Java 版本、Spring Boot 版本等内容。

除了基本信息以外,这个平台还提供多种架构模式可供选择。在上图中可以看到,第一个是分层架构,这个是一个很传统的多层架架构模型,包括我们经常说的这种三层架构、五层架构。另一个架构选项是 COLA。COLA 其实是一个典型的一个 DDD 的架构,如果希望在自己团队里边去实践标准的六边形 DDD 架构的话,也是可以去选择他。未来我们可能会去做更多的例如说 MVC 架构,或者是事件驱动的架构模型,提供给大家。

最下边是组价依赖部分,开发者可以在这里选择项目需要使用的组件。这里的选择非常丰富,到从数据库到开发工具、消息、web 等等,一共 100+ 的组价可供大家选择,可以说基本上覆盖了应用开发的所有方面。同时,这里当然不会缺失 Spring Cloud Alibaba 提供的任何组件。

我们希望通过这个工具,尽量减少开发者在创建应用过程中各种查询资料以及繁琐的配置工作。只需要在平台上做一些简单的选择,就可以将工程骨架生成完成。

在 Java 工程脚手架里,除了直接在 WEB 平台配置和下载工程,我们还提供了基于 IDE 的插件,进一步方便用户的使用。

经常光顾 Spring 的同学,应该对这个界面应该非常熟悉,这和 Spring 官方提供的脚手架非常相似。那么我们的工程脚手架和 Spring 官方的实现有什么区别呢?是不是就是对官方功能的镜像呢?我们看一下下面的对比:

13.png

区别主要在如下几个方面:

  • 样例代码 & 典型配置:Spring 官方其实是没有这些样例代码以及配置漏记的。在我们的实现里,会添加这一部分,目前主要覆盖了 Spring Cloud Alibaba 的组件,后面会继续覆盖更多的组件;
  • 阿里云组件支持:Spring 要保证平台中立的特性,各厂商的组件自然是不会支持的,我们提供 Spring Cloud Alibaba 的全部开源组件和阿里云平台服务组件,同时也会把这些部分独立出来,避免同其他部分的组件揉在一起,影响用户选择;
  • 工具链:Spring 官方的实现里,例如 IDEA 的插件是专业版里才有,也就是说这是收费的,我们使用 Cloud Tookits 插件实现相关功能,并且完全免费,同时,我们的平台 100% 支持官方插件链接;
  • 网络环境:Spring 官方服务部署在国外,国内访问不稳定;
     
  • 应用架构:这部分在官方实现里是没有的,也是我们未来会重点建设的部分,应用架构在实际生产过程中是不可或缺的。

这套本地化的脚手架也获得了 Spring 官方布道师 Josh Long 的推荐。我们会尽量延续 Spring initiliazr 的产品体验,功能上我们只做增量,同时这个增量给用户保留了充分的选择的自由权益。就是说我们增加这个东西,你可以完全不要,此时整体上和官方提供的产品体验是一模一样的,这是我们整个产品的继续发展会一直坚持的原则。

3. Sandbox 云沙箱:免费、快速验证云产品

第二个服务产品,就是我们的 Sandbox 云沙箱。我们来设想这样一个场景:今天创建一个新的应用,在基础骨架代码开发完成以后,需要去运行它,以验证它的可行性或者是发现其中有没有坑,此时定需要一个运行环境。我如果自己去搭建完整的后台服务运行环境,要么选择从云服务商购买,要么自己本地搭建。这两个选择一个费钱、一个费力。

14.png

除了验证新应用的架构,还有很多其他场景也会有类似的困难。例如,需要验证一个云服务产品的可行性,学习相关组价的使用等等。

那么有沒有什么更好的办法呢?这就是 Sandbox 云沙箱需要解决的问题。

15.png

这个产品有三个主要的特性:便捷、真实和免费。

  • 便捷:我们为用户准备了相关代码&开发环境&运行环境,只需要点点鼠标就可以完成整个项目的创建,并部署在我们提供的隔离环境中,中间过程甚至不需要键盘;
  • 真实:指的是整个产品非常贴近实际工作场景,从开发者角度看,整个项目研发流程,包括代码 checkout / checkin,开发工具,编译流程、部署流程等,使用的都是真实生产流程;从运行时角度看,所有的底层服务使用的都是阿里云提供的真实服务,没有任何单独定制的服务存在;
  • 免费:所有的服务不会像用户收取费用,甚至所有计费行为的发生,都不会跟用户的账号发生关联。

这套产品支持完整的分布式场景。很多其他的厂商也有类似的产品,但是都只能提供基于单一容器或者主机的案例,这和实际环境中多应用的分布式环境是有差距的。而这个问题,在我们的沙箱产品里是不用担心的。开发者在应用部署后的项目有半小时的使用时间,同时流量&并发数等也会存在一定的限制。

下面来看一下产品的界面:

16.png

左边是产品的手册 & 说明部分。这里会包含说当前项目的功能说明、应用架构,以及如何部署和访问这些应用的操作步骤等。一些项目中使用到的技术点以及这些相关知识,也都会在这里呈现给用户。这部分文档的目的,就是方便用户去学习和理解当前的案例。

右边的部分是应用列表。在微服务场景下,一个完整的产品通常需要多个应用组成分布式的集群协同工作。这里就是用来陈列相关的应用列表,同时包含了针对这些应用的操作入口。

图片中的案例是一个任务管理器产品,功能相对简单。但是麻雀虽小五脏俱全。这个产品包含两个应用:

  • 一个服务端,的包含了这个任务管理器的所有业务逻辑,以及下层的持久化能力等;
  • 一个 WEB 客户端,包含了所有前端页面逻辑、与前端通信的控制器层。

这两个应用通过一个注册中心来实现服务的注册&发现。最终实现一个完整的任务管理器产品。

点击“开发”按钮,打开一个 WEB-IDE 来查看和修改对应应用的代码:

17.png

这个 WEB-IDE 和开发者日常使用的 IDE 是一样的,都是左侧代码树,右侧代码编辑器的标准布局。即使是不熟悉这个产品的用户,也可以非常快的上手,甚至不需要学习过程。如果需要部署这个应用,只需要在“运维”功能下,点击“部署”按钮,此时只需要等待部署完成即可。在部署过程会有很多的日志输出,都可以通过“输出”窗体浏览:

18.png

部署完成以后,会向 WEB-IDE 返回一个访问地址,开发者只需要点击这和地址就可以访问这个应用。下图是实际的访问效果。可以看到,两个应用,一个是任务管理器的 web 操作页面、一个是后台数据库管理页面:

19.png

通过上面的步骤,开发者可以将案例快速部署起来。先部署试用,然后去学习和修改代码,最后再部署验证。通过这样的循环,可以让开发者很快学习和理解案例的功能和相关技术点。

最后再看一下整个沙箱的系统架构流程以及一些关键点:

20.png

通过颜色,可以很清楚地看到,沙箱的资源被分为两个部分。蓝色的部分其实是用户独享的资源,包括了:私有代码仓库、部署流程、运行环境等。这一部分在每个用户间相互隔离。尤其是在右下角可以看到,完整的运行环境被隔离在独立的专有网络中。如果是多个应用,这些应用都会链接再同一个网络里边。橙色的部分是公共的资源,这里只有 2 个:案例代码仓库和沙箱后台服务。

第二组概念是:临时资源和长期资源。

临时资源,包括部署流程和运行流程在内。这些资源会在一段时间后会被销毁,从而保证整个产品成本的可控,也避免部分用户对这套产品的滥用。如果需要在资源释放以后,继续使用,只需要重新部署这个应用即可。长期资源的就是会长期存续的资源。可以看到,用户的私有代码仓库就是长期资源。也就是说,无论运行环境是否存续,用户的代码都会一直得到保留。这部分代码,用户可以随时下载到自己本地,并在自己的环境中运行它们。

后续规划

下面是今年,整个 Spring Cloud Alibaba 以及相关服务产品的整体规划:

21.png

后续我们会基于 Sandbox 云沙箱上线七天系列课程。通过这个基础知识学习+实操来更好的掌握微服务的相关技术,尤其是对 Spring Cloud Alibaba 的使用。未来还会在沙箱中上线完整的电商商场的案例,包括具有高并发场景的秒杀案例。最后,对 Spring Cloud Alibaba 本身,也会继续建设,集成不少于 20 种阿里云中常用的云产品。进一步提升开发便利性。

如果你对这个产品有进一步了解的兴趣,或者是有什么更好的意见或者建议,欢迎加入钉钉群(钉钉搜索:34930571),一起来交流、吐槽。

阿里巴巴云原生公众号后台回复 818 即可获取直播回看地址和大会 PPT 合集。

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

原文链接:https://developer.aliyun.com/article/771267?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Python 再看笔记( 1:基本数据类型)

    Python 再看笔记( 1:基本数据类型) 最近总觉得没能很好地掌握python,没有一种得心应手的感觉。在二零二零年二月二十二日,准备再过一遍,加深印象,并做笔记方便日后翻阅。**注:**本文参考菜鸟教程。目录标准数据类型 数字 字符串 列表 元组 集合 字典 非典型数据类型转换…...

    2024/4/26 19:53:39
  2. 三角函数中和差角公式的编辑方法

    上一篇文章中介绍了三角函数中的和差化积公式的编辑方法,今天就来介绍一下和差角公式的编辑方法,和差角公式是三角函数中非常重要的一类公式。具体步骤如下:步骤一 打开专业的公式编辑软件MathType 7 ,在输入板中输入sin(αβ)。首先在输入板中输入sin(),紧接着在括号…...

    2024/5/5 14:12:06
  3. 【无人机】【2013.06】自主式无人机在搜救中的应用

    本文为挪威科技大学(作者:Vegard B Hammerseth)的硕士论文,共212页。 本报告介绍了一种使用自主无人机加强搜救行动的方法,并采取了使该系统投入使用的第一步。通过使用无人驾驶飞机,救援人员需要的经验更少,无人机专家可以在这方面介入更进一步的工作。由于自主性,无人…...

    2024/4/26 6:04:35
  4. 《初级会计实务》考试学习分享之第二章 ——资产

    目 录[本章学习基本要求][预计考试内容]第一节 货币资金一、库存现金二、银行存款三、其他货币资金第二节 应收及预付款项一、应收票据二、应收账款三、预付账款四、应收股利和应收利息五、其他应收款六、应收款项减值第三节 交易性金融资产一、交易性金融资产的内容二、交…...

    2024/4/23 5:52:04
  5. 学习记录-验证码绕过、密码找回漏洞

    学习记录-验证码绕过、密码找回漏洞 注:文章仅用于学术交流,不用于其它用途,不足之处,多多指出 一、验证码分两种: 1.验证码是一种区分用户是计算机还是人的公共全自动程序(比如登陆的时候要填写的) 2.识别身份,比如短信验证码、电话验证码、邮箱验证码 二、验证码有什…...

    2024/4/11 17:15:13
  6. 使用vscode连接手机查看vue移动端页面

    步骤:1.在cmd中查看ip:cmd调取控制台,输入ipconfig,ipv4即为本机ip2.在vue.config.js(或config/index.js)中配置host和port,此步骤可解决运行vue项目后NetWork:unavailable:3.将手机和电脑链接同一网络4.此时,手机访问电脑访问的项目地址即可访问到页面,(若手机打不开…...

    2024/4/21 20:11:38
  7. [AC自动机]ZOJ.3430 Detect the Virus

    先解码,一定注意因为这个码的范围在0~255之间,char型存不下,所以改为int型存储。因为没有在每次query使memset vis为0,wa了一个小时! #include<bits/stdc++.h> #define debug(x) cout<<#x<<" is "<<x<<endl #define pb push_back…...

    2024/4/28 7:15:12
  8. java中的锁与同步

    一、锁的一些概念:锁机制:包括互斥锁、条件变量、读写锁 *互斥锁提供了以排他方式防止数据结构被并发修改的方法。 *读写锁允许多个线程同时读共享数据,而对写操作是互斥的。 *条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下…...

    2024/4/26 16:23:32
  9. es默认最大行数问题

    es默认结果集最大行数为10000行,超过10000行 会报错,解决方法: 一,修改配置 语句PUT /index/_settings{ "index.max_result_window" :"500000"}//最大行数查看 GET /index/_settings再次查询 正常二,采用滚动搜索 Scroll 一般搜索请求都是返回一"…...

    2024/4/21 22:14:02
  10. 数学建模国奖论文2019-C-C308分析

    讲解目录问题C 机场的出租车问题一、通过题目我们得知:二、通过论文摘要我们得知:三、第一题解析问题重述对第一题的描述问题分析对第一题的描述问题一的模型建立与求解四、第二题解析:问题重述对第二题的描述问题分析对第二题的描述问题二的模型建立与求解五、第三题解析:…...

    2024/5/1 8:13:32
  11. WebGL探索——抉择:实践方向

    WebGL探索——抉择:实践方向跨出第一步新的改变常见应用BabylonJSThreeJSLayaboxJSSceneJSThinkJSThingJS犹豫的方向动起手来,干他丫的 跨出第一步 最初接触到WebGL是在2016年,有客户来咨询,“能不能做一个APP让我在手机上看到设计的3D模型”,拿到这个需求的时候立马就想到…...

    2024/4/28 4:50:05
  12. 2020版影视制作学习路线图(含大纲+视频+工具+书籍+面试)

    一、2020新版影视制作学习路线图—各阶段学习目标点击查看高清大图 二、2020新版影视制作学习路线图—各阶段课程案例点击查看高清大图 三、2020新版影视制作学习路线图—各阶段学习大纲点击查看高清大图 四、2020新版影视制作学习路线图—各阶段学习知识点...

    2024/4/16 7:11:35
  13. Element UI Tree 树形控件,数据回填存在重大bug,附带解决方式

    Element UI Tree 树形控件,数据回填存在重大bug,附带解决方式问题描述:解决方案: 问题描述: 异步加载数据,getPositionTreeByPost是请求数据接口,default_checked_keys是回填的节点ID,default_expanded_keys是回填展开的节点回填数据渲染结果默认选中的节点是20141119、…...

    2024/4/26 7:09:44
  14. Stream的Collectors.groupingBy支持key为null

    Stream的Collectors.groupingBy支持key为null进行分组 场景 在使用Collectors.groupingBy分组时,如果分组的字段中有值为null,会抛出空指针异常 例如: // An highlighted block calss User{private Integer age;private String sex; }public static void main(String[] args){U…...

    2024/5/4 18:09:33
  15. Java写CSV文件双引号逗号不转义

    问题 CSV文件默认逗号换单元格,现想将一对字符串写入CSV的同一单元格中。字符串内容是json格式{“0”:1000,“100”:59,“22”:12}这里既有双引号也有逗号。不让逗号转义直接将内容加上双引号包含起来即可。 解决方法 String data = "{\"0\":1000,\"100\&…...

    2024/4/23 5:59:27
  16. Hadoop生态——Hive

    文章目录Hive1.*描述一下Hive动态分区和分桶使用场景和使用方法?1.分区2.分桶面试指导&技巧注意Hive是怎么集成HBase的?具体讲讲?注意面试指导&技巧3.Hive查询的时候on和where有什么区别?为什么?面试指导&技巧4.Hive里面的left join是怎么回事?它是怎么执行的…...

    2024/5/3 9:06:21
  17. JSON的两个方法(JSON转字符串和字符串转JSON)

    JSON的两个方法(JSON转字符串和字符串转JSON)//JSON javaScript Object Notation//JSON是一种数据格式 只要符合key:value 这种格式的都叫做JSON//数组是JSON的一种 对象也是JSON的一种//JSON是一种数据格式//他有多种表现形式//第一种就是数组和对象//第二种就是字符串形式…...

    2024/4/28 5:36:21
  18. Vue轻量级后台管理系统

    https://blog.csdn.net/FTL_NXY/article/details/108304698?utm_medium=distribute.pc_category.none-task-blog-hot-4.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-4.nonecase&request_id=...

    2024/4/11 17:15:04
  19. T237 删除链表中的节点

    题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 class Solution {public void deleteNode(ListNode node) {node.val = node.next.val;node.next = node.next.next;} }...

    2024/4/11 17:15:02
  20. kali设置静态ip地址

    1、查看网卡: root@kali:~# ifconfig如果ifconfig命令不可用,使用apt-get安装: root@kali:~# apt-get -y install net-tools或者使用ip addr查看: root@kali:~# ip addr2、修改network配置文件 文件位置: /etc/network/interfaces原始文件内容(修改前): root@kali:~# c…...

    2024/4/17 15:59:33

最新文章

  1. 接口测试及常用的接口测试工具(Postman/Jmeter)

    &#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接…...

    2024/5/6 19:57:05
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/6 9:38:23
  3. 零基础 HTML 入门(详细)

    目录 1.简介 1.1 HTML是什么? 1.2 HTML 版本 1.3 通用声明 2.HTML 编辑器 3.标签的语法 4.HTML属性 5.常用标签 5.1 head 元素 5.1.1 title 标签 5.1.2 base 标签 5.1.3 link 标签 5.1.4 style 标签 5.1.5 meta 标签 5.1.6 script 5.2 HTML 注释 5.3 段落标签…...

    2024/5/5 8:40:44
  4. Go语言中如何实现继承

    完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念&#xff0c;但可以通过嵌入类型&#xff08;embedded types&#xff09;来实现类似的功能。嵌入类型允许一个结构…...

    2024/5/5 8:37:47
  5. 416. 分割等和子集问题(动态规划)

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

    2024/5/6 18:23:10
  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/6 18:40:38
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

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

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

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

    2024/5/6 7:24:07
  9. VB.net WebBrowser网页元素抓取分析方法

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

    2024/5/5 15:25:47
  10. 【Objective-C】Objective-C汇总

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

    2024/5/6 6:01:13
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/6 7:24:06
  12. 【ES6.0】- 扩展运算符(...)

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

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

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

    2024/5/5 18:50:00
  14. Go语言常用命令详解(二)

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

    2024/5/6 0:27:44
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

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

    2024/5/6 7:24:04
  16. 【NGINX--1】基础知识

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

    2024/5/6 7:24:04
  17. Hive默认分割符、存储格式与数据压缩

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

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

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

    2024/5/6 7:24:03
  19. --max-old-space-size=8192报错

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

    2024/5/5 17:03:52
  20. 基于深度学习的恶意软件检测

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

    2024/5/5 21:10:50
  21. JS原型对象prototype

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

    2024/5/6 7:24:02
  22. C++中只能有一个实例的单例类

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

    2024/5/6 7:24:01
  23. python django 小程序图书借阅源码

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

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

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

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

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

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

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 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系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

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

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

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

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

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

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

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

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

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

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

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

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