当前位置: 首页 > news >正文

neo4j运维管理

管理数据库

概念

Neo4j 5(从v4.0),可以同时创建和使用多个活动数据库。

DBMS

Neo4j是一个数据库管理系统(DBMS),能够管理多个数据库。DBMS可以管理一个独立的服务器,也可以管理集群中的一组服务器。

实例

Neo4j实例是运行Neo4j服务器代码的Java进程。

Transaction domain(事务域)

Transaction domain是可以在单个事务的上下文中更新的图的集合。

执行上下文

执行上下文是执行请求的运行时环境。实际上,请求可以是查询、事务或内部函数或过程。

Graph

单个数据库中的数据模型。

数据库

数据库是DBMS的一个管理分区。实际上,它是在目录或文件夹中组织的文件的物理结构,具有与数据库相同的名称。

Neo4j 5中,每个标准数据库包含一个单独的Graph。许多管理命令通过使用数据库名称来引用特定的图。

数据库定义了事务域和执行上下文。这意味着一个事务不能跨多个数据库。类似地,过程调用是在一个数据库中,尽管其逻辑可以访问存储在其他数据库中的数据。

Neo4j 5 的默认安装包括2个数据库:

  • system:系统数据库,包含DBMS上的元数据和安全配置。
  • Neo4j:默认数据库,用户数据的单一数据库。可以在第一次启动Neo4j之前配置不同的名称。

Composite database

复合数据库是包含在其他标准数据库中的多个图的逻辑分组。复合数据库定义了一个执行上下文和一个(有限的)事务域。

Neo4j的版本决定了可能的数据库数量:

  • Community Edition的安装只能有一个用户数据库。

  • 企业版的安装可以有任意数量的用户数据库。

  • 所有安装都包括系统数据库。

System数据库

所有安装都包括一个名为system的内置数据库,其中包含元数据和安全配置。

系统数据库的行为不同于所有其他数据库。特别是,当连接到该数据库时,只能执行一组特定的管理功能。大多数可用的管理命令仅限于具有特定管理权限的用户。细粒度访问控制中描述了配置安全特权的示例。

默认数据库和主数据库

如果用户连接到Neo4j时没有指定数据库,那么将连接到主数据库。在选择主数据库时,服务器将首先使用为该用户配置的主数据库。如果连接用户没有配置主数据库,服务器将使用默认数据库,每个Neo4j实例都有默认数据库。

默认数据库是可配置的。具体请参见配置参数。

每个用户的主数据库可以通过Cypher管理命令进行控制。User Management.

管理和配置

管理命令

在使用管理命令之前,了解已停止(stopped )数据库和已删除(dropped )数据库之间的区别是很重要的:

  • 使用STOP命令停止的数据库将完全关闭,并可能通过START命令再次启动。在集群中,只要数据库处于关闭状态,它就不能被认为对集群的其他成员可用。对关闭的数据库进行在线备份是不可能的,在灾难恢复期间需要特别考虑它们,因为它们在关闭时没有运行的Raft机器。

  • 被删除的数据库将被完全删除,并且根本不打算再次使用。

以下Cypher命令用于管理系统数据库上的多个数据库:

CommandDescription
CREATE DATABASE name企业版功能
DROP DATABASE name企业版功能
ALTER DATABASE name企业版功能
START DATABASE name
STOP DATABASE name
SHOW DATABASE name
SHOW DATABASES
SHOW DEFAULT DATABASE
SHOW HOME DATABASE

数据库命名规则:

  • 长度必须在3 ~ 63个字符之间。

  • 名称的第一个字符必须是ASCII字母。

  • 后续字符必须是ASCII字母或数字字符、点或破折号。[a. . z][0 . . 9] . -

  • 名称不区分大小写,并规范化为小写。

  • 以下划线(_)和前缀system开头的名称保留供内部使用。

以上所有命令都作为Cypher命令执行,数据库名称受Cypher对有效标识符的标准限制。特别是-(破折号)和.(点)字符在Cypher变量中是不合法的,因此带有破折号的名称必须用反引号括起来。例如,CREATE DATABASE main-db。数据库名称是唯一不需要转义点的标识符。例如,main.db是一个有效的数据库名称。

可以创建别名来引用现有数据库,以避免这些限制。

配置参数

配置参数在neo4j.conf文件中定义。

以下配置参数适用于管理数据库:

参数名描述
initial.dbms.default_databaseNeo4j实例的默认数据库名称。如果实例启动时数据库不存在,则创建该数据库。默认值:neo4j ’ 在集群设置中,initial.dbms.default_database 的值仅用于设置初始默认数据库。稍后可更改默认数据库。
dbms.max_databasesNeo4j单个实例或集群中可使用的最大数据库数量。包括所有在线和离线数据库。整数形式,最小取值为2。企业版默认值: 100。 一旦达到限制,就不可能再创建任何额外的数据库。类似地,如果将限制更改为低于现有数据库总数的数字,则不能创建其他数据库。
server.databases.default_to_read_only所有数据库的默认模式。如果将此设置设置为 true ,所有现有的和新的数据库将处于只读模式,因此将阻止写查询。默认值: false
server.databases.read_only防止写入查询的数据库名称列表。这个集合也可以包含尚未存在的数据库,但不包括“system”数据库。不管server.databases.default_to_read_onlyserver.databases.read_only, dbms.databases.writable如何设置,system数据库永远不会是只读的。防止写操作的另一种方法是使用ALTER DATABASE命令将数据库访问设置为只读。example :server.databases.read_only=["foo", "bar"]
dbms.databases.writable要接受写查询的数据库名称列表。此集合还可以包含尚未存在的数据库。如果server.databases.default_to_read_only设置为 false ,则忽略此设置的值。如果两个集合中都有数据库名,则数据库将是只读的,并阻止写查询。example: dbms.databases.writable=["foo", "bar"]

如果同时使用了Cypher命令和配置参数,并且它们包含冲突的信息,则将有问题的数据库设置为只读

Cypher 查询

//显示单个数据库
SHOW DATABASE neo4j;
//显示所有数据库
SHOW DATABASES;
//显示默认数据库
SHOW DEFAULT DATABASE;
//切换数据库
:use sales
//
CREATE OR REPLACE DATABASE sales;
STOP DATABASE sales;
START DATABASE sales;
DROP DATABASE sales;

数据库状态

StateDescription
online在线
offline离线
starting正在启动
stopping正在停止,离线操作(e.g. load,dump) 不能执行
store copying数据库目前正在从Neo4j的另一个实例进行更新。
initial初始化,还未创建。
dirty此状态表示发生了错误。数据库的基础存储文件可能无效。要了解更多信息,查阅 statusMessage 列或服务器的日志。
quarantined数据库将有效停止,并且在不再隔离之前,不能更改其状态。要了解更多信息,查阅 statusMessage 列或服务器的日志。
unknown
dropped已删除

连接远程数据库(企业版功能)

见:remote

组合数据库(企业版功能)

组合数据库是Neo4j 5中引入的一种特殊类型的数据库。它取代了Neo4j 4中以前的Fabric实现。

Fabric是统一系统的架构设计,它为本地或分布式图形数据提供单个访问点。它允许您有效地管理数据、计算资源、存储和网络流量。

组合数据库是使用单个Cypher查询访问这些分区数据或图的方法。

见 组合数据库

事务行为

为了维护数据完整性并确保可靠的事务行为,Neo4j DBMS支持具有完整ACID属性的事务,并且它使用预写事务日志来确保持久性。

Neo4j DBMS支持以下事务行为:

  • 所有访问Graph、索引或模式的数据库操作都必须在事务中执行。

  • 默认隔离级别为读提交隔离级别。

  • 写锁是在节点和关系级别自动获取的。但是,如果希望实现更高级别的隔离——可序列化隔离级别,也可以手动获取写锁。

  • 通过遍历获取的数据不受其他事务修改的保护。

  • 可能会发生不可重复的读操作(即,只获取写锁并保持到事务结束)。

  • 死锁检测内置于核心事务管理中。

事务管理

访问Graph、索引或模式的数据库操作在事务中执行,以确保ACID属性。事务是单线程的、受限的和独立的。多个事务可以在单个线程中启动,并且它们彼此独立。

完成每个事务是至关重要的,因为事务获得的锁或内存只有在完成时才会释放。在语句结束时,所有未提交的事务作为资源清理的一部分被回滚。对于显式提交或回滚的事务,不需要进行资源清理,事务闭包是一个空操作。

在事务中执行的所有修改都保存在内存中。这意味着必须将非常大的更新拆分为几个事务,以避免内存耗尽。

事务配置

db.transaction.concurrent.maximum:并发事务最大数量,默认1000,设置为0时,表示禁用数量限制。

db.transaction.timeout:事务超时时间,设置为0时,表示禁用此特性。

可以使用 dbms.setConfigValue('db.transaction.timeout','10s') 设置。

