容器为王的时代-程序员宅基地

640?wx_fmt=jpeg

2019年,我们预测在企业应用程序开发方面,将会出现一个重大转折,应用运行环境将从传统的虚拟机(VM)转向容器和Kubernetes容器编排。确切的讲,我们预测包括如下几点:
  • 未来将是多云并存的时代。Docker容器与Kubernetes共存。公共云对外提供API服务接口,从调用结构看,好比是以前私有大型机的新表现形式。

  • VMware虚拟机的“提升和转变”的上云迁移方式,所带来的花费将会比客户预期要昂贵很多。虽然将应用移植或重构到Kubernetes不需要预付费用,但这通常意味着在运营阶段需要更多的费用。

  • Java没有过时,它还可能在提升、转移应用上云,以及在云原生环境下完全重构应用的开销方面扮演重要的中间角色。Java可能是“移动和改进”的轻便版本。

  • 联想很大可能会考虑收购SUSE和超微硬件。


AWS、思科、谷歌、IBM、微软、甲骨文、红帽和VMware最近都宣布了自己的战略产品计划,都已经在布局2019年。Cloud Native Computing Foundation的KubeCon/CloudNativeCon也发布了预期外的两场私有云公告。戴尔技术收购VMware股票的申请已获股东批准并生效;红帽公司的股东将在1月投票表决IBM对红帽提出的收购要约。


什么是私有云?

640?wx_fmt=png


私有云目的在于构建基础设施即服务(IaaS)或平台即服务(PaaS)。真正的私有云必须具有以下属性:
  • 用户自己管理云服务平台。这是区别云服务类型的中心原则。

  • 安全的单租户解决方案。私有云必须是付费的企业或用户所有。

  • 可透明地伸缩应用程序资源。在常规的混合云业务模型,相同的应用程序映像必须同时存在于私有云和公有云平台。如果应用程序可以从私有云扩展到多个公有云(多云环境),那将会获得额外的受益。

  • 在运行状态下,数据和应用程序相对松耦合。软件定义网络(SDN)和软件定义存储(SDS)是区别于传统IT架构及所运行应用系统的关键。


OpenStack与红帽OpenShift

640?wx_fmt=png


OpenStack一直是私有云市场的活跃份子,所谓的离开,都是对它的误解。
  • 华为的FusionCloud,浪潮的InCloud和腾讯的TStack等私有云方案,全部都是OpenStack原生化部署。除此之外,OpenStack还是华为和腾讯公有云的框架。华为还在其公有云上采用FusionCloud容器引擎来支持Kubernetes原生环境。

  • 超微认证了Canonical和SUSE的OpenStack发行版。

  • 联想认证了SUSE的容器即服务(CaaS),该服务可以在OpenStack、公共IaaS和PaaS平台上运行。

  • 红帽在其OpenStack发行版之上构建了OpenShift,是部署Docker和Kubernetes的容器解决方案。Red Hat的OpenStack和OpenShift发行版得到了大多数公有云、私有云以及全球主流服务器制造商的认证。


红帽最近推出了OpenStack Bare Metal认证。服务器供应商可以用此认证自己的服务器产品,符合认证的硬件可以由OpenStack Bare Metal 平台(OpenStack Ironic项目的产品化落地)远程管理。OpenStack Bare Metal兼容服务器厂商的管理平台,例如戴尔EMC的iDRAC、惠普的iLO,也兼容智能平台管理接口(IPMI)和Redfish等。这个认证和管理举措意义重大,将加速企业在私有云中采用Red Hat OpenStack和OpenShift产品。
然而,在2018年10月下旬,IBM宣布了收购红帽的意向(红帽股东将在2019年1月就收购进行投票)。但悬而未决的收购促使IBM的数据中心架构部门和公有云竞争对手(戴尔和VMware等)着手评估Red Hat的OpenStack和OpenShift的替代方案。


Kata容器和AWS Firecracker

640?wx_fmt=png


Kata容器是基于QEMU的轻量级(低资源使用)虚拟机,是设计用于在OpenStack框架上运行Docker和Kubernetes。OpenStack基金会在去年的KubeCon上宣布Kata容器项目和社区工作组。自那以后,Kata容器项目进展迅速,尽管目前还没有发布任何私有云产品,但却获得了华为和腾讯等中国CSP的大力支持。
尽管运行于OpenStack框架的Kata容器设计创意非常棒,但就在同年的11月底,AWS在它的Re: Invent大会上也发布了一个开源项目——Firecracker。一款快速、安全的微虚拟机服务,同样具有轻量资源使用特性。
AWS基于Linux内核虚拟机(KVM)构建了Firecracker,目标成为QEMU虚拟机管理器的替代方案。虽然,Firecracker理论上也可以运行在OpenStack上,但是AWS只聚焦在容器运行时,并将Firecracker部署在AWS的Lambda和Fargate公有云服务的底层。这也意味着Firecracker已经是非常的成熟。
Firecracker的出现似乎是Kata容器的直接竞争对手。让我们看看这2个项目未来几个季度的进展情况。在短期内,Firecracker还不能用于运行Docker或Kubernetes。
640?wx_fmt=png AWS Firecracker 架构(source:AWS)


