东莞企业建设网站官网有限公司很大气的网站 营销

web/2025/9/26 12:31:37/文章来源:
东莞企业建设网站官网有限公司,很大气的网站 营销,聊城网站建设找谁,在线设计的软件在Data Geekery #xff0c;我们喜欢Java。 而且#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL #xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五#xff0c;我们都会向您展示一些不错的教程风格的Java 8新功能#… 在Data Geekery 我们喜欢Java。 而且由于我们真的很喜欢jOOQ的流畅的API和查询DSL 我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五我们都会向您展示一些不错的教程风格的Java 8新功能这些功能利用了lambda表达式扩展方法和其他好东西。 您可以在GitHub上找到源代码 。 大多数内部DSL已过时 这是目前市场上最先进的内部DSL之一的供应商的说法。 让我解释 语言很难 学习新语言或API非常困难。 您必须了解所有的关键字构造语句和表达式类型等。这对于外部DSL内部DSL和“常规” API都是正确的它们本质上是内部DSL但流畅度较低。 使用JUnit时人们已经习惯使用hamcrest匹配器 。 它们有六种语言JavaPythonRubyObjective-CPHPErlang可用这一事实使它们成为一个不错的选择。 作为特定领域的语言他们已经建立了易于阅读的习惯用法例如 assertThat(theBiscuit, equalTo(myBiscuit)); assertThat(theBiscuit, is(equalTo(myBiscuit))); assertThat(theBiscuit, is(myBiscuit)); 阅读此代码时您将立即“理解”所声明的内容因为API的读法像prosa。 但是学习用此API编写代码更加困难。 您将必须了解 所有这些方法来自哪里 存在哪些方法 谁可能使用自定义匹配器扩展了障碍 扩展DSL时的最佳做法是什么 例如在上面的示例中三个之间到底有什么区别 我什么时候应该使用另一个 是is()检查对象身份吗 equalTo()是否检查对象是否相等 hamcrest教程继续着以下示例 public void testSquareRootOfMinusOneIsNotANumber() {assertThat(Math.sqrt(-1), is(notANumber())); } 您可以看到notANumber()显然是一个自定义匹配器在实用程序中的某个地方实现了 public class IsNotANumber extends TypeSafeMatcherDouble {Overridepublic boolean matchesSafely(Double number) {return number.isNaN();}public void describeTo(Description description) {description.appendText(not a number);}Factorypublic static T MatcherDouble notANumber() {return new IsNotANumber();} } 尽管这种DSL的创建非常容易并且可能也很有趣但是出于简单的原因开始着手编写和增强自定义DSL是很危险的。 它们绝不比其通用的功能相同的同类更好-但它们却更难维护。 考虑一下Java 8中的上述示例 用功能代替DSL 假设我们有一个非常简单的测试API static T void assertThat(T actual, PredicateT expected ) {assertThat(actual, expected, Test failed); }static T void assertThat(T actual, PredicateT expected, String message ) {assertThat(() - actual, expected, message); }static T void assertThat(SupplierT actual, PredicateT expected ) {assertThat(actual, expected, Test failed); }static T void assertThat(SupplierT actual, PredicateT expected, String message ) {if (!expected.test(actual.get()))throw new AssertionError(message); } 现在将hamcrest匹配器表达式与其功能等效项进行比较 // BEFORE // --------------------------------------------- assertThat(theBiscuit, equalTo(myBiscuit)); assertThat(theBiscuit, is(equalTo(myBiscuit))); assertThat(theBiscuit, is(myBiscuit));assertThat(Math.sqrt(-1), is(notANumber()));// AFTER // --------------------------------------------- assertThat(theBiscuit, b - b myBiscuit); assertThat(Math.sqrt(-1), n - Double.isNaN(n)); 有了lambda表达式和经过精心设计的assertThat() API我可以肯定您将不再寻找用匹配器表达断言的正确方法。 请注意不幸的是我们不能使用Double::isNaN方法引用因为它与PredicateDouble不兼容。 为此我们必须在断言API中执行一些原始类型的魔术例如 static void assertThat(double actual, DoublePredicate expected ) { ... } 然后可以这样使用 assertThat(Math.sqrt(-1), Double::isNaN);好但是… ……您可能会听到自己在说“但是我们可以将匹配器与lambda和流结合起来”。 是的我们当然可以。 我现在已经在jOOQ集成测试中做到了。 我想跳过所有不在系统属性中提供的方言列表中的SQL方言的集成测试 String dialectString System.getProperty(org.jooq.test-dialects);// The string must not be empty assumeThat(dialectString, not(isOneOf(, null)));// And we check if the current dialect() is // contained in a comma or semi-colon separated // list of allowed dialects, trimmed and lowercased assumeThat(dialect().name().toLowerCase(),// Another matcher hereisOneOf(stream(dialectString.split([,;])).map(String::trim).map(String::toLowerCase).toArray(String[]::new)) ); ……那也很整洁对吗 但是为什么我不干脆写 // Using Apache Commons, here assumeThat(dialectString, StringUtils::isNotEmpty); assumeThat(dialect().name().toLowerCase(),d - stream(dialectString.split([,;])).map(String::trim).map(String::toLowerCase()).anyMatch(d::equals) ); 无需Hamcrest只需普通的旧lambda和溪流 现在当然可读性只是一个问题。 但是上面的示例清楚地表明不再需要 Hamcrest匹配器和Hamcrest DSL。 鉴于在接下来的2-3年内所有Java开发人员中的大多数将非常习惯于每天使用Streams API而不是非常习惯于使用Hamcrest API因此我敦促JUnit维护人员不要使用使用Hamcrest以支持Java 8 API。 哈姆克雷斯特现在被认为是坏人吗 好吧它过去已经达到了目的人们对此已经有所适应。 但是正如我们在上一篇有关Java 8和JUnit Exception匹配的文章中已经指出的那样是的我们确实相信Java的人们在过去的十年中一直在树错误的树。 缺少lambda表达式已导致各种完全膨胀的库 现在也有些无用的库 。 许多内部DSL或注释魔术师也受到影响。 不是因为他们不再解决以前遇到的问题而是因为它们还没有支持Java-8。 Hamcrest的Matcher类型不是功能接口尽管将其转换为一个接口很容易。 实际上Hamcrest的CustomMatcher逻辑应该被拉到Matcher接口中成为默认方法。 使用诸如AssertJ之类的替代方案事情不会变得更好。该替代方案创建了一个替代DSL现在它已通过lambda和Streams API变得过时了就呼叫站点代码冗长而言。 如果您坚持使用DSL进行测试那么无论如何Spock可能都是一个更好的选择。 其他例子 Hamcrest只是这种DSL的一个示例。 本文展示了如何通过使用标准的JDK 8构造和几个实用程序方法几乎完全将其从堆栈中删除无论如何您可能很快就会在JUnit中使用它们。 Java 8将为上个十年的DSL辩论带来很多新的吸引力因为Streams API还将大大改善我们看待转换或构建数据的方式。 但是当前许多DSL尚未为Java 8做好准备并且尚未以功能性方式进行设计。 对于难以学习的事物和概念它们有太多的关键字可以使用函数更好地建模。 该规则的一个例外是jOOQ或jRTF之类的DSL它们以11的方式对实际存在的外部DSL进行建模继承了所有现有的关键字和语法元素从而使它们从一开始就很容易学习。 你拿什么 您对上述假设有何看法 您最喜欢的内部DSL是什么由于Java 8已过时它可能在未来五年内消失或完全转换 翻译自: https://www.javacodegeeks.com/2014/06/java-8-friday-most-internal-dsls-are-outdated.html

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

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

