Kotlin

\\

Kotlin是一门相对比较新的JVM语言,JetBrains自2011年以来一直在积极地开发。

\\

多年来,该语言在Android社区受到的关注度越来越高,并在Google IO 2017大会之后成为Android开发领域最热门的话题。这次大会宣布,Android正式支持Kotlin。

\\

遗憾的是,虽然已经有许多关于Kotlin的文章,但并没有多少客观信息,许多开发人员仍然在苦思冥想,迁移到Kotlin是否是一条正确的道路。

\\

在本文的剩余部分,我将尝试提供一个在将Kotlin作为Java的替代项进行评估时需要考虑的更完善的事项清单。

\\

Kotlin与Java的主观比较

\\

“Kotlin比Java好”,“Kotlin可读性比Java强”,“Kotlin开发速度比Java快”,类似这样的陈述缺少相关准确数据的支持,所以都归为主观看法一类。

\\

主观看法是个体开发人员在对与Kotlin或Java相关的主题作出一个或多个主观判断时形成。

\\

开发人员的主观判断存在如下问题:

\\
  1. 没有与主观判断相关联的量化指标。\\t
  2. 主观判断存在很大的偏见。\\t
  3. 主观判断的偏见在开发人员之间存在很大的差异。\

由于没有与主观判断相关联的量化指标,建立在这些判断基础上的观点只是反映出了开发人员之前就有的偏见。不同的开发人员可能有着截然不同的偏见,因此,有开发人员认为Kotlin是不错(或糟糕)的Java替代者并不意味着其他开发人员也这么认为。

\\

而且,由于没有客观指标,主观分歧就无法客观地消除,这经常会导致“口水战”。

\\

主观判断的谬误

\\

为了说明主观判断可能导致的误解,让我们仔细审视一个非常常见的主观看法:

\\
\

Kotlin可读性比Java强

\\

——Web上无数的文章

\
\\

理论上讲,可以设法设计一个度量Kotlin和Java之间可读性差异的实验,但据我所知,没有任何人真正地开展这样一个实验。因此,截至目前,这个看法没有任何数据支撑。

\\

Kotlin的语法是许多开发人员称赞其可读性的一个原因。他们的逻辑如下:

\\
\

Kotlin有更好的语法,因此它的可读性更强

\\

——Web上无数的文章

\
\\

在这句话中,“更好的语法”又是一个主观判断,本身就值得商榷,但为了避免争论,我们假设Kotlin的语法确实更好。但是,这就能说明Kotlin的可读性更强吗?

\\

为了观察语法对可读性的影响,请阅读下这段“文本”:

\\

e819c7afc33ba8920042bf6a15eed83b.jpg

\\

开始的时候,这段“文本”很难理解,但慢慢地,读起来会越来越容易。如果你再读个两三遍,那么你根本就不会再注意它是由非标准的字母组成的。准确地说,字母的替换不是句法变化,但这确实可以说明,对于熟练的读者而言,外观很少会成为可读性的障碍。

\\

我们也可以把这个例子扩展到自然语言。我了解三门截然不同的语言。虽然它们之间差别很大,但我发现,当我不理解文本中使用的单词时,阅读任何一种语言的文本都非常困难。一旦我认识构成文本的单词并熟悉上下文——无论它使用了哪一种语言,我读起来都不困难。

\\

因此,对我而言,语言的选择并不会影响可读性,只要理解内容和上下文就可以了。

\\

编程语言同样如此。

\\

当我们开始使用一门新语言,我们会有一段时间很难理解源代码,需要认真领会每个句法结构。但是,随着我们阅读和编写特定语言的代码越来越多,我们逐渐就熟悉了那门语言的语法,到某个时候,我们就不会再注意句法结构了。

\\

我自己在多门语言上有过这种体验:Verilog、Bash、Perl、Tcl、Lisp、Java。

\\