超时时间可以在 JAVA APIneo4j 驱动中覆盖掉,但是一定要比设置db.transaction.timeout的值小。

//事务cypher
SHOW TRANSACTIONS
TERMINATE TRANSACTIONS

锁和死锁

锁由用户运行的查询自动获取。它们确保节点/关系被锁定到一个特定的事务,直到该事务完成。换句话说,一个事务对节点或关系的锁定会暂停其他事务以并发地修改同一节点或关系。因此,锁可以防止事务间共享资源的并发修改。

Neo4j中使用锁来确保数据一致性和隔离级别。它们不仅保护逻辑实体(如节点和关系),而且保护内部数据结构的完整性。

Neo4j支持以下隔离级别:

  • 已提交读
    默认值。在第一个事务完成之前,读取节点/关系的事务不会阻止另一个事务写入该节点/关系。这种类型的隔离比可序列化隔离级别弱,但提供了显著的性能优势,同时足以满足绝大多数情况。

  • 可序列化
    节点和关系的显式锁定。使用锁可以通过显式地获取和释放锁来模拟更高级别隔离的效果。例如,如果在公共节点或关系上使用写锁,则在该锁上序列化所有事务,从而产生可序列化隔离级别的效果。

Cypher的更新丢失

Cypher中,在某些情况下可以获取写锁来模拟改进的隔离。考虑多个并发Cypher查询增加属性值的情况。由于已提交读隔离级别的限制,增量可能不会产生确定的最终值。如果存在直接依赖,Cypher在读取之前自动获取写锁。直接依赖是SET的右侧在表达式中读取依赖属性或在字面映射中读取键值对的值。 类似于 Java 中的 先get 再 +1,再set 回去。

MATCH (n:Example {id: 42})
SET n.prop = n.prop + 1                         //调用100次,值并不一定是100
MATCH (n)
SET n += {prop: n.prop + 1}
MATCH (n)WITH n.prop AS p
// ... operations depending on p, producing k
SET n.prop = k + 1
//解决方法:设置显示锁
MATCH (n:Example {id: 42})
SET n._LOCK_ = true                       
WITH n.prop AS p
// ... operations depending on p, producing k
SET n.prop = k + 1
REMOVE n._LOCK_

事务日志

Neo4j跟踪对每个数据库的所有写操作,以确保数据一致性并支持恢复。

事务日志文件

事务日志文件包含一系列记录,其中包含作为每个事务的一部分对特定数据库所做的所有更改,包括数据、索引和约束。

事务日志有多种用途,包括提供差异备份和支持集群操作。至少,对于任何给定的配置,都会保留最新的非空事务日志。需要注意的是,事务日志与日志监视无关。

事务日志配置是为每个数据库设置的,可以使用以下配置设置进行配置:

  • 事务日志位置

    默认情况下,一个数据库的日志文件位置为:/<neo4j-home>/data/transactions/<database-name>server.directories.transaction.logs.root 配置根目录,如果是个相对路径,则相对server.directories.data指定的目录。考虑性能,把日志存储在专用设备上。

  • 事务日志预分配

    您可以使用参数db.tx_log.preallocate指定Neo4j是否应该尝试提前预分配逻辑日志文件。缺省情况下,为true。日志预分配通过确保有空间容纳新生成的文件和避免文件级碎片来优化文件系统。此配置设置是动态的,可以在运行时更改。

  • 配置事务日志轮询大小

    可以使用db.tx_log.rotate.size指定单个事务日志文件大致可以占用多少空间。缺省情况下,它被设置为256 MiB,这意味着当一个事务日志文件达到这个大小时,它转换创建一个新的。最小可接受值为128K 。此配置设置是动态的,可以在运行时更改。此设置影响以下情况下所有检查点策略可以回收的空间大小。要回收给定的文件,事务日志的最新检查点必须存在于另一个文件中。因此,如果您有一个巨大的事务日志,那么很可能您的最新检查点位于同一个文件中,因此无法回收该文件。

  • 事务日志保留策略

    您可以使用参数db.tx_log. rotate .retention_policy控制Neo4j保留的事务日志的数量来备份数据库。此配置设置是动态的,可以在运行时更改。默认情况下,它被设置为2天,这意味着Neo4j保留包含2天内提交的任何事务的逻辑日志,并删除只包含超过2天的事务的日志。

不支持手动删除事务日志。

另外,如果有很大的日志,但是从某个点开始之后。在从此checkpoint到保留周期之内,没有任何数据变更。不会触发删除过期的log。可以通过其他数据变更操作,触发,就会自动删除日志文件了。

