Rx.NET in Action 中文介绍 前言及序言

news2024/11/26 3:15:13

在这里插入图片描述在这里插入图片描述

Rx 处理器目录 (Catalog of Rx operators)

目标可选方式Rx 处理器(Operator)
创建 Observable
Creating Observables
直接创建
By explicit logic
Create
Defer
根据范围创建
By specification
Range
Repeat
Generate
Timer
Interval
Return
使用预设
Predefined primitives
Throw
Never
Empty
从其他类型创建
From other types
FromEventPattern
FromEvent
FromTask
FromAsync
变换
Transforming
单一值
To single value
Select
Materialize/Dematerialize
Timestamp
TimeInterval
展开内部的Collection或者Observable
Flattening inner collections/observables
SelectMany
分割成子序列
Splitting to subsequences
根据顺序或者时间
By coincidence/time
Buffer
Window
根据分组条件
By common key
GroupBy
GroupByUntil
控制ObserverObservable之间的关系
Controlling the observer- observable relationship
从观察者角度进行控制
The observed sequence
Take
TakeUntil
TakeWhile
Skip
SkipWhile
SkipUntil
StartWith
从订阅者角度进行控制
The subscription
Publish/PublishLast
Multicast
Replay
RefCount
Subscribe/DelaySubscription
组合
Combining
多值组合
Values from multiple
CombineLatest
WithLatestFrom
Zip
Merge
GroupJoin
每次取一个值
Values from one at a time
Concat
Switch
Join
Amb

前言

本书名为《Rx.NET 实战》(Rx.NET in Action),本书很好地介绍了,在.NET 开发人员使用 Rx时,需要的细节和基础知识。特别是,它解释了如何将 .NET 中的大量异步类型连接到 Rx Observable(可观察序列),以及如何处理错误、资源分配和并发性问题。

自问世以来,.NET Framework 一直强调异步执行和非阻塞 I/O 的重要性。通过委托,.NET Framework 从一开始就强调了高阶函数式编程。通过在委托上自动定义 BeginInvoke 和 EndInvoke 方法,开发人员可以异步调用任何方法。

但是,异步操作的 BeginInvoke/EndInvoke 模式既繁琐又冗长,因为它需要将代码转换为**延续传递(continuation-passing)**的模式。作为替代方案,.NET Framework 引入了基于事件的异步模式,该模式使用 .NET 对事件和事件处理程序的内置支持。与异步委托相比,虽然基于事件的模式向前迈进了一大步,但仍有更多的方式可以简化开发。

在处理同步数据流这个问题上,利用 Enumerable/IEnumerator 接口,LINQ 标准查询处理器(Operator)可以将该问题转换成声明式的方法进行处理,漂亮且优雅。如果我们能将事件也理解成数据流,并为事件提供一个类似 LINQ 的编程模型,岂不美哉?

当把事件用于异步调用时,我们会发现一个问题或者说是弊端,那就是大多数事件(例如鼠标点击事件)与异步操作绑定过程中,最多只能产生一个值。如果我们能利用这一规律——即异步方法只返回一个值,然后给异步方法构建一个类似命令式编程的模型,并支持常规的类似控制流的条件、循环和异常处理,岂不更好?

事实证明,这两个问题的答案都是肯定的! 通过使用均衡化的数学技巧,我们可以将 同步拉式流(synchronous pull-based stream) 中的 IEnumerable /IEnumerator 接口,转换成 异步推式流(asynchronous push-based stream) 中的 IObservable /IObserver 接口。 C# 和 Visual Basic 中的 async/await 语法允许开发人员使用常规命令语法编写同步和异步方法,而 LINQ 完全有能力支持发人员编写同步和异步,两种数据流的查询。

这就是 Rx 的核心。现在,.NET 之外的许多语言都采用了 one/many混合sync/async 的模式,这使得开发人员无论使用哪种语言都能愉快地工作。

如果你是一名.NET开发人员,你一定要随身携带本书,以便将 Rx.NET 用于实践!

— 埃里克-梅耶 ERIK MEIJER
RX 的发明者,应用对偶(APPLIED DUALITY)的创始人

阅读笔记:作者是applied duality的创始人,这个叫做applied duality公司的主页上有张图很有意思。

x轴黄色代表数据速率变化的大小,应该是说数据从静态拉取(pull)变化成动态推送(push);

