网站建设mvc三层框架图网站模板下载破解版

news/2025/9/22 23:51:32/文章来源:
网站建设mvc三层框架图,网站模板下载破解版,南阳做网站公司哪家好,做网站软件warTransformer模式是Java#xff08;以及可能仅具有使用场所差异和不变参数类型的其他OO语言#xff09;的设计模式#xff0c;可帮助子类型层次结构内的对象将自己流畅地转换为任何类型的对象。 语境 我一直在关注与Jim Laskey发行的JDK-8203703相关的OpenJDK线程#xff… Transformer模式是Java以及可能仅具有使用场所差异和不变参数类型的其他OO语言的设计模式可帮助子类型层次结构内的对象将自己流畅地转换为任何类型的对象。 语境 我一直在关注与Jim Laskey发行的JDK-8203703相关的OpenJDK线程 9月18-21日 11月12-13日 11月13-30日 12月3-4日 然后我想到了一个主意。 让我回顾一下讨论的相关部分。 String.transform的建议 根据JDK-8203703的提案可归结为以下新增内容 public final class String implements /*...*/ CharSequence {// ...public R R transform(Function? super String, ? extends R f) {return f.apply(this);}// ... } 如您所见此方法仅自身调用给定的Function即可。 但是它对于链接实用程序方法非常有用例如Apache Commons的 StringUtils中的方法 String result string.toLowerCase().transform(StringUtils::stripAccents).transform(StringUtils::capitalize); 通常我们必须写 String result StringUtils.capitalize(StringUtils.stripAccents(string.toLowerCase()));考虑CharSequence.transform 在某个时候艾伦·贝特曼Alan Bateman 提出了在CharSequence中潜在定义transform 的问题 R R transform(Function? super CharSequence, ? extends R f) 这将具有能够在任何CharSequence上应用基于CharSequence的实用程序方法例如StringUtils.isNumeric 的好处例如 boolean isNumeric charSequence.transform(s - StringUtils.defaultIfBlank(0)).transform(StringUtils::isNumeric); 但是正如RémiForax所指出的 此签名的问题在于 如果它是由String 继承的大多数实用程序方法都将String作为参数–这样的方法将不起作用例如StringUtils :: capitalize 如果它被String 覆盖 由于以下原因无法进行有用的覆盖 Function? super String, R 结果 CharSequence.transform的主题已被删除。 问题 总而言之问题在于能够进行转换 一个CharSequence 使用Function即需要CharSequence或Object ? super CharSequence 一个String 使用接受String或其任何父类型 ? super String 的Function 。 当我在这里查看这些下 限时 我意识到我已经看到了这种问题参见Filterer Pattern 。 因此这个问题归结为如何协变地指定Function的反 变界。 解 Java不支持逆变参数类型 并且它的语法也没有提供一种方法来协变 ? extends 指定在单个声明中绑定的逆变 ? super 。 然而有可能做到这一点在两个分开的宣言通过中间辅助类型的装置。 假设我们要为泛型Function? super T, ? extends R Function? super T, ? extends R Function? super T, ? extends R 我们需要 将上面的Function参数移动到参数为T的辅助接口中 将此辅助接口与上限 ? extends T 一起用作返回类型。 变压器接口 我定义了这样的帮助程序接口我称之为Transformer 如下所示 FunctionalInterface interface TransformerT {R R by(Function? super T, ? extends R f); }可转换的接口 定义了Transformer 我们可以定义以下称为Transformable基本接口 interface Transformable {Transformer? transformed(); } 该接口本身并不能做很多事情但我将其视为以下方面的规范 子类型实现者 它提醒他们使用适当的上限覆盖已transformed方法并加以实现 子类型用户 提醒他们可以调用transformed().by(f) 。 总结起来这对 Transformer Transformable 让我们替换 obj.transform(function) 使用 obj.transformed().by(function) 样例实施 回到String之前让我们看看实现这两个接口有多么容易 class Sample implements Transformable {Overridepublic TransformerSample transformed() {return this::transform; // method reference}private R R transform(Function? super Sample, ? extends R f) {return f.apply(this);} } 如您所见所需要的只是对transform的方法引用 。 transform方法被设为私有因此当子类型定义自己的适当地 下界 transform时它们之间不会发生冲突。 上下文中的解决方案 上下文中的实现 它如何应用于CharSequence和String 首先我们将CharSequence扩展为Transformable public interface CharSequence extends Transformable {// ...OverrideTransformer? extends CharSequence transformed();// ... } 然后我们transformed在String实现transformed 返回对public transform方法的方法引用已在JDK 12中添加 public final class String implements /*...*/ CharSequence {// ...Overridepublic TransformerString transformed() {return this::transform;}// ... } 请注意我们对transformed的返回类型进行了协变更改 Transformer? extends CharSequence Transformer? extends CharSequence → TransformerString 。 相容性风险 我认为添加CharSequence.transformed的兼容性风险很小。 仅对于那些已经具有无参数transformed方法的CharSequence子类它可能会破坏向后兼容性这似乎不太可能。 上下文中的用法 对于使用String不会改变因为有呼吁没有一点transformed().by()在transform() 但是通用CharSequence的用法将需要诉诸transformed().by()因为它可能有很多实现因此transform方法必须是private boolean isNumeric charSequence.transformed().by(s - StringUtils.defaultIfBlank(0)).transformed().by(StringUtils::isNumeric);性能 如果您不熟悉JVM 最常表示HotSpot 及其JIT编译器的工作方式那么您可能想知道这种明显的额外对象创建 Transformer in transformed 是否不会影响性能。 幸运的是由于有了转义分析 *和标量替换 该对象从未在堆上分配。 答案是不会不会。 * 此Wikipedia条目包含错误的陈述“ 因此编译器可以安全地在堆栈上分配这两个对象。 ”正如 AlekseyShipilёv解释的那样 Java不会在堆栈上分配整个对象。 基准测试 如果您需要证明这里有一些基准使用AlekseyShipilёv出色的JMH基准线束 。 因为我不能容易添加必要的方法以String 我创建了一个简单的包装过String 并实现了在它之上的标杆。 基准测试toLowerCase()操作 在两个字符串上 no change 无操作 Some Change 使用三种通话类型 直接基准 transform() transformed().by() 您可以在GitHub gist中找到此基准测试的完整源代码。 结果如下在Oracle JDK 8上运行花费了50分钟 Benchmark (string) Mode Cnt Score Error UnitsTransformerBenchmark.baseline no change avgt 25 22,215 ± 0,054 ns/op TransformerBenchmark.transform no change avgt 25 22,540 ± 0,039 ns/op TransformerBenchmark.transformed no change avgt 25 22,565 ± 0,059 ns/opTransformerBenchmark.baseline Some Change avgt 25 63,122 ± 0,541 ns/op TransformerBenchmark.transform Some Change avgt 25 63,405 ± 0,196 ns/op TransformerBenchmark.transformed Some Change avgt 25 62,930 ± 0,209 ns/op 如您所见对于这两个字符串这三种调用类型之间没有性能差异。 摘要 我意识到 Transformable可能太“奢侈”了无法真正将其纳入JDK。 实际上即使仅由CharSequence和String返回的Transformer也不值得。 这是因为对CharSequence的一元运算似乎并不常见例如StringUtils仅包含少数几个。 但是我发现“ Transformer和“ Transformable的基本概念很诱人。 因此我希望您喜欢阅读并在某些情况下会发现它很有用 翻译自: https://www.javacodegeeks.com/2019/02/transformer-pattern.html

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

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

