最近,我项目的安全团队发布了一个安全的代码指南文档,旨在用作我们的代码审查的一部分.让我印象深刻的第一件事是"不要使用内部课程".我认为这似乎是一个非常沉重和彻底的声明.如果使用正确,内部类是好的吗?但我做了一些谷歌搜索并找到了这个,为方便起见,这里引用.
规则5:不要使用内部类
一些Java语言书籍说内部类只能被包含它们的外部类访问.这不是真的.Java字节代码没有内部类的概念,因此内部类由编译器转换为恰好可以被同一个包中的任何代码访问的普通类.规则4表示不依赖于包装范围进行保护.
但等等,情况变得更糟.内部类可以访问封闭外部类的字段,即使这些字段被声明为私有.内部类被翻译成一个单独的类.为了允许这个单独的类访问外部类的字段,编译器以静默方式将这些字段从私有更改为包范围!内部类暴露出来已经够糟糕了,但更糟糕的是,编译器正在默默地推翻你将某些字段设为私有的决定.如果你能提供帮助,请不要使用内部类.(具有讽刺意味的是,新的Java 2 doPrivileged()API使用指南建议您使用内部类来编写特权代码.这是我们不喜欢doPrivileged()API的一个原因.)
我的问题是
我想并行处理来自rabbitMq队列的消息.队列配置为autoAck = false.我使用camel-rabbitMQ支持camel端点,它支持threadPoolSize 参数,但是这没有达到预期的效果.即使threadpoolsize = 20,仍然会从队列中串行处理消息.
从通过代码调试我可以看到,threadpoolsize参数用于创建用于如所描述的要传递给兔子的ConnectionFactory一个ExecutorService 这里.这一切看起来都很好,直到你进入兔子ConsumerWorkService
.这里消息以最大16个消息的块处理.块中的每个消息都是串行处理的,如果还有更多工作要做,则执行器服务将在下一个块中调用.这个代码片段如下.从执行器服务的这种使用,我无法看到如何并行处理消息.执行器服务一次只能执行一项工作.
我想念的是什么?
private final class WorkPoolRunnable implements Runnable {
public void run() {
int size = MAX_RUNNABLE_BLOCK_SIZE;
List<Runnable> block = new ArrayList<Runnable>(size);
try {
Channel key = ConsumerWorkService.this.workPool.nextWorkBlock(block, size);
if (key == null) return; // nothing ready to run
try {
for (Runnable runnable : block) {
runnable.run();
}
} finally {
if (ConsumerWorkService.this.workPool.finishWorkBlock(key)) {
ConsumerWorkService.this.executor.execute(new WorkPoolRunnable());
}
}
} catch (RuntimeException e) {
Thread.currentThread().interrupt();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将主键约束移动到oracle中的不同列.我试过这个:
ALTER TABLE MY_TABLE
DROP CONSTRAINT c_name;
ALTER TABLE MY_TABLE
ADD CONSTRAINT c_name PRIMARY KEY
(
"COLUMN_NAME"
) ENABLE;
Run Code Online (Sandbox Code Playgroud)
这在添加约束上失败,错误表明约束已经存在,即使我刚刚删除它.任何想法为什么会这样
我试图写一个简单实用的方法添加的天数aninteger的乔达时间瞬间.这是我的第一次尝试.
/**
* Adds a number of days specified to the instant in time specified.
*
* @param instant - the date to be added to
* @param numberOfDaysToAdd - the number of days to be added to the instant specified
* @return an instant that has been incremented by the number of days specified
*/
public static Instant addNumberOfDaysToInstant(final Instant instant, final int numberOfDaysToAdd) {
Days days = Days.days(numberOfDaysToAdd);
Interval interval = new Interval(instant, days);
return interval.getEnd().toInstant(); …
Run Code Online (Sandbox Code Playgroud) 这是我的用例,我有一个逻辑上等于我的 HashMap 键的对象,但不是同一个对象(不是 ==)。我需要从 HashMap 中获取实际的键对象,以便我可以对其进行同步。我知道我可以迭代 ketSet,但这与散列相比很慢。
查看 java.util.HashMap 实现,我看到 getEntry(Object key) 方法正是我所需要的。知道为什么这没有被曝光吗?
你能想到其他办法让我把钥匙拿出来吗?
Eclipse 3.4.Java编译器级别1.6 JRE IBM 1.6
我们有一个库类,我们无法改变它的形式.
import java.util.Hashtable;
public class A extends Hashtable {
...
}
Run Code Online (Sandbox Code Playgroud)
我们已经构建了一个实用程序类,以便于访问A.
public class B {
private A a;
public B() {
this.a = new A();
}
public B(final A props) {
this.a = props;
}
public B(final Map<String, String> props) {
this();
for (String key : props.keySet()) {
add(key, props.get(key));
}
}
@SuppressWarnings("unchecked")
public B add(final String name, final Object value) {
a.put(name, value);
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
当我们尝试从另一个类调用其中一个构造函数时,会出现问题.
public class C {
public …
Run Code Online (Sandbox Code Playgroud) Elasticsearch 版本 5.6
我正在使用 elasticsearch 本机传输客户端并通过查询UpdateByQueryRequestBuilder
执行更新。
我想异步执行此操作并使用任务 api 跟踪进度。文档显示参数 wait_for_completion=false 正是我想要的,因为我看不到对 java 客户端的支持。有没有办法设置这个并取回任务ID?
我试图让 MySql 将以下语句的结果作为进一步的 sql 语句执行。我相信在oracle sqlplus 中这是使用spool
函数来实现的。这是如何在Mysql 中实现的?
select concat('OPTIMIZE TABLE `', ist.TABLE_SCHEMA,'`.', ist.TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES ist where table_schema = 'my_schema';
Run Code Online (Sandbox Code Playgroud) 我正在使用jsf 1.2.当一个特定的jsp有多个具有指定id的表单时,例如当使用类似下面的东西时,jsf给表单一个看似随机的id.
<ui:repeat>
<h:form id="repeatingform">
...
Run Code Online (Sandbox Code Playgroud)
我想使用javascript提交所有表单.有没有办法在不知道表格的ID的情况下做到这一点?
java.util.BitSet由long []支持,因此最小大小为64位.我需要缓存大量(~2M)的对象,每个对象都需要一个大小为23的BitSet.对于小尺寸,BitSet是否有更多的空间效率?例如,是否有一个BitSet类型的数据结构,由byte []而不是long []支持?这将允许我将我的23位存储在3个字节而不是8个字节中.
java ×7
apache-camel ×1
bitset ×1
collections ×1
command-line ×1
concurrency ×1
datetime ×1
eclipse ×1
forms ×1
hashmap ×1
javac ×1
javascript ×1
jodatime ×1
jsf ×1
mysql ×1
oracle ×1
rabbitmq ×1
security ×1
sql ×1