我正在使用Scala处理Cassandra Spring数据模块.我创建了域模型和设置crud存储库.
Spring数据存储库的设置如下:
@Repository
trait SampleRepository extends CassandraRepository[Sample, SampleKey]
Run Code Online (Sandbox Code Playgroud)
表域模型设置如下:
@Table
case class Sample(@PrimaryKey
sampleKey: SampleKey,
@Column("surName")
surName: String)
Run Code Online (Sandbox Code Playgroud)
主键是复合键.Id列作为分区键.将列命名为Cluster key
@PrimaryKeyClass
case class SampleKey(
@PrimaryKeyColumn( `type` = PrimaryKeyType.PARTITIONED, ordinal = 0, name = "id")
id: Int,
@PrimaryKeyColumn( `type` = PrimaryKeyType.CLUSTERED, ordinal = 1, name = "name")
name: String
)
Run Code Online (Sandbox Code Playgroud)
在scala中,type是一个有效的关键字,因此使用了后向引号.我期待这个工作,但当我启动应用程序,但我得到
Suppressed: org.springframework.data.mapping.MappingException: Composite primary key type [com.barclays.decisionstore.trac.model.SampleKey] has no fields annotated with @PrimaryKeyColumn
at org.springframework.data.cassandra.core.mapping.PrimaryKeyClassEntityMetadataVerifier.verify(PrimaryKeyClassEntityMetadataVerifier.java:91)
... 262 common frames omitted
Suppressed: org.springframework.data.mapping.MappingException: At least one of the @PrimaryKeyColumn annotations …
Run Code Online (Sandbox Code Playgroud) Identity HashMap是java中的特殊实现,它比较对象引用而不是equals,并且还使用identityHashCode而不是hashCode.另外它用来linear-probe hash table
代替Entry list
.
Map<String,String> map = new HashMap<String,String>();
Map<String,String> iMap = new IdentityHashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)
这是否意味着对于String键,如果正确调整,IdentifyHashMap通常会更快?
添加了一些基本代码
public class Dictionary {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("/usr/share/dict/words"));
String line;
ArrayList<String> list = new ArrayList<String>();
int index=0;
while( (line = br.readLine()) != null){
list.add(line);
}
System.out.println("list.size() = " + list.size());
Map<String,Integer> iMap = new IdentityHashMap<String,Integer>(list.size());
Map<String,Integer> hashMap = new HashMap<>(list.size());
long iMapTime=0,hashMapTime=0;
long time=0;
for(int i=0; i< list.size(); i++){ …
Run Code Online (Sandbox Code Playgroud) 在Java中Object
,它Thread
是独立的类.Java Object
源代码没有提到有关monitor /的任何内容,Thread
尽管我们有wait()
/ notify()
methods.
那么问题是该Object
监视器如何知道获取它的线程的细节?这些信息存储在哪里?对象和线程如何链接?