日志保留策略:

  • db.tx_log.rotation.retention_policy=true|keep_all :永久保留。不建议
  • db.tx_log.rotation.retention_policy=false|keep_none :只保留最近的非空日志。
  • 其他具体值:
TypeDescriptionExample
files日志修剪之后保存的最大文件数db.tx_log.rotation.retention_policy=10 files
size最大文件sizedb.tx_log.rotation.retention_policy=300M size
txs / entries最大事务数量。与文件大小,时间都无关db.tx_log.rotation.retention_policy=500k txs
hours最大小时数db.tx_log.rotation.retention_policy=10 hours
days最大天数db.tx_log.rotation.retention_policy=30 days

只有在检查点完成后才调用日志修剪。

检查点和日志修剪(pruning)

检查点是将所有挂起的更新从易失性内存刷新到非易失性数据存储的过程。此操作对于限制在恢复过程中需要重放的事务数量至关重要,特别是对于在数据库不当关闭或崩溃后最小化恢复所需的时间。

类似于关系型数据库的日志,检查点。

消除恢复不再需要的事务日志的过程称为修剪。修剪依赖于检查点。检查点确定哪些日志可以被修剪,并确定修剪是否发生,因为检查点的缺失意味着可用于修剪的事务日志文件集不能更改。因此,只要检查点发生,就会触发修剪。

配置检查点策略通过 db.checkpoint 设置。可选的配置包括:

  • PERIODIC:默认配置。此策略每10分钟检查一次是否有更改等待刷新,如果有,则执行检查点并随后触发日志修剪。定时策略由db.checkpoint.interval.txdb.checkpoint.interval.time设置指定,当达到其中一个时触发检查点。
  • VOLUME:当事务日志的大小达到db.checkpoint.interval.volume设置指定的值时,此策略运行检查点。缺省值为250.00MiB
  • CONTINUOUS:企业版配置。该策略忽略db.checkpoint.interval.txdb.checkpoint.interval.time设置,并始终运行检查点进程。在检查点完成后立即触发日志修剪,就像在周期性策略中一样。
  • VOLUMETRIC:企业版配置。此策略每10秒检查一次是否有足够的日志量可供修剪,如果有,则触发一个检查点,然后修剪日志。默认情况下,卷被设置为256MiB,但它可以通过设置db.tx_log.rotation.retention_policydb.tx_log.rotate.size

配置检查点

观察到事务日志文件比预期的要多,可能是由于检查点发生的频率不够高,或者花费的时间太长。这是一个临时情况,预期和观察到的日志文件数量之间的差距将在下一个成功的检查点上关闭。检查点之间的间隔可以使用以下命令配置:

  • db.checkpoint.interval.time:默认值 15m。检查点间隔时间。
  • db.checkpoint.interval.tx:默认值 100000。检查点之间的事务数量。

控制日志修剪

事务日志修剪是指安全、自动地删除旧的、不必要的事务日志文件。要删除一个文件,需要做两件事:

  • 文件一定被切换过。

  • 最近的日志文件中必须至少发生过一个检查点。

事务日志修剪配置主要处理指定应该保持可用的事务日志的数量。保留超过恢复所需的绝对最小数量的主要原因来自于集群部署和在线备份的需求。由于数据库更新是通过事务日志在集群成员和备份客户端之间进行通信的,因此保留超过最小数量的数据库更新可以只传输增量更改(以事务的形式),而不是传输整个存储文件,这可以节省大量的时间和网络带宽。

修剪操作后剩余的事务日志数量由设置dbms.tx_log.rotate.retention_policy控制。默认值是2天,这意味着Neo4j保留包含2天内提交的任何事务的逻辑日志,并删除只包含超过2天的事务的日志。

拥有最少量的事务日志数据可以加快检查点处理的速度。要配置检查点进程每秒允许使用的IOs数,使用配置参数db.checkpoint.iops.limit

检查点记录和度量

可以使用 CALL db.checkpoint() 产生检查点。

可以在metrics/目录下看到检查点度量:

neo4j.check_point.duration.csv
neo4j.check_point.total_time.csv
neo4j.check_point.events.csv

附录

参考

管理数据库

docker 设置 :https://neo4j.com/docs/operations-manual/current/docker/ref-settings/

相关文章:

neo4j运维管理

管理数据库 概念 Neo4j 5(从v4.0)&#xff0c;可以同时创建和使用多个活动数据库。 DBMS Neo4j是一个数据库管理系统(DBMS)&#xff0c;能够管理多个数据库。DBMS可以管理一个独立的服务器&#xff0c;也可以管理集群中的一组服务器。 实例 Neo4j实例是运行Neo4j服务器代…...