根据我使用上述语言的经验,我可以告诉你:如果一个人适应了Lisp的代码,并且不会再注意到小括号,那么跟Java比起来,Kotlin的语法完全不能对可读性产生不可忽视的影响,即使它“更好”。

\\

既然我们在讨论这个话题,我就分享下自己对于影响源代码可读性因素的主观判断。

\\

在读过其他开发人员使用许多语言编写的代码后(上面只罗列了我在某个阶段精通的语言;我用过的所有语言比这个多),我得出如下结论:如果开发人员使用某一门语言可以编写出可读性和可理解性都很好的代码,那么他们通常也可以使用其他语言编写出可读性和可理解性都很好的代码。

\\

因此,我根据自己的经验作出的主观判断是,源代码的可读性和选择的语言无关,那取决于代码编写者的技能和读者的技能(编写者的技能更重要)。

\\

如果你仍然认为主观看法具有代表性,那么至少阅读并思考下Robert “Uncle Bob” Martin在这篇博文中的观点。

\\

Kotlin与Java的客观比较

\\

与主观比较相反,客观比较使用量化指标来度量或评估Kotlin比Java有优势的地方。

\\

用一套标准客观地证明一门编程语言是否强过另一门,这种想法非常有吸引力,但是有个问题:据我所知,没有与编程语言相关的通用客观指标。

\\

考虑到我们无法进行精确的直接比较,那我们能否客观地比较Kotlin和Java呢?能!我们仍然能评估从Java切换到Kotlin所带来的积极和消息影响的程度,然后比较结果,并讨论它们的影响。

\\

为了评估Kotlin所能带来的最好结果,我们将做如下假设:

\\
  1. 开发人员可以立即切换到Kotlin;\\t
  2. 切换到Kotlin后,开发人员不会损失任何技能(例如,有两年Java开发经验的开发人员可以神奇地获得两年的Kotlin开发经验);\\t
  3. Kotlin和Java一样稳定;\\t
  4. Kotlin工具和Java工具一样成熟。\

事实上,上述假设没有一个是合理的,但在开始的时候,有一个理想化的设定便于说明。然后,我们会抛开这些假设,讨论真实世界的效应所带来的影响。

\\

Kotlin最佳结果估计

\\

遵循Steve McConnell在Code Complete一书中提出的模式,我们可以将软件构建活动分解成三个子活动:详细设计、编码与调试、开发测试。

\\

Kotlin对于详细设计子活动没什么影响(这项活动通常独立于选用的特定的面向对象编程语言),因此,在这一部分,Kotlin和Java需要付出同样的努力。

\\

据我所知,对于开发测试子活动,Kotlin也没有提出什么革命性的东西。因此,开发测试需要付出的努力也一样。

\\

就剩编码与调试子活动了。

\\

如果我们用Kotlin替换Java,那么我在编码与调试活动中可以节省多少工作量?这个问题很难回答,不同程序员之间这一数值会有很大差异(有些程序员使用Java更高效)。不过,既然我们在评估最好的情况,我们不妨假设从Java切换到Kotlin可以将开发人员在编码与调试阶段的生产力平均提高10%。

\\

10%的生产力提升是一个不现实到令人吃惊的数值。即使我们在文本编辑器中手工输入所有代码,那也是不现实的。考虑到现如今IDE的功能,这一数值更是不现实。考虑到有些开发人员使用Java更高效,这个数值就毫无道理了。

\\

我不介意使用这样一个既不现实又对Kotlin评估有利的数值,因为我知道,不管它对评估结果产生了怎样不切实际的积极影响,一旦我们抛开其中部分“理想的假设”,由此带来的负面影响会抵消掉那些积极影响。

\\

那么,在编码与调试方面提升了10%——我们把产品交付给客户的速度快了多少?

\\

下面这张图片来自Code Complete一书,展示了软件项目的各种活动所占的比例:

\\

fd2a0eb35bf2623c61a8c0e36847f6b1.jpg

