- 浏览: 53253 次
- 性别:
- 来自: 上海
最新评论
文章列表
neo4j是目前最流行的图数据库,整体表现还是不错的。公司有些业务会把部分数据导入到neo4j,方便做一些关系/路径查询,记录一下简单的一些操作。
1 install
>> tar xvf neo4j-xxx.tar.gz
>> bin/neo4j console
2 cypher insert data
>> CREATE(n:Person:Swedish)
>> CREATE (alias:label:morelabel)
3 java api
<dependency>
<groupI ...
// 题目: 多线程写文件
/**
有四个线程1、2、3、4。线程1的功能就是输出A,线程2的功能就是输出B,以此类推.........
现在有四个文件file1,file2,file3, file4。初始都为空。
现要让四个文件呈如下格式:
file1:A B C D A B....
file2:B C D A B C....
file3:C D A B C D....
file4:D A B C D A....
**/
我的思路:
1.每个线程记录自己要写入文件的顺序,写完一遍所有文件以后又从头来。
2.有个类似线程调度的东西,这里面按顺序执行线程,执 ...
网上一搜equals和hashCode全是详解,深入剖析,巴拉巴拉。都写的非常详细,能学到很多东西。写这个就为了表达一下自己的理解,以及需要理解的程度。
刚学java,都是说字符串不能用==比较相等,要用equals,其实就是说对于引用类型的比较不能直接用==比较是否相等,因为比较的是对对象的地址,而我们期望的往往是对象内的属性值相等。
当我们自定义的类使用equals比较的时候,基本是没用,还是比较的地址,也即是equals默认就是使用==来比较的。那么问题来了,什么时候需要重写equals方法呢?以及该怎么重写呢?
很简单,就是当我们在set或者map的 ...
在java的io、网络等方面的api中经常会遇到异常,当然也可能遇到error,但是真遇到error的话,那就太好了,你中奖了,等着程序死掉就行了,或者弹出一个警告,来提醒你中奖了。异常主要两类,一类是检查型异常(checked exce ...
枚举类型还是有必要的,以前没有的时候,都是通过定义静态常量,主要就是为了防止硬编码。
枚举类型要注意,可以写构造方法,但是构造方法必须要用private修饰,其实想想就知道为什么要private了,既然都用枚举了,当然不能让你随便new一个对象出来了,不然还要枚举做什么。
下面是示例代码:
public enum WordType {
V("v") {
@Override
public String toString() {
return "sb";
}
}, VT("vt ...
在jdk8中新出了一个时间处理包,试用了一下,日期的加减很方便,以前要用什么joda(我没用过,只听过),好了,废话不多说,看个简单的例子。
LocalDate curDate = LocalDate.now();
LocalDate preDate = curDate.plus(-1, ChronoUnit.DAYS);
LocalDate nextDate = curDate.plus(1, ChronoUnit.DAYS);
System.out.println(preDate);// 2017-06-16
System.out.println(curDate);// ...
在此之前,需要先知道图是什么,不求精通,至少要知道顶点和边是什么,这里就简单的复习一下,讲的会比较通俗,如果要深入理解还是去复习一下数据结构里面的图。图是由顶点和边构成了,其中顶点和顶点之前的关系称为边,如果一个顶点到另一个顶点的边带有箭头,也就是方向,称为有向图;如果没有箭头,就是没有方向,称为无向图。
其实gremlin中关于图的结构基本和数据结构中图类似,不过,顶点可以有属性,边也可以有属性,这种结构的图,一般称为属性图。另外还有一种图结构,基于rdf存储,成为rdf图,像google KG就是用的rdf结构。现在工业上更倾向于使用属性图,最基本的还是三元组,这个和r ...
在mongodb中有几种常见的索引,如Single Field Indexes/Compound Indexes/Multikey Indexes,另外还有什么Geospatial Indexes/Text Indexes/Hashed Index。
在工作中主要还是用到Single Field Indexes/Compound Indexes,Single Field Indexes就是对单一字段建立索引,Compound Indexes就是对多个字段建立组合索引。
单字段索引没什么太多要说的,主要是组合索引,查询的时候,语句必须是前缀模式:也就是建立索引的时候 ...
spark集群一共有三种工作方式,分别是:
Standalone Deploy Mode: simplest way to deploy Spark on a private cluster
Apache Mesos
Hadoop YARN
当然第一种安装最简单,当然要先来简单的。
1. 准备工作
三台centos:spark01/spark02/spark03
安装jdk 配置好JAVA_HOME
下载spark安装包:
https://mirror.tuna.tsinghua.edu.cn/apache/spark/spark-2.1.0/spark-2.1.0-b ...
方法重载是指一个方法与另一个方法名字一样,但是参数列表不一样,这样它们中一个就是另一方法的重载。关于参数列表不一样,大致分为有两种情况:1. 参数个数一样,但是参数对应位置有不一样的类型 2. 参数个数不一样。总的来说就是重载必定是参数发生变化,要么参数类型变,要么参数个数变。
方法覆盖是指子类覆盖父类的方法,也叫重写、覆写等。覆盖必须满足以下几个条件:1. 方法不能抛出比父类更高的异常类型,2. 方法访问权限不能比父类的访问权限更小,即方法权限更公开一些或者一样,3. 返回值的类型,必须是父类中方法的返回值的子类或者一样, 4. 参数列表必须和父类中一模一样。
在 ...
java中List集合声明的时候需要传入一个类型,表示集合中的元素类型。如果集合声明为父类,则不能把子类的集合实例赋值给父类集合的引用,但是可以在父类集合中添加子类对象,如果要实现子类集合实例赋值给父类集合引用,需要在父类中使用集合的向下限定,即泛型声明<? extends Parent>,下面看看例子。
public class Demo {
public static void main(String[] args) {
List<Parent> parents = new ArrayList<>();
parents.a ...
前面详细说明了数组的操作,总结起来差不多就两种情况,一个条件中不带$elemMatch,一种是条件中带$elemMatch。常用的查询应该是带$elemMatch,这样是要求数组中有元素满足所有条件。
1. 不带$elemMatch,结构大概是:
{字段: 值} {字段: {$gt: 值}} 对应基本数据类型的数组
{字段.字段: 值} {字段.字段: {$gt: 值}} 对应文档类型的数组
2. 带$elemMatch , 结构大概是:
{字段: {$elemMatch: 值} } {字段: {$elemMatch: ...
前面看到mongodb文档的字段的值可以嵌套一个文档,当然字段的值也可以嵌套一个数组。不过嵌套数组就比嵌套文档稍微复杂一些,因为数组既可以是基本数据类型的数组,也可以是文档类型的数组。为了逻辑的顺畅,先从嵌套基本数据类型的数组开始,然后过度到嵌套文档的数组。
#########################################################################
基本数据的数组:
1. 精确匹配 数组中值完全一样,值的顺序也一致
// 样例数据
{ "_id" : 1, " ...
在mongodb中字段的值,可以是基本数据类型,也可是是文档类型。这样的话,如果要在内嵌文档中查询,可能需要对内嵌文档的字段建立索引。下面列出一些内嵌文档上的常用操作。
1. 内嵌文档单个字段建立索引
// 假设单个文档结构如下
{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"score": 1034,
"location": { state: "NY", city: "New York" ...
在sql中,我们一般都不提倡select * from xx这种形式,因为这样会返回所有数据,增加服务器负担,一般都需要限定返回哪些字段。在mongodb查询中,我们有时候也需要限制返回哪些字段,这就需要在find语句里面加上projection这个参数.
在mongodb中find的语法是find(query, projection),由于mongodb查询语句使用js,我们可以省略find里面的参数,如果需要添加projection的话,两个条件都需要指定。projection的语法是:{field1:<value>,field2:<value> ...