小编Har*_*ald的帖子

xslt-1.0 迭代固定值列表

我需要根据输入生成固定数量语言的 XML 结构,该输入可能包含也可能不包含每种语言的信息。如果信息丢失,我需要生成空元素。问题是,我需要在输出结构中的许多地方迭代语言。

最简单的方法是使用类似的东西

<xsl:variable name="languages" select="en,de,fr">
<xsl:for-each select="$languages">
...
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

循环出现在我需要语言列表的任何地方。

当然这不起作用,因为select="en,de,fr"没有定义节点列表。通过扩展我可以使用node-set函数,但我仍坚持使用 XSLT-1.0。

有没有办法定义一个常量节点集来迭代?

(这在某种程度上与另一个问题有关,其中接受的答案消除了创建常量节点集的许多想法,特别是需要 的子元素的所有内容<xsl:variable/>

xslt xslt-1.0

5
推荐指数
1
解决办法
3986
查看次数

使用 Apache http 客户端进行故障转移的循环

查看 Apache HTTP 组件HttpClientBuilder并发现它有

  • 重试处理程序
  • 路线规划器
  • 退避策略

我想知道这些是否有意且可行地组合成具有故障转移功能的循环客户端负载均衡器路由规划器的教程看起来指向任意故障转移地址可能不是预期用途。

有人可以解释一下吗?负载均衡器是否是受支持的用例,或者如果我尝试的话,我是否会过度弯曲 API 并破坏它?

java apache http

5
推荐指数
0
解决办法
1368
查看次数

当客户端是多线程时,客户端对 HTTP 429 的正确反应是什么?

HTTP 状态代码 429 告诉发出请求的客户端在响应的 Retry-After 标头中指定的时间段后退出并重试请求。

在单线程客户端中,很明显,获取 429 的线程应该按照指示等待,然后重试。但RFC明确指出

本规范没有定义源服务器如何识别用户,也没有定义它如何计算请求。

因此,在多线程客户端中,保守的方法会阻止所有线程发送请求,直到 Retry-After 时间点。但:

  • 许多线程可能已经超过了它们可以记录来自一个被拒绝线程的信息的程度,并且将至少再发送一个请求。
  • 线程之间的全局同步可能很难实现和正确
  • 如果设置不仅运行多个线程而且运行多个客户端,可能在不同的机器上,在一个 429 上回退所有这些变得非常重要。

有没有人有云提供商的服务器如何实际处理这个领域的具体数据?如果我不全局阻止所有线程,它们会立即恶化吗?微软的建议

  1. 等待 Retry-After 字段中指定的秒数。
  2. 重试请求。
  3. 如果请求再次失败并显示 429 错误代码,则您仍然受到限制。继续使用推荐的 Retry-After 延迟并重试请求,直到成功。

它两次说“请求”而不是“任何请求”或“所有请求”,但这是我不确定的法律类型解释。

为了确保这不是一个意见问题,让我尽可能以事实为基础来表述它:

是否有更详细的云 API 规范(微软、谷歌、Facebook、Twitter)然后上面的例子让我做出明智的决定是否需要全局回退或是否足以回退获得的特定请求429?

multithreading http rate-limiting http-status-code-429

5
推荐指数
1
解决办法
768
查看次数

为什么akka确实需要不可变的消息

或者说另一种方式:是否正确使用可变消息?

我面临的用例是我想要处理基本类型的对象

Map<String,List<String>>
Run Code Online (Sandbox Code Playgroud)

演员所做的典型处理是读取或写入地图的某些字段.一个null简洁的例子是(离开 - 测试等)

  map.get("somekey").add("new value");
Run Code Online (Sandbox Code Playgroud)

我的预感是,通过使用相应的集合类型,在Scala中保持这种不可变性是微不足道的.在Java中,它需要一些额外的类库.

但是:阅读Akka文档,我发现发送消息引入了发送者的最后一次访问和接收者的第一次访问之间发生的关系.因此,如果map不是不可变的,那么发送者应该看到所有数据.

假设我可以确保发送方在发送后永远不会map再次触摸,是否有任何其他问题需要关于对此映射的线程数据访问?

java scala immutability thread-safety akka

4
推荐指数
1
解决办法
2808
查看次数

SolrCloud:是否可以在搜索结果中获取文档的分片ID

在SolrCloud中调试Solr模式和索引时,很容易知道文档被索引到哪个分片.是否可以为分片ID定义架构字段,以便在搜索结果中可以使用自动分配的分片ID?

solr sharding solrcloud

4
推荐指数
1
解决办法
687
查看次数

使Rust线程退出阻塞操作的标准方法是什么?

来自Java,我习惯于遵循以下习惯用法

while (true) {
  try {
    someBlockingOperation();
  } catch (InterruptedException e) {
    Thread.currentThread.interrupt(); // re-set the interrupted flag
    cleanup(); // whatever is necessary
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,它可以在整个JDK中处理任何可能阻塞的内容,例如从文件读取,从套接字读取,从队列读取甚至对于Thread.sleep()

阅读有关如何在Rust中完成此操作的信息,我发现了许多看似特殊的解决方案,例如miotokio。我也找到ErrorKind::Interrupted并尝试ErrorKind通过发送SIGINT到线程来解决这个问题,但是线程似乎立即死亡而没有留下任何(返回)跟踪。

这是我使用的代码(注意:Rust还不很精通,因此看起来可能有些奇怪,但是可以运行):

use std::io;
use std::io::Read;
use std::thread;

pub fn main() {
    let sub_thread = thread::spawn(|| {
        let mut buffer = [0; 10];
        loop {
            let d = io::stdin().read(&mut buffer);
            println!("{:?}", d);
            let n = d.unwrap();
            if n == 0 { …
Run Code Online (Sandbox Code Playgroud)

multithreading terminate rust

4
推荐指数
1
解决办法
1023
查看次数

将 gnu 的输出与单个文件或管道并行管道输出是否安全

具有类似于

find . -type f -name '*log' \
| parallel grep 'somestuff'    
| moreComplexLineRearrangementScript
| sort
Run Code Online (Sandbox Code Playgroud)

我想知道 moreComplexLineRearrangementScript 是否有看到乱码的风险,因为多个 grep 实例在没有任何缓冲区同步的情况下写入同一个管道。

  1. 对于上述 grep 的天真使用,这可能是一个问题,还是我可以依赖于 grep 的实现总是使用flush()写入行的事实?
  2. 如果不是 grep,parallelflush() 是否有什么神奇之处?
  3. parallel除了将每个并行进程的输出重定向到一个单独的文件然后从那里开始之外,有没有一种方法可以保证行保持完整?

parallel-processing scripting io-redirection

3
推荐指数
1
解决办法
510
查看次数

在 Elasticsearch 中恢复特定索引

我有 2 个 Elasticsearch(1 个用于 PROD,1 个用于 DEV 环境)并且我已经设置了一个 NFS 分区(存储库)用于通过 bash 脚本从 PROD 备份所有索引。我们在 DEV Elasticsearch 上有相同的索引,但里面有不同的数据。今天开发人员说他想要从PROD到DEV的2个索引的完整副本。我已经有了完整的索引备份!我知道如何恢复所有索引,但如何选择仅有的 2 个索引?不是完全恢复索引?例如,我有包含这些家伙的快照

{
   "snapshot":"elasticsearch_all_indicies_25_06_2018",
   "uuid":"aGzmhyOkmlkfmflnslndfs",
   "version_id":5060699,
   "version":"5.6.6",
   "indices":[
      "banners",
      "products",
      "catalogs",
      "darbiz",
      ".kibana",
      "invoices",
      "bundles",
      "groups",
      "searchitems",
      "params",
      "orders"
   ],
   "state":"SUCCESS",
   "start_time":"2018-06-24T23:30:01.978Z",
   "start_time_in_millis":1529883001978,
   "end_time":"2018-06-24T23:30:06.765Z",
   "end_time_in_millis":1529883006765,
   "duration_in_millis":4787,
   "failures":[

   ],
   "shards":{
      "total":75,
      "failed":0,
      "successful":75
   }
}
Run Code Online (Sandbox Code Playgroud)

例如,我只需要恢复到 DEV 的订单和参数索引,而不是整个集合,我该怎么做?谢谢你

linux elasticsearch

3
推荐指数
1
解决办法
3112
查看次数

将Java.home从JVM中取出而不编写Java代码来打印它

根据几个帖子(例如,迈向JAVA_HOME的"真实"定义),并搜索一些可用的文档,JAVA_HOME与JVM本身无关,并且没有被它使用.

然而,有些软件需要设置它,可能与系统属性的值完全相同java.home.根据这一假设java是在PATH,反正是有挤压此系统属性指出,在Windows/Unix/Mac类似之间移植---除了在编写和编译代码的这一小撮行系统输出属性的JVM的?

我真的希望一些不太知名的命令行选项或其他可爱的技巧.假设jdk(而不是jre)会好的.如何与一些自我指涉的东西jps,jstack,jidunnothatitevenexits

jshell在Java-9中让它变得简单.但我需要一个Java-8的解决方案,甚至可能是-7.:-(

java jvm

2
推荐指数
1
解决办法
550
查看次数

具有可见性约束的Haskell构造函数或工厂方法中的保护

对Haskell而言是新手并进行实验我遇到了一个问题,看起来我想在构造函数中使用守卫.我真正的实验涉及更多,但它归结为类似的东西

data X a = Zero
   | a==0 = Zero
   | otherwise = Some a
Run Code Online (Sandbox Code Playgroud)

我知道这是错误的语法,特别是因为它a是一个类型变量,而不是一个值变量,所以a==0无论如何都是无意义的.

背景是价值Zero并且Some 0在所有方面都应该相等,我甚至会说相同.事实上,我从来不想构造一个Some 0,这应该被禁止,或者如上所述,默默地转换为Zero已经在构造函数中.

我认为Haskell中有一个共同的习惯用法.在Java中,我只需要创建两个构造函数private并提供工厂方法来创建一个或另一个而不是some(0)返回.这也是你在Haskell中对此的看法吗?ZeroSome(0)

编辑:好的,谷歌搜索更多我终于找到了Haskell Factory Function条目,这似乎是答案的一部分.

haskell factory-pattern

1
推荐指数
1
解决办法
274
查看次数