相关文章

专业做网站制作paypal网站做外贸

我发现org.apache.commons.pool非常有用且健壮,但没有充分记录。 因此,我将在这里帮助您解释如何使用Apache KeyedObjectPool 。 什么是KeyedObjectPool ? 它是一个映射,其中包含多种类型的实例池。 可以使用任意键访问每种类型。…

大连网站推广爱得科技公司建网站怎么建

Python数据库编程实战:sqlite3模块详解 在Python中,数据库编程是一项重要且实用的技能。通过数据库,我们可以高效地存储、检索和管理大量数据。Python提供了多种数据库编程接口,其中sqlite3模块是一个轻量级的关系型数据库引擎&a…

Modularity —— A thinking to separate complexity

Modularity —— A thinking to separate complexityPosted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:Modularity —— A thinking to separate complexityModularity —— A thinkin…

同构系统与异构系统深度对比分析

同构系统与异构系统深度对比分析Posted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:同构系统与异构系统深度对比分析️ 同构系统与异构系统深度对比分析 概述 在分布式系统架构设计中,…

# Redis内存管理与过期策略深度解析

# Redis内存管理与过期策略深度解析Posted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# Redis内存管理与过期策略深度解析Redis内存管理与过期策略深度解析 思维路线导读 本文将从Re…

# AI时代的软件工作流革命:从历史演进到未来探索

# AI时代的软件工作流革命:从历史演进到未来探索Posted on 2025-09-22 23:48 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# AI时代的软件工作流革命:从历史演进到未来探索AI时代的软件工作流革命:从历史…

建设会员网站需要多少钱云南学校 手机网站建设