相关文章

大鼠引物在线设计网站用第三方做网站

导读:今天对象回家,输入电子门锁密码怎么也打不开,指示灯也不亮,前段时间也时不时的能按,我就预感到电池没电了,那么我是如何进入家门的呢? 一般这种电子门锁可以输入密码,也可以使用机械钥匙。说实话,这钥匙在哪我压根没见过,租的房子,房东都不知道,只能输入密码才…

建设南大街小学网站网站数字化建设

转载自 最通俗易懂的乐观锁与悲观锁原理及实现 一、乐观锁 总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用…

给公司做门户网站 可以用凡客吗做任务佣金的网站

主服务器数据库的每次操作都会记录在其二进制文件mysql-bin.xxx(该文件可以在mysql目录下的data目录中看到)中,从服务器的I/O线程使用专用账号登录到主服务器中读取该二进制文件,并将文件内容写入到自己本地的中继日志relay-log文件中,然后从…

网站建设开发方式包括哪些做一个互联网平台需要多少钱

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

备案要关闭网站吗最有前景的代理产品

本文结构: a、简介 b、安装 c、用法举例 a、Vundle是一个Vim插件管理器,它极大地简化了Vim插件的安装、更新和卸载过程。Vundle通过简化Vim插件的管理过程,帮助用户更高效地定制他们的Vim编辑环境。 b、安装Vundle Vundle的安装通常是通…

sql可以做网站吗单页网站建设平台哪个好

1、void *a是什么意思 答&#xff1a;泛型指针&#xff0c;但不规定其类型(就是地址确定&#xff0c;但数据长度不确定)在动态分配内存时&#xff0c;malloc的返回值就是该类型&#xff0c;方便用户进行强制转换。 2、VS怎么一键规范格式 for(i0;i<10;i)enter后&#xff0c;…

市网站建设湛江专业建网站哪家好