【MYSQL】-函数

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …...

传统船检已经过时?AR智慧船检来助力!!

想象一下&#xff0c;在茫茫大海中&#xff0c;一艘巨型货轮正缓缓驶过。船上的工程师戴着一副先进的AR眼镜&#xff0c;他们不再需要反复翻阅厚重的手册&#xff0c;一切所需信息都实时显示在眼前。这不是科幻电影的场景&#xff0c;而是智慧船检技术带来的现实变革。那么问题…...

JAVA进化史: JDK11特性及说明

JDK 11&#xff08;Java Development Kit 11&#xff09;是Java平台的一个版本&#xff0c;于2018年9月发布。这个版本引入了一些新特性和改进&#xff0c;以下是其中一些主要特性。 HTTP Client&#xff08;标准化&#xff09; JDK 11引入了一个新的HTTP客户端&#xff0c;用…...

模型 安索夫矩阵

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下&#xff1a; 根据安索夫矩阵&#xff0c;江小白的现有产品是其白酒产品&…...

性能手机新标杆,一加 Ace 3 发布会定档 1 月 4 日

12 月 27 日&#xff0c;一加宣布将于 1 月 4 日发布新品一加 Ace 3。一加 Ace 系列秉持「产品力优先」理念&#xff0c;从一加 Ace 2、一加 Ace 2V 到一加 Ace 2 Pro&#xff0c;款款都是现象级爆品&#xff0c;得到了广大用户的认可与支持。作为一加 2024 开年之作&#xff0…...

Vue 框架前导:详解 Ajax

Ajax Ajax 是异步的 JavaScript 和 XML。简单来说就是使用 XMLHttpRequest 对象和服务器通信。可以使用 JSON、XML、HTML 和 text 文本格式来发送和接收数据。具有异步的特性&#xff0c;可在不刷新页面的情况下实现和服务器的通信&#xff0c;交换数据或者更新页面 01. 体验 A…...

3分钟快速安装 ClickHouse、配置服务、设置密码和远程登录以及修改数据目录

下面是一个完整的 ClickHouse 安装和配置流程&#xff0c;包括安装 ClickHouse、配置服务、设置密码和远程登录以及修改数据目录。 安装 ClickHouse 安装 YUM 工具包&#xff1a; sudo yum install -y yum-utils添加 ClickHouse YUM 仓库&#xff1a; sudo yum-config-manager…...

PHP8使用PDO对象增删改查MySql数据库

PDO简介 PDO&#xff08;PHP Data Objects&#xff09;是一个PHP扩展&#xff0c;它提供了一个数据库访问层&#xff0c;允许开发人员使用统一的接口访问各种数据库。PDO 提供了一种用于执行查询和获取结果的简单而一致的API。 以下是PDO的一些主要特点&#xff1a; 统一接口…...

证明:切线垂直于半径

证明&#xff1a; 切线垂直于过切点的半径。 下面是网上最简单的证明方法。 证明&#xff1a; 利用反证法。 如下图所示&#xff0c;直线AB和圆O切于点A&#xff0c;假设OA 不垂直于 AB&#xff0c;而 O B ⊥ A B OB \perp AB OB⊥AB&#xff0c;则 ∠ O B A 90 \angle OB…...

普中STM32-PZ6806L开发板(STM32CubeMX创建项目并点亮LED灯)

简介 搭建一个用于驱动 STM32F103ZET6 GPIO点亮LED灯的任务;电路原理图 LED电路原理图 芯片引脚连接LED驱动引脚原理图 创建一个点亮LED灯的Keil 5项目 创建STM32CubeMX项目 New Project -> 单击 -> 芯片搜索STM32F103ZET6->双击创建 初始化时钟 调试设置 一…...

【Windows】共享文件夹拍照还原防火墙设置(入站,出站设置)---图文并茂详细讲解

目录 一 共享文件夹(两种形式) 1.1 普通共享与高级共享区别 1.2 使用 二 拍照还原 2.1 是什么 2.2 使用 三 防火墙设置&#xff08;入栈&#xff0c;出站设置&#xff09; 3.1 引入 3.2 入站出站设置 3.2.1入站出站含义 3.3入站设置 3.4安装jdk 3.5使用tomcat进行访…...

1.决策树