\\

 小项目以构建活动为主。大点的项目需要更多架构、集成和系统测试工作来保证项目成功。这张图没有显示需求,因为和其它活动不一样,需求工作不是直接的程序功能。(Albrecht 1979; Glass 1982; Boehm, Gray, and Seewaldt 1984; Boddie 1987; Card 1987; McGarry, Waligora, and McDermott 1989; Brooks 1995; Jones 1998; Jones 2000; Boehm et al. 2000)
Code Complete,第二版

\\

根据来自Code Complete的这张图片,在一个较大的软件项目中(多于10K行),编码和调试只占项目总工作量的不足20%。

\\

因此,在一个较大的软件项目中,我们所假设的编码和调试效率提升10%,只能将完成项目所需的总工作量缩减2%。

\\

例如,一个需要5人年才可以完成的项目(这是相对比较大的Android项目),总工作量的2%为:

\\
\5人-年 * 12 * 4 * 5 * 0.02 = 24(人-天)\
\\

如果我们真得能够把项目工作量减少24人-天,这会是一个从Java切换到Kotlin的很好的理由。然而,我们应该还记得,上述积极评估是在理想情况下得出的,其基础是不切实际的假设。

\\

在真实世界里,切换到另外一门编程语言会产生不可避免的影响,我们将评估这种影响,并与上述理想化评估作个比较。

\\

开发人员准备

\\

为了评估最好的情况,我们假设开发人员可以立即从Java切换到Kotlin。

\\

实际上,虽然Kotlin和Java非常类似,但开发人员仍然需要花一些时间来学习,然后再花一些时间来调整开发实践和工具。准备时间因人而异:有些开发人员可以三四天完成切换,其他人则需要10天甚至更多的时间。

\\

让我们乐观一点,平均每个开发人员只要5天就可以从Java切换到Kotlin。

\\

一个需要5人年才能完成的项目会有3到5名开发人员(最好的情况下)。平均每个开发人员的切换时间为5天,这样,一个项目总计就需要15到25个人天的切换时间。

\\

切换到Kotlin所节省的工作量(乐观估计)与切换所需的总工作量似乎差不多。

\\

开发人员技能损失

\\

使用一门特定的编程语言高效工作的能力是一项技能。

\\

我们已经讨论了这项技能的其中一个方面(代码可读性),但还有许多其他方面。当从一门语言切换到另一门时,与旧编程语言相关的部分技能可以运用到新语言上,但该技能的其他部分会损失掉。

\\

为了评估编程语言技能损失对项目工作量的影响,我们将使用源自Cocomo2评估模型的“语言与工具体验”因子:

\\
\

语言与工具经验(LTEX)
\该指标用于衡量开发软件系统或子系统的项目团队使用编程语言和软件工具的经验。软件开发包括借助工具完成需求、表现形式设计与分析、配置管理、文档提取、库管理、程序样式与格式化、一致性检查、计划与控制等等。除了项目编程语言经验外,项目支持工具集的经验也会影响开发工作。经验低于2个月会获得一个很低的评级,有6个月或多年的经验则会获得一个很高的评级,见下表:

\\

bfbf01c78f06ef1295d9a5aafcba8c1a.jpg

\
\\

Cocomo 2模型定义手册

\\

例如,假设我们有一个Java开发团队,团队成员平均有一年的经验,我们想迁移到Kotlin。

\\

由于Kotlin和Java非常像,与许多Java工具兼容。我们可以乐观地假设,在经过初步的准备后,开发人员就可以归为有6个月开发经验这一类(而不是低于2个月)。根据这个假设,为了评估技能损失所导致的额外工作,项目的额定工作总量应该乘以1.09。

\\

一个需要5人年完成的项目,配备了平均具有1年Java经验的开发人员,切换到Kotlin所导致的额外工作达到了令人咂舌的108人天。

\\

技能损失所导致的额外工作是切换到Kotlin所缩减的工作的四倍。

\\

语言和工具的稳定性和成熟度