y轴蓝色表示多样化的变化,应该是描述数据的表达方式从外键/主键模式(fk/pk)变化到主键/值模式(key/value);

z轴红色代表体量的变化,这个好理解,就是从小数据量(small)到大数据量(big);

这张图我觉得作者想表达两层含义:

  1. 作者认为Rx技术,从某种层面上可以理解为一种改良的sql技术,Rx可以适应数据的速率变化x,多样化y,体量变化z。
  2. 作者认为Rx声明式编程和Sql声明式编程之间存在对等性,彼此在处理数据的思想上是互通的。

从主页的介绍中能看到,作者发现时代在变化,数据逐渐从原来的静态模式转换成动态模式。他应该是想让Rx技术能像Sql一样,以一种声明的方式让人们去处理数据。毕竟用过Sql的人都能感受到她特殊的魅力。
应用对偶公司的介绍图

序言

Reactive Extensions (Rx) for .NET 于 2009 年 11 月首次发布,其简短描述为:"Rx 是一个 .NET 库,允许程序员编写简洁的声明式代码,根据熟悉的 .NET 习惯和模式,来协调异步和基于事件的程序。(见 http://mng.bz/gQ31)。

我还记得我当时观看了第一个示例,并阅读了讨论内容。这解决方案如此优雅和简单,让我惊叹不已。不幸的是,当我亲自尝试使用 Rx 时,发现事情比我想象的要难得多,在反应式编程方式上,我需要重新改变我的思维模式。在那个年代,这方面的资料并不多,我不得不努力解决自己的问题,并通过大量的试错来艰难地学习。

2012 年,在我服兵役结束并加入 CodeValue(www.codevalue.net)之后,有两个重大项目让我真正体会到了Rx的优势。第一个项目是一个网络安全应用程序,它需要对多个事件做出反应并进行协调,以便向最终用户显示并发的各种事件的状态。第二个是在移动和 PC 设备上运行视频聊天APP。视频聊天APP对用户登录和退出系统等事件做出反应,且必须以不同方式,接收处理各类信息。尽管这两个系统并不相同,但它们却面临同一个问题,即根据事件编写流程。该流程涉及对接收值过滤,处理异步和并发,以及识别重复发生的事件模式,以便应用程序能够高效、正确地做出响应。 我在这两个系统中都引入了 Rx,这也是每个系统取得成功的原因之一。我们的工作超出了预期,也比计划提前完成。

不过,尽管我掌握了 Rx 方面的知识,问题还是时有发生,而有关 Rx 的书籍和指南等资料却很少。很多时候,问题的起因是我的同事们缺乏相关知识,或者出现了对我们来说很陌生的情况。幸运的是,在我找到问题根源后,问题很容易就解决了,这主要是因为 Rx 处理器的灵活性。在接下来的几年里,我开始在博客上谈论 Rx 以及它如何让复杂问题的解决变得简单。就在那时,我萌生了写这本书的想法。 我的愿景是编写一本循序渐进的指南,希望让.NET程序员尽可能获取到使用Rx库和反应式编程所需的内容。我还想在书中介绍我多年来获得的实践经验,以及存在的问题和解决办法。

为了确保本书实现其目标,我付出了艰苦而细致的工作。有些章节必须重写,有些主题必须更改,有些材料必须删去,以便集中介绍重要的基本功能。这些辛勤工作的成果就是《Rx.NET in Action》,这是一本可以从头到尾阅读的书,也可以直接翻阅特定章节来解决问题或加深记忆。

Rx 是一种不断发展的技术,也被移植到了许多其他平台和语言上。它是一个开源项目,是 .NET 基金会(www.dotnetfoundation.org)的一部分。我希望 Rx 将成为在 .NET 中编程、组织和协调异步和基于事件的程序的实际方法,并希望本书能为你提供所需的一切,让你为 Rx 这个令人兴奋的新世界做好准备。

阅读感悟:感谢作者对于Rx的贡献,每每读到前言,我也是感慨万千,作为一个程序员能找到的Rx中文资料少之又少。境遇和作者写书时其实是一样的,希望本书能给更多人带来惊喜和快乐。

致谢

谨以此书献给我的妻子加芙列拉。 在我写作的整个过程中,是你的支持、关爱和照顾让我得以将这本书变成现实。我爱你,我钦佩你在我忙于写作时所付出的许多努力。

