有人可以解释这些常数的重要性以及选择它们的原因吗?
static int hash(int h) {
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}
Run Code Online (Sandbox Code Playgroud)
来源:java-se6库
我正在学习java中的访问级别,我创建了3个类:在包my.inheritance中,我有A类和C类
package my.inheritance;
public class A {
protected int a=15;
}
package my.inheritance;
public class C {
public static void main(String[] args)
{
A a = new A();
System.out.println(a.a);
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个名为my.inheritance.test的包中,我有一个类B试图访问int值的受保护字段a但是编译器抱怨这个!
package my.inheritance.test;
import my.inheritance.A;
public class B extends A{
public static void main(String[] args)
{
A a = new A();
int value = a.a;
System.out.println(value);
}
}
Run Code Online (Sandbox Code Playgroud)
我受到了受保护的印象,只要您将其子类化,就可以从不同包中的不同类访问成员!为什么可见性错误呢?
我们应该使用assertEquals或assertTrue来比较基本类型的内部特征吗?是否有偏好,如果是这样,为什么?我想知道每种方法的优缺点.
在客户端分片方法中,我可以创建一个分片并在该单个分片中存储一个zset.使用Redis集群,zset有多大?如果要成为redis中所有键的索引,如何缩放zsets.
在一些遗留代码中,我看到这一点,一个过度的异常被捕获,然后再次被抛出,这是一个好习惯吗?是否throw e;重新抛出同样的异常,或创建一个新的?
catch (Exception e) {
StringBuilder sb = new StringBuilder(
"Oops. Something went wrong with id: ");
sb.append(id);
sb.append(". Exception is: ");
sb.append(e.toString());
System.out.println(sb.toString());
throw e;
}
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的应用程序,需要一个数据源.目前它是一个平面文件,但稍后它将更改为数据库.我需要你在这里使用继承或接口的意见.哪一个更好,为什么?我的意见是使用接口,因为它会灵活但我可以将数据源作为抽象类.
我在这做错了什么?
@Override
public int hashCode()
{
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
hashCodeBuilder.append(this.getId()).append(this.getDocFamilyUuid())
.append(this.getCorrelationId());
return hashCodeBuilder.hashCode();
}
Run Code Online (Sandbox Code Playgroud)
这就是我在groovy中创建对象的方式.字段被设置为静态常量
DocInfo docInfo = new DocInfo(id:DOC_ID, correlationId: CORRELATION_ID, docFamilyUuid: DOC_FAMILY_UUID)
Run Code Online (Sandbox Code Playgroud)
而我正试图断言
assert docInfo.hashCode() ==
new DocInfo([id:DOC_ID,
correlationId: CORRELATION_ID,
docFamilyUuid:DOC_FAMILY_UUID]).hashCode()
Run Code Online (Sandbox Code Playgroud) 以排序顺序维护数字列表的时间和空间复杂度(即从第一个插入它开始,第二个出现以排序顺序插入它等等......)是否与在它们出现时插入它们相同然后在所有插入完成后进行排序?
我如何做出这个决定?你能证明 'n' 个元素的时间和空间复杂度吗?
我在考虑电话簿方面,将它存储在一个集合中并在用户每次将记录插入电话簿时向用户呈现排序数据与以树集中的排序顺序存储电话簿记录有什么区别。n 个元素会是什么?
我有一个班级,我正在为我的服务注入代理.
Service service
{
private ServiceProxy proxy;
public Service(ServiceProxy proxy)
{
this.proxy = proxy;
}
}
Run Code Online (Sandbox Code Playgroud)
对它的测试是:
ServiceTest
{
@Mock
ServiceProxy mockProxy;
Service service = new Service(mockProxy);
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样初始化我的类,我总是得到一个NPE我想要使用服务对象.为什么这样Mockito做?有什么方法可以解决这个问题,而不是在每次测试中声明它?
我使用 Redis 哈希来存储与单个键关联的元数据,在我的例子中是 userId。我有一个batchAPI,我在其中传递一批userId 并获取元数据。Redis Cluster 不支持多键命令,那么使用 RedisCluster 实现此目的的最佳方法是什么?我使用 Jedis 作为 Java 客户端来连接 Redis。