我开始将自定义序列化机制迁移到Protocol Buffers.将特别定期使用的一种数据类型是BigDecimal.
有没有人知道在Protocol Buffers中序列化这个的好方法?我们当前的序列化例程BigDecimal.toPlainString()用于序列化和new BigDecimal(String)反序列化 - 我假设有更好的方法.
我的猜测是将a定义BigDecimal为:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
Run Code Online (Sandbox Code Playgroud)
但我不太清楚如何定义BigInteger- 也许使用它的toByteArray()方法?
我负责四个不同的Jenkins安装 - 两个测试服务器和两个生产服务器.
我在Jenkins中有哪些选项可以让我更明显地连接到哪台机器?
我想做的是能够将屏幕顶部的Jenkins文本更改为'Jenkins Department 1 Test' - 这可能吗?还有其他选择,如改变颜色等?
我有一个Kotlin类,其主要(也是唯一的)构造函数为空.
我引用了这个类:
val kClass: KClass<MyClass> = MyClass::class
Run Code Online (Sandbox Code Playgroud)
如何使用反射创建此类的实例?
在Java中我会这样做,myClass.newInstance()但在Kotlin中我似乎需要先找到构造函数:
kClass.constructors.first().call()
Run Code Online (Sandbox Code Playgroud)
我已经看到primaryConstructor在一些错误报告中提到但它没有出现在我的IDE中.
我需要一个long具有以下要求/事实的类型的计数器:
根据这些要求,您将如何选择实施计数器?作为一个简单的long,作为一个volatile long或使用AtomicLong?为什么?
目前我有一个volatile long但是想知道另一种方法是否会更好.我也是通过做++counter而不是增加我的长期counter++.这真的更有效率(因为我已被引导相信其他地方),因为没有完成任务?
SVN书中陈述如下:
一旦执行了重新集成合并,就不应该继续使用它进行开发.这样做的原因是,如果您稍后尝试从trunk中重新同步现有分支,则合并跟踪会将您的重新集成视为尚未合并到分支中的主干更改,并将尝试合并分支到主干合并回分支机构!解决方案就是从trunk创建一个新的分支,以继续开发的下一个阶段.
在我的情况下,我希望在重新集成到主干后继续使用分支,并继续多次重新集成到主干.我这样做了,我遇到了两个主要问题:
如果我希望能够多次从分支重新集成,我该如何解决这个问题?
任何人都可以提出任何有关如何最好地使用EasyMock预期来电的建议Runtime.getRuntime().exec(xxx)吗?
我可以将调用移动到另一个实现接口的类中的方法,但不希望在理想的世界中.
interface RuntimeWrapper {
ProcessWrapper execute(String command) throws IOException;
}
interface ProcessWrapper {
int waitFor() throws InterruptedException;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人有任何其他建议?
我已将IntelliJ连接到远程JVM,现在希望在没有远程JVM停止的情况下断开与远程JVM的连接.在Eclipse中有两个按钮显式停止JVM或从JVM断开连接,但IntelliJ中调试窗口上的按钮不清楚.工具提示和在线帮助没有多大帮助.
我很确定它是Stop按钮,但它们都没有说清楚远程JVM会发生什么.
我应该按哪个按钮来安全地结束调试会话而不会终止远程JVM?
我希望在Guice中实现类似以下的功能:
public MyClass {
private final InjectedObject[] injectedObjects;
@Inject
public MyClass(InjectedObject[] injectedObjects) {
this.injectedObjects=injectedObjects;
}
}
Run Code Online (Sandbox Code Playgroud)
即我希望能够创建一定数量的对象实例,并将它们作为数组注入另一个对象.我可能会这样做:
public MyClass {
private final InjectedObject[] injectedObjects;
@Inject
public MyClass(InjectedObjectProvider injectedObjectProvider) {
this.injectedObjects=injectedObjectProvider.getArrayOfInjectedObjects(5);
}
}
Run Code Online (Sandbox Code Playgroud)
...但我想知道是否还有另一条更优雅的路线?
我是依赖注入和Play框架的忠实粉丝,但我很难看到这两者如何被一起利用.
有Spring和Guice的模块,但Play的工作方式使我很难看到DI除了一些非常简单的情况之外如何有益.
一个很好的例子是Play期望JPA工作由与所讨论的实体相关联的静态方法完成:
@Entity
Person extends Model {
public static void delete(long id) {
em().find(id).remove();
}
//etc
}
Run Code Online (Sandbox Code Playgroud)
因此,不需要PersonManager像Spring J2EE应用程序那样将控制器注入控制器.相反,控制器只是调用Person.delete(x).
显然,当存在与外部系统的接口时,DI是有益的,因为具体的实现可以被模拟用于测试等,但是对于自包含的Play应用程序我没有看到太多的好处.
有没有人有任何好的例子?有没有人用它来将一个Manager-style类注入Controllers中,以便在同一个事务中完成许多操作,例如?
在Java 8 Update 45中,将这些选项添加到java调用中:
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
Run Code Online (Sandbox Code Playgroud)
向我显示这些统计数据:
vmop [threads: total initially_running wait_to_block] [time: spin block sync cleanup vmop] page_trap_count
3679.229: no vm operation [ 72 1 2 ] [ 6016 0 6016 0 0 ] 1
2015-05-22T11:25:27.519+0200: Total time for which application threads were stopped: 6.0168551 seconds, Stopping threads took: 6.0164099 seconds
Run Code Online (Sandbox Code Playgroud)
这里的问题是时间长了Stopping threads.在这个例子中,它是6秒,这已经是我们的应用程序的一个问题,但我已经看到更大的时间,在一个实例(没有完整的日志记录,但)相当于几乎一分钟.
VM操作(此处no vm operation:)是变化的.我也看到了,例如RevokeBias,G1IncCollectionPause或GCG_Operation.而且,page_trap_count似乎无关紧要.我所看到的例子,其中是0,和其他人在那里为2一致,不过,是时候总是体现在价值观spin和sync.
我寻找那些定时值的深入的解释spin和sync …
java ×5
guice ×2
easymock ×1
g1gc ×1
jenkins ×1
junit ×1
jvm ×1
kotlin ×1
performance ×1
reflection ×1
runtime.exec ×1
spring ×1
svn ×1
tortoisesvn ×1
unit-testing ×1