公有云服务私有化

640?wx_fmt=png


今年,谷歌云和AWS加入了原先阿里云(Alibaba Cloud)、百度云和微软Azure的战团,将它们部分定制的公共云服务嵌入到私有云市场,能够做到以单个服务器机柜的形式,软硬一体地部署到客户机房。
阿里云推出了基于Kubernetes的容器服务,设计了自有的PouchContainer容器系统(处于向Kata容器过渡的阶段)。不过,还没有在阿里的Apsara Stack私有云企业版中明确宣布支持Kubernetes。因为Apsara Stack企业版已经支持Docker,因此,我们预计支持Kubernetes应该是2019年的事情。有需要的用户可以提前在现有服务器上安装ApsaraStack企业版。
百度云支持Kubernetes,百度云的ABC-STACK私有云框架支持IaaS,但不清楚是否支持容器或Kubernetes。百度云按照Scorpio项目规范,将特定配置的ABC服务器预安装到机柜里,并在这之上安装ABC-STACK后,交付给客户。
微软Azure从9月份开始在Azure Stack中支持Red Hat的OpenShift容器平台。微软最近在Azure Stack上发布Kubernetes Marketplace的预览版本。与生产软件相比,微软Azure预览版减少或改变了服务条款。因为模板都是由Azure容器服务引擎生成的,所以Kubernetes市场与微软的Azure公共云的模版是一致的。所生成的集群运行的容器与Azure Kubernetes Service(AKS)的容器相同,并使用Azure资源管理器(ARM)模板为独立的Kubernetes集群提供部署和分配资源。
微软Azure Stack只能在微软认证过的硬件堆集上运行,这些硬件来自于微软的集成系统合作伙伴,包括Avanade、思科、戴尔EMC、惠普、华为、联想和Terra等。据说微软及其集成系统合作伙伴还没有大量销售Azure堆栈。客户故事很少,估计从合作伙伴那里购买的硬件也很少。
Microsoft Azure还是云原生应用程序包(Cloud Native Application Bundles,CNAB)的赞助商,CNAB是一种与云无关的开放源码包格式规范,是微软与Docker密切合作时创建的,还得到了HashiCorp和Bitnami的广泛支持。通过使用CNAB,云运营商可以使用单个安装文件来管理分布式应用程序,在不同环境中,稳定提供应用程序资源,无需使用多个工具就可以轻松管理应用程序的生命周期。
谷歌云的Google Kubernetes Engine(GKE)On-Prem目前处于 “早期访问” 阿尔法版本。这表示只对一小组特定的测试人员开放。 Google云表示,GKE On-Prem版将为客户提供的自有数据中心GKE体验和谷歌云是一致的。 GKE On-Prem版支持在本地数据中心安装和升级Kubernetes,并可以访问谷歌云平台(GCP)服务,也可以访问到对外开放服务代理API的其他云服务。谷歌、IBM、Red Hat、SAP等公司均支持服务代理API。Google云还表示,GKE On-Prem可以安装到客户已有的服务器上。
谷歌Kubernetes引擎早期访问版本还包括一个无服务组件。这个组件可使操作员在GKE群集上部署无服务器工作负载。但GKE On-Prem版是否包括这个组件就不得而知。 
AWS在11月下旬的Re: Invent活动中宣布了AWS Outposts服务。旨在通过在客户数据中心部署AWS一体化硬件为客户提供AWS公有云体验。 我们相信AWS Outposts就是微软Azure Stack的直接竞争对手。 AWS使用自有硬件与微软OEM伙伴竞争的方式表明,它将直接与品牌服务器供应商争夺企业的 IT预算份额。 
AWS Outposts定制的私有硬件由AWS出售,并由AWS提供完全管理、更新、维护和技术支持。这些定制硬件高度类似于AWS公有云中部署设备的设计。 客户将通过AWS管理控制台订购Outposts服务器。 AWS表示,可以订购一台或多台服务器,或四分之一、半个或整个机柜,而且一系列的计算和存储选项可供选择。Outposts容器和虚拟机将在IaaS实例上运行,与AWS公有云运行方式相同。
AWS计划交付2种类型的Outposts:
  • AWS原生版本,使用AWS公有云相同的API和控制平面。

  • 基于AWS Outposts的VMware Cloud,使用VMware Cloud本地部署版本的控制面板和API。


