我刚刚阅读了Michael C. Feathers伟大的书籍"有效地使用遗留代码",这是对遗留代码进行测试的圣经.在本书中,他描述了一种称为编辑触发测试的东西:
如果在本书发布时没有出来,我怀疑有人会很快开发一个IDE,允许你指定一组将在每次击键时运行的测试.这将是关闭反馈循环的一种令人难以置信的方式.
它必须发生.这似乎是不可避免的.已经有IDE可以检查每次击键时的语法,并在出现错误时更改代码的颜色.编辑触发的测试是下一步.
当我读到这篇文章时,我没有听说过支持这一点的任何IDE或工具.但是,我刚刚发现了一个名为Infinitest的项目,它支持Java.
我的问题是:
更新:
我正在使用Eclipse作为IDE和Maven,以使所有依赖项保持最新并更新Eclipse项目.在Eclipse中,我通常将JRE系统库指定为任何Java项目的执行环境,通常是"JavaSE-1.6".
在pom.xml中我使用以下行:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<projectNameTemplate>[groupId].[artifactId]</projectNameTemplate>
<downloadJavadocs>true</downloadJavadocs>
<wtpversion>2.0</wtpversion>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这似乎让Maven选择了一个匹配1.6的JDK.它将其系统库分配给项目的类路径.但是,它直接使用jdk1.6.20而不是JavaSE-1.6.
有没有办法让Maven使用JavaSE-1.6?
编辑:这是我用来运行Maven的批处理文件:
SET JAVA_HOME=C:\Programme\java\jdk1.6.0_20
SET MAVEN_HOME=C:\Programme\apache-maven-2.2.1
SET MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m
SET PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PATH%
SET EXTRA_MVN_OPTS=-Dmaven.test.skip=true
CD /D "%~dp0"
cmd /c mvn %EXTRA_MVN_OPTS% eclipse:clean eclipse:eclipse
cmd /c mvn %EXTRA_MVN_OPTS% clean install
Run Code Online (Sandbox Code Playgroud) 假设我编写了一个需要访问Internet的Java应用程序.通常会弹出防火墙并询问是否正常.现在,我可以选择通常允许Internet访问或使用特定规则.由于我只检查一个Web服务,因此我设置了一条规则,限制在某个端口访问该服务器.
现在我有Java应用程序#2也需要Internet访问.如果我决定给应用程序#1完全访问权限,那么#2也具有完全访问权限.对于上面规则集的解决方案,我需要添加另一个规则,或者只是放弃并授予完全访问权限,因此,还要为应用程序#1提供完全访问权限.
我想你可以看出我的问题是什么.前段时间我遇到了同样的情况,我尝试了一个或两个将JAR转换为可执行文件的包装器.我注意到最后他们只是启动了JVM,导致通常的Java二进制文件打开Internet连接.
所以我的问题是:我有哪些选项允许用户为每个Java应用程序指定不同的防火墙规则?
编辑:在阅读完第一条评论之后,我想明确表示我并没有考虑如何配置防火墙,而是采用某种方式让Java应用程序本身具有或多或少的独特方式来识别自己或以其他方式处理网络访问.
知道为什么我得到这个例外吗?
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myService' defined in class path resource [context.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [$Proxy54 implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,net.sf.cglib.proxy.Factory,org.springframework.beans.factory.InitializingBean] to required type [com.mycompany.service.dao.MyDAO] for property 'myDAO'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy54 implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,net.sf.cglib.proxy.Factory,org.springframework.beans.factory.InitializingBean] to required type [com.mycompany.service.dao.MyDAO] for property 'myDAO': no matching editors or conversion strategy found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) …Run Code Online (Sandbox Code Playgroud) 我有一个不可能完成的任务,即解密从客户端发送的AES/CBC加密数据包.我做了大量的研究,让我相信如果IV是静态的,加密是不安全的.具体来说,对于此任务,IV始终静态设置为0.有什么办法可以做到这一点?
编辑: 纯文本是哈姆雷特剧本的片段.客户端以随机块的形式发送它们,因此长度甚至不一致.数据包可能最终重复,但我不是100%肯定.
我想以SET动态方式使用命令的搜索/替换功能.
通常的方式是这样的
SET blah=double-foo
SET blah=%blah:foo=bar%
Run Code Online (Sandbox Code Playgroud)
现在我想在第二行使用变量而不是foo和bar:
SET search=foo
SET repl=bar
SET blah=double-foo
ECHO %blah%
SET blah=%blah:%search%=%repl%%
ECHO %blah%
Run Code Online (Sandbox Code Playgroud)
我只能得到
double-foo
searchrepl%
Run Code Online (Sandbox Code Playgroud)
我也试过了
SET blah=%blah:(%search%=%repl%)%
SET blah=%blah:(%search%)=(%repl%)%
Run Code Online (Sandbox Code Playgroud)
我怎么做到这一点?如果我这样做没有SET那么好.最后,我想要保持环境变量double-bar.
我有一个AudioTrack的问题,这个Android API正在扼杀我.我来自没有以前的Android或Java经验,但我是一个非常有经验的编码器(asm,C++等在许多平台上),我从未想过我特别愚蠢,就像Android现在肯定让我感觉到的那样.
我究竟做错了什么?显然没有:
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minbufsizbytes*64, AudioTrack.MODE_STATIC);
audioTrack.write(Buffer, 0, numSamples);
audioTrack.play();
Run Code Online (Sandbox Code Playgroud)
实际上,sampleRate = 8000和minbufsizbytes = 742,其中(742*64 = 47488)比我正在写的缓冲区(16000个16位样本)大得多.
音频第一次播放就好了.但是......我如何不止一次地玩它?(例如,响应于事件,例如按下的钢琴键).如果我再次调用play(),则不会产生新的声音.经过几天的挫折之后,这就是我的想法:
for (i=0;;i++) {
SystemClock.sleep(3000L); // so the problem is NOT "fast, repeated attempts to replay sound", but looks like internal buffer overrun related (please see the Log'ed error below)
audioTrack.stop();
audioTrack.reloadStaticData();
audioTrack.setPlaybackHeadPosition(0);
audioTrack.play();
}
Run Code Online (Sandbox Code Playgroud)
所以它第三次播放声音(!)然后没有音频!并且Log会被此错误消息淹没:
05-18 13:03:16.785: ERROR/AudioFlinger(345): TrackBase::getBuffer buffer out of range:
05-18 13:03:16.785: ERROR/AudioFlinger(345): start: 0x404fb680, end 0x404fb7f2 , mBuffer 0x40507000 mBufferEnd 0x40512980
05-18 …Run Code Online (Sandbox Code Playgroud) D3:节点和链接之间的问题
我创建了以下jsfiddle以了解我正在尝试实现的目标:

我希望节点结束(?)链接...
请帮我.对不起我的英文:)
脚本看起来像这样:
function myGraph(el) {
this.addNode = function (id) {
nodes.push({ "id": id });
update();
}
this.removeNode = function (id) {
var i = 0;
var n = findNode(id);
while (i < links.length) {
if ((links[i]['source'] == n) || (links[i]['target'] == n)) links.splice(i, 1);
else i++;
}
nodes.splice(findNodeIndex(id), 1);
update();
}
this.addLink = function (source, target) {
links.push({ "source": findNode(source), "target": findNode(target) });
update();
}
var findNode = function (id) {
for (var i in …Run Code Online (Sandbox Code Playgroud) 我一直在使用maven2和hudson进行持续集成,但我发现Eclipse和Maven并不能很好地协同工作.当然有一个插件,但是将maven项目混合成eclipse喜欢的东西并且构建时间和单元测试太长时间是一种胡思乱想.我正在考虑切换回纯粹的日食项目,没有蚂蚁,也没有涉及maven.使用无限插件和可能的JavaRebel代理,它将为我提供一个非常快速的构建 - 部署 - 测试周期.但是我仍然希望自动和测试,所以:
如何使用与Eclipse项目的持续集成?
是否有命令行方式来做到这一点?
是否有一个本机支持它的构建服务器?
eclipse build-automation continuous-integration javarebel infinitest
我正在尝试启动并运行 Spring-Boot 服务器,它通过 SSL 提供一些安全性。我按照本指南的第1 步和第 2 步获得了自签名证书,并且能够通过https. 该application.properties如下所示:
server.port=8443
server.ssl.keyStore=classpath:keystore.p12
server.ssl.keyStorePassword=youd_want_to_know
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=hs
Run Code Online (Sandbox Code Playgroud)
keystore.p12 是用
$ keytool -genkey -alias hs -storetype PKCS12 \
-keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
Run Code Online (Sandbox Code Playgroud)
除了密码我没有输入任何内容,所有字段都是“未知”。
但是,浏览器中的锁不是绿色的。详细信息说
站点的证书链 (net::ERR_CERT_AUTHORITY_INVALID) 存在问题。
优点:
安全 TLS 连接
与此站点的连接使用了强大的协议版本和密码套件。
安全资源
此页面上的所有资源均安全提供。
我猜在纯文本中,这意味着数据是安全传输的,但是浏览器对证书并不完全满意,因为它无法跟踪真实性。因此,我知道这不值得用于生产(现在不需要)。
但是,因为我拥有服务器并且知道我自己创建了自签名证书,所以对我来说安全吗?或者有没有办法把它变成浏览器满意的证书?我需要做什么才能使其工作以及 Sprint-Boot 配置是什么样的?
java ×5
eclipse ×2
infinitest ×2
aes ×1
android ×1
audio ×1
batch-file ×1
cglib ×1
d3.js ×1
encryption ×1
firewall ×1
force-layout ×1
ide ×1
java-ee-6 ×1
javarebel ×1
maven ×1
maven-2 ×1
self-signed ×1
spring ×1
spring-boot ×1
tdd ×1
testing ×1
unit-testing ×1
windows ×1
z-index ×1