小编nam*_*olk的帖子

java中多线程环境中的静态方法行为

有一个简单的愚蠢问题困扰着我并在脑海中提出了几个论点.我想抛弃以下问题的所有疑虑.

class Clstest{

    public static String testStaticMethod(String inFileStr) {

        // section 0

        // section 1

        // do something with inFileStr

        // section 2

        // section 3

        return inFileStr;

    }

}
Run Code Online (Sandbox Code Playgroud)

假设有五个线程同时执行一次调用Clstest.testStaticMethod("arg-n").

线程1调用Clstest.testStaticMethod("arg-1").

当线程1在第1部分中时,线程2调用Clstest.testStaticMethod("arg-2").

那么线程1会发生什么?它会进入睡眠状态吗?

当线程1获得机会时,它会从暂停的第1部分恢复执行吗?

当所有五个线程之间共享一个Clstest.testStaticMethod并且相同时,它Clstest.testStaticMethod是如何发生的?

有没有可能交换inFileStr多个线程发送的?

java multithreading static-methods

112
推荐指数
2
解决办法
6万
查看次数

在Java交换机中声明和初始化变量

我有一个关于Java交换机的疯狂问题.

int key = 2;

switch (key) {
    case 1:
        int value = 1;
        break;
    case 2:
        value = 2;
        System.out.println(value);
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

场景1 - 当它key为2时,它成功地将值打印为2.
场景2 - 当我要在其中发表评论value = 2case 2:,说出该局部变量值可能尚未初始化.

问题:

场景1:如果执行流程没有进入case 1:(当时key = 2),那么它如何知道值变量的类型为int

场景2:如果编译器知道值变量的类型int,则必须访问.中的int value = 1;表达式case 1:.(声明和初始化).那么为什么sqawrk当我要评论value = 2case 2:,说本地变量值可能没有被初始化.

java scope initialization declaration switch-statement

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

在条件中声明变量并且没有花括号时编译器错误

为什么第一次if编译好,第二次失败?

if(proceed) {int i;} // This compiles fine.
if(proceed) int i;// This gives an error. (Syntax error on token ")", { expected after this token)
Run Code Online (Sandbox Code Playgroud)

java if-statement declaration block

57
推荐指数
3
解决办法
3984
查看次数

存在非短路逻辑运算符的原因

当与使用boolean的操作数,&|成为逻辑每运营商的JLS第15.22.2.不像&&||,然而,这些不短路; 他们总是评估双方.我有一个愚蠢的问题:当我们拥有更高效的短路逻辑运算符(,)时&,为什么效率较低的非短路逻辑运算符(,|)仍然存在?我的意思是,与短路逻辑运算符相比,非短路逻辑运算符的实际用途是什么?换句话说,总是通过使用非短路逻辑运算符来评估双方的用法是什么?&&||

java logical-operators

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

newInstance()的InstantiationException

当以下正常工作className就是"java.awt.Rectangle""java.lang.String"等,但它失败了"java.lang.Integer","java.lang.Double"java.lang.InstantiationExceptionclassDefinition.newInstance().

Class classs = Class.forName(className);
Object object = classs.newInstance();
Run Code Online (Sandbox Code Playgroud)

这是Wrapper类或其他类的问题吗?

编辑:这样做的方式 - 积分应该去Jigar.

Class       integerDefinition   = Class.forName("java.lang.Integer");
Constructor intArgsConstructor  = integerDefinition.getConstructor(new Class[] {int.class});
Object[]    intArgs             = new Object[] { new Integer(12) };
Object      object              = intArgsConstructor.newInstance(intArgs);
Run Code Online (Sandbox Code Playgroud)

java reflection

22
推荐指数
2
解决办法
3万
查看次数

Java null to int Conditional Operator问题

可能重复:
Java中的棘手三元运算符 - 自动装箱

我们知道int roomCode = null;编译器不允许这样做.

那么为什么代码1在代码2的情况下不会给出编译器错误.

代码1:

int roomCode = (childCount == 0) ? 100 : null;
Run Code Online (Sandbox Code Playgroud)

代码2:

int roomCode = 0;
if(childCount == 0) roomCode = 100;
else roomCode = null; // Type mismatch: cannot convert from null to int
Run Code Online (Sandbox Code Playgroud)

java int autoboxing

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

何时在Java中使用switch语句

我很欣赏任何可以通过switch语句完成的事情都可以通过if else语句来完成.

但是,当有人应该使用开关而不是其他的声明时,是否有风格规则.

java if-statement switch-statement

14
推荐指数
3
解决办法
3万
查看次数

通过连接PostgreSQL中的列进行更新

我需要通过将其与vendorcitycode(由下划线分隔)连接来设置酒店代码,如下所示.

update schema.table_name set
       hotelcode = hotelcode+"_"+vendorcitycode)
 where vendorid = 'INV27' and vendorcitycode = 'LON'