\\

有个普遍的说法,就是Kotlin是一门生产就绪的语言。这种说法也许是有道理的,因为Kotlin已经用在了若干项目里。

\\

不过,与Java相比,Kotlin是一门并不稳定的年轻语言。

\\

有些开发人员认为,Kotlin的不稳定性是个优势——语言在演进,可以更快地提供新特性,更快地改进。在我看来,他们对于这件事的看法过于简单。

\\

下面是Kotlin 1.1.4发布说明里的第一句话(写这篇文章时的最新版本):

\\
\

修复IntelliJ IDEA的一项重大性能衰退
\——Kotlin 1.1.4发布说明

\
\\

我不知道这是什么样的衰退,有多少项目受到了影响,但我的大脑自动将“重大性能衰退”这个搭配翻译成了“浪费了许多小时的开发时间。”

\\

此外,如果你读一遍发布说明的评论,你就会注意到,许多人遇到了迁移问题。在1.1.2版本的评论里,甚至有人指出,这个“补丁”发布引入了破坏性(向后不兼容)的修改。

\\

相比之下,如果你读一遍Oracle JDK8的发布说明,你就会发现,它比较稳定。大多数修改都是安全改进方面的。

\\

因此,与Java相比,Kotlin是一门不稳定且不成熟的语言——迁移到Kotlin会对项目产生怎样的影响?为了回答这个问题,我将使用来自Cocomo 2评估模型的“平台波动性”工作因子:

\\
\

平台波动性(PVOL)

\\

这里使用“平台”一词指代软件产品执行任务时调用的复杂硬件和软件(OS、DBMS等)。如果开发的软件是一个操作系统,那么平台就是计算机硬件。如果开发的是数据库管理系统,那么平台就是硬件和操作系统。如果开发的是网络文本浏览器,那么平台就是网络、计算机硬件、操作系统和分布式信息库。平台包括支撑软件系统开发所需的编译器或装配器。如下表所示,如果平台每12个月才有一次重大变更,则评级就会很低,如果每2周有一次重大变更,则评级就会很高:

\
\\

9147a789a0c7845d642b4947312da6e8.jpg

\\

Cocomo 2模型定义手册

\\

你可能已经注意到,编程语言并没有直接出现在该工作因子的描述里,但出现了编译器和装配器。在我看来,这段描述没有显式包含编程语言,是因为得出Cocomo 2模型的所有项目都使用了稳定的语言。

\\

由于编译器和装配器属于这个工作因子,所以我们也可以推断出编程语言及相关工具。

\\

根据平台波动性的这种评级范围,Java的评级应该是“very low”,而Kotlin的评级应该是“low”或更高。Kotlin的评级可能会更高,因为它内部依赖于其它工具,增加了出现兼容性问题的风险。

\\

由于“very low”没有提供工作因子,所以我们需要估计。

\\

看下该因子从“very high”到“low”的评分递减规律,我认为,我们可以放心的假设,“very low”的评分不高于0.82。

\\

基于这些假设(有利于Kotlin),如果一个项目需要5人年的额定工作量,那么使用Kotlin,工作量就变成了1044人天,而使用Java的总工作量是984人天。

\\

选择使用Kotlin而不是Java实现这样一个项目会使总工作量增加60人天。

\\

语言和工具不稳定所导致的额外工作是切换到Kotlin所缩减的工作的2倍多。

\\

综合所有因素

\\

我当成例子来讨论的项目需要5人年的额定工作量。

\\

根据上述评估,如果该项目由平均具备1年Java开发经验的开发人员使用Java实现,则总工作量为:

\\
\5 人-年 * LTEX(Java) * PVOL(Java) = 984 (人-天)\
\\

如果同样的项目由几乎没有Kotlin开发经验的开发人员使用Kotlin实现,则总工作量为:

\\
\5 人-年 * LTEX(Kotlin) * PVOL(Kotlin) * 0.98 + T_ramp_up = 1115 + 5 * N_developers (人-天)\
\\