640?wx_fmt=png

AWS Outposts 发布图(source:AWS)
AWS声称将在2019年下半年提供Outposts。我们留意到微软花了将近四年的时间将Azure的一个子集嵌入到Azure Stack中。AWS在没有前兆下,宣布这个服务有点非同寻常。Outposts发布有可能提前了一年,我们怀疑AWS能否在2019年底之前推出Outposts产品的量产版本。


云原生

640?wx_fmt=png


IBM Cloud Private(ICP)是一个基于Docker和Kubernetes的应用平台。它运行在IBM的云托管服务(CMS)之上,CMS能够管理私有云框架以及任何通用IaaS基础设施上,包括IBM云和其他公共云。
ICP可以与10月份发布的IBM 多云Manager一起使用,以提供跨多厂商公共云的混合容器功能。IBM目前支持OpenStack、Red Hat OpenShift和AWS,并承诺在2018年底支持微软Azure。
IBM已经发布了在评估和生产环境中运行ICP的最低硬件要求,且没有限制服务器及其他硬件必须为IBM生产的。ICP已经被认证可以在VMware vCenter、ESX、OpenStack和KVM hypervisor的IaaS实例上运行。
如果红帽的股东批准了IBM的收购要约,那么IBM将面临选择。
  1. 继续投资OpenShift,并扩展到OpenStack;

  2. 继续投资IBM Cloud Private的云原生路线;

  3. 将注意力一分为二,2个方向都保持。


我们相信长期投资云原生的IBM Cloud Private会是更好的方向。
在AWS re:Invent会议期间,甲骨文发布了Oracle Cloud Native Framework (OCNF),一个免费下载的开源软件包。它包括Docker和Kubernetes,以及最新发布的基于Fn项目的无服务器功能Oracle Functions。采用OCNF开发的应用程序都可移植到任何Kubernetes环境和底层硬件平台上。OCNF可以在公共云或私有硬件上运行,包括但不限于Oracle Cloud Infrastructure (OCI)公有云和客户私有云平台的OCI。
Oracle在OCNF堆栈中包含以下开源软件:
  • OS:Oracle Linux发行版及之上的OCI

  • 开发工具:Jenkins X,Helm,MySQL,Kafka,Spark,Spinnaker,Bitnami

  • 监控工具:Prometheus,Grafana,Fluentd,Crashcart,Instana

  • 资源分配:Terraform,Vagrant,Ansible,Chef,Puppet,Clair,Notary

  • 编排器:Kubernetes,Istio,Envoy

  • 运行时:Fn,Docker,Kata,CRI-IO,Calico,Flannel,Ceph,Gluster,Java,Helidon.io,OpenJDK

  • 安全工具:Twistlock,Aqua


640?wx_fmt=png

