ANTLR从语法文件生成java源代码.生成的源依赖于ANTLR类.
我可以使用ANTLR生成"干净"的java源代码,它没有任何antlr依赖性吗?
如果没有,有人可以推荐一些擅长性能的java解析器,并且可以生成干净的java代码吗?
Java的LongAdder性能更高AtomicLong.但是,如果我正确地得到它,它对于ID生成器来说不是一个好的选择,因为没有原子"读取和增量"操作.
我问这个是因为我看到人们推荐它用于ID生成,我没有看到这一点,因为sum()每次操作都会调用它.
LongAdder对于简单的长ID生成器来说,这是一个好的还是坏的选择?
我正在为multimodule项目编写gradle 1.4 build文件.所以有root build.gradle定义如下:
subprojects {
apply plugin: 'java'
...
Run Code Online (Sandbox Code Playgroud)
它定义了所有子模块的构建任务.子模块包含在settings.gradle中,每个模块的构建文件都有定义的依赖项.
所有内容,到目前为止:)现在,在主构建文件中,我添加了一些额外的项目范围任务,例如:aggregateJavadoc(将所有javadoc收集到一个)或bundleJar(从所有类创建bundle jar),每个on在手动调用时起作用.
现在我需要一个任务发布即会
构建所有子模块(从命令行调用 - 意思是,我不想为每个子模块手动编写execute())
调用其他任务(使用我假设的execute()).
我尝试了dependsOn,但没有遵循列出的任务的顺序.此外,依赖模块似乎在发布任务执行后执行.我尝试了其他一些想法但都失败了.
问题:创建此类批处理任务的最佳方法是什么,必须在所有子模块上调用某些内容并执行更多任务?什么是最好的gradle友好解决方案?感谢名单!
我使用bundler来安装东西,因为我已经添加了Gemfile.lock,travis开始抱怨:
Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES
section: 'echoe'
Run Code Online (Sandbox Code Playgroud)
当然,一切都在当地运作.它也可以使用DeployBot.我甚至安装了docker ubuntu并尝试过,还可以.我Gemfile.lock没有腐败.使用相同版本的ruby和bundler.
到底是怎么回事?
这与bundler版本有关.我使用的是1.11.0,但得到报告称它与例如.1.8.3.??
我们的API具有这样的端点,通过合并这两组参数,同时支持来自query和来自的body参数.
例如:
/foo?param1=value1
body: {
param2=value2
}
Run Code Online (Sandbox Code Playgroud)
生成的参数集将包含两个,param1和param2.
此端点可用作:
/foo?param1=value1¶m2=value2
Run Code Online (Sandbox Code Playgroud)
要么
/foo
body: {
param1=value1,
param2=value2
}
Run Code Online (Sandbox Code Playgroud)
有没有办法如何在Swagger中指定这种"二元性"?
UPD
我想我应该将参数定义为:body和query
in:
- body
- query
Run Code Online (Sandbox Code Playgroud) 我正在使用tools.jar(即JavaCompiler)中的javac 来解析java文件.我使用实现来解析源代码TreePathScanner.到目前为止,一切似乎都很好,因为我可以解析导入,包名,类名,方法名,说明......
但我确实有内联注释的问题- 我不能简单地让它们出现在创建的AST树中,或访问它们.但是,我能够读取类,方法等的javadoc注释,但没有内联注释.
如何以最佳方式阅读内联评论?我正在看netbeans源代码(因为它也使用javac进行解析),但我找不到任何关于它的东西.
我绝望的解决方案是使用源文件的语句位置,然后手动解析注释两个语句之间的所有内容.或类似的事情,但在两个树节点之间.
有谁知道更好的解决方案?谢谢!
我们有web API,我们基本上使用普通的servlet作为请求处理程序.请求处理程序主要是我们正在使用的某个模块的一个或多个异步方法调用的简单包装器.幸运的是,我们使用java8,因此模块异步方法返回promises,即CompletableFuture.
换句话说,在sudo图中:
request -> servlet -> module.asyncFoo().thenAsyncBar();
Run Code Online (Sandbox Code Playgroud)
由于这是一个API,请求必须返回(json)响应.
让我困扰的是我们有两个线程池 - 或线程管理器:
目前,我们没有以异步方式使用模块,因为我们get()在请求处理程序(即servlet)中调用future 来准备响应.
是否有可能'重用'现有的容器线程池执行器,所以我们可以继续在同一个线程管理器中执行模块?我们的模块允许我们设置Executor而不是ForkJoinPool.
换句话说:是否有适合java8 的高性能 Java HTTP服务器?它不必是servlet容器,因为我只需要它处理请求.
当然,这一切都有意义,它会对表演有什么影响吗?我会说是的,因为可用工作线程的数量会增加一倍.
对于我的测试,我需要使用一些数据库来运行容器。我已经使用 docker-compose 设置了所有内容,如果容器启动,我的测试就可以正常工作。需要注意的是:这些不是单元测试,而是集成测试,并且允许它们运行更长时间。
从 Gradle 控制 docker-compose 的最佳方式是什么?我需要运行容器(如果没有启动)并启动测试。这也适用于 OSX 和 Linux。
我正在阅读这个官方Docker 0.10.3文档(此时,它仍在分支中)并且它说:
--net-alias=ALIAS
Run Code Online (Sandbox Code Playgroud)
除了如上所述的--name之外,容器还是由用户定义的网络中的一个或多个已配置的--net-alias(或docker network connect命令中的--alias)发现的.嵌入式DNS服务器维护所有容器别名与其在特定用户定义网络上的IP地址之间的映射.通过使用docker network connect命令中的--alias选项,容器可以在不同的网络中具有不同的别名.
--link=CONTAINER_NAME:ALIAS
Run Code Online (Sandbox Code Playgroud)
在运行容器时使用此选项会为嵌入式DNS提供一个名为ALIAS的额外条目,该条目指向CONTAINER_NAME标识的容器的IP地址.使用--link时,嵌入式DNS将保证仅在使用--link的容器上进行本地化查找.这使得新容器内的进程可以连接到容器,而无需知道其名称或IP.
来自一个容器的网络别名实际上是来自同一网络中第二个容器的链接吗?
我使用方法defineClass()从ClassLoader字节数组中定义一个类。我使用反射获取此方法:
ClassLoader.class.getDeclaredMethod(
"defineClass", String.class, byte[].class, int.class, int.class);
Run Code Online (Sandbox Code Playgroud)
Java10 抱怨defineClass.
我应该用什么代替?
java ×5
docker ×2
gradle ×2
java-8 ×2
antlr ×1
antlr3 ×1
asynchronous ×1
bundler ×1
dns ×1
java-10 ×1
javac ×1
networking ×1
parsing ×1
performance ×1
reflection ×1
ruby ×1
swagger ×1
travis-ci ×1