小编Etk*_*tki的帖子

使用Spring应用程序将Liquibase嵌入罐中

我试图在uberjar中嵌入带有liquibase的纯Spring(不是Spring Boot)应用程序时遇到了一个特定的错误.一旦SpringLiquibase bean被初始化,它就开始寻找我不理解的东西:

WARNING 7/16/15 3:22 PM: liquibase: No Liquibase-Packages entry found in MANIFEST.MF. Using fallback of entire 'liquibase' package
WARNING 7/16/15 3:28 PM: liquibase: Error initializing SpringLiquibase
java.io.FileNotFoundException: ServletContext resource [/liquibase] cannot be resolved to URL because it does not exist
at org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:156)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.init(SpringLiquibase.java:117)
at liquibase.resource.AbstractResourceAccessor.<init>(AbstractResourceAccessor.java:22)
at liquibase.resource.ClassLoaderResourceAccessor.<init>(ClassLoaderResourceAccessor.java:19)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.<init>(SpringLiquibase.java:74)
at liquibase.integration.spring.SpringLiquibase.createResourceOpener(SpringLiquibase.java:489)
at liquibase.integration.spring.SpringLiquibase.createLiquibase(SpringLiquibase.java:439)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:389)
WARNING 7/16/15 3:28 PM: liquibase: Error initializing SpringLiquibase
java.io.FileNotFoundException: ServletContext resource [/liquibase] cannot be resolved to URL because it does not exist …
Run Code Online (Sandbox Code Playgroud)

java spring liquibase

9
推荐指数
1
解决办法
1563
查看次数

在Kubernetes中部署有状态应用程序