Oracle Cloud Native Framework(source:Oracle)
上述工具还不是全部,Oracle还将Kubernetes与Oracle Fusion中间件(WebLogic服务器)集成到一起,以实现Kubernetes容器环境中,运行WebLogic应用。
还有一个不可忽视的点,Oracle还控制着Java Standard Edition(SE),并且OCNF拥有Helidon.io社区。可以为Java SE应用提供集成交付。即客户可以在Kubernetes运行Java SE业务逻辑。对于更严谨的Java开发人员,我们建议关注Eclipse Jakarta EE工作组,因为Oracle在今年早些时候向Eclipse基金会捐赠了Java Platform,Enterprise Edition(Java EE)。Jakarta EE有计划成为Oracle Java EE 8的云原生升级的通道【请参阅关于Jakarta EE(https://jakarta.ee/)的更多信息
思科最近也宣布了基于AWS的Kubernetes的混合解决方案(CHSK on AWS)。与OCNF一样,CHSK也是云原生的:它不依赖于任何类型的VM。CHSK即可以运行在私有思科容器平台和AWS的EKS平台上,也可以运行在任何私有云或公有云的IaaS环境下。
思科CHSK为了实现 “1+1大于2”的效果,在AWS平台上,还集成了AWS身份和访问管理(IAM)服务和思科的云服务路由器(CSR)1000v虚拟路由器。后者可以在任何平台的VM中运行,设计初衷是优化在Cisco HyperFlex/UCS硬件上运行。

640?wx_fmt=png

思科基于AWS的Kubernetes的混合解决方案(source:Cisco)
与Oracle不同的是,购买思科一套标准入门级配置的CHSK纯软件,每年最低起价约6.5万美元,还要外加AWS上EKS集群和弹性块存储(EBS)的资源使用费用。尽管思科与AWS IAM的整合颇具吸引力,但这样的定价策略很可能将潜在客户限制在已经是思科网络客户的大型企业IT服务商。


“LIFT-AND-SHIFT” VS “MOVE-AND-IMPROVE” VS……JAVA?

640?wx_fmt=png


使用“提升和转移”方式将VM迁移到云上意味着IT服务商需要租用大型、配置较高的实例,这些实例的计算能力大致相当与他们私有环境下,所购买的大型、配置良好的服务器。其理论依据是,在软件移植和验证方面的投入越低,所节约的费用将抵消租用大型、配置良好的EC2实例和S3的高成本。使用“提升和转移”方式的企业IT团队,希望快速迁移取得某种市场优势,通过获利来抵消应用在后续生命周期中的高运营成本。
“提升和转移”适用于迁移已经在虚拟机中运行的应用程序,只要是可移植的VM即可,包括VMware和KVM等。
与之相反的策略是“移动和改进”,意思是花时间重构应用程序,将应用重写为云原生的微服务,用相同的过程成果(和原始程序相同的结果或报错)来验证重构和重写过程。其目的是,通过前期较大的投入,实现应用与云上资源的最佳匹配,节省非云原生软件后期的高昂运营成本。按CNAB规范编写云原生应用就是移动和改进的案例。
对于采用Java语言写的应用,还有另一种选择,即Java提供的一种将应用从Java运行时轻松移植到容器的方法。目前,Java依然还是最流行的应用编程语言之一。我们所说的Java市场,包括了Oracle Java Platform Standard Edition(Java SE)和Enterprise Edition(Java EE)。
Java SE应用程序可以在Helidon.io封装的容器中运行。但要求应用运行的环境是Java SE 8或OpenJDK8和Apache Maven构建的。此外,AWS也构建了自己的OpenJDK8环境服务,称为Corretto。AWS表示,Corretto是Oracle Java SE的一个可选替代方案。目前,这个服务已经在AWS内部的交付生产中使用,在客户预览视图中可以看到这个服务。
Java EE爱好者一定记得,在今年(2018年)稍早的时候,Oracle向Eclipse捐赠了Java EE,这使得Java EE就变成了开源Eclipse Jakarta EE工作组。Jakarta EE将被设计成完全等同于Java EE 8的云原生版本,支持微服务部署,与Kubernetes等云原生应用集成。使企业开发人员能轻松地将Java EE应用程序移植到Kubernetes平台。我们再看看Eclipse的成员企业,战略成员包括CA(现在的Broadcom)、IBM、Oracle、Red Hat和SAP,Eclipse解决方案成员包括Canonical、Docker、谷歌、华为、英特尔、微软和Salesforce.com。这简直是一个令人震惊的云供应链和服务供应商列表。让Java开发人员感觉,或许在2019年的某个时候,不用多麻烦就可以轻松地将大量Java SE和Java EE业务应用程序迁移到成本高效的云本地环境中。


戴尔科技和VMware

640?wx_fmt=png


2018年, 惠普、IBM、联想和甲骨文等服务器硬件厂商都强调与VMware的合作关系。但在2019年初,VMware与戴尔的关系就不再紧密。与此同时,那些希望具备VMware的“提升和转移”能力的品牌服务器厂家,大多数将AWS作为公有云的首选。今年年初,甲骨文曾大力宣传其采用“提升与转移”的方式,帮助客户将VMware虚拟机从自有IT环境迁移至AWS的能力。但从那开始,AWS决定从多个角度攻击甲骨文的业务,最终在Re: Invent大会上宣布,亚马逊关系数据库服务(RDS)将取代甲骨文的数据库。
有趣的是,VMware将思科、戴尔、戴尔EMC、富士通、日立、惠普和联想列为全球联盟伙伴。但思科、惠普和联想是戴尔EMC在全球各个服务器市场的直接竞争对手。
8月份,VMware在VMworld上宣布 “Project Dimension”项目。这是一个VMware、戴尔EMC和联想共同参与的联合项目。目的是在客户的IT环境里,一个专门构建和验证的硬件集群上,运行VMware vSphere和vSAN,以及VeloCloud的NSX SD-WAN软件的平台,并可以桥接到AWS上VMware Cloud平台。目前, VMware、戴尔EMC和联想正在测试这个联合项目。

640?wx_fmt=png

AWS Outposts 上的VMware Cloud 架构(source:AWS)
AWS云上VMware Cloud(AWS Outposts)的核心是VMware的软件定义数据中心(Software defined datacenter,SDDC)。SDDC基于VMware云基础架构:vSphere、vSAN、NSX和vCenter Server。VMWare的现有客户也可以在他们自有的服务器环境中运行这些基础软件,实际上已经有客户这样做了(估计是运行在品牌服务器厂家OEM的最新超融合硬件设备上)。客户也可以将环境升级成AWS Outposts定制设计的硬件,以按需购买EC2裸实例的方式,在自有IT环境中运行AWS云上的VMware Cloud 。
VMware将AWS、谷歌、IBM、微软和甲骨文列为全球战略技术合作伙伴。然而,AWS与VMware联合发布了基于AWS Outposts的VMware Cloud。这意味着VMware的所有公有云伙伴关系已经不再平等。AWS涉足私有云后,他的分量甚至超过了其他公司的总和。依据如下:
  • 谷歌GKE私有版和IBM ICP是纯软件产品,因此只能与VMware云基础软件竞争。

  • 微软Azure Stack根本不支持VMware虚拟机,而且也没有这样做的公开路线图。Azure Stack与VMware云基础软件分别适用于不同的场景。

  • Oracle和AWS正直接争夺数据库企业级客户。Dell,VMware均是AWS的紧密战略合作伙伴,而甲骨文则不是。


展望2019

640?wx_fmt=png


AWS通常会在宣布一个成熟服务的时候,就同时上线这个服务,即使这些服务是以预览版的方式提供,但AWS Outposts显然是个例外。尽管AWS表示2019年末会提供Outposts服务,但可以想象这个日子不会比当年微软交付Azure Stack时好过。在首次尝试部署私有云之后,微软花了将近四年的时间才发布了一款可靠的Azure Stack产品。AWS要从其公有云中分离出一个健壮的子集,运行在私有环境的专用硬件平台上,并在2019年量产,这个困难可想而知。不过AWS没有使用“子集”这个说法,而是将Outposts定义为通用的AWS公有云服务。
公有云和私有云的重要性让联想和惠普处境艰难。两家公司都在为其关键的软件产品寻找合作。与此同时,竞争对手戴尔正在收购VMware,IBM可能会收购红帽,思科、华为和甲骨文都在研发和投入自己的开源项目,华为和甲骨文还运营着自己的公有云。
惠普已经退出了公有云的运营,似乎也不再关注私有云。它聚焦于将大型企业客户引导到私有虚拟化基础架构上。惠普正在销售微软Azure Stack解决方案(等同于大多数服务器OEM),但主要集中在OneSphere多云管理器和Greenlake弹性容量产品。惠普OneSphere支持VMware vSphere、AWS、Microsoft Azure公有云和OpenStack API(在中国以外的主要公有云上都不适应)。我们建议惠普创建一个强大的私有云策略,但我们也认为惠普在2019年不太可能具有私有云产品。
联想既是红帽,又是微软Azure和Azure Stack的合作伙伴。其有2个发展方向:一是深化与微软Azure Stack和AWS+VMware的合作,有点类似于戴尔的战略,不过戴尔和VMware将是同一家公司。其次就是购买一个成熟的私有云产品。
Canonical和SUSE现在是热门的收购候选对象。SUSE和Canonical都具有OpenStack和Kubernetes发行版产品。SUSE属于一家私人资本集团,SUSE Linux Enterprise Server(SLES)在企业中更是广为人知。Canonical的Ubuntu Long Term Support(LTS)发行版在云上应用非常广泛。公司是由创始人Mark Shuttleworth私人持有和资助,他一直掌握着这家公司,但说不好哪一天,有人给出一个Shuttleworth无法拒绝的报价,他可能就卖掉啦。
在戴尔科技股票重新上市后,VMware所带来的杠杆效应,以及IBM对红帽的收购,这两大事件的结果宣布,将在2019年对私有云和多云领域产生深远影响。这应该是一段漫长的旅程!
原文链接:https://www.nextplatform.com/2019/01/09/containers-killed-the-virtual-machine-star/


Kubernetes入门与进阶实战培训

640?wx_fmt=png


Kubernetes入门与进阶实战培训将于2019年4月19日在北京开课,3天时间带你系统学习Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker三驾马车、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等,点击下面图片查看具体详情。
640?wx_fmt=jpeg
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/88568736

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签