目录 1. 什么是决策树? 2. 决策树的原理 2.1 如何构建决策树&#xff1f; 2.2 构建决策树的数据算法 2.2.1 信息熵 2.2.2 ID3算法 2.2.2.1 信息的定义 2.2.2.2 信息增益 2.2.2.3 ID3算法举例 2.2.2.4 ID3算法优缺点 2.2.3 C4.5算法 2.2.3.1 C4.5算法举例 2.2.4 CART算法 2.2.4…...

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库&#xff0c;打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作&#xff0c;而管理员和超级管理员则可通过后台管理系统对停车…...

再见2023,你好2024

再见2023&#xff0c;你好2024 生活1月 悲伤与治愈2~4月 运动与偏爱5月 体验与美食6月 婚礼与热爱7~8月 就医与别离9~11月 陪伴与暖房12月 体验&新生 运动追剧读书总结 生活 生活是一个修罗场&#xff0c;来世间一场&#xff0c;要经历丰腴有趣的人生。去体验各种滋味&…...

年度总结|存储随笔2023年度最受欢迎文章榜单TOP15-part1

原创 古猫先生 存储随笔 2023-12-31 08:31 发表于上海 回首2023 2-8月份有近半年时间基本处于断更状态 好在8月份后小编没有松懈 &#xff08;虽然2023年度总结&#xff0c;更像是近4个月总结&#xff09; 本年度顺利加V啦&#xff01; 感谢各位粉丝朋友的一路支持与陪伴 …...

微信小程序 手机号授权登录 偶尔后端解密失败

微信小程序wx.login获取code要在手机号授权前触发 <button:id"code":open-type"hasGetPrivacySetting ? getPhoneNumber|agreePrivacyAuthorization : getPhoneNumber"getphonenumber"onGetPhoneNumber"class"btn"click"cli…...

Mysql 容易忘的 sql 指令总结

目录 一、操作数据库的基本指令 二、查询语句的指令 1、基本查询语句 2、模糊查询 3、分支查询 4、 分组查询 5、分组查询 6、基本查询总结&#xff1a; 7、子查询 8、连接查询 三、MySQL中的常用函数 1、时间函数 2、字符串函数 3、聚合函数 4、运算函数 四、表…...

【SD】tile 模型 - 固定衣服 生成人物 ☑

原理1&#xff1a;tile re 生成固定衣服的人物 tile1-1 re1-1 原理2&#xff1a;tile re 生成随机衣服的人物 tile0.5-1 re0.5-1 原理3&#xff1a;更改动作 必须使用衣服LORA 才可以进行穿衣服 测试大模型&#xff1a;###最爱的模型\meinamix_meinaV11.safe…...

StackOverflowError的JVM处理方式

背景&#xff1a; 事情来源于生产的一个异常日志 Caused by: java.lang.StackOverflowError: null at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:908) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.ArrayL…...

基于DFA算法实现敏感词过滤

何为DFA DFA&#xff0c;全称为Deterministic Finite Automaton&#xff0c;即确定有穷自动机、确定有限状态自动机或确定有限自动机 对于一个给定的属于该自动机的状态和一个属于该自动机字母表Σ的字符&#xff0c;它都能根据事先给定的转移函数转移到下一个状态&#xff0…...

模式识别与机器学习-无监督学习-聚类

无监督学习-聚类 监督学习&无监督学习K-meansK-means聚类的优点&#xff1a;K-means的局限性&#xff1a;解决方案&#xff1a; 高斯混合模型&#xff08;Gaussian Mixture Models&#xff0c;GMM&#xff09;多维高斯分布的概率密度函数&#xff1a;高斯混合模型&#xff…...

Python中property特性属性是什么

在Java中&#xff0c;通常在类中定义的成员变量为私有变量&#xff0c;在类的实例中不能直接通过对象.属性直接操作&#xff0c;而是要通过getter和setter来操作私有变量。 而在Python中&#xff0c;因为有property这个概念&#xff0c;所以不需要写getter和setter一堆重复的代…...

vue3 全局配置Axios实例

目录 前言 配置Axios实例 页面使用 总结 前言 Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境。它提供了一种简单、一致的 API 来处理HTTP请求&#xff0c;支持请求和响应的拦截、转换、取消请求等功能。关于它的作用&#xff1a; 发起 HTTP …...

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.【EI级】 Matlab实现TCN-BiGRU-Mult…...

WeNet语音识别分词制作词云图

在线体验 ,点击识别语音需要等待一会&#xff0c;文件太大缓存会报错 介绍 本篇博客将介绍如何使用 Streamlit、jieba、wenet 和其他 Python 库&#xff0c;结合语音识别&#xff08;WeNet&#xff09;和词云生成&#xff0c;构建一个功能丰富的应用程序。我们将深入了解代码…...

