当前位置: 首页 > news >正文

太原市网站建设_网站建设公司_在线商城_seo优化

wordpress移除后台部分页面,优化网站关键词,上海做什么工作最赚钱,长安网站优化公司lambda 序列化总览 lambda序列化在许多用例中很有用#xff0c;例如持久配置或作为远程资源的访客模式 。 远程访客 例如#xff0c;因此我想访问远程Map上的资源#xff0c;可以使用get / put#xff0c;但是说我只想从Map的值中返回一个字段#xff0c;我可以将lambda作… lambda 序列化 总览 lambda序列化在许多用例中很有用例如持久配置或作为远程资源的访客模式 。 远程访客 例如因此我想访问远程Map上的资源可以使用get / put但是说我只想从Map的值中返回一个字段我可以将lambda作为访问者来提取信息。我想要。 MapView userMap Chassis.acquireMap(users, String.class, UserInfo.class); userMap.put(userid, new UserInfo(Users Name));// print out changesuserInfo.registerSubscriber(System.out::println);// obtain just the fullName without downloading the whole object String name userMap.applyToKey(userid, u - u.fullName);// increment a counter atomically and trigger // an updated event printed with the subscriber. userMap.asyncUpdateKey(userid, ui - {ui.usageCounter;return ui; });// increment a counter and return the userid int count userMap.syncUpdateKey(userid,ui - { ui.usageCounter; return ui;},ui - ui.usageCounter); 如您所见添加各种简单功能或调用方法来执行所需的操作很容易。 唯一的问题是默认情况下lambda无法序列化。 可序列化的Lambda 使Lambda可序列化的一种简单方法是将的可转换类型添加到引用lambda的实现的变量中。 FunctionUserInfo, String fullNameFunc (FunctionUserInfo,String Serializable) ui - ui.fullName; String fullName userInfo.applyToKey(userid, fullNameFunc); 如您所见这引入了很多样板。 使用lambda的一个关键原因是避免样板代码那么替代方法是什么 使lambda可在您的API中序列化。 不幸的是无法更改标准API或添加其子类但是如果您拥有自己的API则可以使用Serializable接口。 FunctionalInterface public interface SerializableFunctionI, O extends FunctionI, O, Serializable { } 该接口可用作参数类型。 default R R applyToKey(K key, NotNull SerializableFunctionE, R function) {return function.apply(get(key)); } 您的API用户不必明确声明lambda是可序列化的。 // obtain just the fullName without downloading the whole object String name userMap.applyToKey(userid, u - u.fullName); 远程实现对lambda进行序列化然后在服务器上执行该lambda并返回结果。 类似地存在将lambda应用于整个地图的方法。 查询和订阅 为了支持查询如果要隐式添加Serializable则不能使用内置的streamAPI。 但是您可以创建一个尽可能相似的文件。 Map collect userMap.entrySet().query().filter(e - e.getKey().matches(u*d)).map(e - e.getValue()).collect(Collectors.groupingBy(u - u.usageCounter)); 或作为过滤的订阅。 // print userid which have a usageCounter 10 each time it is incremented. userMap.entrySet().query().filter(e - e.getValue().usageCounter 10).map(e - e.getKey()).subscribe(System.out::println); 这与常规流API的不同之处在于数据可以分布在许多服务器上并且当任何服务器上的数据发生更改时您都会得到回调。 在服务器上应用过滤器和映射时只有您感兴趣的数据才通过网络发送。 Java序列化 Java序列化是一个很好的通用化向后兼容的序列化库。 替代方案尝试解决的两个最常见问题是性能和跨平台序列化。 在上面的示例中fullNameFunc序列化到700多个字节并且有非常有限的选项来优化它以减小消息的大小或产生的垃圾量。 相比之下简单的二进制YAML序列化使用348并提供更多选项来优化序列化。 这就提出了如何使用替代跨平台或更快的序列化格式来序列化lambda的问题。 替代序列化 您可以加入当前的序列化机制。 不支持此功能它可以随时更改但是没有其他受支持的方式来执行此操作。 无论如何您可以这样做 Method writeReplace lambda.getClass().getDeclaredMethod(writeReplace); writeReplace.setAccessible(true); SerializedLambda sl (SerializedLambda) writeReplace.invoke(lambda); 这为您提供了一个对象您可以检查该对象以提取lambda的内容。 要么查看它调用什么方法要么对其进行序列化。 在反序列化方面您可以重新创建该对象并可以在该对象上读取Resolve。 标准API 当前没有用于内省lambda的标准API。 这样做是有意进行的以便将来可以更改实现尽管没有公共JEP可以这样做。 但是就像Unsafe是内部API一样我期待有一天可以使用标准API而不必深入研究JVM的内部来实现解决方案。 结论 通过对API进行一些更改您可以使序列化lambda对开发人员而言基本上是透明的。 这使实现简单的分布式系统更容易使用同时为您提供优化方法。 翻译自: https://www.javacodegeeks.com/2015/07/how-and-why-to-serialize-lambdas.htmllambda 序列化
http://www.lebaoying.cn/news/115185.html

相关文章:

  • 网站开发 方案概要域名注册费用
  • 百度上如何做企业网站公众号开发小程序开发
  • 关于酒店网站建设的摘要工信部企业网站认证
  • 本地常州网站建设广东建设工程网站
  • 公司网站建设应包含哪几个板块网站开发php学校
  • 换网站了吗网站二级页面需不需要设置关键词
  • php网站后台教程做一个app需要多少费用
  • 物流公司做网站注重什么网站开发费如何入账
  • 哈尔滨网站基础优化网站怎么看哪个公司网站建设
  • 网站建设平台选择爱空间家装怎么样?两点告诉你
  • 网站开发在哪个科目核算公司资料模板
  • wordpress仿站pdf七台河网站制作
  • 平台制作专业网站制作用最少的钱做网站
  • 电影网站做视频联盟高端网站定制设计公司
  • 新建网站网络空间大气好寓意的广告公司名字
  • 免费百度网站建设怎样才能在网上卖东西
  • 衡州网站建设seo如何把网站提交给百度
  • 资阳网站建设公司wordpress放大指定图片
  • 微信哪里可以做视频网站ppt模板免费下载完整版免费网站
  • 怎么建立信息网站平台网店运营推广具体内容
  • 烟台做网站推广的公司怎么可以联系到网站开发者
  • 大型网站为什么难做福清市建设局网站多少
  • 云南网站开发网络公司前10织梦做的网站 首页有空白
  • 让你有做黑客感觉的网站做游戏网站主页的素材
  • 网站开发公司广州南京律师网站建设
  • 手机网站开发标准车机油哪个网站做的好
  • 学生建设网站旅游网站开发目标
  • 会展相关app和网站的建设情况专题网站开发工具有哪些
  • 贵阳企业网站设计制作老薛主机 wordpress 打不开
  • 百度建设网站的目的seo网站描述之间用什么标点符号