据估计,选择Kotlin替换Java所导致的额外工作量为131 + 5 * N_developers (人-天)

\\

评估注意事项

\\

在评估讨论的过程中,我们得出了与Kotlin和Java相关的、便利的工作量单点值。

\\

但实际上,单点值根本不是估计——它们只是猜测。真正的估计必须有一个相关联的不确定性。换句话说,估计表示可能性的范围,而不是单点值。

\\

我们最终使用单点值代替了范围,那是因为我从估算范围里选择了最有利于Kotlin的值,将所有的估计都转换成了单点值。

\\

例如,当讨论Kotlin对编码与调试活动的影响时,我从估计出的可能性范围[-5%,10%]中选择了最大的生产力提升值10%。在其他情况下,当我们讨论开发人员切换到Kotlin的平均时间时,我从估计的可能性范围[5天,21天]中选择了最小的5天。

\\

此外,我们使用了Cocomo 2估计模型专用的工作因子。这些因子并不是放之四海而皆准的真理,在最一般的情况下,应该也有相关联的不确定性。我赋给Kotlin的评级高于我实际上认为它应得的评级,我希望通过这种方式消除这种不确定性。

\\

不用说,我们获得的单点值并不是百分百正确。为了得出更完整的估计,我们可以利用真正的估计进行Monte Carlo仿真。通过这项技术,我们可以观察可能结果的分布,弄清楚哪种结果最可能出现。

\\

请记住,由于我们将估计压缩成了对Kotlin而言最为有利的单点值,所以其他可能的结果会显示出更大的Kotlin切换开销。因此,在所有可能的结果中,我们在上文描述的单点值是最有利于Kotlin的。

\\

小结

\\

在文章开头部分,我们展示了一些可能会对开发人员比较编程语言造成误导的主观判断。

\\

接下来,我们讨论了客观比较编程语言存在的困难,并进行了一系列的估计,以便弄清楚Kotlin栈与Java栈完成软件项目所需的总工作量。在执行估计时,我们一直使用估计范围里最有利于Kotlin的值。

\\

通过我们的分析,从Java切换到Kotlin似乎会导致完成软件项目所需的总工作量增加。

\\

更多的工作意味着企业切换到Kotlin需要花更多的钱才能获得同样的功能,而用户需要等待更长的时间才能获得产品。

\\

有些开发人员可能会吃惊,觉得这个结果不容易接受。

\\

在考虑了所有的情况之后,谷歌最终决定支持Kotlin Anroid开发。对此,谷歌可能需要相当大的投入——谷歌云平台团队是不是没有人可以做类似的分析,从而弄清楚切换到一门新语言所带来的负面影响?

\\

我认为,谷歌员工都是非常聪明的人,我相信他们在决定支持Kotlin之前已经进行了非常深入的分析。

\\

在下一篇博文中,我们将讨论谷歌为什么要支持Kotlin,即使是在通过简单的分析就可以知道那不利于Android社区的情况下。

\\

查看英文原文:Kotlin vs Java The Whole Story

\\

感谢覃云对本文的审校。

\\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们。

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