我美丽的孩子希拉和约纳坦,你们给我的生活带来了欢乐和光明;我深爱着你们。当你们睡着时,坐在你们身边,给了我许多章节的灵感。

感谢我的父母埃斯特和什洛莫,是他们给我买了第一台电脑,点燃了我对计算机科学的热情。

感谢我的表弟盖伊,他对我的生活和我今天看待事物的方式产生了巨大影响,我的许多软件能力都源于你的教导。

我的其他家人在我和他们聊天时,不得不忍受我的思绪飘到书上,我感谢你们所做的一切。

特别要感谢我的好朋友 Dror Helper,他在我不知情的情况下给了我很多建议,这些建议促成了这本书的诞生。

还要感谢我在 CodeValue 的所有同事,他们在整个过程中给予了我大力支持。

特别感谢 Erik Meijer 为我的书提供了精彩的前言,当然也要感谢他帮助创建了 Rx。

感谢 Manning 的员工。在编辑、制作和推广方面与我一起工作的每个人,无论是直接的还是幕后的,都帮助我创作出了最好的图书。这确实是一个团队的努力。

感谢在写作和发展过程中提供反馈意见的众多审稿人: Bruno Sonnino、Bachir Chihani、Carsten Jørgensen、Dror Helper、Edgar Knapp、Fabrizio Cucci、Goetz Heller、Ignacio Rigoni、Jason Hales、Joel Kotarski、Jorge Branco、Mattias Lundell、Michele Mauro、Oscar Vargas、Rohit Sharma 和 Stephen Byrne。还要感谢技术校对员科迪-桑德(Cody Sand),他一丝不苟地审阅了最终稿件的示例代码。

最后,非常感谢 Rx 团队和贡献者们,是他们打造了一项出色的技术。

关于本书

《Rx.NET in Action》是一本面向 .NET 开发人员的反应式扩展库完整指南。书中提供了解释、最佳实践、技巧和窍门,使你能够在应用程序中充分使用 Rx。

谁应该阅读本书?

Rx.NET in Action 适用于编写基于事件和异步应用程序的.NET 开发人员,他们需要对事件和基于推送的源进行强大的消费和查询功能。

《Rx.NET in Action》也适合那些对反应式程序设计和 Rx 库技术感到好奇,但又不急需使用的开发人员。在你的工具箱中添加 Rx 知识对未来的项目很有价值;反应式编程是一个热门话题,在未来仍将如此。

本书主要使用 Rx 的 .NET 版本,代码示例使用 C# 语言。熟悉 C# 的读者可以轻松掌握。

本书适用于 .NET 支持的任何平台(包括 .NET Core)。

本书的编排方式

全书共 11 章,分为两个部分。
第 1 部分,介绍了反应式编程以及理解库的功能方面所需的 .NET 技能。

  • 第 1 章探讨了反应式编程范式和反应式宣言概念。该章介绍了 Rx 的构建模块,并解释了何时以及为何要使用 Rx。
  • 第 2 章是你真正接触 Rx 的地方,也是将 Rx 融入你的应用程序所需的步骤。它展示了在应用程序中使用 Rx 的简单案例研究,并比较了同一应用程序在使用 Rx 之前和之后的两个版本。
  • 第 3 章概述了 Rx 使用的函数式编程概念和技术,以及它们如何与 .NET 框架和 C# 语言结合使用。

第 2 部分,深入介绍了使用 Rx 所要完成的每项任务——从创建Observable(可观察序列)和Observer(观察者)对象,到控制它们的生命周期以及对在它们之上创建的查询做出反应。

  • 第 4 章介绍了创建 Observable(可观察序列)的方法,并展示了如何通过枚举式和内置创建Operator(处理器)创建同步Observable(可观察序列)。
  • 第 5 章解释了 Rx 处理异步代码的方式,以及如何将本地 .NET 异步类型桥接到可观察对象中。本章还讨论了异步代码在现代应用程序中的重要性,以及如何在程序中添加周期性行为。
  • 第 6 章集中讨论了 Observable(可观察序列) 与observer(观察者) 的关系以及如何控制这种关系。在这一章中,我讲解了针对各种场景创建observer(观察者)的最佳方法,以及如何限制observer(观察者)订阅的生命周期。
  • 第 7 章解释了热观察对象和冷观察对象的区别,并介绍了 Rx subject。 本章教你如何在observer(观察者)订阅观察对象时控制Observable(可观察序列) 的状态,以及如何在observer(观察者)之间共享排放。
  • 第 8 章提供了 Rx 库中提供的基本查询处理器(Operator)目录。Rx 通常被称为 LINQ to Events,了解 Rx 处理器(Operator)的详细信息将有助于你构建功能强大的查询,从而节省你的时间和精力。
  • 第 9 章延续了第 8 章的内容,展示了分割和组合 Observable(可观察序列)的高级方法。你将学习如何根据条件或巧合对元素进行分组,以及如何对observer(观察者)之间的相关性做出反应。
  • 第 10 章深入探讨了 Rx 并发模型和同步。我介绍了Scheduler(调度器)的概念,并解释了 Rx 提供的Scheduler(调度器)。 然后,我将讲解如何控制 Rx 查询的时间和计算位置。
  • 第 11 章教你保护 Rx 查询免受故障影响,并对查询处理中可能发生的错误做出反应。本章还介绍了管理由 Observable(可观察序列)和 Rx 查询消耗的资源的方法。