Proxyman:现代本地Web调试代理工具

1. 简介 1.1 什么是Proxyman&#xff1f; Proxyman是一款专为macOS设计的现代本地Web调试代理工具&#xff0c;它不仅支持macOS平台&#xff0c;还能无缝地与iOS和Android设备进行集成。作为一个网络调试工具&#xff0c;Proxyman的设计旨在提供高性能、直观且功能丰富的解决…...

k8s中DaemonSet实战详解

一、DaemonSet介绍 DaemonSet 的主要作用&#xff0c;是在 Kubernetes 集群里&#xff0c;运行一个 Daemon Pod。DaemonSet 只管理 Pod 对象&#xff0c;然后通过 nodeAffinity 和 Toleration 这两个调度器参数的功能&#xff0c;保证了每个节点上有且只有一个 Pod。 二、Daem…...

信号处理设计模式

问题 如何编写信号安全的应用程序&#xff1f; Linux 应用程序安全性讨论 场景一&#xff1a;不需要处理信号 应用程序实现单一功能&#xff0c;不需要关注信号 如&#xff1a;数据处理程序&#xff0c;文件加密程序&#xff0c;科学计算程序 场景二&#xff1a;需要处理信…...

Linux权限的基本理解

一:&#x1f6a9;Linux中的用户 1.1&#x1f966;用户的分类 &#x1f31f;在Linux中用户可以被分为两种用户: 超级用户(root):可以在Linux系统中做各种事情而不被约束普通用户:只能做有限的事情被权限约束 在实际操作时超级用户的命令提示符为#,普通用户的命令提示符为$,可…...

AI人工智能大模型讲师叶梓《基于人工智能的内容生成(AIGC)理论与实践》培训提纲

【课程简介】 本课程介绍了chatGPT相关模型的具体案例实践&#xff0c;通过实操更好的掌握chatGPT的概念与应用场景&#xff0c;可以作为chatGPT领域学习者的入门到进阶级课程。 【课程时长】 1天&#xff08;6小时/天&#xff09; 【课程对象】 理工科本科及以上&#xff0…...

nat地址转换

原理 将内网地址转换成外网地址 方式 掌握动态NAT的配置方法 掌握Easy IP的配置方法 掌握NAT Server的配置方法 实验 r1 r2 是内网 ar1 ip地址 ip add ip地址 掩码 ip route-static 0.0.0.0 0 192.168.1.254 默认网关 吓一跳网关 相等于设置了网关 ar2 …...

第12课 循环综合举例

文章目录 前言一、循环综合举例1. 质数判断问题2. 百人百砖问题3. 猴子吃桃问题4. 质因数分解问题5. 数字统计问题。 二、课后练习2. 末尾3位数问题3. 求自然常数e4. 数据统计问题5. 买苹果问题。6. 找5的倍数问题。 总结 前言 本课使用循环结构&#xff0c;介绍了以下问题的解…...

Tuxera NTFS for Mac2024免费Mac读写软件下载教程

在日常生活中&#xff0c;我们使用Mac时经常会遇到外部设备不能正常使用的情况&#xff0c;如&#xff1a;U盘、硬盘、软盘等等一系列存储设备&#xff0c;而这些设备的格式大多为NTFS&#xff0c;Mac系统对NTFS格式分区存在一定的兼容性问题&#xff0c;不能正常读写。 那么什…...

C++ 具名要求

此页面中列出的具名要求&#xff0c;是 C 标准的规范性文本中使用的具名要求&#xff0c;用于定义标准库的期待。 某些具名要求在 C20 中正在以概念语言特性进行形式化。在那之前&#xff0c;确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做&#xf…...

大创项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…...

C++初阶——基础知识(函数重载与引用)

目录 1.命名冲突 2.命名空间 3.缺省参数 4.函数重载 1.函数重载的特点包括&#xff1a; 2.函数重载的好处包括&#xff1a; 3.引用 引用的特点包括 引用的主要用途包括 引用和指针 引用 指针 类域 命名空间域 局部域 全局域 第一个关键字 命名冲突 同一个项目之间冲…...

车载电子电器架构 —— 电子电气系统开发角色定义

车载电子电器架构 —— 电子电气系统开发角色定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文12000字,深度思考者进!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的…...

最新Redis7哨兵模式(保姆级教学)