相关文章

  1. visual basic 6 下载 和 Vb6sp6 下载

    同学让我帮他写个软件.......无奈光盘已坏,只好在网上寻找了.还找到了.共享一下: visual Basic 6 中文企业版 地址:http://book2.ibook8.com/ibook8com/down/7/vb60.rar大小:190M VB6SP6 地址:微软 http://download.microsoft.com/download/e/c/9/ec94a5d4-d0cf-4484-8b7a-2180…...

    2024/5/5 13:52:45
  2. Spring Security3.1登陆验证

    一、前言在上一篇http://blog.csdn.net/k10509806/archive/2011/04/28/6369131.aspx文章中,提到的MyUserDetailServiceImpl获取用户权限,在用户没有登陆的时候,Spring Security会让我们自动跳转到默认的登陆界面,但在实际应用绝大多数是用我们自己的登陆界面的,其中就包括…...

    2024/5/5 9:35:30
  3. sharedPerferences单例整个app使用唯一一个sharedperferences

    package banner.test.com.shareperfrence;import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager;/*** sp管理类,放入项目即可*/ public class SPManager {public static SPManager mSPManager;public Sha…...

    2024/5/5 13:08:15
  4. LInux常用的60个命令,小白必须掌握的命令

    login 1.作用 login的作用是登录系统,它的使用权限是所有用户。 2.格式 login [name] [-p][-h 主机名称] 3.主要参数 -p:通知login保存现在的环境参数。 -h:用来向远程登录的质检传输用户名。 如果选择用命令行模式登录Linux的话,name看到的第一个Linux命令就是login。 …...

    2024/4/16 22:25:57
  5. springsecurity如何自定义登录页面

    springsecurity默认为我们提供了一个登录页面,在登录页面,如果填入的用户名和密码不匹配后端设置,那么就会在当前页面弹出错误提示,这个页面很简单,而且是单调的。在实际开发中,有时候,为了让登录页面更加的美观和展现定制化的内容,我们需要自定义登录页面。自定义登录…...

    2024/5/5 11:49:47
  6. 【百度人脸识别api】二、人脸比对

    import json import urllib import base64 from baidu_face_detect.token11 import GetToken#转换图片 读取文件内容 转换为base64编码 #二进制打开图片 def img_compare_data(fp1,fp2):f = open(fp1,rb)pic1 = base64.b64encode(f.read())f.close()f = open(fp2,rb)pic2 = bas…...

    2024/4/16 22:27:15
  7. ibook导入pdf简单方法

    1、将pdf文件拖进itunes的书籍下面(也可以通过导入文件到资料库实现); 2、将itunes书籍中的pdf文件拖进ipad的书籍里面; 3、同步完成后,打开ipad的ibook就可以看到那个PDF标签了。...

    2024/5/5 5:24:09
  8. panabit 流控大师

    panabit panabit panabit 介绍: Panabit是目前国内开放度最高、免费、专业的应用层流量管理系统,特别针对P2P应用的识别与控制,(panabit不是一种NAT软件,要实现以上功能需要与其他软件配合来实现)2009年10月25日,已经支持实际主流应用360种以上,并以两周更新一次…...

    2024/4/28 5:01:31
  9. 6个实例详解如何把if-else代码重构成高质量代码

    本文提纲: 为什么我们写的代码都是if-else?这样的代码有什么缺点?是否有优化的方法?如何重构?异常逻辑处理型重构方法状态处理型重构方法 为什么我们写的代码都是if-else?程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个if-else,…...

    2024/5/5 7:50:42
  10. Spring Security 源码合集

    《Spring Security(一)--Architecture Overview》《Spring Security(二)--Guides》《Spring Security(三)--核心配置解读》《Spring Security(四)--核心过滤器源码分析》《Spring Security(五)--动手实现一个IP_Login》《从零开始的Spring Security OAuth2(一)》《从零开始的…...

    2024/5/5 4:26:07
  11. Kotlin语言概述

    最近发现Kotlin在各大论坛成为了一个很火热的话题,抽空了解了一下这个语言。2017年谷歌I/O大会上,谷歌宣布将Kotlin作为Android编程的一级开发语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性,目前已经开源。Github上也有越来越多的项目…...

    2024/5/5 9:40:16
  12. Linux入门

    Linux文件系统结构 在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树。 目录树的特点是什么呢? 目录树的起始点是根目录(/,root); 每一个目录不止能使用本地的文件系统,也可以使用网络…...

    2024/4/19 20:00:48
  13. iBook文件的导出

    所有的iBook文件存储在下面这个目录,可以从这个目录copy出来。~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books/...

    2024/4/16 22:26:15
  14. 初次接触Kotlin

    Kotlin介绍 Kotlin 是在2016年2月16号正式发布了1.0版本,是一个基于 JVM 的新的编程语言, Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。 与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模…...

    2024/5/5 6:51:33
  15. android 通过检测和比对实现人脸追踪

    转载:http://blog.csdn.net/duan19920101/article/details/50705253?locationNum=3&fps=11.不管是单目标还是多目标的跟踪,在每一帧需要保存的是:某个人到该帧为止最清晰的人脸区域图像和该帧人脸区域的特征(因为跟踪使用的是上一帧人脸图像的特征)。2.单个人脸的跟踪:…...

    2024/4/4 10:58:45
  16. Linux必学的60个命令(二)

    3.用crontab命令实现每天定时的病毒扫描 前面已经介绍了一个简单的crontab命令操作,这里看一些更重要的操作。 (1)建立一个文件,文件名称自己设定,假设为caoproject: #crontab -e (2)文件内容如下: 05 09 * * * antivir 用vi编辑后存盘退出。antivir是一个查杀Linux…...

    2024/4/16 22:26:39
  17. 爱电子书吧 - http://ibook8.com/

    爱电子书吧 - http://ibook8.com/...

    2024/4/16 22:26:45
  18. Destructuring Declarations in kotlin (kotlin的解构声明) 的正确打开方式

    熟悉JS的读者朋友们知道,ES6有一个非常好用的特性,解构析值。 这个特性可以帮助我们实现如下简洁的代码:const {a, b} = {a:"Alice", b:"Bob"}简单地说,就是拆解一个对象。我在写kotlin的时候想:kotliin有没有类似的特性呢?kotlin有一个类似的,但是…...

    2024/4/16 22:25:45
  19. SpringBoot2+SpringSecurity整合JWT,前后端分离的API权限认证框架搭建手册

    前言 之前又用到JWT,但是基本都是别人搭建,直接使用,有什么可以优化的,也不知道,所以还是要自己实践一遍,实践才能出真理。也看到很多整合的文章,有些说的细致但是版本太旧了,有些说的不够详细,而且细节也挺多的,纸上得来终觉浅,绝知此事要躬行,所以自己动手实践了…...

    2024/4/27 2:23:20
  20. 基于golang的opencv人脸比对

    github上golang结合opencv:https://github.com/go-opencv/go-opencv下载后进入go-opencv/samples目录,目录下为示例代码编译opencv源码:http://blog.csdn.net/zhjinw/article/details/79627454试运行go run hellocv.go如果出现以下错误,即没有找到opencv头文件,到mingw安装…...

    2024/5/2 20:12:28

最新文章

  1. 【莫比乌斯变换-04】求解莫比乌斯变换系数

    求解莫比乌斯变换系数 文章目录 一、说明二、如何确定双线性变换系数2.1 变换基本形式2.2 通过三点确定 三、一般情况的变换3.1 最简单的情况:无穷大3.2 处理无穷大 四、Python 代码 一、说明 上一篇文章是对双线性变换的视觉介绍,又名莫比乌斯变换或分…...

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

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

    2024/3/20 10:50:27
  3. 职场口才提升之道

    职场口才提升之道 在职场中,口才的重要性不言而喻。无论是与同事沟通协作,还是向上级汇报工作,亦或是与客户洽谈业务,都需要具备良好的口才能力。一个出色的职场人,除了拥有扎实的专业技能外,还应具备出色…...

    2024/5/5 8:30:00
  4. 【Web爬虫】爬⾍⿊⻰江省与四川省农机补贴以及数据分析

    目录 一、实验目的 二、实验内容 2.1 实验爬取数据选择 2.2python代码爬取数据 2.3数据处理与分析 三、实验原理 3.1 python 连接网页的两种方式 3.1.1 使用requests连接网页 3.1.2 使用from selenium import webdriver连接网页,创建网页测试 3.2 python …...

    2024/5/1 4:00:52
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  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