夸克资源分享:
表情包:https://pan.quark.cn/s/5b9ddeb237fe
工具箱:https://pan.quark.cn/s/aa2d6a730482,图吧、美蛋、路遥、入梦等
Fiddler Everywhere抓包:https://pan.quark.cn/s/6b1e2fbae019,
Adobe:https://pan.quark.cn/s/13e39cfeaadb,先看安装教程
JetBranis开发者工具:https://pan.quark.cn/s/16e94dcff1f7,先看安装教程下的jetbra教程
逆向工具:https://pan.quark.cn/s/50e93c8ca54c
前端项目搭建集锦:https://blog.youkuaiyun.com/randy521520/article/details/146998467
一、Neo4j的基本概念与特点
Cypher 是 Neo4j 图数据库的专用查询语言,专为高效操作图数据而设计。它采用直观的语法结构,使得开发者能够轻松地表达复杂的图查询。
Neo4j 是一种专注于图数据存储与处理的数据库系统,特别擅长处理复杂的关系网络。与传统的表格型数据库相比,Neo4j 采用图结构来组织数据,通过Node(节点)和Relationship(关系)来构建数据模型。
节点(Node):节点是数据的基本单位,相当于传统数据库中的一行记录。每个节点可以携带多个属性,这些属性用于描述节点的特征。例如,一个代表用户的节点可能包含姓名、年龄、性别等属性。
关系(Relationship):关系是 Neo4j 中连接两个节点的纽带,类似于传统数据库中的外键,但功能更强大。关系具有方向性,可以明确表示从一个节点到另一个节点的关联。例如,用户节点和城市节点之间可以通过"居住于"关系连接,表示某用户居住在某个城市。
标签(Label):为了对节点进行分类,Neo4j 引入了标签的概念,这类似于传统数据库中的表。一个节点可以拥有多个标签,表示它属于多个类别。例如,一个节点可以同时拥有"用户"和"开发者"两个标签,表示该用户同时也是一名开发者。
属性(Property):属性不仅存在于节点上,也可以附加在关系上,用于存储额外的信息。这些属性可以是字符串、数字、日期等多种数据类型。例如,一个"购买"关系可以包含购买时间、购买数量等属性。
图(Graph):图是由节点和关系构成的网络结构,它直观地展现了数据之间的关联。Neo4j 的核心优势在于能够高效地处理复杂的图查
二、通用函数
1.randomUUID():返回一个128位的唯一uuid
2.coalesce( val1,val2,val3… | list ):用于返回第一个非空的值,可以用于给空值设置默认值
WITH [{age:18}] AS l
UNWIND l AS p
RETURN coalesce(p.name,'暂无')
3.isEmpty(str | list | map):检查是否为空值
4.all(lis )、any(list)、none(list)、single(list):检查列表集合元素
/****all用于判断列表中的所有元素是否都满足某个条件。如果所有元素都满足条件,则返回
true,否则返回 false。***/
WITH [1, 2, 3, 4] AS list
RETURN all(x IN list WHERE x > 0) AS all_positive;
/****any用于判断列表中是否至少有一个元素满足某个条件。如果至少有一个元素满足条件,则返回
true,否则返回 false。***/
WITH [1, 2, 3, 4] AS list
RETURN any(x IN list WHERE x > 3) AS any_greater_than_3;
/****none用于判断列表中是否没有任何元素满足某个条件。如果没有任何元素满足条件,则返回
true,否则返回false***/
WITH [1, 2, 3, 4] AS list
RETURN none(x IN list WHERE x > 4) AS none_greater_than_4;
/****single用于判断列表中是否只有一个元素满足某个条件。如果只有一个元素满足条件,则返回
true,否则返回 false***/
WITH [1, 2, 3, 4] AS list
RETURN single(x IN list WHERE x > 3) AS single_greater_than_3;
5.size():获取字符串、列表或者模式表达式匹配到的数量
size(string): 求字符串中字符的数量(可以把字符串当作是字符的列表)
size(list): 返回列表中元素的数量
size(pattern_expression):返回提供模式表达式中匹配到的数量
6.nullIf(v1, v2):如果两个给定参数相等,则返回 null,否则返回第一个参数的值。
7.valueType(val):返回值的类型的
三、类型转换函数
1.转换布尔类型函数
/****
toBoolean(val):转换类型不符合则抛异常
toBooleanOrNull(val):转换类型不符合返回null
***/
WITH 16 AS n, [1,2,3] AS l
RETURN toBoolean(n),toBooleanOrNull(n),toBooleanOrNull(l);
2.转换数值类型函数
/****
toFloat(val):转换类型不符合则抛异常
toFloatOrNull(val):转换类型不符合返回null
***/
WITH '16' AS n, [1,2,3] AS l
RETURN toFloat(n),toFloatOrNull(n),toFloatOrNull(l);
/****
toInteger(val):转换类型不符合则抛异常
toIntegerOrNull(val):转换类型不符合返回null
***/
WITH '16.5' AS n, [1,2,3] AS l
RETURN toInteger(n),toIntegerOrNull(n),toIntegerOrNull(l);
3.转换字符串类型函数
/****
toString(val):转换类型不符合则抛异常
toStringOrNull(val):转换类型不符合返回null
***/
WITH 16 AS n, [1,2,3] AS l
RETURN toString(n),toStringOrNull(n),toStringOrNull(l)
4.列表类型转换函数
/****toBooleanList(list):将List转换为List,如果任何值不能转换为布尔值,那么它们将在返回的LIST中为null***/
WITH ['你好世界', true,'false', null, ['A','B'],'1',1] AS l
RETURN toBooleanList(l);
/****toFloatList(list): 将List转换为List,如果任何值不能转换为float,那么它们将在返回的List中为null***/
WITH ['你好世界', 2.5, '3.14159', null, ['A','B'],'1',1] AS l
RETURN toFloatList(l);
/****toIntegerList(): 将List转换为List,如果任何值不能转换为integer,那么它们将在返回的List中为null***/
WITH ['你好世界', 2.5, '3.14159', null, ['A','B']] AS l
RETURN toIntegerList(l);
/****toStringList(): 将List转换为List,如果任何值不能转换为string,那么它们将在返回的List中为null***/
WITH ['你好世界', 2.5, '3.14159', null, ['A','B'],true,'false'] AS l
RETURN toStringList(l);
四、聚合函数
1.avg(nu): 返回平均值
2.sum(nu): 返回总和
3.max(nu): 返回最大值
4.min(nu):返回最小值
5.percentileDisc(nu): 返回离散百分位数
6.percentileCont(nu): 返回连续百分位数
7.stdev(nu): 返回标准差
8.stdevp(nu):返回总体标准差
9.collect(val):用于将一组值收集到一个列表中
/****sum、max、max、min、avg***/
WITH [1, 2, 3] AS numbers
UNWIND numbers AS num
RETURN sum(num),max(num),min(num),avg(num)
/****collect***/
WITH [{name:'张三',age:18}, {name:'李四',age:18},{name:'王五',age:18}] AS l
UNWIND l AS p
RETURN collect(p.name)
五、字符串函数
1.字符串截取:left(str,length)、right(str,length)、substring(str,startIndex,endIndex)
/****
left(str,length):从左边获取字符串length长度的字符
right(str,length):从右边获取字符串length长度的字符
substring(str,startIndex,endIndex):根据下标截取字符,substring不包含结束下标字符串,结束下标可省略
***/
WITH '你好!世界' AS s
RETURN left(s, 2),right(s, 2),substring(s,1,2),substring(s,1);
2.去空格函数:ltrim(str)、rtrim(str)、rtrim(str)、btrim(input[, trimCharacterString])
/****
ltrim(str):去除开始空格
rtrim(str):去除结束空格
trim(str):去除开始、结束空格
btrim(input[, trimCharacterString]):移除前后空白字符,可指定要移除的字符
***/
WITH ' 你好!世界 ' AS s
RETURN ltrim(s),rtrim(s),trim(s);
3.字符串大小写转换函数:toLower、toUpper、lower、upper
WITH 'Hello Word!' AS s
RETURN toLower(s),toUpper(s),lower(s),upper(s);
4.返回字符长度:char_length、character_length
RETURN char_length('i你是'),character_length('i你是')
5.其他函数
/****
字符串分割split(str, str1),返回List
str:字符串
str1:以什么字符分割
***/
WITH '你好!世界' AS s
RETURN split(s,'!');
/****
字符替换函数replace(str,str1,str2),不支持正则
str:字符串
str1:需要替换的字符串
str2:替换的字符
***/
WITH ' 你好!世界 ' AS s
RETURN replace(s,' ','');
/****字符串颠倒函数reverse(str)***/
WITH '你好!世界' AS s
RETURN reverse(s);
/****
返回标准Unicode字符normalize(str, normalForm)
normalForm:默认为NFC,可为NFC, NFD, NFKC和NFKD
***/
WITH '\u212A' AS s1,'\u004B' AS s2
RETURN normalize(s1),s2;
六、数值函数
1.abs(nu):返回绝对值
2.ceil(nu): 向上取整
3.floor(nu):向下取整
4.round(nu):四舍五入
5.rand(nu):返回0到1之间的随机数
6.isNaN(nu):返回是否为 NaN。
7.sign(nu):返回数字的符号(-1, 0, 1)
8.e():返回自然对数的底数,e。
9.exp(nu):返回e的幂次方
10.log(nu):返回自然对数
11.log10(nu):返回以10为底的对数
12.sqrt(nu): 返回平方根
13.sin(nu), cos(nu), tan(nu)、cot(nu):基本三角函数
14.asin(nu), acos(nu), atan(nu):反三角函数
15.atan2(nu1,nu2): 返回两个参数的反正切值
16.pi():返回数学常数π。
17.radians(nu):将度转换为弧度。
18.degrees(nu):将弧度转换为度数。
19.haversin(nu):返回一个数的半正矢值。
20.vector.similarity.cosine(list1, list2):返回一个表示基于余弦相似度的参数向量的相似度的值
21.vector.similarity.euclidean(list1, list2):返回一个表示基于欧几里得距离的参数向量之间相似度的值
七、列表、MAP、节点、路径函数
1.列表函数
/****
生成一个integer类型的列表:range(start, end, step)
start:开始数值
end:结束数值
step:步长,可省略
***/
WITH range(1, 10) AS l1,range(0, 10, 2) AS l2
RETURN l1,l2;
/****列表反转函数:reverse(list)***/
WITH range(1, 10) AS l
RETURN reverse(l);
/****获取除列表中第一个元素的其他元素:tail(list)***/
WITH range(1, 10) AS l
RETURN tail(l);
/****
累加器:reduce(initVal, expression)
initVal:初始值
expression:表达式
***/
WITH range(1, 10) AS l
RETURN reduce(sum = 2, x in l | total+x);
/****
head(list):返回列表第一个元素
last(list):返回列表最后一个元素
expression:表达式
***/
WITH range(1, 10) AS l
RETURN head(l),last(l);
2.MAP函数
/****获取所有map的key:keys(map)***/
WITH {name:'张三',age:18} AS m
RETURN keys(m),nodes(m);
3.节点、关系函数
/****
elementId(node|relation):返回节点或者关系的id
id(node|relation):返回节点或者关系的id
properties(node|relation):返回节点或关系的属性
***/
MATCH (n)-[r]->(m) WHERE n.name="刘备"
RETURN properties(n),properties(r),RETURN id(n),RETURN id(r)
/****labels(node):返回节点或者关系的标签***/
MATCH (n) WHERE n.name = '张三' RETURN labels(n)
/****
type(relation):返回关系类型
startNode(relation):返回关系第一个节点
endNode(relation):返回关系最后一个节点
***/
MATCH (n)-[r]->(m) WHERE n.name="张三"
RETURN type(r),startNode(r),endNode(r);
4.路径函数
/****查询路径长度length(path)***/
MATCH p=((n)-[r]-(m)) RETURN p,length(p);
/****查询最短路径shortestPath***/
MATCH (n:Person{name:"刘备"}),(m:Person{name:"赵云"}), p=shortestPath((n)-[*..15]-(m)) RETURN p;
/****查询所有最短路径allShortestPaths***/
MATCH (n:Person{name:"刘备"}),(m:Person{name:"赵云"}), p=allShortestPaths((n)-[*..15]-(m)) RETURN p;
/**
nodes(n):返回路径中所有节点值的列表
relationships(p):返回路径中所有关系值得列表
**/
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN nodes(p),relationships(p)
八、日期函数
1.date(dateStr | options) :创建日期,dateStr省略创建当天的日期,options日期配置项
WITH date() AS d,
date('2025-03-17') AS d1,
date({year:2025,month:3,day:17}) AS d2
return d,
d.year, //提取年份
d.month, //提取月份
d.day, //提取日
d.week, //提取周
d.dayOfWeek, //提取星期几
d1,
d2
2.datetime(datetimeStr | options) :创建日期时间,datetimeStr省略创建当天的时间,options日期时间配置项
WITH datetime() AS d,
datetime('2025-03-17T10:25:33[Asia/Shanghai]') AS d1,
datetime({year:2025,month:3,day:17,hour:10,minute:25,second:33,timezone: 'Asia/Shanghai'}) AS d2
return d,
d.year, //提取年份
d.month, //提取月份
d.day, //提取日
d.hour, //提取小时
d.minute, //提取分钟
d.second, //提取秒
d.millisecond, //提取毫秒
d.week, //提取周
d.dayOfWeek, //提取星期几
d1,
d2
3.localdatetime(datetimeStr | options):创建本地日期时间,datetimeStr省略创建当天的时间,options日期时间配置项
WITH localdatetime('2025-02-13') AS d,
localdatetime({year:2025,month:2,day:13}) AS d1,
localdatetime({timezone: 'Asia/Shanghai'}) AS d2 //设置时区,设置时区时无法设置其他字段
return d,
d.year, //提取年份
d.month, //提取月份
d.day, //提取日
d.hour, //提取小时
d.minute, //提取分钟
d.second, //提取秒
d.millisecond, //提取毫秒
d.week, //提取周
d.dayOfWeek, //提取星期几
d1,d2
4.time(timeStr):创建时间,timeStr省略创建当天的时间,options时间配置项
WITH time('18:00:28') AS d,
time({hour:18,minute:0,second:13, timezone: 'Asia/Shanghai'}) AS d1,
time({timezone: 'Asia/Shanghai'}) AS d2
return d,
d.hour, //提取小时
d.minute, //提取分钟
d.second, //提取秒
d.millisecond, //提取毫秒
d1,d2
5.localtime(timeStr):创建本地时间,options时间配置项
WITH localtime('18:00:28') AS d,
localtime({hour:18,minute:0,second:13}) AS d1,
localtime({timezone: 'Asia/Shanghai'}) AS d2 //设置时区,设置时区时无法设置其他字段
return d,
d.hour, //提取小时
d.minute, //提取分钟
d.second, //提取秒
d.millisecond, //提取毫秒
d1,d2
6.其他时间函数
- realtime(timezone):获取当前系统日期,适用于date、datetime、localdatetime、time、localtime
- statement(timezone):获取当前语句开始执行时的日期,适用于date、datetime、localdatetime、time、localtime
- transaction(timezone):获取当前事务开始时的日期,适用于date、localdatetime、time、localtime
- truncate(unit, temporalValue):将日期或日期时间截断到指定精度,适用于date、localdatetime、time、localtime
- fromepoch(second):接受以秒为单位的时间戳,将时间戳转换为日期时间,适用于datetime
- fromepochmillis(millisecond):接受以毫秒为单位的时间戳,将时间戳转换为日期时间,适用于datetime
RETURN localdatetime.realtime('Asia/Shanghai') AS currentDate,
localdatetime.statement('Asia/Shanghai') AS statementDate,
localdatetime.transaction('Asia/Shanghai') AS transactionDate,
localdatetime.truncate('day', localdatetime()) AS truncatedDate
7.时间间隔计算
/****
duration(map):创建一个时间间隔对象,参数是一个包含时间单位的map(如分钟、秒、毫秒等)
duration.between(from, to):计算两个时间点之间的时间间隔
duration.inDays(from, to):计算两个时间点之间的天数差
duration.inMonths(from, to):计算两个时间点之间的月数差
duration.inSeconds(from, to):计算两个时间点之间的秒数差
***/
UNWIND [
duration({minutes: 1.5, seconds: 1, milliseconds: 123, microseconds: 456, nanoseconds: 789}),
duration.between(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'})),
duration.inDays(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'})),
duration.inMonths(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'})),
duration.inSeconds(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'}))
] AS aDuration
RETURN aDuration
九、点函数
1.point(input):返回一个二维或三维点对象,给定笛卡尔坐标系或 WGS 84 地理坐标系中的两个或三个坐标值。
2.point.distance(from, to):返回表示同一 CRS 中任意两点之间距离的 FLOAT 。如果点位于 WGS 84 CRS 中,则函数返回大地距离(即沿地球曲面的最短路径)。如果点位于笛卡尔 CRS 中,则函数返回欧几里得距离(即在平坦平面空间中的最短直线距离)。
3.point.withinBBox(point, lowerLeft, upperRight):如果提供的点位于由两个提供的点定义的边界框内,返回 true。
十、其他函数
1.db数据库操作命令
// 等待指定索引创建完成
CALL db.awaitIndex('index-name')
// 等待所有索引创建完成
CALL db.awaitIndexes()
// 清除查询缓存
CALL db.clearQueryCaches()
// 获取数据库信息
CALL db.info()
// 列出所有标签
CALL db.labels()
// 检查数据库是否在线
CALL db.ping()
// 准备重新规划查询
CALL db.prepareForReplanning()
// 列出所有属性键
CALL db.propertyKeys()
// 列出所有关系类型
CALL db.relationshipTypes()
// 重新采样指定索引
CALL db.resampleIndex('index-name')
// 重新采样所有过时的索引
CALL db.resampleOutdatedIndexes()
// 获取数据库模式信息
CALL db.schema()
// 获取数据库统计信息
CALL db.stats()
//解析给定元素 ID 的数据库名称
WITH "2:efc7577d-022a-107c-a736-dbcdfc189c03:0" AS eid
RETURN db.nameFromElementId(eid) AS name
2.dbms相关函数,用于获取系统信息、管理连接和配置等
// 获取数据库基本信息
CALL dbms.info()
// 获取集群信息(仅适用于集群环境)
CALL dbms.cluster()
// 获取数据库组件信息
CALL dbms.components()
// 终止指定连接(需要连接ID)
CALL dbms.killConnection('connection-id')
// 终止所有连接
CALL dbms.killConnections()
// 列出数据库支持的功能
CALL dbms.listCapabilities()
// 列出所有配置参数
CALL dbms.listConfig()
// 列出当前所有连接
CALL dbms.listConnections()
// 查询JMX信息
CALL dbms.queryJmx('java.lang:type=Memory')
// 获取路由信息(仅适用于集群环境)
CALL dbms.routing()
// 显示当前用户信息
CALL dbms.showCurrentUser()
3.graph相关函数
//返回给定元素 ID 的图引用
USE graph.byElementId("4:c0a65d96-4993-4b0c-b036-e7ebd9174905:0")
MATCH (n) RETURN n
//返回给定名称的图引用
UNWIND graph.names() AS graphName
CALL () {
USE graph.byName(graphName)
MATCH (n)
RETURN n
}
RETURN n
687

被折叠的 条评论
为什么被折叠?