Run Code Online (Sandbox Code Playgroud)

注意: hotelcode并且vendorcitycode是两列类型character varying(100).我使用PostgreSQL 8.0.

postgresql syntax-error

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

为什么java没有autobox int []到Integer []

当我做以下,

  • arrayList1- 包含一个元素,它是一个int[].
  • arrayList2- 不编译(错误:构造函数ArrayList<Integer>(List<int[]>)未定义)
  • arrayList3- 包含7个元素,它们是Integer对象

这是代码:

int[] intArray = new int[]{2,3,4,5,6,7,8};
ArrayList arrayList1 = new ArrayList(Arrays.asList(intArray));
ArrayList<Integer> arrayList2 = new ArrayList<Integer>(Arrays.asList(intArray));

Integer[] integerArray = new Integer[]{2,3,4,5,6,7,8};
ArrayList<Integer> arrayList3 = new ArrayList<Integer>(Arrays.asList(integerArray));
Run Code Online (Sandbox Code Playgroud)

问题: 为什么编译器不自动将int[]to 中的元素包装Integer并创建ArrayList<Integer>?这背后的原因是什么?这是我的愚蠢还是其他原因?

java arrays autoboxing arraylist

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

如何在Keycloak身份验证之前调用javax.servlet.Filter

我们使用resteasy开发了一个REST API.(部署在wildfly 10中)

基本上这些REST API是从另一个应用程序内部调用的,端点是用keycloak保护的.

但是一个端点暴露给外部方(该端点也使用keycloak保护).

但由于外部方无法提供Keycloak Autherization代码,我们已经完成了一个实现,其中客户端使用应用程序生成的auth_key进行注册,客户端将使用该auth_key调用端点.

然后在web过滤器(javax.servlet.Filter)中,使用tha auth_key我们获得相关的keycloak authntication Bearer令牌.如果需要(例如:令牌已过期),我们也会调用Keycloak Server.收到后,我们将Autherization令牌添加到Web过滤器中的httpRequest并继续到终点应用程序.

但问题是,在Web Filter之前调用KeyCloak身份验证.我正在寻找的是"如何在密钥泄露认证之前调用Web过滤器?"

编辑:

现在我正试图找到这里提到的方法.在Keycloak中进行身份验证之前将请求标头设置为请求.我可以在身份验证发生之前接听电话.但是我无法在那里设置请求标头.

web.xml中

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Restful Web Application</display-name>
    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>

    <!-- keycloak -->

    <context-param>
        <param-name>keycloak.config.resolver</param-name>
        <param-value>package.to.HeaderBasedKeycloakConfigResolver</param-value>
    </context-param>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>REST endpoints</web-resource-name>
            <url-pattern>/ep-name/resource-name</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>resource-name</role-name>
        </auth-constraint>
    </security-constraint>

    <!-- more security-constraint -->
    <!-- more security-constraint -->
    <!-- more security-constraint -->

    <login-config>
        <auth-method>KEYCLOAK</auth-method>
        <realm-name>realm-name</realm-name>
    </login-config>

    <security-role>
        <role-name>role-name-for-resource-1</role-name>
        <role-name>role-name-for-resource-2</role-name>
        <!-- more security-role -->
        <!-- more security-role -->
        <!-- …
Run Code Online (Sandbox Code Playgroud)

java authentication servlet-filters keycloak wildfly-10

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