在多项目构建中似乎有几种方法来构建父pom,我想知道是否有人对每种方式的优点/缺点有任何想法.
拥有父pom的最简单方法是将它放在项目的根目录中,即
myproject/
myproject-core/
myproject-api/
myproject-app/
pom.xml
Run Code Online (Sandbox Code Playgroud)
其中pom.xml既是父项目又是-core -api和-app模块
下一个方法是将父项分离到它自己的子目录中,如中所示
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
Run Code Online (Sandbox Code Playgroud)
父pom仍然包含模块,但它们是相对的,例如../myproject-core
最后,有一个选项,模块定义和父项分开,如
myproject/
mypoject-parent/
pom.xml
myproject-core/
myproject-api/
myproject-app/
pom.xml
Run Code Online (Sandbox Code Playgroud)
父pom包含任何"共享"配置(dependencyManagement,属性等),myproject/pom.xml包含模块列表.
目的是可扩展到大规模构建,因此应该可以扩展到大量项目和工件.
一些奖金问题:
编辑:每个子项目都有自己的pom.xml,我把它留了下来以保持简洁.
Occasionally, Spring can't figure out what type a "value" should be. This happens when the property or constructor is of type "java.lang.Object". In these cases, Spring defaults to "java.lang.String". Sometimes this isn't the right choice, for example when using:
<jee:jndi-lookup id="test" jndi-name="java:comp/env/test"
default-value="10" expected-type="java.lang.Integer"/>
Run Code Online (Sandbox Code Playgroud)
如果查找失败并且必须回退到默认值,则表示类型不匹配.所以,相反,这需要做:
<bean id="test" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/test" />
<property name="defaultObject">
<bean class="java.lang.Integer">
<constructor-arg value="10" />
</bean>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
这有点冗长,特别是如果它们很多的话.是否有一些方便的方法来声明一个Integer/Long/Double/Float/String文字,而不必使用这种格式:
<bean class="java.lang.Integer">
<constructor-arg value="10" />
</bean>
Run Code Online (Sandbox Code Playgroud) 我已经看过Rails的一些调度库,我想帮助选择一个,因为似乎没有一个能满足我的要求.这是一个相当常见的用例:
我们有许多报告,我们希望让用户在他们想要安排特定报告通过邮件发送给他们的时间和频率时进行设置.用户需要能够查看他们已安排的报告列表,并且他们应该能够取消或更改现有的计划报告.计划的作业应该在服务器重新启动后继续存在.目前,我并不担心只在一个rails服务器集群中的单个节点上运行作业.
我们正在考虑使用Protocol Buffers进行二进制日志记录,因为:
这就是说,它不是很明显,我们应该如何去做,因为这些API往往把重点放在创建整个对象,所以包装DataLogEntry列表作为在DataLogFile重复场会是什么,你会在短信方面怎么做,但我们真正想要的只是能够编写然后读取整个DataLogEntry,将其附加到文件的末尾.
我们这样做的第一个问题是这样做(在测试中:
FileInputStream fileIn = new FileInputStream(logFile);
CodedInputStream in = CodedInputStream.newInstance(fileIn);
while(!in.isAtEnd()) {
DataLogEntry entry = DataLogEntry.parseFrom(in);
// ... do stuff
}
Run Code Online (Sandbox Code Playgroud)
仅导致从流中读取1个DataLogEntry.没有isAtEnd,它永远不会停止.
思考?
编辑:我已经切换到使用entry.writeDelimitedTo和BidLogEntry.parseDelimitedFrom,这似乎工作...
有相当多的一行HTTP服务器可用,例如
蟒蛇
python -m SimpleHTTPServer 8000
Run Code Online (Sandbox Code Playgroud)
红宝石
ruby -run -ehttpd . -p8000
Run Code Online (Sandbox Code Playgroud)
等等
是否有1行HTTPS服务器?如果他们生成自己的自签名证书,那就更好了。少数几行也可以。
我们正在研究如何在主要基于Java的部署中进行分布式配置.我们有许多应用程序,集中应用程序的配置是有意义的.JNDI似乎是标准选择,可能会退回到像ApacheDS这样的东西(我们也可以在那里存储非Java配置).以下是我考虑过的一些事情.有没有人尝试类似的东西?有什么建议吗?:
这将适用于多台机器上的多个应用程序,其中一些应用程序将被群集化.理想情况下,Directory Server也应该是群集的.
JNDI对它有一点点的感觉.任何人都使用替代分布式配置机制.应用程序本身往往相对轻量级而不是完整的Java EE应用程序(无论Java EE仍然被认为是重量级的,并且需求肯定是重量级的,这一点仍然存在争议).
通常,相同的配置适用于多个应用程序(例如,多个应用程序可能连接到同一数据库).另一方面,某些应用程序可能需要特定配置.有时很难事先知道应用程序是使用"全局"配置还是特定的配置,因此能够首先搜索应用程序/主机特定配置然后退回将是好的.我在考虑这样的结构:
/ global/host/application/instance或/ global/application/host/instance:
因此,首先检查该主机上是否存在特定于此应用程序实例的任何配置,然后检查该主机是否存在特定于此应用程序的任何配置,然后检查是否有针对此应用程序的特定内容,然后尝试全局设置.对于这种事情,有没有最佳做法?
Spring允许使用jee:jndi-lookup进行配置,您可以选择不缓存值,这意味着每个请求都会查找它.我不确定"String"类型配置值是否有意义.它似乎也没有使用NamingListener方法来检测DS中的更改.能够更新Directory Server上的值并将该更改广播到使用它的所有应用程序将是一件好事.
我想写这个:
fn fibs() -> std::iter::Iterator<int> {
return std::iter::iterate((1i, 1i), |(a, b)| { (b, a + b) }).map(|(a, _)| a)
}
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,我会收到此错误:
error: explicit lifetime bound required
fn fibs() -> std::iter::Iterator<int> {
^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
如果我写出完整的界面,它编译:
fn fibs() -> std::iter::Map<'static, (int, int), int, std::iter::Iterate<'static, (int, int)>> {
return std::iter::iterate((1i, 1i), |(a, b)| { (b, a + b) }).map(|(a, _)| a)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法返回更简单的界面?
我如何拦截PartialFunction?例如,在演员中,如果我想在将其传递到处理方法之前打印以下接收方法中的所有内容:
class MyActor extends Actor {
def receive : Receive = process
def process : Receive = {
case Some(x) => /* do one thing */ ()
case None => /* do another thing */ ()
case _ => /* do something else */ ()
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个我需要从远程URL安装的软件包,如:
- get-url: url=http://foo.com/foo.deb dest=/tmp
- command: dpkg --skip-same-version -i /tmp/foo.deb
- apt: update_cache=yes
- apt: pkg=foo state=present
Run Code Online (Sandbox Code Playgroud)
如果pkg = foo不存在,我只想运行前3个.实现这一目标的最佳方法是什么?
我相信通道的使用比回调更受欢迎,有没有办法用更惯用的通道重写它,或者在这里使用回调可以:
type SomeServer struct { }
func RunSomeServer(callback func(SomeServer)) {
someServer := SomeServer{}
// do some other setup
callback(someServer)
// tear things down
}
func TestSomeServer(t *testing.T) {
// some server only exists for the lifetime of the callback
RunSomeServer(func(someServer SomeServer) {
// run some tests against some Server
})
}
Run Code Online (Sandbox Code Playgroud) 该文件建议不.有关其任务定义页面的更多信息,包括一个mysql示例,其中数据卷通常是一个相当不错的主意,即:
{
"image": "mysql",
"name": "db",
"cpu": 10,
"memory": 500,
"essential": true,
"entryPoint": [
"/entrypoint.sh"
],
"environment": [
{
"name": "MYSQL_ROOT_PASSWORD",
"value": "pass"
}
],
"portMappings": []
}
Run Code Online (Sandbox Code Playgroud) 考虑以下:
目前尚不清楚如何格式化'数据'blob.以下是使用制表符分隔的数据代码的示例:
let AWS = require('aws-sdk');
let firehose = new AWS.Firehose();
let params = {
DeliveryStreamName: 'people',
// id,name,age
Records: [{Data: '4ccf6d3a-acdf-11e5-ad54-28cfe91fa8f1\tBob\tSmith'}]
};
firehose.putRecordBatch(params, (err, result) => {
console.log(err || result);
});
Run Code Online (Sandbox Code Playgroud)
以下是我检查过的一些文档: