小编Adj*_*ion的帖子

通过具体(Java)示例进行乐观锁定

我早上花了很多时间阅读谷歌在乐观锁定方面所做的所有热门文章,而对于我的生活,我仍然没有真正理解.

理解乐观锁定涉及添加用于跟踪记录的"版本"的列,并且该列可以是时间戳,计数器或任何其他版本跟踪构造.但我仍然不明白如何确保WRITE完整性(意味着如果多个进程同时更新同一个实体,那么之后,实体正确地反映了它应该处于的真实状态).

有人可以提供一个具体的,易于理解的例子,说明如何在Java中使用乐观锁定(可能是MySQL数据库).假设我们有一个Person实体:

public class Person {
    private String firstName;
    private String lastName;
    private int age;
    private Color favoriteColor;
}
Run Code Online (Sandbox Code Playgroud)

并且这些Person实例会持久化到peopleMySQL表:

CREATE TABLE people (
    person_id PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,        # } I realize these column defs are not valid but this is just pseudo-code
    age INT NOT NULL,
    color_id FOREIGN KEY (colors) NOT NULL  # Say we also have a …
Run Code Online (Sandbox Code Playgroud)

java concurrency locking optimistic-locking

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

部署WAR还是"胖"JAR?

我注意到许多项目(DropWizard,Grails等)开始接受"胖"JAR(使用Jetty或Tomcat等嵌入式Web服务器)与传统WAR部署的概念.这两种方法都涉及单个JVM进程(即无论将多少WAR部署到Tomcat,它都是相同的JVM进程).

在什么情况下,哪种部署方法优于另一种?

java deployment tomcat jvm war

19
推荐指数
2
解决办法
6942
查看次数

Bamboo CI计划模板?

我的许多项目构建都一次又一次地使用相同的阶段,作业和任务.有没有办法定义"模板"计划并使用它来制作其他模板化计划?我不是在谈论克隆,因为通过克隆,您可以对所有克隆进行独立更改.

我想要的是模板的一种方式,比方说,10个不同的计划,然后如果我想为所有这些计划添加一个新的工作/任务,我只需要更改模板,这将会影响所有的计划利用模板.

这是可能的,如果是的话,怎么样?

continuous-integration templates bamboo

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

什么是 Apache Camel 的文件“camelLock”?

每当我从fileURI开始 Camel 路由时,我都会看到 Camel 获得了文件的“锁定”。例如,如果文件名为myinput.xml,则 Camel 在其上创建一个名为.lock 的“锁定文件”,位于同一目录中myinput.xml.camelLock

  1. 这是什么,为什么 Camel 使用它?
  2. Camel 什么时候“释放”锁定文件(删除它)?
  3. 最重要的是,有没有办法将文件 URI 配置为根本不锁定(如果是,如何)?

java file-io apache-camel filelock

7
推荐指数
1
解决办法
1万
查看次数

GVM/Grails shell脚本错误?

我在Ubuntu(14.04)上安装了最新版本的GVM(1.3.13).然后我用它来安装Grails(2.3.7),Groovy(2.2.2)和Gradle(1.11).

Groovy和Gradle似乎安装得很好(我可以执行他们的SDK命令,比如groovyc等).但每当我执行任何 Grails命令时,从任何目录,我的整个终端的屏幕都会清除,暂停一秒钟,然后重新绘制我的命令行提示符.该命令永远不会被执行.几个月前,在Nabble上,另一位用户报告了一个非常类似的问题.

从shell开始,如果我执行echo $GRAILS_HOME,我得到:

/home/myuser/.gvm/grails/current

如果我执行,echo $PATH我确实看到它/home/myuser/.gvm/grails/current/bin在我的系统路径上.

所以我决定深入挖掘并实际去$GRAILS_HOME.这是一个实际指向的象征性链接/home/myuser/.gvm/grails/2.3.7.所以当我去那里时,我看到一个正常的Grails安装,包括一个bin目录.当我进入那个bin目录时,我看到:

grails-debug
grails.bat
grails-debug.bat
startGrails.bat
startGrails
grails
Run Code Online (Sandbox Code Playgroud)

我打开grails(一个shell脚本)并看到:

#!/bin/sh
trap "reset" EXIT
trap "reset" INT
trap "reset" TERM

DIRNAME=`dirname "$0"`
. "$DIRNAME/startGrails"

startGrails org.codehaus.groovy.grails.cli.GrailsScriptRunner "$@"
Run Code Online (Sandbox Code Playgroud)

我将其修改如下:

#!/bin/sh
trap "reset" EXIT
trap "reset" INT
trap "reset" TERM

echo "1..."
sleep 2s

DIRNAME=`dirname "$0"`

echo "2...dirname is $DIRNAME"
sleep 8s

. …
Run Code Online (Sandbox Code Playgroud)

shell ubuntu grails path gvm

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

如何向Grails应用程序添加自定义"-Djava"参数?

说我想运行带有额外" -Djava.fizz.buzz=3"JVM arg 的Grails(2.3+)应用程序.

它是如此简单:

grails run-app -Djava.fizz.buzz=3
Run Code Online (Sandbox Code Playgroud)

或者是否BuildConfig.groovy需要进行特殊配置(例如,in )?

grails command-line jvm-arguments

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

Java:终于如何抛出特朗普?

我刚刚在我们的一个Java库中遇到了一个隐藏的gem:

for(Widget w : widgets) {
    if(shouldDoStuff()) {
        try{
            // Do stuff to w.
        } catch(Exception e){
            throw new RuntimeException("Couldn't do stuff.");
        } finally{
            // Compiler warning: finally block does not complete normally
            continue;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这finally胜过一切,但我想知道两件事:

  1. 当发生什么catch条款执行呢?异常是否被抛出?首先发生什么:抛出的异常或continue声明?
  2. 我怎样才能重写这个以消除警告?

我发现了这个非常相似的问题,但是接受的答案只是声明异常将被突然抛出,我不确定这意味着什么.另外,它并没有真正帮助我理解我上面提到的关于将要发生的事件顺序的第一个问题.

java exception throw compiler-warnings try-catch-finally

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

Grails plugin.xml - 存储在版本控制中?

我正在开发一个Grails插件.它plugin.xml应该保留在版本控制中吗?为什么或者为什么不?

因为这些只是插件描述符,我不确定它们是否应该始终与代码库的其余部分一起维护.然而,Grails可能会将它们用于各种"引擎盖"类型配置,在这种情况下,它们必须始终与应用程序代码库的其余部分一致/存在.

version-control grails plugin.xml grails-plugin grails-2.3

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

如何在本地和远程仓库发布Grails插件

我正在构建Grails应用程序以及应用程序将用作依赖项的插件.我需要一种方法来更改插件,在本地发布,构建应用程序(使用新版本的插件 - SNAPSHOT)然后执行a grails run-app来获取所有更改.

我还需要一种方法将插件发布到远程Artifactory仓库并让Grails应用程序获取插件的"发布"(非SNAPSHOT)版本.关于如何实现这一目标的任何想法?

grails publishing artifactory maven

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

CAS和SAML2 SSO通过示例

我们有大约十几个内部管理员Web应用程序(主要是Java),员工可以使用这些应用程序进行各种工作流程,并且每个人都有自己的,不同的登录/身份验证系统.我被要求在一个单一的唱歌系统下将它们联合起来.我将以下图表作为起点使用:

在此输入图像描述

如您所见,每个应用程序都使用CAS客户端连接到CAS服务器.此服务器还具有配置了Shibboleth插件(?)的Apache httpd.然后,此CAS服务器与我们的Active Directory("AD")服务器通信.

我需要确保完全理解这些技术如何协同工作:

  • CAS服务器和Apache/Shibboleth之间发生了什么?
  • Apache/Shibboleth与"Trust Store"之间发生了什么?
  • CAS服务器和AD之间的通信是什么?
  • 存储在此SAML2令牌中的内容是从CAS服务器发送回每个CAS客户端的?
  • 作为Java开发人员,我如何使用SAML2令牌(或者如果auth失败则缺少它)来实际签署用户?
  • 这里有更好的技术选择:如果是,它们是什么,为什么?请记住,所有这些都是Java应用程序,除了其中一个,它是一个C#.NET应用程序.

java cas shibboleth single-sign-on saml-2.0

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

Java获取此运行时类?

假设我有以下对象层次结构:

public abstract class Animal {
    ...
}

public class Canine extends Animal {
    ...
}

public class Feline extends Animal {
    ...
}

public class Dog extends Canine {
    ...
}

public class Wolf extends Canine {
    ...
}

public class Leopard extends Feline {
    ...
}
Run Code Online (Sandbox Code Playgroud)

假设Animal该类有一个最终方法,需要采取不同的操作,具体取决于对象的运行时类型/类是什么:

public abstract class Animal {
    // Lots of stuff blah blah blah

    public final makeNoise() {
        // If we're a Dog, then System.out.println("Woof!");
        // Else if we're a Wolf, …
Run Code Online (Sandbox Code Playgroud)

java reflection inheritance runtime

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