类别归档:译林

外语文献翻译

RSS feed of 译林

AWS 将终止 Amazon Pinpoint 支持:迁移路径与时间线

关键时间节点

AWS 经评估后决定终止 Amazon Pinpoint 服务,核心时间线如下:

  • 2025-05-20 起:停止接受新客户。在此日期前注册的现有账户不受影响,可继续使用。
  • 2026-10-30 起:正式终止支持。此后将无法访问 Pinpoint 控制台,也无法访问端点、细分、活动、旅程和分析等资源。

需要特别强调:短信、语音、移动推送、OTP 以及电话号码验证相关的 API 不受本次变更影响——这些接口已在 2024 年第三季度划归 AWS End User Messaging 继续提供服务。另外,本文为对官方公告的整理与精简,如与英文原文有出入,一律以原文为准。

你属于哪一类用户

Pinpoint 的客户大致分为两类,迁移目标也因此不同:

  • 参与功能用户:使用端点(Endpoint)、细分(Segment)、营销活动(Campaign)、旅程(Journey)与分析等 engagement 能力。
  • 消息渠道用户:使用短信、彩信/WhatsApp、推送、文字转语音等消息发送 API。

参与功能用户:迁移到 Amazon Connect ...

继续阅读

Lucene vs Solr

这是一篇译文,原文链接:http://www.lucenetutorial.com/lucene-vs-solr.html

许多刚刚接触Lucene与Solr的朋友会问一个比较浅显的问题:我应该使用Lucene还是Solr?

答案很简单:如果你问了自己这个问题,99%的情况下,你需要使用的是Solr。

要搞明白Solr与Lucene之间的关系,可以简单地用汽车与引擎做类比。你不能驾驶一台引擎,但是可以驾驶一辆汽车。类似的,Lucene是一个不可以原样使用(use as-is)的编程库,而Solr是一个可以“开箱即用”的完整的应用。

Solr是什么?

Apache Solr是基于Lucene构建并集成了许多额外特性的Web应用程序。

它添加的功能包括:

  • XML/HTTP 与 JSON APIs
  • 命中高亮
  • 分面搜索(Faceted Search)与过滤
  • 地理空间搜索(Geospatial Search)
  • 快速的增量更新与索引复制(Index Replication)
  • 缓存
  • 复制(Replication)
  • Web管理接口等等

与Lucene不同,Solr是一款Web应用程序(WAR),可以部署到任何servlet容器之中,比如Jetty,Tomcat,Resin等等。

Solr可以为非编程人员安装和使用。Lucene不能。

Solr的支持完善吗?

是的!Solr社区非常活跃并且乐于助人。

Solr的索引可以被Lucene读取吗,反过来呢?

由于Solr底层使用的是Lucene,Solr索引实际上与Lucene索引是一回事。

从技术层面上讲,并不存在Solr索引这一概念,而只有Solr实例创建的Lucene索引。

我什么时候应该使用Lucene?

比如当你需要将Lucene搜索引擎嵌入到桌面应用程序中的时候,Lucene会是更加合适的选择。

对于高度定制化的需求,需要访问Lucene的底层API类的时候,Solr可能更多的是帮倒忙了,因为它是一个额外的间接层。

线段树 | 第1讲 (给定区间求和)

让我们通过考虑下面的问题来理解线段树。

给定一个数组arr[0 . . . n-1],我们要对数组执行这样的操作:

1 计算从下标l到r的元素之和,其中 0 <= l <= r <= n-1
​2 修改数组指定元素的值arr[i] = x,其中 0 <= i <= n-1

一个简单的方案是从lr执行循环,计算给定区间的元素之和。更新值的时候,简单地令arr[i] = x。第一个操作花费O(n)的时间,第二个操作花费O(1)的时间。

第二个方案是创建另外一个数组来存储从下标i开始的元素之和。这样一来,给定区间之和可以用O(1)的时间计算,但是更新需要花费O(n)的时间。这种方法适用于需要大量查询而更新操作较少的场景。

如果查询和更新的次数一样多呢?我们可以在O(log n)的时间内完成上述两种操作吗?

我们可以使用线段树来实现在O(log n)时间内完成上述两种操作。

线段树的表示:

1. ...

继续阅读

浮点精度问题简析

Why don’t my numbers add up?

为什么我的数加起来对不上?

So you’ve written some absurdly simple code, say for example:

你写了一段极其简单的代码,比如:

    0.1 + 0.2

and got a really unexpected result:

然后得到了一个意想不到的结果:

    0.30000000000000004

Why don’t my numbers, like 0.1 + 0.2 add ...

继续阅读

二叉搜索树(BST)相较于哈希表的优势

哈希表支持在Θ(1)时间内完成下列操作:

1) 查找
2) 插入
3) 删除

对于自平衡的二叉搜索树,比如红黑树(Red-Black Tree),平衡二叉树(AVL Tree),伸展树(Splay Tree)等,上述操作的时间复杂度是O(Logn)。

因此对于常用操作哈希表似乎完胜BST。那么我们在什么时候应该选择BST而不是哈希表,BST的优势何在。下面是BST的几项比较重要的优势。

我们只需通过中序遍历BST即可获得排好序的key列表。而这并非哈希表的自然操作,需要额外的工作才可以实现。

使用BST可以很容易地执行顺序统计,找出最接近的最小和最大元素,执行范围查询。像排序一样,这些操作也不是哈希表的自然操作。

BST相较于哈希表更容易实现,我们可以很容易地实现自定义的BST。而要实现哈希表,我们一般需要依赖编程语言提供的库函数。

使用BST,所有的操作都可以确保在O(Logn)时间内完成,而对于哈希表, Θ(1) 是平均时间,对于某些特定的操作代价可能会比较高,尤其是当表的大小需要调整时。


英文原文:

Hash Table supports following operations in Θ(1) time.
1) Search
2) Insert
3) Delete

The time complexity of above operations in a ...

继续阅读