这是我的dummy项目build.gradle文件:
apply plugin: 'groovy'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.3'
compile 'org.slf4j:jcl-over-slf4j:1.7.7'
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.10.8'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
Run Code Online (Sandbox Code Playgroud)
当我运行时gradle clean build -Pversion=1.2.3,这会打包我的所有代码并build/libs/dummy-1.2.3.jar为我创建一个.
我想知道必要的绝对最小 Gradle代码量,以便我可以将我的"虚拟"JAR发布到我的本地Maven缓存(mavenLocal()).此外,这如何与版本控制一起使用?我总是可以为虚拟JAR指定具体版本,但是当我在本地发布时,发布SNAPSHOT版本对我来说更有意义(至少对我而言).我可以跑gradle clean build -Pversion=0.1.SNAPSHOT,但后来我关心的是其他本地项目是否会拿起最新SNAPSHOT版本.
再说一次:
dummy在本地发布的最低限度代码是什么?SNAPSHOT …我试图准确理解Apache ZooKeeper("ZK")解决了什么类型的问题,也许他们的食谱页面是最好的起点.
首先,我做了以下假设:
我相信Apache Kafka就是一个例子,其中Kafka使用ZK创建一个分布式队列(这是列出的ZK食谱之一).因此,如果我的假设是正确的,ZK公开那些API方法,Apache Kafka的创建者直接使用ZK或使用Curator来实现"Queue"ZK Recipe.
如果我上面的任何假设都是错误的,请先纠正我!假设我或多或少走上正轨:
查看ZK食谱列表,我看到以下内容(非详尽无遗):
为了让我欣赏这些食谱和他们提出的解决方案,我首先需要了解他们解决的问题!我理解锁定来自基本的Java并发,但我只是没有看到"分布式锁定"何时需要的用例.对于领导选举,我所能想到的 - 作为首先需要它的一个用例- 将是你正在构建一个你想要带有内置主/从或主要/辅助功能的应用程序.也许在这种情况下,您可以使用ZK来实现自己的"领导者选举"配方,或者只是使用Curator的Leader Latch开箱即用.至于障碍,我不知道这些与锁有什么不同.所以我问:
在Grails插件的网站似乎只列出所有Grails插件的最新版本.但是,如果我想查看每个插件的其他可用(较旧)版本的列表呢?是否有Grails SDK命令/目标,我可以发出查看旧插件的问题?
我问,因为我正在使用一个插件,其当前的最新版本已经破产,其版本为"2.0-RC2".由于它是候选版本,我想知道最后一个稳定(非RC)版本是什么.
我的系统用户名是,myuser但我试图用一个chef-validator.pem然后一个blah.pem文件引导机器,并收到以下错误消息:
ERROR: Failed to authenticate to https://mychef01 as blah with key
/etc/chef/blah.pem.
Response: Invalid signature for user or client 'blah'
Run Code Online (Sandbox Code Playgroud)
这是否意味着blah.pem文件无效,或者是否意味着它需要匹配我的系统用户名(所以,myuser.pem)?无论哪种方式,根本问题是什么,修复方法是什么?
我理解的rsyslog是,它是一个syslog在Ubuntu机服务器实现常见。
此外,我的理解是rsyslog可用于挂钩/捕获STDOUT输出以及标准syslog消息。
最后,我的理解是,rsyslog然后可以将任何捕获的消息(再次来自客户端STDOUT或syslog客户端)转发到另一台服务器,例如日志聚合器或另一台rsyslog服务器等。
所以首先,如果我上面所说的有任何不正确,请首先纠正我对如何syslog/rsyslog工作及其相互关系的理解!
如果我的假设或多或少是正确的,那么给出以下两个选项:
STDOUT并配置rsyslog以捕获该流并将日志消息转发到远程进程(例如日志聚合器);或者syslog并配置rsyslog以捕获它并将日志消息转发到同一个远程进程鉴于这两个选项,我更喜欢#1,因为:
STDOUT将打印到控制台;和STDOUT只会被“收集”rsyslog如果我选择选项 #2,在本地运行时我会失去控制台可见性。
话虽如此,是否有任何安全/性能/其他问题/警告/陷阱从登录到STDOUT会使选项 #2 更具吸引力/可取?如果有,它们是什么?
我有以下实体需要通过Hibernate 注释持久保存到关系数据库:
@Entity
@Table(name="fizzes")
public class Fizz {
@Id @GeneratedValue
@Column(name="fizz_id")
private int id;
@Column(name="fizz_wooz")
private String wooz;
// ??? here I am unsure!
private Buzz buzz;
// Constructor, getters/setters down here, etc...
}
public class Buzz {
private int jupiter;
private String neptune;
// Constructor, getters/setters down here, etc...
}
Run Code Online (Sandbox Code Playgroud)
问题Buzz是:
fizzes表(通过向其添加列)Buzz 来自第三方库,因此我无法修改它因此,我正在寻找的最终结果是表格形式:
[fizzes] table
==============
fizz_id, PRIMARY KEY AUTO INCREMENT
fizz_wooz, NVARCHAR(50) NOT NULL
fizz_buzz_jupiter, INT NOT NULL
fizz_buzz_neptune, …Run Code Online (Sandbox Code Playgroud) 假设我有以下路线:
from(rabbitMQUri)
.to(myCustomerProcessor)
.choice()
.when(shouldGotoA)
.to(fizz)
.when(shouldGotoB)
.to(buzz)
.otherwise()
.to(foo);
Run Code Online (Sandbox Code Playgroud)
让我们假设myCustomProcessor的曲调shouldGotoA,并shouldGotoB根据从RabbitMQ的消耗的消息。
我想对 3 个场景进行单元测试:
shouldGotoA设置为 true,它执行第一个when(...).shouldGotoB设置为 true,它执行第二个when(...).otherwise()执行。我的问题是:如何模拟/存根 RabbitMQ 端点,以便路由在生产中正常执行,但我不必将测试实际连接到 RabbitMQ 服务器?我需要某种“模拟消息”生产者。
代码示例或片段将非常有帮助,非常感谢!
请注意:我正在使用JClouds标记这一点,因为如果您阅读了整个问题和随后的评论,我相信这可能是JClouds的一个错误或者是对该库的误用.
我有一个可执行的JAR运行,工作一段时间,完成工作而不会抛出任何错误/异常,然后在它应该退出时永远挂起.我使用VisualVM(关注正在运行的线程)对其进行了分析,并且我还在一个日志语句中进行了打印,main()以便在应用程序挂起的位置(在方法结束时)进行打印.这是我的主要方法的最后一部分:
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for(Thread t : threadSet) {
String daemon = (t.isDaemon()? "Yes" : "No");
System.out.println("The ${t.getName()} thread is currently running; is it a daemon? ${daemon}.");
}
Run Code Online (Sandbox Code Playgroud)
当我的JAR执行此代码时,我看到以下输出:
The com.google.inject.internal.util.Finalizer thread is currently running; is it a daemon? Yes.
The Signal Dispatcher thread is currently running; is it a daemon? Yes.
The RMI Scheduler(0) thread is currently running; is it a daemon? Yes.
The Attach Listener thread is currently running; is it a daemon? …Run Code Online (Sandbox Code Playgroud) 我只是这样使用keytool:
keytool -genkey -keyalg RSA -alias selfsigned -keystore mykeys.jks -storepass password -validity 360 -keysize 2048
Run Code Online (Sandbox Code Playgroud)
......然后回答了它提示我的所有后续问题.这会mykeys.jks在我的本地目录中生成密钥库.
我的问题:这个JKS文件与其中包含的自签名证书的名称之间有什么关系?这意味着,我现在在这个密钥库中有一个名为"mykeys"的SSL证书吗?
额外问题:单个密钥库(JKS文件)内部可以有多个证书吗?如果是这样,我如何添加第二个SSL证书,例如,命名my2ndcert为同一个JKS文件?
通常,要将Glyphicon插入Bootstrap 3应用程序中,操作非常简单:
<span class="glyphicon glyphicon-envelope"></span>
Run Code Online (Sandbox Code Playgroud)
但是,在许多应用程序中,通常需要对Glyphicons进行“自定义”,以便它们带有数字上标,如下所示:
上面的红色/白色“ 5 ”气泡可能表示用户有5条通知。我想知道如何在Bootstrap 3中实现这种“ 数字上标 ”效果。
请注意:虽然这个问题提到了Mongo,但它肯定是一个纯粹的Groovy问题.
我的MyApp#bootstrap方法:
def bootstrap(AppConfiguration config) {
String h = config.dbHost
String p = config.dbPort
println "Mongo is at: ${h}:${p}."
dao = new MongoDao(host: h, port: p)
}
Run Code Online (Sandbox Code Playgroud)
我的MongoDao班级(片段):
class MongoDao implements BasicDao {
String dbName
Mongo mongo
String host
String port
Morphia morphia
Datastore datastore
MongoDao(String host, String port) {
this.dbName = "db_myapp"
this.mongo = new Mongo(host, port)
this.morphia = new Morphia()
this.datastore = morphia.createDatastore(mongo, dbName)
morphia.mapPackage("myappdb.common")
}
}
Run Code Online (Sandbox Code Playgroud)
当此bootstrap()方法运行时,我得到以下异常:
Mongo is at: …Run Code Online (Sandbox Code Playgroud) java ×5
apache-camel ×1
chef-infra ×1
concurrency ×1
deadlock ×1
glyphicons ×1
gradle ×1
grails ×1
groovy ×1
hibernate ×1
jclouds ×1
jpa ×1
keytool ×1
knife ×1
logging ×1
logstash ×1
maven ×1
mocking ×1
mongodb ×1
morphia ×1
publishing ×1
rsyslog ×1
snapshot ×1
ssl ×1
syntax ×1
syslog ×1
testing ×1
version ×1