小编Chr*_*her的帖子

Groovy管道是真正的UNIX管道吗?

我今天刚开始研究Groovy.我考虑用它来替换一些更复杂的bash脚本.

对我来说,其中一个非常有趣的概念是可以轻松使用管道:

proc1 = 'ls'.execute()
proc2 = 'tr -d o'.execute()
proc3 = 'tr -d e'.execute()
proc4 = 'tr -d i'.execute()
proc1 | proc2 | proc3 | proc4
proc4.waitFor()
Run Code Online (Sandbox Code Playgroud)

棒极了.但我的问题是:这是否使用真正的UNIX管道(例如在Linux上运行时),或者这只是一个使用Java流的模拟?(如果是这样,它会慢得多/效率低吗?)

groovy

10
推荐指数
2
解决办法
3722
查看次数

使用Jetty设置HTTP标头

在Jetty 6.1中设置HTTP头(基于文件名模式)的最佳方法是什么?是否可以通过jetty.xml(或jetty-web.xml)?或者我是否必须修改web.xml?

configuration jetty

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

轻松启动独立JNDI服务器(并注册一些资源)

出于测试目的,我正在寻找一种简单的方法来启动独立的 JNDI服务器,并以"java:/comp/env/jdbc/mydatasource"编程方式绑定我的javax.sql.DataSource .

服务器应该将自己绑定到某个URL,例如:"java.naming.provider.url = jnp:// localhost:1099"(不一定是JNP),这样我就可以从另一个进程查找我的数据源.我不关心我必须使用哪个JNDI服务器实现(但我不想启动一个成熟的JavaEE服务器).

这应该很容易,但令我惊讶的是,我找不到任何(工作)教程.

java jndi datasource

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

Apache POI for Excel:将整个列的单元格类型设置为"text"

我需要使用Java库Apache POI生成一个.xls(Excel)文件,用于电子表格.

该文件将包含A列中的电话号码列表,格式为"0221 ...."或"+49221 ..." - 因此Excel默认将它们解释为数字单元格.这很糟糕,因为前导0或+将被修剪.

为了解决这个问题,我可以使用cell.setCellType(Cell.CELL_TYPE_STRING),它工作正常,但仅适用于我为此设置的特定单元格.

如何将此设置应用于整个列(即使对于所有剩余的单元格,用户还将输入其他电话号码)?

在Excel中,这是可能的:选择整个列,然后应用单元格类型(设置可以保存/加载文件.)

但我找不到正确的POI方法.

  • 首先我假设,应该是这样的sheet.setDefaultCellType(int colNum).但我找不到这样的东西(可能我只是盲目?库中有很多类似的方法 用于应用"对齐中心"等文本样式.)
  • 然后我想:也许它只能应用于NamedRange或类似的东西,但我还没有设法弄清楚它是如何工作的......

excel xls xlsx apache-poi

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

关于nodetool repair -pr的澄清

文档:

使用nodetool repair -pr(-partitioner-range)选项仅修复该节点的主要范围,该范围的其他副本仍然必须执行Merkle树计算,从而导致验证压缩.因为所有副本同时是压缩的,所以所有节点对于该部分数据的响应可能很慢.

可能从来没有一个时间我可以接受所有节点对于某一部分数据来说速度慢.但我想知道:为什么会这样做(或者可能只是在文档中使用"-par"选项混合?!),当时nodetool repair看起来更聪明:

默认情况下,repair命令会立即获取每个副本的快照,然后从快照中按顺序修复每个副本.例如,如果您有RF = 3且A,B和C代表三个副本,则此命令立即获取每个副本的快照,然后从快照中顺序修复每个副本(A < - > B,A < - > C, B - - C)而不是一次修复A,B和C. 这允许动态snitch通过其他副本维护应用程序的性能,因为快照中至少有一个副本没有进行修复.

但是,datastax博客解决了这个问题:

然而,第一阶段可能在磁盘上密集.您可以通过压缩限制在某种程度上缓解这种情况(因为这个阶段就是我们所说的验证压缩.)有时候这还不够,有些人试图通过使用-pr(-partitioner-range)来进一步缓解这种情况. nodetool repair的选项,仅修复该节点的主要范围.不幸的是,该范围的其他副本仍然必须执行Merkle树计算,从而导致验证压缩.这可能是一个问题,因为所有副本都将同时执行此操作,可能使它们对于您的数据部分的响应速度都很慢.幸运的是,通过使用-snapshot选项可以解决这个问题.

这可能很好,但实际上,没有-snapshot选项nodetool repair(参见联机帮助页或文档)(已删除此选项?!)

总的来说,

  • nodetool repair -pr似乎无法使用,因为我总是至少需要让系统保持足够的响应能力来读取/写入一致性ONE,而不会有明显的延迟.(注意:我们只有一个数据中心.)或者我错过/误解了什么?
  • 为什么是nodetool repair智能的,保持一个节点响应,同时nodetool repair -pr使一部分数据的所有节点变慢?
  • -snapshot选项在哪里:它已被删除,从未实现过,或者它现在可能会自动运行,也可以在使用时自动运行nodetool repair -pr

cassandra nodetool

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

泽西岛客户端无阻塞

