neo4j desktop2 安装与使用

1. Neo4j Desktop 2 简介

1.1 Neo4j Desktop 2 的核心功能与优势

Neo4j Desktop 2 是 Neo4j 官方推出的图形化数据库管理工具,专为开发者和数据科学家设计。

其主要优势包括:

一体化开发环境:集成了数据库实例管理、查询编辑、数据可视化和扩展管理

本地开发友好:支持在本地机器上快速创建和测试图数据库实例

多版本管理:可同时管理多个 Neo4j 数据库版本

插件生态系统:内置插件市场,轻松安装常用扩展 

项目管理:以项目为单位组织数据库、查询和配置  

1.2 适用场景

图数据库开发:为应用程序开发提供本地图数据库环境

本地测试:在部署到生产环境前进行数据模型测试和查询验证

项目管理:管理多个图数据库项目,保持环境隔离

教育与学习:学习 Cypher 查询语言和图数据库概念

2.安装neo4j desktop2

需要装JAVA (注意桌面版和社区版对Java都有要求)

桌面版版本不能过低,建议SE14以上,不需要配置环境和路径;社区版版本不能太高,SE15

下,需要自己手动配置环境和路径。可以去java官网下载历史版本

历史版本下载需要官网注册,注册成功后,可以免费下载。

方法一与方法二下载的结果安装包一样,但是方法一只能下载最新版2.0.5

方法一、通过https://neo4j.com/download下载或者使用网页版

点击桌面版下载

跳转到以下页面

填写信息就会自动下载安装包

方法二、通过https://neo4j.com/下载

点击后跳转到以下页面

往下划找到以下页面即可,可以按自己的需求安装在相应的操作系统。可以下载最新版本2.0.5,也可以下载旧版本1.6,网络上1.6版本教程较多,使用方法也比较简单,本人下载的是2.0.5,网络上教程有点少,所以在使用时也有踩一些坑,比例说不知道怎么创建项目,不知道如何运行项目创建知识图谱,不知道用户名是Instance name还是database user。

3.创建并管理本地图数据库

3.1新建数据库实例:

点击创建一个项目

填写项目名称与密码后点击创建,这里可以看到dstabase user默认为neo4j。

3.2启动与停止数据库:

这里可以看到项目默认为关闭的(STOPPED),点击①标注的即可运行。

此时会弹出一个弹窗,关闭弹窗项目就会结束运行,需要启动时可以先隐藏。

此时可以点开database中查看数据库,默认只有neo4j一个,可以点击create database创建多个知识图谱。然后点击connect可以查看query和explore。

4.构造知识图谱的方法

4.1在查询编辑器中输入代码

4.1.1基础操作

(1)创建节点
// 创建人物节点
CREATE (p:Person {name: 'Alice', age: 30, occupation: 'Engineer'})

// 创建多个节点
CREATE 
  (p1:Person {name: 'Bob', age: 25}),
  (p2:Person {name: 'Charlie', age: 35}),
  (c:Company {name: 'Tech Corp', industry: 'Technology'})
(2)创建关系
// 先匹配节点,然后创建关系
MATCH 
  (a:Person {name: 'Alice'}),
  (b:Person {name: 'Bob'})
CREATE (a)-[:FRIENDS_WITH {since: '2023-01-01'}]->(b)

// 创建节点和关系同时进行
CREATE 
  (alice:Person {name: 'Alice'})-[:WORKS_AT {position: 'Developer'}]->(company:Company {name: 'Neo4j Inc'})
(3)添加/更新属性
// 添加属性
MATCH (p:Person {name: 'Alice'})
SET p.email = '[email protected]'

// 更新多个属性
MATCH (p:Person {name: 'Bob'})
SET p.age = 26, p.department = 'Engineering'

// 添加标签
MATCH (p:Person {name: 'Charlie'})
SET p:Employee:Manager

4.1.2查询操作

(1)MATCH 基础查询
// 查询所有人物
MATCH (p:Person) 
RETURN p

// 查询特定属性
MATCH (p:Person) 
WHERE p.age > 25 
RETURN p.name, p.age

// 查询关系和路径
MATCH (p1:Person)-[r:FRIENDS_WITH]->(p2:Person)
RETURN p1.name, p2.name, r.since
(2)复杂查询示例
// 查找朋友的朋友
MATCH (p:Person {name: 'Alice'})-[:FRIENDS_WITH*2]->(friendOfFriend)
RETURN friendOfFriend.name

// 聚合查询
MATCH (p:Person)
RETURN p.occupation, COUNT(*) as count, AVG(p.age) as avgAge

// 路径查询
MATCH path = (start:Person)-[:FRIENDS_WITH|WORKS_AT*1..3]->(end)
WHERE start.name = 'Alice'
RETURN path

4.2通过import导入csv等文件导入节点

4.3使用python代码

使用代码连接neo4j

踩坑点:

“neo4j://127.0.0.1:7687”是项目上的url,auth=("neo4j","密码")这是用户名database user与创建项目时设置的密码。

4.4在网站上输入http://localhost:7474,可以连接neo4j网页版,输入密码即可。

如果习惯使用旧版本,点击红色即可使用旧版本的neo4j。

以下为旧版本页面

然后通过右键可以使用expand查看相关节点。

Read more

前端实战:手把手教你实现浏览器通知功能

前端实战:手把手教你实现浏览器通知功能

前端入门:浏览器通知功能从0到1实现指南 作为前端学习者,你可能见过这样的场景:打开网页版聊天工具,就算把浏览器最小化,桌面也会弹出“新消息”提醒;或者某些网站的活动通知,会直接显示在电脑/手机桌面上。这种功能就是「浏览器桌面通知」,今天我们就从零开始,搞懂它、学会用它。 一、先搞懂3个基础问题 1. 什么是浏览器桌面通知? 简单说,就是网页能在浏览器窗口外面(比如电脑桌面、手机屏幕)给你发提醒。哪怕浏览器最小化、甚至页面切到后台,只要权限允许,都能收到通知,不用一直盯着网页。 2. 什么时候会用到它? 常见场景很贴近日常: * 网页版微信/QQ的新消息提醒; * 工作系统的审批提醒、任务到期通知; * 电商网站的订单状态更新(比如“你的快递已发货”); * 新闻/小说网站的订阅内容更新提醒。 3. 用起来难吗?有什么限制? 不难!核心就2步:先让用户同意开启通知(申请权限)

Qwen3-TTS多语种语音合成实战:Python API调用+WebUI双模式使用指南

Qwen3-TTS多语种语音合成实战:Python API调用+WebUI双模式使用指南 1. 为什么你需要关注Qwen3-TTS 你有没有遇到过这些场景? * 做海外短视频,需要为不同国家观众配上地道口音的配音,但找配音员成本高、周期长; * 开发多语言智能客服,想让系统用西班牙语自然地读出订单状态,而不是机械念字; * 给孩子做双语启蒙App,希望中文讲解后立刻接上温柔的日语复述,语调和停顿都像真人。 传统TTS工具要么只支持一两种语言,要么切换语种要重装模型,更别说控制情绪、语速、方言风格了。而Qwen3-TTS-12Hz-1.7B-CustomVoice,就是为解决这些问题而生的——它不是“能说多种语言”,而是“真正理解多种语言该怎么说”。 这不是一个堆参数的模型,而是一个在真实使用中经得起推敲的语音生成工具。它覆盖中文、英文、日文、韩文、德文、法文、俄文、葡萄牙文、西班牙文和意大利文共10种主流语言,还支持粤语、关西腔、柏林口音等方言风格。更重要的是,它不靠后期拼接或规则调整,而是从文本理解开始,就自动决定哪里该轻快、哪里该停顿、哪句该带点笑意——就像一位熟

前端 SSR:别让你的网站变成 SEO 黑洞

前端 SSR:别让你的网站变成 SEO 黑洞 毒舌时刻 这网站做得跟黑洞似的,搜索引擎根本爬不进去。 各位前端同行,咱们今天聊聊前端 SSR(服务端渲染)。别告诉我你还在使用纯客户端渲染,那感觉就像在没有窗户的房间里生活——能住,但看不见外面的世界。 为什么你需要 SSR 最近看到一个项目,纯客户端渲染,SEO 排名倒数,用户体验差。我就想问:你是在做网站还是在做内部工具? 反面教材 // 反面教材:纯客户端渲染 // App.jsx import React, { useState, useEffect } from 'react'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); useEffect(

【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!

【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!

🔥 本文专栏:Linux网络Linux实践系列 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录:别害怕选错,人生最遗憾的从不是‘选错了’,而是‘我本可以’。每一次推倒重来的勇气,都是在给灵魂贴上更坚韧的勋章。 ★★★ 本文前置知识: 序列化与反序列化 引入 在之前的博客中,我详细介绍了序列化 与反序列化 的概念。对于使用 TCP 协议进行通信的双方,由于 TCP 是面向字节流的,在发送数据之前,我们通常需要定义一种结构化的数据来描述传输内容,并以此作为数据的容器。在 C++ 中,这种结构化数据通常表现为对象或结构体。然而,我们不能直接将结构体内存中对应的字节原样发送到另一端,因为直接传递内存字节会引发字节序 和结构体内存对齐 的问题。不同平台、不同编译器所遵循的内存对齐规则可能不同,这可能导致接收方在解析结构体字段时出现错误。 因此,我们需要借助序列化 。序列化 是指将结构化的数据按照预定的规则转换为连续的字节流。其主要目的是屏蔽平台差异,使得位于不同平台的进程能够以统一的方式解析该字节流。序列化通常分为两种形式:文本序列化 与二进制序列化 。 文