人工智能入门与实战第一季:python基础语法字符串是比较常见的数据类型,在第一章中我们最早接触的数据类型就是字符串:"hello world",字符串可以用单引号’‘或双引号""来表示代码示例:name "…

班级网站建设html制作哪个国家的绘本网站做的好

我们在处理数据时,会遇到需要在每行数据前面、后面、开头、结尾添加各种不一样的字符 如果数据不多,我们可以自己手动的去添加,但如果达到了成百上千行,此时再机械的手动添加是不现实的 这里教给大家如何快速的在数据每行的前后…

建设班级网站过程跨境电商运营基础知识

什么是AQS? 就是基于双向链表CAS实现的锁的一种机制或者方法思想。就是AbstractQueuedSynchronizer,是Java并发包下的一个基类基于AQS实现的同步器包括:ReentrantLock、CountDownLatch、Samaphone、FutureTask、ReentrantWriteLock Abstrac…

有什么做外贸的好网站网站跳出率高怎么办

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 队列、栈、列表 前言一、队列(Queue)二、栈(Stack)三、列表(List)总结 前言 队列、栈、列表是其中三个…

collectfrom企业网站模版交互式网站有哪些功能

极高的安全性 交易平台最重要的是数据安全,这涉及到产品、用户、平台信息等,能够保护数据隐私的安全,是网站交易的首要原则。 2020年,数据泄露、网络渗透、大量数据被销售、勒索软件爆发......每个网站都可能成为黑客的目标&#…

东莞网站建站模板广州市网站

总结:C的访问修饰符的作用是以类为单位,而不是以对象为单位。 通俗的讲,同类的对象间可以“互相访问”对方的数据成员,只不过访问途径不是直接访问. 步骤是:通过一个对象调用其public成员函数,此成员函数可…

杭州公司网站制作驻马店网站建设公司

选自TowardsDataScience作者:George Seif本文转自机器之心(nearhuman2014)本文可以教你仅使用 3 行代码,大大加快数据预处理的速度。Python 是机器学习领域内的首选编程语言,它易于使用,也有很多出色的库来帮助你更快处理数据。但…

龙泉驿网站建设北京网站建设公司 蓝纤科技

文章目录 文章目录 pinia组成部分 pinia使用流程 注意Store获取到后不能解构,否则失去响应式 一、pinia原理? 功能:管理全局共享数据,pinia与vuex功能一样优势:pinia相对于vuex增加了对ts的支持,对响应式的…

国家工程建设标准化网站南京网站定制公司

目 录 2引脚说明 2.1引脚排列 2.2引脚定义 2.3内部引脚使用说明 2.4引脚上下拉、串联说明 2.5功能引脚信号走线长度与阻抗说明 本文档为创龙科技SOM-TLT507工业

一元夺宝网站怎么做wordpress上传权限设置密码

进行本示例的演示,需要先配置好Maven和Spring哦、见:【Spring】基于IntelliJ IDEA搭建Maven分析通过profile,我们可以获得不同的profile,我们可以获得不同的Bean。Spring4提供了一个更通用的基于条件的Bean的创建,即使用Condition…

网站备案在哪里审批我做的网站关键词到首页了没单子

第一部分:PyTorch 核心 欢迎来到本书的第一部分。在这里,我们将与 PyTorch 迈出第一步,获得理解其结构和解决 PyTorch 项目机制所需的基本技能。 在第一章中,我们将首次接触 PyTorch,了解它是什么,解决了…

网站界面(ui)设计形考任务1黄志达设计公司官网

发布时间:2015-09-10在游戏中新手玩家要注意些什么呢?今天就为大家带来新手必看技巧汇总,一起来看看吧. 新手必看技巧大全: 1.开局遇到人别急着标记,尽量先找到目标位置 2.如果开局 ...标签:发布时间:2016-04-29彩虹六号:围攻 地图攻略 总统…

自适应平台网站模板天元建设集团有限公司青岛分公司

2023.12.16 题目来源我的题解方法一 线段树(借鉴官方题解评论区 知白守黑) 题目来源 力扣每日一题;题序:2276 我的题解 方法一 线段树(借鉴官方题解评论区 知白守黑) 用一棵平衡二叉搜索树维护插入的区间…

门户网站网站制作帝国cms+wordpress

https://github.com/nihui/ruapu是nihui大佬开发的用单文件检测CPU特性的项目 ruapu.h的使用 "ruapu.h"主要提供了两个函数 ruapu_init 和 ruapu_supports,分别用于初始化和检测指令集支持。 // 使用示例见:https://github1s.com/nihui/rua…