产生大量线程绝不是一个好主意(当你创建太多时,你可能会耗尽内存).

通常,Jersey需要为每个请求创建一个线程.这似乎是这种情况,无论我使用async() (泽西为我创建线程 - 我在调试器中调查过这个),或者不是(我显然必须自己创建线程).

所以这是一个不够好的具体情况:

我是HTTP发布到远程服务器,速率高达500请求/秒.但由于响应可能需要一些时间才能到达(我计算最多30秒),线程总数可以轻松达到数千(此时,JVM进程通常会崩溃).而且,创建这么多线程真的很疯狂.对于处理该负载的可用处理器/网络/ OS资源而言,它实际上应该是一块蛋糕.

所以我想做的是,只需触发请求 - 并在HTTP响应到达时通知操作系统.

  • 如上所述,简单地使用target.request(...).async()....并不能解决问题(因为那时,泽西岛只会产生自己的线程).
  • 此外,限制线程数通过new ClientConfig().property(ClientProperties.ASYNC_THREADPOOL_SIZE, 10)是没有用的,因为这意味着一次最多发送10个请求,这显然不是我想要的(它只会堆积队列).

我尝试过new ClientConfig().connectorProvider(new GrizzlyConnectorProvider())获得NIO支持 - 但根本没有看到任何行为上的差异.

那么有没有办法发出请求而不必为每个请求创建一个额外的线程?

java nio jersey grizzly jersey-client

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

PostgreSQL是否保证独特的时间戳?

8字节整数现在是 Postgres 8.4 的默认值,因此它允许存储微秒值.

我不太关心真正的微秒级精度(可能取决于操作系统的能力?!) - 但Postgres保证,时间戳值(插入current_timestamp)在任何两个事务之间总是不同吗?

sql database postgresql

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

将外部服务器的自签名证书添加到我的Tomcat的受信任证书中

我的Tomcat需要使用SSL(TLS)连接到另一个 Web服务器(https://foreign.example.com).

foreign.example.com有一个自签名证书,我相信.当然,我的Tomcat默认不会 - 所以我必须告诉它.一种方法是:

$JRE/bin/keytool -import -alias my -file ssl-cert-myselfsigned.cer -keystore 
 $JRE/lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)

这有效:我的Tomcat允许SSL连接.

但是,我不喜欢这样做:它将证书导入我的Java安装的可信密钥.我不想说:"我的机器上运行Java的每个应用程序都应该信任该证书".只有Tomcat(或运行Tomcat的用户)才应该信任它.

所以我尝试将它导入到tomcat-user的密钥库中~/.keystore,并<Connector>使用以下属性设置Tomcat :

keystoreFile="${user.home}/.keystore"
keystorePass="thePassphraseICreatedTheKeystoreWith"
Run Code Online (Sandbox Code Playgroud)

但是,这根本不起作用(我相信,这只适用于我的Tomcat的服务器证书,而不适用于外部服务器的服务器证书,对吧?)

我尝试使用truststoreFile/ truststorePassattributes,但它们也没有用.(这些属性记录在http://tomcat.apache.org/tomcat-6.0-doc/config/http.html)

有没有办法使用外部服务器的服务器证书设置Tomcat,或者可能添加一些命令行参数java,使我的密钥库(和密钥库密码)可用于JVM实例?

java ssl tomcat certificate tomcat6

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

将img src设置为未更改的值的性能?

如果我有一个像img标签

<img src="example.png" />
Run Code Online (Sandbox Code Playgroud)

我通过它设置它

myImg.src = "example.png";
Run Code Online (Sandbox Code Playgroud)

再次使用相同的值,这将是一个无操作,还是浏览器会不必要地重绘图像?(我主要对IE6-8,FF3.x,Safari 4-5和Chrome的行为感兴趣.)

我需要一次更改许多(数百个)图像,并且手动比较src属性可能有点多余 - 我认为,浏览器已经为我做了这个?

html javascript performance

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

是否可以使用GWT GeneratorContext查找使用@MyAnnotation注释的所有类?

使用Generators创建类时,可以发现类型的所有子类.您可以在GWT Showcase源代码中找到此技术(请参阅完整代码):

JClassType cwType = null;
try {
  cwType = context.getTypeOracle().getType(ContentWidget.class.getName());
} catch (NotFoundException e) {
  logger.log(TreeLogger.ERROR, "Cannot find ContentWidget class", e);
  throw new UnableToCompleteException();
}
JClassType[] types = cwType.getSubtypes();
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情,而不是扩展一个类(或实现一个接口)

public class SomeWidget extends ContentWidget { ... }
Run Code Online (Sandbox Code Playgroud)

我还可以通过注释小部件来做到这一点吗?

@MyAnnotation(...)
public class SomeWidget extends Widget { ... }
Run Code Online (Sandbox Code Playgroud)

然后找到所有使用@MyAnnotation注释的小部件?我找不到像这样的方法JAnnotationType.getAnnotatedTypes(),但也许我只是盲目的?

注意:我能够使用Google Reflections库,reflections.getTypesAnnotatedWith(SomeAnnotation.class)但我更喜欢使用GeneratorContext,特别是因为在DevMode中重新加载应用程序时效果更好.

gwt

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