图还能有数据库?一文带你了解图数据库是个什么东西!
图数据库
基础
简介
%% 图数据库是图数据库管理系统的简称,是近年来新兴的一种NoSQL数据库使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查::CRUD::等操作。图数据库一般用于OLTP系统中,提供在线事务处理能力。与图数据库对应的是图计算引擎,一般用于OLAP系统中,提供基于图的大数据分析能力
CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层(https://so.csdn.net/so/search?q=%E6%8C%81%E4%B9%85%E5%B1%82&spm=1001.2101.3001.7020)的基本操作功能
数据对象/建模方式
- 图数据库使用图模型来操作数据。目前使用的图模型有3种,分别是属性图
Property Graph
、资源描述框架RDF
三元组和超图HyperGraph
- 现在较为知名的图数据库主要是基于属性图,更确切得说是带标签的属性图(Labeled-Property Graph)::当然标签不是必须的::
- 属性图是图数据库和网状数据库的重要区别之一
- 想像不出就看知乎的图
- 属性图由顶点(圆圈)、边(箭头)、属性(key:value)和标签组成
与其他数据库的比较
- 从时间来看,我们先与网状数据库比较
- 网状数据库network database属于结构化模型,本身是有一定的层次这种层次主要是父子关系和主从关系,它可以表示数据之间的关系
- 但是如果需要CRUD,就会像书上写的一样:每个子女节点的操作都要经过双亲节点的路径,仅仅是改变节点就要有很大的消耗,更不要说改变节点之间的关系了++网状模型中的子女结点是一个有序集合(和存储结构有关),所以为了维护这种关系,需要考虑结点在该有序集的位置。而图数据库结点和边都是无序的++
- network database不能武断地改变结点之间的记录、关系,关系型数据库或多或少还是有网状模型的影子,所以很难适用于现在图数据的大规模处理
- 而且网状数据库的模式会事先指定哪种记录类型可以嵌套在哪种其他记录类型中
- 而图数据库应用到了属性图模型,它更灵活,不需要具体的结构层次::NoSQL的一大好处::可以随意建立结点之间的联系和创建新的关系,对于面向图数据的数据集有很好的工作性能
- 与其叫图,不如称之为
知识图谱
,既有图的特点,又能够很好地表示和修改图数据。我觉得网状更像图一点,比较死板:- 在网状模型中,想要获得某结点的值,就必须选择一条合适的可达路通过遍历找到该结点,别无他法
- 但是图数据库中,我们可以通过给结点设置ID、设置索引来快速找到目标节点的值
- 可变性、灵活性大大提高
- 与其叫图,不如称之为
- 在网络模型中,所有的查询都是命令式的,很难编写,而且很容易被模式的更改破坏。在图数据库中,如果愿意,可以用命令式代码编写遍历,但大多数图数据库还支持高级声明性查询语言,如Cypher或SPARQL
- 网状数据库network database属于结构化模型,本身是有一定的层次这种层次主要是父子关系和主从关系,它可以表示数据之间的关系
- 再比较一下关系型数据库:
- 其他老生常谈了,图数据库一大特点就是能够很好地处理数据之间的关系,关系型能够很好的表示,但是处理改变真的不如图灵活
- 如果在RDBMS中关系蕴含了很多表,那么查找起来将是依托答辩。但是图数据库中一张图可以有很多关系,不同的结点通过边建立联系就会方便很多
- 看知乎上的图:图数据库真的是一种知识图谱,你是我的朋友,它是它的谁,都通过边来表示
- 对于图数据库来说,数据量越大,越复杂的关联查询,越有利于体现其优势
- 有些业务本身就是灵活多变的,或者说敏捷的。作为非关系性数据库,图数据库::或其他NoSQL数据库,比如MongoDB::可以快速跟上业务的变化而不需要进行Schema变更等代价不菲的管理操作++RDBMS的模式变更很™费事++
现状
- 在图数据库中使用专门的图查询语言比使用SQL更加高效。目前主流的图查询语言是Cypher和Gremlin
Neo4J:稳定、性优
%% Neo4j是一个高性能的、NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎
- 最主流的图数据库,Neo4J不是分布式数据库,扩展性不是其优势。但是它自身就是一个集群,是一种原生的图数据库
- 原生图存储:Neo4J所使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能
- 原生图处理:利用免索引邻接
- 数据对象/实体被保存为节点,它们之间的关系以链接地址的形式保存在物理存储中因此,在遍历关系时,原生的Neo4j图数据库中只要找到起始节点、读取节点的邻接边就可以访问该节点的邻居;而无需像关系数据库那样需要执行昂贵的连接JOIN操作,系统开销大大减少、执行效率极大提升。这一实现技术被称作无需索引的邻接关系遍历
Index Free Adjacency
::与其他任何数据库所不同之处:: - 因此,我们常说在关系型数据库中,关系是“计算”出来的;而在Neo4j图数据库中,关系是“读”出来的
- 数据对象/实体被保存为节点,它们之间的关系以链接地址的形式保存在物理存储中因此,在遍历关系时,原生的Neo4j图数据库中只要找到起始节点、读取节点的邻接边就可以访问该节点的邻居;而无需像关系数据库那样需要执行昂贵的连接JOIN操作,系统开销大大减少、执行效率极大提升。这一实现技术被称作无需索引的邻接关系遍历
- 同时也具备了图分析引擎的能力。应该说Neo4J是目前使用最为广泛的图数据库,大量介绍图数据库的书籍都是以Neo4J为基础来介绍的
- Neo4J使用Cypher作为图数据库查询语言
JanusGraph:潜力、灵活
- 最有前景的开源图数据库,可支持数十亿级别的顶点和边规模。JanusGraph可以为不断增大的数据和用户量提供了弹性和线性的扩展能力,通过数据多点分布和复制来提高性能和容错能力
- 非原生数据库:需要将数据存储到通用的存储系统上,支持的后端存储包括:Apache Cassandra、Apache HBase、Google Cloud Bigtable和Oracle BerkeleyDB
- 通过跟Apache中其他组件相配合,提供了一整套完整的图计算生态系统。其中就包括了Apache TinkerPop所提供的图查询语言Gremlin
应用场景
- 社交网络:点赞、评论、互动,社交关系网
- 实施推荐:
- 推荐引擎可以识别出某些资源会吸引特定个人或群体,或者某些个人或群体可能对特定资源感兴趣
- 一个有效的推荐依赖于对事物之间关联的理解,同时也依赖于这些关联的质量和强度,而属性图是所有这些关系密切、关联紧密的数据结构的最佳表达方式
- 用图数据库存储和查询这些数据使得应用程序可以为最终用户呈现实时结果,反映数据最新的变化,而不是返回给用户那些预计算的状态结果
- 之前的网状都可以用图数据库替代:
- 地理空间管理:包括公路网、铁路网等,天生就以图的形式呈现,尤其是层级结构,非常适合图数据库
- 高效匹配MDM的快速演变和不断变化的业务需求:
- 主数据管理
Master Data Managerment
包括的数据涉及用户、客户、产品、供应商、部门、区域、站点、成本中心和业务单元等 - 这些数据来源可能是多种多样的,MDM用来识别、清洗、存储和管理这些数据
- ++其关键问题包括谁组织结构的变化、企业合并和业务规则的变化来管理这些变化;融合新的数据源,用外部源数据补充已有的数据;解决报告需求、鉴定需求和商业智能客户的需求;当数据的值和模式变化时对数据进行版本管理++
- 主数据管理
- 电信、网络管理和分析、云平台管理、数据中心和IT资产管理以及网络影响分析等领域
OOM:Out of memory
超出内存
相关文章:
图还能有数据库?一文带你了解图数据库是个什么东西!
图数据库 基础 简介 %% 图数据库是图数据库管理系统的简称,是近年来新兴的一种NoSQL数据库使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查::CRUD::等操作。图数据库一般用于OLTP系统中…...
力扣思维题——寻找重复数
题目链接:https://leetcode.cn/problems/find-the-duplicate-number/description/?envTypestudy-plan-v2&envIdtop-100-liked 这题的思维难度较大。一种是利用双指针法进行计算环的起点,这种方法在面试里很难说清楚,也很难想到。大致做…...
基于Kubernetes的jenkins上线
1、基于helm 部署jenkins 要求:当前集群配置了storageClass,并已指定默认的storageClass,一般情况下,创建的storageClass即为默认类 指定默认storageClass的方式 # 如果是新创建默认类: apiVersion: storage.k8s.io/v1…...
每日一题——轮转数组
1. 题目描述 给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。 示例1: 输入:nums [1,2,3,4,5,6,7],k 3 输出:[5,6,7,1,2,3,4] 解释: 向右轮转 1步:[7,1,2,3,4,5,6] 向右…...
Unity手机移动设备重力感应
Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机,如下图竖屏的手机,如下图 一、引入 大家对重力感应应该都不陌生,之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念,根据手机的晃动来给实体…...
nodejs微信小程序+python+PHP基于推荐算法的电影推荐系统-计算机毕业设计推荐django
目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...
Linux 配置 swap 区
Linux 配置 swap 区 很多时候我们需要配置 swap 主要的原因是物理内存太贵了, 服务器也是一样, 当内存不够用时, 系统会卡死, 因此我们宁愿牺牲一点性能也要让系统正常运行。 当然, 在系统物理内存足够的条件下&#x…...
AG16KDDF256 User Manual
AGM AG16KDDF256 是由 AGM FPGA AG16K 与 DDR-SDRAM 叠封集成的芯片,具有 AG16K FPGA的可编程功能,提供更多可编程 IO,同时内部连接大容量 DDR-SDRAM。 FPGA 外部管脚 FBGA256 封装,管脚说明请见下表 Table-1: Tab…...
w15初识php基础
一、计算100之内的偶数之和 实现思路 所有的偶数除2都为0 代码实现 <?php # 记录100以内的偶数和 $number1; $num0; while($number<100){if($number%20){ $num$number;}$number1; } echo $num; ?>输出的结果 二、计算100之内的奇数之和 实现思路 所有的奇数除…...
powerbuilder Primary! Delete! Filter! 三个缓冲区的作用
Primary! 主缓存区,放正在使用的数据。 Delete! 删除缓存区,放将要删除但还没有提交到数据库的数据。 Filter! 筛选缓存区,放不符合筛选条件的数据。 最后在update的时候根据你的update设置生成相应的SQL语句。行的状态和所在的缓存区决定生…...
Confluent 与阿里云将携手拓展亚太市场,提供消息流平台服务
10 月 31 日,杭州云栖大会上,阿里云云原生应用平台负责人丁宇宣布,Confluent 成为阿里云技术合作伙伴,合作全新升级,一起拓展和服务亚太市场。 本次合作伙伴签约,阿里云与消息流开创领导者 Confluent 将进一…...
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建
文章目录 前言一、搭建 Tauri 2.0 开发环境二、创建 Tauri 2.0 项目1.创建项目2.安装依赖4. 编译运行 三、设置开发环境四、项目结构 前言 Tauri在Rust圈内成名已久,凭借Rust的可靠性,使用系统原生的Webview构建更小的App 以及开发人员可以灵活的使用各…...
算法基础之01背包问题
01背包问题 核心思想: 二维数组普通写法: #include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N 1010;int f[N][N]; //存 i个物品 容量不超过j 的总价值int v[N],w[N];int n,m;int main(){cin>>n>…...
Git的总体认知与具体实现
GIt概念 是一种分布式控制管理器 tips:敏捷开发 -> 先上线,后续开发再继续开发 集中式和分布式 集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅…...
Hadoop入门学习笔记——三、使用HDFS文件系统
视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 三、使用HDFS文件系统3.1. 使用命令操作HDFS文件系统3.1.…...
JavaWeb—html, css, javascript, dom,xml, tomcatservlet
文章目录 快捷键HTML**常用特殊字符替代:****标题****超链接标签****无序列表、有序列表****无序列表**:ul/li 基本语法**有序列表ol/li:****图像标签(img)**** 表格(table)标签****表格标签-跨行跨列表格****form(表单)标签介绍****表单form提交注意事项**div 标签p 标签sp…...
LangChain 31 模块复用Prompt templates 提示词模板
LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…...
深入理解 Git 分支管理:提升团队协作与开发效率
目录 前言1 什么是分支2 分支的好处2.1 并行开发的支持2.2 独立性与隔离性2.3 灵活的版本控制2.4 提高安全性和代码质量2.5 项目历史的清晰记录 3 Git 分支操作命令3.1 git branch -v3.2 git branch 分支名称3.3 git checkout 分支名称3.4 git merge 分支名称3.5 git rebase 分…...
WPF StackPanel
StackPanel是一个控件容器,它按照一个方向(水平或垂直)堆叠子元素,使得它们沿一个轴线对齐。你可以在StackPanel中放置其他控件,如按钮、标签、文本框、图片等等。这些控件的排列方式由StackPanel按照指定的方向自动确…...
由正规表达式构造DFA,以及DFA的相关化简
目录 1.由正规式到DFA 首先讲如何从正规式到NFA 如何从NFA到DFA 2.DFA的化简 3.DFA和NFA的区别 1.由正规式到DFA 正规式--->NFA---->DFA 首先讲如何从正规式到NFA 转换规则: 例题1:这里圆圈里面的命名是随意的,只要能区别开就可以了 如何…...
模式识别与机器学习(九):Adaboost
1.原理 AdaBoost是Adaptive Boosting(自适应增强)的缩写,它的自适应在于:被前一个基本分类器误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在…...
【JAVA】分布式链路追踪技术概论
目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题:…...
ZooKeeper 使用介绍和原理详解
目录 1. 介绍 重要性 应用场景 2. ZooKeeper 架构 服务角色 数据模型 工作原理 3. 安装和配置 下载 ZooKeeper 安装和配置 启动 ZooKeeper 验证和管理 停止和关闭 4. ZooKeeper 数据模型 数据结构和层次命名空间: 节点类型和 Watcher 机制ÿ…...
模式识别与机器学习(八):决策树
1.原理 决策树(Decision Tree),它是一种以树形数据结构来展示决策规则和分类结果的模型,作为一种归纳学习算法,其重点是将看似无序、杂乱的已知数据,通过某种技术手段将它们转化成可以预测未知数据的树状模…...
Pinely Round 3 (Div. 1 + Div. 2)(A~D)(有意思的题)
A - Distinct Buttons 题意: 思路:模拟从(0,0)到每个位置需要哪些操作,如果总共需要4种操作就输出NO。 // Problem: A. Distinct Buttons // Contest: Codeforces - Pinely Round 3 (Div. 1 Div. 2) // URL: https…...
在Linux下探索MinIO存储服务如何远程上传文件
🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 创建Buckets和Access Keys二. Linux 安装Cpolar三. 创建连接MinIO服务公网地…...
持续集成交付CICD:Linux 部署 Jira 9.12.1
目录 一、实验 1.环境 2.K8S master节点部署Jira 3.Jira 初始化设置 4.Jira 使用 一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins slave (从节点) jira9.12.1…...
Linux命令-查看内存、GC情况及jmap 用法
查看进程占用内存、CPU使用情况 1、查看进程 #jps 查看所有java进程 #top 查看cpu占用高进程 输入m :根据内存排序 topMem: 16333644k total, 9472968k used, 6860676k free, 165616k buffers Swap: 0k total, 0k used, 0k free, 6…...
nginx安装letsencrypt证书
1.安装推荐安装letsencrypt证书的客户端工具 官方推荐通过cerbot客户端安装letsencrypt 官方推荐使用snap客户端安装cerbot客户端 apt install snapd snap install --classic certbot 建立certbot软链接:ln -s /snap/bin/certbot /usr/bin/certbot 2.开始安装letse…...
docker笔记1-安装与基础命令
docker的用途: 可以把应用程序代码及运行依赖环境打包成镜像,作为交付介质,在各种环境部署。可以将镜像(image)启动成容器(container),并提供多容器的生命周期进行管理(…...
VSCode软件与SCL编程
原创 NingChao NCLib 博途工控人平时在哪里技术交流博途工控人社群 VSCode简称VSC,是Visual studio code的缩写,是由微软开发的跨平台的轻量级编辑器,支持几乎所有主流的开发语言的语法高亮、代码智能补全、插件扩展、代码对比等,…...
Opencv中的滤波器
一副图像通过滤波器得到另一张图像,其中滤波器又称为卷积核,滤波的过程称之为卷积。 这就是一个卷积的过程,通过一个卷积核得到另一张图片,明显发现新的到的图片边缘部分更加清晰了(锐化)。 上图就是一个卷…...
<JavaEE> 基于 TCP 的 Socket 通信模型
目录 一、认识相关API 1)ServerSocket 2)Socket 二、TCP字节流套接字通信模型概述 三、回显客户端-服务器 1)服务器代码 2)客户端代码 一、认识相关API 1)ServerSocket ServerSocket 常用构造方法ServerSocke…...
[THUPC 2024 初赛] 二进制 (树状数组单点删除+单点查询)(双堆模拟set)
题解 题目本身不难想 首先注意到所有查询的序列长度都是小于logn级别的 我们可以枚举序列长度len,然后用类似滑动窗口的方法,一次性预处理出每种字串的所有出现位置,也就是开N个set去维护所有的位置。预处理会进行O(logn)轮,每…...
机器学习算法(11)——集成技术(Boosting——梯度提升)
一、说明 在在这篇文章中,我们学习了另一种称为梯度增强的集成技术。这是我在机器学习算法集成技术文章系列中与bagging一起介绍的一种增强技术。我还讨论了随机森林和 AdaBoost 算法。但在这里我们讨论的是梯度提升,在我们深入研究梯度提升之前…...
使用GBASE南大通用负载均衡连接池
若要使用负载均衡连接池功能,需要在连接串中配置相关的关键字。有关更详细的关键字信息在 GBASE南大通用 连接参数表‛中介绍。假设存在如下场景: 现有集群中存在 4 个节点: 192.168.9.173, 192.168.9.174, 192.168.9.175, 192.168.9.17…...
Flink 数据序列化
为 Flink 量身定制的序列化框架 大家都知道现在大数据生态非常火,大多数技术组件都是运行在JVM上的,Flink也是运行在JVM上,基于JVM的数据分析引擎都需要将大量的数据存储在内存中,这就不得不面临JVM的一些问题,比如Ja…...
【并发设计模式】聊聊两阶段终止模式如何优雅终止线程
在软件设计中,抽象出了23种设计模式,用以解决对象的创建、组合、使用三种场景。在并发编程中,针对线程的操作,也抽象出对应的并发设计模式。 两阶段终止模式- 优雅停止线程避免共享的设计模式- 只读、Copy-on-write、Thread-Spec…...
Java实现非对称加密【详解】
Java实现非对称加密 1. 简介2. 非对称加密算法--DH(密钥交换)3. 非对称加密算法--RSA非对称加密算法--EIGamal5. 总结6 案例6.1 案例16.2 案例2 1. 简介 公开密钥密码学(英语:Public-key cryptography)也称非对称式密…...
simulinkveristandlabview联合仿真——模型导入搭建人机界面
目录 1.软件版本 2.搭建simulink仿真模型 编译错误 3.导入veristand并建立工程 4.veristand导入labview labview显示veristand工程数据 labview设置veristand工程数据 运行labview工程 1.软件版本 matlab2020a,veristand2020 R4,labview2020 SP…...
k8s中Helm工具实践
k8s中Helm工具实践 1)安装redis-cluster 先搭建一个NFS的SC(只需要SC,不需要pvc),具体步骤此文档不再提供,请参考前面相关章节。 下载redis-cluster的chart包 helm pull bitnami/redis-cluster --untar…...
推荐算法架构7:特征工程(吊打面试官,史上最全!)
系列文章,请多关注 推荐算法架构1:召回 推荐算法架构2:粗排 推荐算法架构3:精排 推荐算法架构4:重排 推荐算法架构5:全链路专项优化 推荐算法架构6:数据样本 推荐算法架构7:特…...
Web前端 ---- 【Vue】vue路由守卫(全局前置路由守卫、全局后置路由守卫、局部路由path守卫、局部路由component守卫)
目录 前言 全局前置路由守卫 全局后置路由守卫 局部路由守卫之path守卫 局部路由守卫之component守卫 前言 本文介绍Vue2最后的知识点,关于vue的路由守卫。也就是鉴权,不是所有的组件任何人都可以访问到的,需要权限,而根据权限…...
uniapp点击tabbar之前做判断
在UniApp中,可以通过监听 tabBar 的 click 事件来在点击 tabBar 前做判断。具体步骤如下: 在 pages.json 文件中配置 tabBar,例如: {"pages":[{"path":"pages/home/home","name":"h…...
DLLNotFoundException:xxx tolua... 错误打印
DLLNotFoundException:xxx tolua... 错误打印 一、DLLNotFoundException介绍二、Plugins文件夹文件目录结构如下: 三、Plugins中的Android文件夹四、Plugins中的IOS文件夹这里不说了没测试过不过原理应该也是选择对应的平台即可五、Plugins中的x86和X86_64文件夹 一…...
Python量化投资——金融数据最佳实践: 使用qteasy+tushare搭建本地金融数据仓库并定期批量更新【附源码】
用qteasytushare实现金融数据本地化存储及访问 目的什么是qteasy什么是tushare为什么要本地化使用qteasy创建本地数据仓库qteasy支持的几种本地化仓库类型配置本地数据仓库配置tushare 的API token 配置本地数据源 —— 用MySQL数据库作为本地数据源下载金融历史数据 数据的定期…...
【投稿】北海 - Rust与面向对象(二)
模板方法 Rust提供了trait,类似于面向对象的接口,不同的是,将传统面向对象的虚函数表从对象中分离出来,trait仍然是一个函数表,只不过是独立的,它的参数self指针可以指向任何实现了该trait的结构。 从对象中…...
HarmonyOS构建第一个ArkTS应用(FA模型)
构建第一个ArkTS应用(FA模型) 创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。 选择Application应用开发&a…...
阿里云 ARMS 应用监控重磅支持 Java 21
作者:牧思 & 山猎 前言 今年的 9 月 19 日,作为最新的 LTS (Long Term Support) Java 版本,Java 21 正式 GA,带来了不少重量级的更新,详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都…...
C++ 类的析构函数和构造函数
构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。主要用来在创建对象时初始化对象即为对象成员变量赋初始值。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用…...