Runner 介绍 概述 Runner是用来批量调用collection里某个文件夹里的全部接口的。 (注意&#xff0c;我说的是文件夹内所有接口,可以是一级文件夹&#xff0c;也可是二级文件夹) 示意图 打开runner&#xff0c;如图所示 说明 历史记录 历史执行记录 2.导入 导入别人或之…

鄂州网站推广优化技巧列举网络营销的特点

什么是自动垃圾回收&#xff1f;自动垃圾回收是一种在堆内存中找出哪些对象在被使用&#xff0c;还有哪些对象没被使用&#xff0c;并且将后者删掉的机制。所谓使用中的对象(已引用对象)&#xff0c;指的是程序中有指针指向的对象&#xff1b;而未使用中的对象(未引用对象)&…

游戏介绍网站模板下载地址市住建设局网站

目录 最长递增子序列 摆动序列 最长递增子序列的个数 最长数对链 最长定差子序列 最长的斐波那契子序列的长度 最长等差数列 等差数列划分 II - 子序列 最长递增子序列 300. 最长递增子序列 子数组是连续的&#xff0c;子序列可以不连续&#xff0c;那么就要去[0, i - 1]…

产品通过网站做营销灰大设计导航

JY-10系列集成电路电压继电器 JY-11A集成电路电压继电器 JY-12A集成电路电压继电器 JY-11C集成电路电压继电器 JY-11D集成电路电压继电器 JY-12B集成电路电压继电器 JY-12C集成电路电压继电器 JY-12D集成电路电压继电器 1概述 JY系列集成电路电压继电器用于发电机、变…

网站后台模板 php网站转化分析

那今天呢&#xff1f;我们来介绍一下sdp协议&#xff0c;那实际上呢&#xff1f;sdp协议非常的简单。我们如果拿到一个stp的文档去看的话&#xff0c;那你要分阅里边的所有的内容会觉得很枯燥&#xff0c;但实际上呢&#xff0c;如果我们按照这张图所展示的结构去看stp的话。你…

代码共享网站水果电商运营方案

全世界只有3.14 % 的人关注了爆炸吧知识重磅消息&#xff1a;这只全球著名的网红狗终于。。开&#xff01;售&#xff01;了&#xff01;哦&#xff0c;不对&#xff0c;放错图了&#xff01;应该是这只&#xff01;一起来看看视频介绍——6月17日&#xff0c;据科技时报&#…

泉州做网站哪家好网站建站报价表

全球 化 化重点 (Top highlight)Designing for a global audience can feel daunting. Do you localize your product? Or, do you internationalize your product? And what does that even entail?为全球观众设计可能会令人生畏。 您是否将产品本地化&#xff1f; 还是您将…

苏州怎么做网站排名优化wordpress logout

1.请简述Zookeeper的选主流程 Zookeeper 是一个用于维护配置信息、命名、提供分布式同步和组服务的工具。它在分布式系统中提供了强一致性&#xff0c;这得益于它的内部实现机制&#xff0c;其中包括选主流程&#xff08;Leader Election&#xff09;。以下是 Zookeeper 的选主…

织梦网站模板后台密码找回建材网中国建材第一网

cognito在本文中&#xff0c;我们将研究使用OAuth协议通过Amazon Cognito对单页应用程序&#xff08;使用Vue.js构建&#xff09;进行身份验证。 在上一篇文章中&#xff0c;我们将服务器端应用程序与Amazon Cognito集成在一起。 搭建单页应用程序 我们将使用vue-cli创建一个空…

网站建设消费调查问卷搜索引擎网站优化推广

随着Android 13的发布&#xff0c;我们迎来了一个令人兴奋的新品时刻。然而&#xff0c;对于一些用户而言&#xff0c;这也意味着必须面对一个重要的问题&#xff1a;Android 13不再支持PPTP协议。如果你是一个习惯使用PPTP协议来连接换地址的用户&#xff0c;那么你可能需要重…

网站招标建设网页制作基础教程第2版答案

定义 chat&#xff1a; 在iOS开发中&#xff0c;属性关键字是用于声明类的属性&#xff08;实例变量&#xff09;的修饰符。属性关键字可以影响属性的访问权限、内存管理和生成相关的getter和setter方法。 属性关键字有哪些&#xff1f; 分类属性关键字原子性atomic、nonato…

网站建设的公司在哪找网站做优化需要哪些后台信息

平常还觉得编码问题一般能水过去&#xff0c;到爬虫这真是"不信抬头看&#xff0c;苍天饶过谁"...其实&#xff0c;Python2和Python3中对于编码已经发生了很大的改变(但其实是更方便了)&#xff0c;我们一个个来讨论&#xff1a;Python21.在Python2中默认编码为ASCII…

闵行网站建设推广如何建一个手机网站

&#xff08;一&#xff09;HTTP协议是无状态的。也就是说&#xff0c;同一个客户第二次访问同一个服务器上的页面时&#xff0c;服务器的响应与第一次被访问时相同。服务器不记得访问过得这个用户&#xff0c;也不记得为这个客户服务过多少次。 &#xff08;二&#xff09;HT…

网站建设南京阿里指数官网

计算圆的面积和周长 编写程序计算圆的面积和周长。输入圆的半径&#xff0c;程序计算出圆的面积和周长&#xff0c;圆的面积等于3.14*半径*半径&#xff1b;圆的周长等于2*3.14*半径。 1. 准备工作 &#xff08;1&#xff09;保留舞台中的小猫角色和白色背景&#xff1b; 2…