一定一定要把云服务器的防火墙打开一定要&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;否则不成功&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…...

Redis原理及常见问题

高性能之道 单线程模型基于内存操作epoll多路复用模型高效的数据存储结构redis的单线程指的是数据处理使用的单线程,实际上它主要包含 IO线程:处理网络消息收发主线程:处理数据读写操作,包括事务、Lua脚本等持久化线程:执行RDB或AOF时,使用持久化线程处理,避免主线程的阻…...

nvm 的安装及使用 (Node版本管理器)

目录 1、nvm 介绍 2、nvm安装 3、nvm 使用 4、node官网可以查看node和npm对应版本 5、nvm安装指定版本node 6、安装cli脚手架 1、nvm 介绍 NVM 全称 node.js version management &#xff0c;专门针对 node 版本进行管理的工具&#xff0c;通过它可以安装和切换不同版本的…...

【Yii2】数据库查询方法总结

目录 1.查找单个记录&#xff1a; 2.查找多个记录&#xff1a; 3.条件查询&#xff1a; 4.关联查询&#xff1a; 假设User模型有一个名为orders的多对一关联关系。 5.排序和分组&#xff1a; 6.数据操作&#xff1a; 7.事务处理&#xff1a; 8.命令查询&#xff1a; 9…...

区块链的三难困境是什么,如何解决?

人们需要保持社交、工作和睡眠之间的平衡&#xff0c;并且努力和谐相处。同样的概念也反映在区块链的三难困境中。 区块链三难困境是一个术语&#xff0c;指的是现有区块链的局限性&#xff1a;可扩展性、安全性和去中心化。这是一个存在了几十年的设计问题&#xff0c;其问题的…...

oCPC实践录 | oCPM的秘密

前言 笔者从这几方面介绍oCPM&#xff0c;并一一分析平台侧宣称的oCPM相比oCPC的优势&#xff0c;并解开其中的秘密。 1&#xff09;什么是oCPM? 2&#xff09;oCPC与oCPM的异同 3&#xff09;平台宣称oCPM的优势 4&#xff09;oCPM真正的秘密 5&#xff09;oCPM下的点击率与…...

【Linux Shell学习笔记】Linux Shell的位置参数与函数

一、位置参数 位置参数&#xff0c;也被称之为位置变量&#xff0c;通过位置参数&#xff0c;可以在执行程序的时候&#xff0c;向程序传递数据 1.1 shell接收参数的方法 1.2 向shell传递参数的方法 二、函数 2.1 函数基础 2.1.1 函数简介 函数本质上就是一个代码块&#xf…...

缓存cache和缓冲buffer的区别

近期被这两个词汇困扰了&#xff0c;感觉有本质的区别&#xff0c;搜了一些资料&#xff0c;整理如下 计算机内部的几个部分图如下 缓存&#xff08;cache&#xff09; https://baike.baidu.com/item/%E7%BC%93%E5%AD%98 提到缓存&#xff08;cache&#xff09;&#xff0c;就…...

Vue常见面试问答

vue响应式数据 vue2 Vue2 的对象数据是通过 Object.defineProperty 对每个属性进行监听&#xff0c;当对属性进行读取的时候&#xff0c;就会触发 getter&#xff0c;对属性进行设置的时候&#xff0c;就会触发 setter。 /** * 这里的函数 defineReactive 用来对 Object.def…...

Eureka相关面试题及答案

1、什么是Eureka&#xff1f; Eureka是一个由Netflix开发的服务发现&#xff08;Service Discovery&#xff09;工具&#xff0c;它是Spring Cloud生态系统中的一个关键组件。服务发现是微服务架构中的一个重要概念&#xff0c;它允许服务实例在启动时注册自己&#xff0c;以便…...

想要学会JVM调优,先掌握JVM内存模型和JVM运行原理

1、前言 今天将和你一起探讨Java虚拟机&#xff08;JVM&#xff09;的性能调优。 JVM算是面试中的高频问题了&#xff0c;通常情况下总会有人问到&#xff1a;请你讲解下 JVM 的内存模型&#xff0c;JVM 的 性能调优做过&#xff1f; 2、为什么 JVM 在 Java 中如此重要 首…...

详解C语言入门程序:HelloWorld.c

#include <stdio.h> // 头文件&#xff0c;使用<>编译系统会在系统头文件目录搜索在C语言中&#xff0c;#include 是预处理指令&#xff0c;用于将指定的头文件内容插入到当前源文件中。这里的 <stdio.h> 是一个标准库头文件&#xff0c;其中包含了与输入输出…...