我从未真正研究过它,但现在我意识到我无法轻松构建两个相同的.jar文件.
我的意思是,如果我构建两次,没有改变任何东西,我得到完全相同的大小但.jar的校验和不同.
于是我赶紧跑了一些测试(基本解压,排序-n -k 5 "荷兰国际集团,然后DIFF "荷兰国际集团)看到所有文件里面将.jar是相同的,但该.jar是不同的.
所以我用一个简单的.zip文件做了测试,发现了这个:
... $ zip 1.zip a.txt
... $ zip 2.zip a.txt
... $ ls -l ?.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 1.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 2.zip
Run Code Online (Sandbox Code Playgroud)
(完全相同的.zip文件大小)
... $ sha1sum ?.zip
db99f6ad5733c25c0ef1695ac3ca3baf5d5245cf 1.zip
eaf9f0f92eb2ac3e6ac33b44ef45b170f7984a91 2.zip
Run Code Online (Sandbox Code Playgroud)
(不同的SHA-1总和,让我们看看为什么)
$ hexdump 1.zip -C > 1.txt
$ hexdump 2.zip -C > 2.txt
$ diff 1.txt 2.txt
3c3
< 00000020 …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以编写Eclipse本身的某些操作.我希望能够启动一个服务器,停止它等等.这可能吗?如果是的话,怎么样?
编辑:我希望能够这样做,这样我就可以通过SSH连接运行某些服务器命令,无需物理交互.谢谢.
编辑:这个可重现的SIGSEGV发生在具有多个proc和超过2GB内存的Linux机器上,因此Java默认为-server模式.有趣的是,如果我强迫"-client"再也没有崩溃......(我仍然不太清楚如何处理我可重复的SIGSEGV,但它仍然很有趣).
首先请注意,这有点相关但与以下内容不同,因为在我们的情况下,它只发生了一个SIGSEGV,我们可以可靠地触发它:
JVM OutOfMemory错误"死亡螺旋"(不是内存泄漏)
它是相关的,因为它发生在我们的应用程序提供"大量数据"时:数据来自文本文件然后数字嘎吱嘎吱(是的,Java中的财务数字运算).
我只能使用有效的Java代码可靠地触发JVM到SIGSEGV.
注意:我总是会崩溃JVM 1.6.0_17和JVM 1.6.0_18这个问题并不是关于如何解决这个问题(例如,使用VM参数可以解决问题,但我不是在那之后,我想知道如何处理这种始终可重复的SIGSEGV).
我有一个解决方法,只是在启动我们的应用程序时使用Java 1.5(同时仍然使用Java 1.6在同一台机器上运行IntelliJ IDEA等),但我的问题是,是否应报告此情况,如果它应该,如何报告它知道日志本身包含专有信息(完整的hs_err _..._日志).
可以排除硬件错误:
这种情况发生在一个经常达到几个月正常运行时间的工作站上(我只在重要的安全补丁影响我已经发布的严格和强化的Debian Linux时重新启动它,这实际上并不经常发生)以及哪些应用程序永远不会崩溃(使它非常不太可能是那台机器上的硬件问题[更多下面])
相同的应用程序在相同负载下的JVM 1.5下在同一台机器上完美运行(这就是我测试应用程序的方式:我只需在1.5 VM下启动它)
相同的应用程序在相同(巨大)负载下的超过一百台客户端机器上运行完美(在Windows + JVM 1.5或1.6上从未崩溃一次,并且从未在OS X + JVM 1.5或1.6上崩溃一次[崩溃意味着即时电话来自客户的电话])
同一台机器上的其他应用程序和相同的1.6.0_17或1.6.0_18 JVM永远不会崩溃(例如我有两个IntelliJ IDEA实例作为同一台机器上的两个不同用户运行而且它们不会崩溃)
机器用memtest"定期"测试(在安装新操作系统之前,最后一次发生在安装Debian Lenny时,不久前)
这是可重复的按需SIGSEGV:
... $uname -a
Linux saturn 2.6.26-2-686 #1 SMP Wed Nov 4 20:45:37 UTC 2009 i686 GNU/Linux
... $ export /home/wizard/jdk1.6.0_17/bin:$PATH
... $ java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
启动应用程序,输入"大量数据",等待几秒钟...... …
打开一个txt文件的最简单方法是什么,该文件的路径必须使用shell find命令找到?
例如,假设我想打开一个我知道(唯一)命名为example.txt的文件,我知道它是"我可以使用shell find命令找到它的地方".
我现在做的是这样的:
我做Cu(通用参数)然后M-!(shell命令)
然后我输入查找,例如:
find . -iname "example.txt"
Run Code Online (Sandbox Code Playgroud)
然后完整路径(我之前不知道)出现在缓冲区中,我剪切它,然后我点击Cx Cf,我删除默认写入的内容然后粘贴我之前剪切的内容.
这似乎有点长,需要很多按键,cut'n'pasting等.
有没有最简单的方法来做同样的事情(没有编写新的自定义Emacs命令)?
在阅读并尝试了很多之后,我不得不问是否有人能解决我的问题.
我试图在防火墙后面设置一些Tomcats(V6).这没什么大不了的 - 但我想通过JMX监控它们.
我阅读了TC文档并遇到了JMXRemoteLifecycleListener.我的测试TC安装完全按照上面的链接设置.因此,我没有从我们网络中的一个主机到另一个主机的连接.此外,每次启动TC时都会打开第三个随机端口.
在我的server.xml中,监听器被激活
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="8050" rmiServerPortPlatform="8060" />
Run Code Online (Sandbox Code Playgroud)
catalina.out说一切都好.
2011-06-14 16:46:48,819 [main] INFO org.apache.catalina.mbeans.JmxRemoteLifecycleListener-
The JMX Remote Listener has configured the registry on port 8050 and the server on port 8060 for the Platform server
Run Code Online (Sandbox Code Playgroud)
端口是开放的,我可以通过telnet从任何其他主机连接到它们.我可以用(service:jmx:rmi://<hostname>:8xxx/jndi/rmi://<hostname>:8xxxx/jmxrmi)本地连接到vm
Netstats输出如下:
tcp6 0 0 :::8080 :::* LISTEN 11291/java
tcp6 0 0 :::8050 :::* LISTEN 11291/java
tcp6 0 0 :::8060 :::* LISTEN 11291/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 11291/java
tcp6 0 0 :::60901 :::* LISTEN 11291/java
tcp6 …Run Code Online (Sandbox Code Playgroud) 这并不是说编辑器(S)的主观也不争辩的问题,但需要是/否答案,如果答案是肯定的一个问题,姓名(或名称).
Imagine the company guideline mandates committed code to use the K&R style and that I prefer Allman (for example). Are there editors (either standalone or part of an IDE) that allow you to always "view" your source code using the Allman style, yet always save the file using the K&R style?
It doesn't seem that far-fetched nor that complicated: the source code/text file would always be saved using the "official" style, but what the editor would show you on-screen …
请注意,我没有"问题",我不是在寻找"另一种方法来找到我的算法的大O".
我想知道的是,是否可以编写一个程序,您可以将数据点传递给各种输入大小的算法测量数据点,(n,time taken to solve problem for n)然后确定算法的复杂性.
例如,输入可能是什么(它可能更大,它只是一个例子,这不是问题的重点):
36 000 took 16 ms
109 000 took 21 ms
327 000 took 68 ms
984 000 took 224 ms
2 952 000 took 760 ms
8 857 000 took 2305 ms
26 571 000 took 7379 ms
79 716 000 took 23336 ms
Run Code Online (Sandbox Code Playgroud)
使用这种类型的数据,才有可能写一个程序,如果我们有,比方说,一个会讲O(n),log(n),n log(n)或n!算法中?
我经常需要在某些文件上做一些Emacs魔术,我需要在我的IDE(IntelliJ IDEA)和Emacs之间来回切换.
当在Emacs下进行更改(并且在我保存文件之后)并且我回到IntelliJ时,立即出现更改(如果我没记错的话,我将IntelliJ配置为"在磁盘上检测到修改时始终重新加载文件"或者某事像那样).我甚至不需要重新加载:一旦IntelliJ IDEA获得焦点,它立即重新加载文件(因此我可以立即访问我从Emacs所做的修改).
到目前为止,非常好.
然而"反过来",它还没有奏效.
我可以配置Emacs,以便每次在磁盘上更改文件时重新加载它吗?
或者制作Emacs,每当它"获得焦点"时,验证当前打开的文件是否已在磁盘上修改过?
我知道我可以开始修改Emacs下的缓冲区,它会立即警告它已被修改,但我宁愿让它立即执行(例如,如果我使用我的IDE进行一些重大更改,当我回到我看到的Emacs可能根本不再是文件所包含的内容,而且有点奇怪).
我有一个特殊的需求,最重要的问题是:
这是我的"问题":我需要在内存中存储大量非常稀疏的位数组.这些位集仅"附加",主要用于交叉点.通过巨大的,我的意思是高达200 000位阵列.
每个位组的范围应在[0 ... 16 000 000]之间.
我用"仅"10个673位数组运行了一些预测试,其中包含了我得到的一些实际数据并得到了以下结果:
1% of the bit arrays ( 106 bit arrays) Hamming weight: at most 1 bit set
5% of the bit arrays ( 534 bit arrays) Hamming weight: at most 4 bits set
10% of the bit arrays ( 1068 bit arrays) Hamming weight: at most 8 bits set
15% of the bit arrays ( 1603 bit arrays) Hamming weight: at most 12 bits set
20% of the bit …Run Code Online (Sandbox Code Playgroud) 在一个高度并发的Java程序中,并假设我的方法正确编写并正确同步,我想知道如何确定哪个更好:
void synchronized something() {
...
}
Run Code Online (Sandbox Code Playgroud)
要么
void something() {
synchronized(this) {
...
}
// here do stuff no requiring synchronization
.
. // do computation 'A'
.
synchronized(this) {
...
}
// here do other stuff no requiring synchronization
.
. // do computation 'B'
.
synchronized(this) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在我意识到如果计算'A'和'B'需要花费很多时间,那么第二个版本显然更好.
然而,我的问题是:你知道第二个版本更高效吗?
第二个版本总是更快还是有几次获取/释放锁的隐藏成本?
如果我的计算'A'只是一些微不足道的事情,那该怎么办?
s.getString().substring( 0, 2 ).toLowerCase();
Run Code Online (Sandbox Code Playgroud)