有一个简单的愚蠢问题困扰着我并在脑海中提出了几个论点.我想抛弃以下问题的所有疑虑.
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交换机的疯狂问题.
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 = 2
时case 2:
,说出该局部变量值可能尚未初始化.
问题:
场景1:如果执行流程没有进入case 1:
(当时key = 2
),那么它如何知道值变量的类型为int
?
场景2:如果编译器知道值变量的类型int
,则必须访问.中的int value = 1;
表达式case 1:
.(声明和初始化).那么为什么sqawrk当我要评论value = 2
时case 2:
,说本地变量值可能没有被初始化.
为什么第一次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) 当与使用boolean
的操作数,&
并|
成为逻辑每运营商的JLS第15.22.2.不像&&
及||
,然而,这些不短路; 他们总是评估双方.我有一个愚蠢的问题:当我们拥有更高效的短路逻辑运算符(,)时&
,为什么效率较低的非短路逻辑运算符(,|
)仍然存在?我的意思是,与短路逻辑运算符相比,非短路逻辑运算符的实际用途是什么?换句话说,总是通过使用非短路逻辑运算符来评估双方的用法是什么?&&
||
当以下正常工作className
就是"java.awt.Rectangle"
和"java.lang.String"
等,但它失败了"java.lang.Integer"
,"java.lang.Double"
给java.lang.InstantiationException
了classDefinition.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中的棘手三元运算符 - 自动装箱
我们知道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) 我很欣赏任何可以通过switch语句完成的事情都可以通过if else语句来完成.
但是,当有人应该使用开关而不是其他的声明时,是否有风格规则.
我需要通过将其与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.
当我做以下,
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>
?这背后的原因是什么?这是我的愚蠢还是其他原因?
我们使用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 ×9
autoboxing ×2
declaration ×2
if-statement ×2
arraylist ×1
arrays ×1
block ×1
int ×1
keycloak ×1
postgresql ×1
reflection ×1
scope ×1
syntax-error ×1
wildfly-10 ×1