diff --git a/data.js b/data.js index 2036ce4c..699da2b8 100644 --- a/data.js +++ b/data.js @@ -1 +1 @@ -const REFS_DATA = [{"title":"
删除所有节点
-MATCH (n) DETACH DELETE n
+MATCH (n) DETACH DELETE n
-删除‘Person’中‘name‘为’Mike‘节点的’test‘属性
-MATCH (a:Person {name:'Mike'}) SET a.test='test'
-MATCH (a:Person {name:'Mike'}) REMOVE a.test
+删除 Person
中 name
为 Mike
节点的 test
属性
+MATCH (a:Person {name:'Mike'}) SET a.test='test'
+MATCH (a:Person {name:'Mike'}) REMOVE a.test
-删除’Location‘中’city‘为’Portland‘的节点
-MATCH (a:Location {city:'Portland'}) DELETE a
+删除 Location
中 city
为 Portland
的节点
+MATCH (a:Location {city:'Portland'}) DELETE a
删除有关系的节点(此处rel是写死的,指的是所有关系)
-MATCH (a:Person {name:'Todd'})-[rel]-(b:Person) DELETE a,b,rel
+MATCH (a:Person {name:'Todd'})-[rel]-(b:Person) DELETE a,b,rel
-
查询
-查询所有在Boston出生的人物
-MATCH (a:Person)-[:BORN_IN]->(b:Location {city:'Boston'}) RETURN a,b
+
查询
+
+查询所有在 Boston
出生的人物
+MATCH (a:Person)-[:BORN_IN]->(b:Location {city:'Boston'}) RETURN a,b
查询所有对外有关系的节点
-MATCH (a)-->() RETURN a
+MATCH (a)-->() RETURN a
查询所有有关系的节点
-MATCH (a)--() RETURN a
+MATCH (a)--() RETURN a
查询所有对外有关系的节点,以及关系类型
-MATCH (a)-[r]->() RETURN a.name, type(r)
+MATCH (a)-[r]->() RETURN a.name, type(r)
查询所有有结婚关系的节点
-MATCH (n)-[:MARRIED]-() RETURN n
+MATCH (n)-[:MARRIED]-() RETURN n
查找某人的朋友的朋友
-MATCH (a:Person {name:'Mike'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName
+MATCH (a:Person {name:'Mike'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName
+
+
创建节点和关系
+
+// 创建节点
+CREATE (n:Person {name: 'Alice', age: 30})
+CREATE (n:Person {name: 'Bob', age: 25})
+
+// 创建关系
+MATCH (alice:Person {name: 'Alice'}), (bob:Person {name: 'Bob'})
+CREATE (alice)-[:FRIENDS]->(bob)
增加/修改节点的属性
-MATCH (a:Person {name:'Liz'}) SET a.age=34
-MATCH (a:Person {name:'Shawn'}) SET a.age=32
-MATCH (a:Person {name:'John'}) SET a.age=44
-MATCH (a:Person {name:'Mike'}) SET a.age=25
+MATCH (a:Person {name:'Liz'}) SET a.age=34
+MATCH (a:Person {name:'Shaw'}) SET a.age=32
+MATCH (a:Person {name:'John'}) SET a.age=44
+MATCH (a:Person {name:'Mike'}) SET a.age=25
+
+
查询节点和关系
+
+// 查询所有节点和关系
+MATCH (n)
+RETURN n
+
+// 查询特定节点
+MATCH (n:Person)
+WHERE n.name = 'Alice'
+RETURN n
+
+// 查询节点的关系
+MATCH (n:Person)-[r]->()
+WHERE n.name = 'Alice'
+RETURN r
+
+
更新节点和关系
+// 更新节点属性
+MATCH (n:Person {name: 'Alice'})
+SET n.age = 31
+RETURN n
+
+// 删除节点
+MATCH (n:Person {name: 'Bob'})
+DELETE n
+
+
更复杂的查询
+
+// 查找 Alice 的朋友的朋友
+MATCH (alice:Person {name: 'Alice'})-[:FRIENDS]->()-[:FRIENDS]->(fof)
+RETURN fof
+
+// 查找共同朋友
+MATCH (alice:Person {name: 'Alice'})-[:FRIENDS]->(friend),
+ (bob:Person {name: 'Bob'})-[:FRIENDS]->(friend)
+RETURN friend
入门
+
入门
Hello.java
public class Hello {
@@ -1268,6 +1268,66 @@
// 获取注解信息
Annotation annotation = field.getAnnotation(MyAnnotation.class);
+
方法引用
+
方法引用
+
+Java 的 Consumer
接口里的 accept
方法接受参数但不返回值。要让它打印传入的参数,可以这样做:
+Consumer<String> test = new Consumer<String>() {
+ @Override
+ public void accept(String s) {
+ System.out.println(s);
+ }
+ };
+test.accept("test");
+
+更简单的,我们可以直接传入Lambda表达式
+Consumer<String> test = System.out::println;
+
+方法引用通过方法的名字指向一个方法,使语言构造更简洁,减少冗余代码。
+
+ 使用方式
+- 引用方法
+- 引用构造方法
+- 引用数组
+
+
静态方法引用
+Comparator<Integer> comparator = Math::max;
+
+int result = comparator.compare(1, 2);
+// 返回 2
+
+
实例方法引用
+String str = "HELLO";
+
+String lowerCase = str::toLowerCase;
+// 返回 "hello"
+
+
构造方法引用
+Supplier<String> supplier = String::new;
+
+String str = supplier.get();
+// 返回一个空字符串
+
+
数组构造方法引用
+Function<Integer, String[]> function = String[]::new;
+
+
+String[] array = function.apply(5);
+// 返回 5 个空字符串的数组
+
+
+
对象中的方法引用
+String someStr = "HELLO";
+
+String lowerCase = someStr::toLowerCase;
+// 返回 "hello"
+
+
对象中的静态方法引用
+SomeClass someObject = new SomeClass();
+
+int result = someObject::staticMethod;
+// 调用静态方法
+
杂项 Misc
访问修饰符
@@ -1494,58 +1554,6 @@
int frequency = Collections
.frequency(list, 2); // frequency = 2
-
方法引用
-
-有一种函数式接口叫做Consumer
,里面有个抽象方法accept
能够接受一个参数但是没有返回值,加入我想实现这个方法,让他打印我传入的参数,那么我可以这样:
-Consumer<String> test = new Consumer<String>() {
- @Override
- public void accept(String s) {
- System.out.println(s);
- }
- };
-test.accept("test");
-
-更简单的,我们可以直接传入Lambda表达式
-Consumer<String> test = System.out::println;
-
-这就是方法引用,方法引用通过方法的名字来指向一个方法,让语言的构造更紧凑简洁,减少冗余代码。
-
- 使用方式
-- 引用方法
-- 引用构造方法
-- 引用数组
-
-
- 引用方式
-- 实例对象::实例方法名
-
-Consumer<String> myConsumer = System.out::println;
-myConsumer.accept("test");
-
-
-- 类名::静态方法名
-
-Function<Long, Long> myFunction = Math::abs(x);
-Long result = myFunction.apply("-2L");
-
-
-- 类名::实例方法名
-
-BiPredicate<String, String> myBiPredicate = String::equals;
-System.out.println(myBiPredicate.test("test", "test"));
-
-
-- 引用构造器
-
-Function<Integer, String> myFunction = StringBuffer::new;
-StringBuffer sb = myFunction.apply(10);
-
-
-- 引用数组
-
-Function<Integer, int[]> myFunction = int[]::new;
-int []arr = myFunction.apply(123);
-
另见
- Java 官网 (oracle.com/cn/java)
diff --git a/docs/neo4j.html b/docs/neo4j.html
new file mode 100644
index 00000000..ac28228e
--- /dev/null
+++ b/docs/neo4j.html
@@ -0,0 +1,156 @@
+
+
+
+
+Neo4j 备忘清单
+ & neo4j cheatsheet & Quick Reference
+
+
+
+
+
+
+
+
Neo4j 备忘清单
+这个 neo4j 快速参考备忘单显示了它的常用命令
+
入门
+
Neo4J 安装
+当开始使用 Neo4j 时,首先需要从官网下载页面下载 Neo4j。Neo4j 分为社区版和企业版。尽管企业版在横向扩展、权限控制、运行性能和高可用性等方面更优秀,适合正式的生产环境,但对于普通的学习和开发,免费的社区版就足够了。
+
+ 运行$ bin/neo4j start
+
+在 Mac 或者 Linux 中,安装好 JDK 后,直接解压下载好的 Neo4j 包,然后运行上面命令即可。
+
Neo4J 使用
+Neo4J 提供了一个用户友好的 web 界面,可以进行各项配置、写入、查询等操作,并且提供了可视化功能。类似ElasticSearch 一样,我个人非常喜欢这种开箱即用的设计。
+
+ 进入管理页面打开浏览器,输入下面网址,可以进入管理页面
+http:/browser/
+
+
Neo4j 示例
+
创建
+创建多个节点
+CREATE (n:Person {name:'Sally'}) RETURN n;
+CREATE (n:Person {name:'Steve'}) RETURN n;
+
+创建 FRIENDS
关系
+MATCH (a:Person {name:'Sally'}),
+ (b:Person {name:'Steve'})
+MERGE (a)-[:FRIENDS]->(b)
+
+创建节点的时候就建好 FRIENDS
关系
+CREATE (a:Person {name:'Todd'})-[r:FRIENDS]->(b:Person {name:'Carlos'})
+
+为创建完成的关系增加 since
属性
+MATCH (a:Person {name:'Sally'}),
+ (b:Person {name:'Steve'})
+MERGE (a)-[:FRIENDS {since:2001}]->(b)
+
+
删除
+
+删除所有节点
+MATCH (n) DETACH DELETE n
+
+删除 Person
中 name
为 Mike
节点的 test
属性
+MATCH (a:Person {name:'Mike'}) SET a.test='test'
+MATCH (a:Person {name:'Mike'}) REMOVE a.test
+
+删除 Location
中 city
为 Portland
的节点
+MATCH (a:Location {city:'Portland'}) DELETE a
+
+删除有关系的节点(此处rel是写死的,指的是所有关系)
+MATCH (a:Person {name:'Todd'})-[rel]-(b:Person) DELETE a,b,rel
+
+
查询
+
+查询所有在 Boston
出生的人物
+MATCH (a:Person)-[:BORN_IN]->(b:Location {city:'Boston'}) RETURN a,b
+
+查询所有对外有关系的节点
+MATCH (a)-->() RETURN a
+
+查询所有有关系的节点
+MATCH (a)--() RETURN a
+
+查询所有对外有关系的节点,以及关系类型
+MATCH (a)-[r]->() RETURN a.name, type(r)
+
+查询所有有结婚关系的节点
+MATCH (n)-[:MARRIED]-() RETURN n
+
+查找某人的朋友的朋友
+MATCH (a:Person {name:'Mike'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName
+
+
创建节点和关系
+
+// 创建节点
+CREATE (n:Person {name: 'Alice', age: 30})
+CREATE (n:Person {name: 'Bob', age: 25})
+
+// 创建关系
+MATCH (alice:Person {name: 'Alice'}), (bob:Person {name: 'Bob'})
+CREATE (alice)-[:FRIENDS]->(bob)
+
+
增加/修改节点的属性
+MATCH (a:Person {name:'Liz'}) SET a.age=34
+MATCH (a:Person {name:'Shaw'}) SET a.age=32
+MATCH (a:Person {name:'John'}) SET a.age=44
+MATCH (a:Person {name:'Mike'}) SET a.age=25
+
+
查询节点和关系
+
+// 查询所有节点和关系
+MATCH (n)
+RETURN n
+
+// 查询特定节点
+MATCH (n:Person)
+WHERE n.name = 'Alice'
+RETURN n
+
+// 查询节点的关系
+MATCH (n:Person)-[r]->()
+WHERE n.name = 'Alice'
+RETURN r
+
+
更新节点和关系
+// 更新节点属性
+MATCH (n:Person {name: 'Alice'})
+SET n.age = 31
+RETURN n
+
+// 删除节点
+MATCH (n:Person {name: 'Bob'})
+DELETE n
+
+
更复杂的查询
+
+// 查找 Alice 的朋友的朋友
+MATCH (alice:Person {name: 'Alice'})-[:FRIENDS]->()-[:FRIENDS]->(fof)
+RETURN fof
+
+// 查找共同朋友
+MATCH (alice:Person {name: 'Alice'})-[:FRIENDS]->(friend),
+ (bob:Person {name: 'Bob'})-[:FRIENDS]->(friend)
+RETURN friend
+
+© 2022 Kenny Wang.
+
diff --git a/index.html b/index.html
index 08650cc5..32dd7323 100644
--- a/index.html
+++ b/index.html
@@ -715,7 +715,7 @@
Elasticsearch
-Neo4j
+Neo4j
快捷键© 2022 Kenny Wang. Updated on 2024/05/05 16:47:18 © 2022 Kenny Wang. Updated on 2024/05/05 17:33:58