本书还有三个附录:

  • 附录 A 总结了 .NET 中异步编程的概念。
  • 附录 B 介绍了 Rx Disposables 库,并解释了如何使用该库提供的实用程序。
  • 附录 C 解释了如何测试 Rx 处理器(Operator)和查询。

本书可作为指南和参考书使用。如果你是 Rx 的新手,我建议你从头开始阅读。如果你已经熟悉了 Rx 概念,根据你要完成的任务阅读特定章节可能会有所帮助。

关于代码

本书包含许多源代码示例,既有编号列表,也有与普通文本并列的示例。 在这两种情况下,源代码的格式都是固定宽度的字体,以便与普通文本区分开来。有时,代码也以粗体显示,以突出显示与本章前几步相比发生变化的代码,例如,当新功能添加到现有代码行时。

在许多情况下,原始源代码都经过了重新格式化;我们添加了换行符,并重新调整了缩进,以适应书中可用的页面空间。在极少数情况下,即使这样做也是不够的,因此在列表中加入了换行标记(➥)。此外,源代码中的注释往往在正文描述代码时从列表中删除。许多列表都附有代码注释,以突出重要概念。

本书的源代码可从出版商的网站(www.manning.com/books/rx-dot-net-in-action) 和GitHub(https://github.com/tamirdresher/RxInAction) 下载。该代码的使用说明包含在资源库根目录下的 README 文件中。

在电子书中,某些列表和代码片段使用了颜色。蓝色用于表示原始类型和保存的关键字。 水蓝色用于突出显示用户定义的类型,红色用于字符串字面量。棕色用于字符串参数占位符,绿色用于注释。一如既往,黑色为用户代码。

作者在线

购买《Rx.NET in Action》后,你可以免费访问由 Manning Publications 管理的私人网络论坛,在这里你可以对本书发表评论,提出技术问题,并从作者和其他用户那里获得帮助。要访问论坛并订阅,请将浏览http://www.manning.com/books/rx-dot-net-in-action。本页提供的信息包括注册后如何进入论坛、可获得的帮助种类以及论坛行为规则。

Manning对读者的承诺是提供一个场所,让读者个人之间以及读者与作者之间能够进行有意义的对话。这并不是对作者参与的具体数量的承诺,作者对作者在线论坛的贡献仍然是自愿的(而且是无偿的)。我们建议你试着向作者提出一些具有挑战性的问题,以免他对这本书产生兴趣。

对本书的兴趣

题外话!只要本书还在印刷,就可以从出版商的网站上访问作者在线论坛和以前的讨论档案。其他在线资源
如果你对 Rx 感兴趣,还可以访问 Rx 门户网站 http://reactivex.io,它提供了一个开发者中心。其中包含有关该库及其端口的

最新信息

Rx.NET 是一个开源项目,你可以在 https://github.com/dotnet/reactive上找到完整的代码和讨论。

如果你想咨询有关 Rx 的问题,可以访问 gitter 频道(https://gitter.im/Reactive-Extensions/Rx.NET) 或slack的#rx 频道,这需要你通过 .NET Core Slack 频道的注册页面(http://tattoocoder.com/aspnet-slack-sign-up/) 进行订阅。

关于作者

在这里插入图片描述
TAMIR DRESHER 是一名高级软件架构师,在以色列的 CodeValue 公司担任顾问。作为微软编程社区的杰出成员,Tamir 经常在开发者会议上就软件开发主题发表演讲,并在 Ruppin 学术中心担任软件工程讲师。
作为 .NET Framework 和软件工艺方面的专家,Tamir 已经培训了数百名开发人员,并为商业和公共部门的许多知名客户提供了帮助。
自 Rx 发布以来,Tamir 一直在使用它,且爱不释手。作为早期使用者之一,Tamir 了解 Rx 库的内部结构,并积极地向其他开发人员介绍 Rx,帮助他们利用反应式编程的强大功能提高编程技能。
Tamir 在他的博客 www.tamirdresher.com 上讲述了他的编程经历。

关于封面插图

《Rx.NET in Action》封面上的人物标题为 “中国僧侣或道士的习惯”。插图选自出版商托马斯-杰弗里斯(Thomas Jefferys)的《古今各国服饰集》(四卷)伦敦,1757 年至 1772 年间出版。扉页上标明这些是手工上色的铜版雕刻,并用阿拉伯树胶增色。 托马斯-杰弗里斯(1719-1771 年)被称为 “乔治三世的地理学家”。作为一名英国制图师,他是当时领先的地图供应商。他为政府和其他官方机构雕刻和印刷地图,并制作了大量商业地图和地图集,尤其是北美地图。作为一名地图绘制者,他对所勘测地当地的服饰和风土人情产生了浓厚的兴趣,他将这些都收藏在书中,内容十分精彩。
在 18 世纪晚期,以休闲为目的的出国旅行度假相对较少,于是乎像这样的作品集便很受欢迎,它向游客和人们介绍了其他国家的居民。 杰弗里斯画册中图画丰富多彩,生动地展现了约 200 年前世界各国的异域风情。自那以后,着装发生了变化,像当时那样,如此丰富的地区性也逐渐消失。 现在,人们常常很难分辨出一个大洲和另一个大洲的居民。 也许,乐观地看,我们用文化和视觉的多样性换来了更加丰富多彩的个人生活。或者说,我们换来了更丰富多彩、更有趣的知识和技术生活。
在我们很难区分一本电脑书籍和另一本书籍的时候,Manning 用杰弗里斯的图片还原了两个世纪前丰富多彩的地区生活,用书籍封面颂扬了电脑行业的创造力和主动性。

Rx.NET in Action 第一章学习笔记
Rx.NET in Action 第二章学习笔记
Rx.NET in Action 第三章学习笔记
Rx.NET in Action 第四章学习笔记

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

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

相关文章

【vue】alert弹窗太死板?试试这种方法(附代码)

alert(response.data.message); 新方法: this.$message.error(请检查您输入的的用户名和密码!);

等保案例 2

用户简介 青海省司法厅是贯彻执行国际司法行政的方针、政策,拟定青海市司法行政工作的政策、法规的重要组织机构。青海省司法厅根据国家部署及业务需要先后简历了司法专网及行政办公网,目前两套网络之间完全物理隔离。但青海省司法厅现有网络设备单一&a…

学会这个小技巧,让你的Jenkins更好用

♥ 前 言 在使用 Jenkins 时,我们经常遇到这样的需求:在 Jenkins 构建的时候拉取指定分支的代码或者指定 tag 的代码,而 Jenkins 默认没有带这样的参数化选择功能,我们可以通过 Git Parameter 插件来实现。 一、准备&#xff…

公文管理系统SSM+Activiti文档文件日志java jsp源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 公文管理系统SSMActiviti 系统有1权限:管…

达摩院FunASR实时语音听写服务软件包发布

7月初,FunASR社区发布了离线文件转写软件包,可以高精度、高效率、高并发的支持长音频离线文件转写,吸引了众开发者参与体验。应开发者需求,FunASR社区再次推出实时语音听写服务软件包,支持实时地进行语音转文字&#x…

如何进行网络活动监控

组织的 IT 基础架构中的每个网络设备上都发生了大量活动,例如数据包传输、来自网络协议的消息、设备状态事件等。网络活动成为在检测到问题时识别网络瓶颈的面包屑,因此即使是最微小的网络活动也应受到监控,因为它直接影响整体网络性能、运行…

Python web实战之Django的AJAX支持详解

关键词:Web开发、Django、AJAX、前端交互、动态网页 今天和大家分享Django的AJAX支持。AJAX可实现在网页上动态加载内容、无刷新更新数据的需求。 1. AJAX简介 AJAX(Asynchronous JavaScript and XML)是一种在网页上实现异步通信的技术。通过…

DHCPv6之GitHub项目Android侧验证

一、adb里面安装busybox 1、下载busybox 下载网址:Index of /downloads/binaries/1.21.1 (busybox.net),目前最新是1.21.1版本 根据项目选择busybox-armv7l ,右键另存为下载到本地目录,下载后去掉文件的后缀名,变成如…

MetaGPT-软件开发领域的重大变革

在不断发展的人工智能世界中,一个术语最近引起了人们的关注:MetaGPT。随着数字领域的竞争变得更加激烈,了解和利用 MetaGPT 的功能可以改变企业、开发人员和人工智能爱好者的游戏规则。本文深入探讨了 MetaGPT 的世界、其重要性及其对人工智能…

云服务监控解决方案

云监控是追踪、警报和报告性能指标的过程,目的是全面了解云服务和资源。应用程序管理器具有分析混合云和多云基础架构以及托管在其上的应用程序的性能所需的所有必要功能,它使管理员能够主动发现云服务的性能瓶颈,并在它们影响最终用户之前快…

优思学院|六西格玛黑带在公司中的人数应有多少?

6西格玛 (Six Sigma) 是一商业管理之战略模式。这套模式最初用于1986年,由摩托罗拉所创立,后来,在通用电气的CEO Jack Welch的大力推广之下,在1995年成为通用电气的核心管理思想。六西格玛现在被广泛应用于很多行业中,…

OneNote of win10登录个人账户,输入账号后,页面一直在转圈圈【已解决】

OneNote of win10登录个人账户,输入账号后,页面一直在转圈圈多种解决方式 1.win10 WLAN限制 在WLAN中找到能够使用WLAN的应用,把OneNote of win10打开。 2.关闭代理 ①关闭 VP* ②到 Windows 10 的设置里“网络和 Internet” →代理→把这…

9月大理,Move HackerHouse,成为全球数字游民的第一站

🚀世界各地的 hacker 们!即日起,我们正式向您发出 co-buiding & co-living 的邀请! 9.3日至9.24日,为期3周的 Move 主题Antalpha HackerHouse 将坐落于大理,邀请所有 Web3 开发者一起探索 Move 生态发…

初始多线程

目录 认识线程 线程是什么: 线程与进程的区别 Java中的线程和操作系统线程的关系 创建线程 继承Thread类 实现Runnable接口 其他变形 Thread类及其常见方法 Thread的常见构造方法 Thread类的几个常见属性 Thread类常用的方法 启动一个线程-start() 中断…

ROS新建工作区(workspace)与包(package)编译的实践(C++示例)

ROS工作区是用来存放ROS工作包的目录,这些工作包,包含了ROS程序的各种文件,包括源代码、配置文件、消息文件等。所以工作区的本质是一个文件夹,用来存放接下来将要介绍的包以及构建这些包所需的文件。ROS工作区可以新建很多&#…

drawio导出矢量图

1.选中要导出的图 2.导出为pdf 3.用adobe打开pdf,另存为eps

算法通关村第六关——原来如此简单

层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。 我们先看一下基础的层次遍历题,力扣102题:给你一个二叉树,请你返…

Android14新特性之语法性别API

Android14新特性之语法性别API 语法性别 API 为使用语法性别改变句子以根据受话人而变化的语言进行对话的用户提供了更加个性化、自然的语音体验。 例如法语中的语法: Chre cliente[女性],cher client[男性] — 亲爱的客户 [英文] 语法性别 API 在 Andr…

文献综述|NLP领域后门攻击、检测与防御

前言:在信息安全中后门攻击(Backdoor Attack)是指绕过安全控制而获取对程序或系统访问权的方法。而随着深度学习以及各种神经网络模型的广泛应用,神经网络中存在的后门问题也引起了研究人员的广泛关注。神经网络后门攻击就是使网络…

《2023年度数据泄露调查报告》发布,一起捕捉关键信息

Verizon于6月份发布了《2023年度数据泄露调查报告》。天空卫士基于数据安全的视角,对本报告进行简单解读和分析。 报告观察 在报告中,Verizon分析了16,312起事件,其中5,199起事件被认定为数据泄露事件。 本次泄露事件统计覆盖了11个行业&a…