小编Rob*_*ian的帖子

如何在AngularJS中更改范围时重新应用指令

说你有这样的事情:

<div mydirective>
  {{boundtoscope}}
</div>
Run Code Online (Sandbox Code Playgroud)

并且您希望将mydirective应用于$ scope.boundtoscope的更改.你如何指导Angular重新申请该指令?

javascript directive angularjs

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

在Rhino eval期间包含JavaScript文件

如何在由Java运行的Rhino Engine评估的另一个脚本"Foo"中包含一个脚本"Bar".

IE,在Java中设置这样的脚本引擎:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
BufferedReader br = new BufferedReader(new FileReader(new File("Foo.js")));
engine.eval(br);
Run Code Online (Sandbox Code Playgroud)

......并将以下内容放入Foo:

load(["Bar.js"])
Run Code Online (Sandbox Code Playgroud)

根据Rhino shell文档,这是实现它的方法.但是从Java运行时,它显然没有实现:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "load" is not defined.
Run Code Online (Sandbox Code Playgroud)

@Phillip:

感谢您的创意回应.您的解决方案不太有效,因为除非使用Invocable接口,否则eval不会使解析的函数可用.此外,它在Java代码不可访问的情况下不起作用.我详细阐述了你的解决方法并创建了一些适用于纯JS的东西:

首先创建一个引擎,公开Invocable接口:

var engine = new Packages.javax.script.ScriptEngineManager().getEngineByName("javascript");
engine = Packages.javax.script.Invocable(engine);
Run Code Online (Sandbox Code Playgroud)

然后"加载()"脚本

engine.eval(new java.io.FileReader('./function.js'));
Run Code Online (Sandbox Code Playgroud)

此时,可以使用以下方法评估函数:

engine.invokeFunction("printHello", null);
Run Code Online (Sandbox Code Playgroud)

javascript rhino

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

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

如何使用本机lib(即hashlib)在Python中迭代sha256,使用byte []作为输入而不是十六进制字符串

背景:我需要从Python脚本和Java Web应用程序计算迭代哈希算法.

Psuedo代码:

hash = sha256(raw)
for x=1 to 64000 hash = sha256(hash)
Run Code Online (Sandbox Code Playgroud)

其中hash是长度为32的字节数组,而不是长度为64的十六进制字符串.

我希望以字节为单位的原因是因为尽管Python可以在每次迭代之间转换为十六进制字符串并且将处理时间保持在一秒之内,但Java需要3秒才能获得字符串开销.

所以,Java代码看起来像这样:

// hash one time...
byte[] result = sha256(raw.getBytes("UTF-8"));

// then hash 64k-1 more times
for (int x = 0; x < 64000-1; x++) {
  result = sha256(result);
}

// hex encode and print result
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
for (int i=0; i<buf.length; i++) {
  formatter.format("%02x", buf[i]);
}
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud)

Python代码如下所示:

import hashlib

# hash 1 time...
hasher = hashlib.sha256() …
Run Code Online (Sandbox Code Playgroud)

python java hash hex sha256

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

Gradle - 如何从魔法缓存中提取依赖项?

我正在寻找一个用gradle配置的项目(github上的netflix/karyon),并且能够轻松地构建战争("gradle war").到目前为止,这一切都很好.

战争在哪里?这很容易,只是find . -type f \( -name "*.war" \)...猜猜也许调试标志也会告诉我的?

什么在战争中?只有示例项目的代码,这是伟大的,漂亮的和轻量级的.你会期待什么.

依赖项在哪里?现场无处可去.我确实知道它们位于隐藏的gradle点目录中的某个神奇缓存中.

如何获取依赖项列表?

我想我可以'清理干净&& gradle war> out'并检查maven.org GET的输出文件?我尝试了"gradle依赖"并且"构建成功"但没有列出依赖项.

我还尝试了"工作"的eclipse插件,创建了一个.project文件.但就是这样.没有添加任何东西到buildpath,也没有libs可以说.

是的我知道它运行是因为我可以使用gradle jetty插件成功运行webapp.(也是魔术)

所以问题:

  1. 是否有一个gradle命令用于"找出依赖关系并列出它们或更好地将它们提取到目录"

  2. 为什么eclipse插件不起作用?(A)在eclipsify步骤中如何正确识别源代码需要做什么,以及(B)只是一个问题,Eclipse如何知道jar文件的神奇位置和编码?

  3. 是否有一个用于gradle的jboss插件?或者将工作的gradle/jetty项目迁移到不会导致过早老化的工作gradle/jboss项目的最佳实践?

jboss jetty netflix gradle

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

内部微服务调用的消息总线与Quasar/HTTP

我希望优化当前使用HTTP/REST进行内部节点到节点通信的微服务架构.

一种选择是在服务中实现背压功能,(例如)通过将类似Quasar的东西集成到堆栈中.这无疑会改善一切.但我看到了几个挑战.一个是,异步客户端线程是瞬态的(在内存中),在客户端故障(崩溃)时,这些重试线程将丢失.第二,理论上,如果目标服务器停机一段时间,客户端最终可能会尝试重试OOM,因为线程最终受到限制,甚至是Quasar Fibers.

我知道这有点偏执,但我想知道基于队列的替代方案是否会在非常大的范围内更有利.

它仍然像Quasar /光纤一样异步工作,除了a)队列是集中管理的并且离开客户端JVM,以及b)队列可以是持久的,因此在客户端和/或目标服务器发生故障的情况下,没有在线消息迷路了.

排队的缺点当然是有更多的跳跃,它会减慢系统的速度.但我认为Quasar ROI可能达到峰值,而集中且持久的队列对于扩展和HA来说更为关键.

我的问题是:

是否讨论了这种权衡?是否有任何关于使用集中式外部队列/路由器方法进行内部服务通信的文章.

TL; DR; 我刚才意识到我可以将这个问题说成:

"什么时候使用基于消息总线的内部服务通信,而不是微服务架构中的直接HTTP."

java message-bus backpressure quasar microservices

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

AngularJS - >查询"位于页面底部"

问什么是最好的方式"滚动更多还是我们到达Angular中可滚动区域的底部?"

拥有一个带有固定底部导航栏的单页应用程序,并希望显示一个指示有更多内容要显示的ui cue,条件是不在页面末尾.认为有一个书签方式(哈希标签)来做到这一点.

javascript css css3 twitter-bootstrap angularjs

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