我有一种情况,生成某个数据文件的唯一方法是手动将其打印到FILE:在Windows下并将其保存在文件中以供进一步处理.
我真的想有一个小的独立程序嵌入这个二进制打印机驱动程序,所以我可以从批处理文件运行它并让它为我生成二进制文件,因为我们可以完全自动化"在Visio中保存文件, '打印'它并将其上传到最终目的地并触发远程测试".
这可以通过合适的Windows SDK实现吗?我是一名Java程序员,所以我不知道Visual Studio和MSDN的可能性 - 但是! - 但我很感激指针.
编辑:我有该打印机驱动程序的安装文件,32位和64位.旧版本可能包含16位驱动程序.
编辑:"打印到文件:"功能正是文档推荐的内容.我已经玩了一点使用LPR协议来看看它能做些什么.我还是更喜欢"调用小二进制"方法.
我是一名非常熟练的C#开发人员,但需要开始编写适用于JVM的代码.与C#相比,Java语言功能较差,因此我对Scala提供的功能感兴趣.
然而,当在Scala中听到所有操作符都只是方法时,我开始怀疑对数学繁重计算会产生的性能影响(这对我的团队编写的应用程序类型很重要)
所以我运行了一些简单的基于int的测试,发现Scala比同等的Java代码慢大约30倍.不好!谁能告诉我我做错了什么?或者如何提高scala示例的计算性能以与Java相提并论?
UPDATE1:正如前两个答案所指出的,我是一个超级菜鸟并在IntelliJ IDE中运行它.我不知道如何通过java命令行运行scala应用程序,这可能是IntelliJ问题.感谢帮助人员,在继续执行perf测试之前,我需要调查scala的简单命令行执行,因为IDE给出的结果显然太不准确了.
UPDATE2:Luigi在评论中说他在IntelliJ中获得了相同的时间,所以看起来我的差异不是因为IntelliJ?关于这可能是什么的任何其他想法?我将尝试通过命令行运行并使用我的结果发布更新.
UPDATE3:通过命令行运行后,我得到相同的30倍性能差异.
我的电脑是3核AMD x64 3.4Ghz,运行J2SE 6 jdk 64bit 1.6.0_31,Window7.
这是我的运行时:Java:210ms.
Scala:2000到7400ms(一般是7000范围)
所以,我想问题仍然存在.为什么scala在我的平台上运行得如此之慢?使用java 64bit运行时,还是使用Java 6?
运行时版本:
C:\Users\jason>java -showversion
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
C:\Users\jason>scala
Welcome to Scala version 2.9.1-1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_31).
Run Code Online (Sandbox Code Playgroud)
更新4,而我的原始测试有30倍的差异,将迭代次数增加到100000000导致差异缩小到大约33%,所以看起来scala仍然被我的机器上的一些未知的初始化成本所支配.我将以最高评级的答案结束这个,因为我认为我们不会发现性能问题,因为没有人除了我看到问题:(
以下是我的示例应用:
//scala
object HelloWorld {
//extends Application {
def main(args: Array[String]) {
println("hello scala")
var total: Long = 0
var i: Long = 0 …Run Code Online (Sandbox Code Playgroud) 我处于这样一种情况,我需要能够在运行时创建和公开Web服务.(即没有"javac" - 编译步骤).
是否有基于JVM的脚本语言,它对JAX-WS有很好的支持,因此我可以用Java编写中央引擎,然后让脚本语言创建包含Web服务方法的片段(使用@WebService或@WebMethod注释) )然后可以传递给
如果可能的话,请提供一个如何正确执行此操作的示例.
有什么建议?
我处于这样一种情况,我想接受很多由我控制的日志事件 - 特别是我为slf4j准备的日志代理 - 然后以交互方式分析它们.
我对提供格式化日志文件的工具不感兴趣,但是可以接受日志事件作为对象并允许我对例如线程和时间线等进行排序和显示.
Chainsaw可能是一个选项,但目前与我出于技术原因使用的logback不兼容.
是否存在任何具有独立查看器或嵌入IDE的项目,这些项目适用于此类日志处理.我知道我正在接近可能适用于探查器的东西,所以如果有一个探测器项目适合这种数据采集和显示,我可以提供事件管道,我想听听它).
更新2009-03-19:我发现没有一个日志查看器可以让我看到我想要的东西(视觉显示具有由日期和时间确定的坐标的事件等),所以我决定创建一个源自log4j XMLLayout的非常简洁的XML格式,尽管仍然是有效的XML片段,但是尽可能地可读,然后使用Microsoft LogParser提取我在其他工具中进行后处理所需的信息.
(注意:我对Java非常熟悉,但不熟悉Hibernate或JPA - 但:)
我想编写一个通过JPA与DB2/400数据库通信的应用程序,现在我可以获取表中的所有条目并将它们列出到System.out(使用MyEclipse进行逆向工程).我知道@Table注释导致名称与类静态编译,但我需要能够使用一个表,其中名称和模式在运行时提供(他们的定义是相同的,但我们有很多他们).
显然这不是那么容易做到的,我很欣赏这一点.
我目前选择Hibernate作为JPA提供程序,因为它可以处理这些数据库表没有记录.
所以,问题是,我如何在运行时告诉JPA的Hibernate实现,类A对应于数据库表B?
(编辑:在Hibernate NamingStrategy中重写的tableName()可能允许我解决这个内在限制,但我仍然希望与供应商无关的JPA解决方案)
我将Eclipse与ant脚本一起使用,Eclipse可以很好地与Windows XP上的默认JRE安装一起使用.
当我想运行使用javac-tag编译的ant脚本时,烦恼就出现了,因为类路径中没有tools.jar,所以它失败了.
我已经认识到,如果我能让JDK成为Windows上的默认Java,那么我将拥有我今天拥有的东西,以及开箱即用的ant.
可以这样做吗?我在安装过程中遗漏了什么?
编辑:我知道JAVA_HOME,但这很乏味且容易出错(当更新的JDK可用时手动更新环境变量并不总是我记得的事情).
编辑:我最终弄清楚如何使javac任务使用Eclipse编译器(ecj.jar),这非常好用.
编辑:Maven也支持使用Eclipse编译器,但这似乎很少使用,并且使用旧版本的ecj.jar.我打算稍晚再看一下.
编辑:使用ecj与maven-compiler-plugin 3.0非常有效,并允许使用JRE进行构建.
编辑:解析ecj生成的字节码时,我遇到了javadoc工具崩溃的问题.
我有一种情况,我需要一个包含Java源的文件夹,用作树结构中"彼此相邻"的几个maven项目的源文件夹.由于maven项目的依赖性差异,我不能创建包含源的编译版本的工件,但是除了src/main/java之外,还需要让每个项目将其视为源文件夹.
显然,Maven可以通过添加位于"../foo/src"中的另一个源文件夹来轻松完成此操作,但是m2e拒绝这样做,为了使我们能够很好地工作,我需要让它在Eclipse中运行.
我怎么会有这样的结构:
/common/src
/a/pom.xml (add source folder ../common/src)
/a/src/main/java/...
/b/pom.xml (add source folder ../common/src)
/b/src/main/java/....
Run Code Online (Sandbox Code Playgroud)
并让它在Eclipse中工作?
(注意:我知道http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01988.html - 但是,从2011年开始)
我们使用Jenkins使用md5指纹识别工件以及自上次构建以来工件是否已更改.不幸的是,Maven构建总是生成二进制不同的工件.
因此,我正在研究使Maven为同一组输入文件生成相同的jar工件,无论它们在何时何地构建,这些都意味着必须对jar文件中的条目进行排序 - 不仅在索引中,但按顺序将它们写入jar文件.
在检查了使用maven-assembly-plugin的maven-jar-plugin之后,我得出的结论是,在一次写入所有文件之前,它们不会收集所有要写入内存的文件,而是一次写一个.这意味着对生成的jar进行后处理而不是更改当前行为可能会更好,因此我当时可以对条目进行排序,将时间戳等归零等.
我不熟悉编写Maven插件,所以我的问题是,我应该如何编写一个插件,Maven知道如何判断工件jar的位置以及我如何将其挂钩到我的pom.xml中?
(起初我需要这个用于jar文件,但war文件也会很好).
我在一家小商店工作,我们有很多传统的Cobol代码,并采用了一种方法,使我们尽可能地减少分叉和分支.
对于给定的版本,我们有三个级别:
当需要一个程序时,首先在CUSTOMER中搜索它,然后在GROUP中搜索,最后在CORE中搜索.我们的给定应用程序调用许多程序,这些程序都按此顺序查找(在Windows下考虑exe文件和PATH).
我们还有Java程序与这些遗留代码进行交互,并且由于核心组客户查找机制并不能轻易地将其自身扩展到Java,因此每个客户都需要在CVS分支中增长,这需要过多的维护.Java部分和后端部分倾向于并行开发.
我被指派找出让两个世界相遇的方法.
从本质上讲,我们需要一个Java环境,它允许我们为每个版本提供一个包含源代码的代码库,我们可以轻松地选择一个组和一个客户,并为该客户提供应用程序,然后轻松切换到另一个代码集而那个顾客.
我想到的可能是每个核心,客户和组都有一个Eclipse项目的场景,然后使用项目集来选择我们需要的特定场景.我无法理解的问题是,我们将如何在CORE项目中创建健壮的代码,无论选择哪个组和客户,这些代码都能正常工作.一个Factory类,它知道要调用的传递的Class对象的哪个子类而不是每个新的?
其他人必须有类似的代码库管理问题.有经验的人分享?
编辑:上述问题的结论是,CVS需要替换为更适合同时处理多个分支的源代码管理系统以及将源从一个组件迁移到另一个组件同时保留历史记录.受到最近slf4j和logback迁移的启发,我们目前正在研究git,因为它可以很好地处理分支.我们也考虑过subversion和mercurial,但git似乎对单个位置,多分支项目更好.我在另一个问题上询问了Perforce,但我个人倾向于采用开源解决方案来解决这个问题.
编辑:经过一些更多的思考,我们发现我们的实际痛点是我们在CVS中使用分支,如果分支所有文件,CVS中的分支最容易使用!修改后的结论是,我们可以单独使用CVS,切换到java项目的森林,每个项目对应一个上面的级别,并使用Eclipse构建路径将它们绑定在一起,这样每个CUSTOMER版本都会引入相应的GROUP和CORE项目.我们仍然希望切换到更好的版本控制系统,但这是一个非常重要的决定,所以我们希望尽可能地延迟它.
编辑:我现在使用Google Guice 2.0进行了CORE-GROUP-CUSTOMER概念的概念验证实现 - @ImplementedBy标签正是我们所需要的.我不知道其他人做了什么?使用if到处都是?
编辑:现在我还需要这个功能的Web应用程序.Guice直到JSR-330到位.有版本经验的人吗?
编辑:JSR-330/299现在已经与基于JBoss Seam的JEE6参考实现Weld一起使用了,我已经用Weld重新实现了概念验证,并且可以看到如果我们在bean中使用@Alternative和.... xml我们可以得到我们想要的行为.即为CORE中的给定功能提供新的实现,而不改变CORE jar中的位.初步阅读Servlet 3.0规范表明它可能支持Web应用程序资源(而不是代码)的相同功能.我们现在将对实际应用程序进行初始测试.