我熟悉Kubernetes,并没有找到在Kubernetes中部署有状态服务的简单解决方案.

  • 每个吊舱都必须通过接触点(其他吊舱IP列表)进行自举,这些无法进行负载平衡(如果运气不好,我会害怕裂脑:在最坏的情况下,负载均衡器可能会负载均衡pod自身,制作一个节点的几个自封闭簇
  • 每个pod都必须有持久存储,在最坏的情况下,必须手动访问(例如consul的peers.json)
  • 每个pod都应该是可重新配置的; 如果我忘了对我的领事群做某事,从头开始重建就会导致停工.如果kubernetes阻止了这个,请随时告诉我,我对部署机制还不够熟悉.
  • 使用新配置的实例动态增加服务群集然后耗尽旧实例可能是非常不受欢迎的(我不是领事专家,但从我的观点来看,在consul群集中丢弃了裂脑保护).

AFAIK最适用的东西是宠物套装,但它仍然是alpha版,只能完全删除; 此外,我不觉得我理解应该如何管理持续的音量来生存宠物套装娱乐.我提出的另一个选择是将服务部署分为引导节点部署,引导节点服务和所有其他节点部署,这允许我使用引导节点服务作为联系点(虽然这不是完全安全的,但是).

这个案例有哪些流行的方法,它们有什么利弊?

kubernetes

6
推荐指数
1
解决办法
422
查看次数

如何正确处理可能未传递给客户端代码的InterruptedException?

我偶然发现了一个我必须处理的情况InterruptedException,但不能将它向上传递,并且不要觉得我的代码应该被允许吞下它.确切地说,我正在进行分布式锁实现,并且支持服务的请求可能会中断甚至超时 - 当然,这java.util.concurrent.Lock并不能解释这种情况,也不允许我吐出InterruptedException.我挣扎写非投掷正确实施lock(),tryLock()unlock()方法.

所以,问题是 - 处理这种情况的正确策略是什么?从目前的角度来看,我只看到三个选项(我感觉每个人都有气味):

  1. 忽略lock/ tryLock/ unlock方法中的中断异常,重试/返回false /假设即使请求没有到达目的地,TTL最终也会解锁记录.这显然不是最好的解决方案,因为它希望一切都好,而不是处理问题.
  2. 包裹RuntimeException继承人.这似乎也是一个非常糟糕的解决方案,因为客户端代码必须使用具体的实现而不是原始接口,并且未经检查的异常当然不是为了这样的目的.
  3. 使用 Thread.currentThread().interrupt()呼叫.我不喜欢这种方式,因为它基本上告诉线程处理它自己的中断,而不是传递关于呼叫被中断的通知; 另外,据我所知,如果没有外部轮询,它最终会产生线程,但不会立即处理中断,可能是在另一个地方.

(而且,当然有一个选项允许客户端代码配置所需的行为,但这仍然没有为我提供一个非常好的解决方案)

有没有比我所描述的更好的方式?如果不是,哪一个应优先于其他?

java interrupted-exception

5
推荐指数
1
解决办法
740
查看次数

Spring Repository:获取已删除行的数量

我需要通过Spring Repository自定义查询来计算已删除的行(我正在为应用程序实现基本的外部锁机制,并且仅限于MySQL数据库).我怎样才能实现这一目标?

spring-data

5
推荐指数
1
解决办法
4187
查看次数

从垃圾收集中不直观地驱逐对象

我正在调试内存泄漏,并且不得不深入了解 CompletableFuture 的内部结构。有这段代码(CompletableFuture.uniComposeStage):

CompletableFuture<V> g = f.apply(t).toCompletableFuture();
...
CompletableFuture<V> d = new CompletableFuture<V>();
UniRelay<V> copy = new UniRelay<V>(d, g);
g.push(copy);
copy.tryFire(SYNC);
return d;
Run Code Online (Sandbox Code Playgroud)

代码本身对我来说非常清楚:应用一个返回 CompletionStage ( g) 的函数,创建一个中继,最终将值传输到另一个 CompletableFuture ( d) ,然后返回另一个 future ( d) 。我看到以下参考情况:

  • copy引用dand g(构造函数中没有魔法,只有字段赋值)
  • g参考copy
  • d没有引用任何内容

d返回,因此,事实上,对我来说,gcopy似乎都是内部方法变量,(乍一看)永远不应该离开该方法并最终被GC。幼稚的测试和它是由经过验证的开发人员很久以前编写的事实都表明我错了并且遗漏了一些东西。是什么原因导致这些对象被垃圾收集忽略?

java garbage-collection completable-future

5
推荐指数
1
解决办法
510
查看次数

如何在jenkins管道中运行魅力插件?

我正在为多个项目构建基于管道/詹金斯的CI,并希望存储诱人的结果,就像在具有快速访问图标的常规构建中一样。是否可以通过管道进行?

jenkins allure

4
推荐指数
2
解决办法
8659
查看次数

从Jenkins Pipeline调用Job DSL

我需要从管道触发Jenkins Job DSL(具体来说,我需要模仿“从工作空间读取定义文件”的行为),但是job dsl插件尚未在管道步骤列表中。我该如何实现?

jenkins jenkins-job-dsl jenkins-pipeline

3
推荐指数
1
解决办法
3496
查看次数

为什么在JVM中隐藏JIT编译器没有基础设施?

我正在审查一个触及JIT内联语义的会议演示文稿,其中作者固定了奇怪的行为(当然,只有初看起来很奇怪) - C2比C1慢,因为由于内嵌深度过大而无法内联方法.它可以在以下示例中表示:

public static int multipleByTwo(int x) {
    return x * 2;
}

public static void entrypoint() {
    int sum = 0;
    for (int i = 0; i < 10_000_000; i++) {
        // due to some arbitrary cause, multiplyByTwo doesn't get inlined
        sum += multiplyByTwo(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

作为一名程序员,我可能知道有一个编译器不知道的优化领域.例如,如果multiplyByTwo强制内联,则可以进行大量优化,但由于各种约束(例如方法大小或内联深度),可以省略内联.为什么没有办法告诉编译器"嘿,我很确定你应该更喜欢内联那个方法而不是"?我敢肯定,我不是第一个考虑这个问题的人,并且讨论导致没有实现这样的功能 - 为什么?

ps请注意我正在谈论提示而不是指令; 我明白后一种选择会带来更多的伤害而不是利益.

java jit jvm

2
推荐指数
1
解决办法
553
查看次数

Chef:处理敏感属性

我正在写一本处理私钥的食谱。如果出现任何问题,Chef 会将整个资源转储到日志中,以向最终用户显示发生了什么情况。但是,这也会将私钥打印到日志中,这是不可接受的。有没有办法采用sensitive资源功能来防止敏感数据记录?

chef-infra

2
推荐指数
1
解决办法
1960
查看次数