第一篇:数据库基础与概念
第一篇:数据库基础与概念
目标读者:
没有接触过数据库的初学者。
内容概述:
在本篇文章中,我们将从零开始,详细介绍数据库的基本概念、常见的数据库管理系统(DBMS)以及数据库设计的基础知识。无论你是完全没有接触过数据库,还是对其有些模糊的印象,这篇文章都将帮助你理解数据库的核心功能和工作原理,并为你进一步深入学习数据库打下坚实的基础。
一、什么是数据库?
我们生活中每时每刻都在接触数据,比如:你手机上的联系人、你浏览的网站、你购物的商品信息、甚至银行里的账户余额,这些都是数据。而“数据库”则是一个高效、结构化地存储、管理、和操作这些数据的系统。
数据库的定义:
数据库(Database)是一个有组织的数据集合,它按照特定结构存储和管理数据。数据库不仅仅是“存储”的工具,更是用于快速检索、修改、删除和更新数据的一个平台。你可以把数据库想象成一个数字化的文件柜,其中每一类文件(数据)都有自己的存储位置,而你可以快速地找到它们、进行修改或删除。
数据库的应用场景:
- 电子商务网站:例如淘宝、京东等,数据库用于存储用户信息、商品信息、购物车内容、订单记录等。
- 社交媒体平台:如微博、Facebook、Twitter,数据库用于存储用户资料、发帖内容、评论和互动数据。
- 银行系统:存储账户信息、交易记录、余额等,保障数据的安全与一致性。
- 医疗健康管理系统:如医院的病例系统,数据库存储病人的健康记录、诊断结果、治疗过程等信息。
举个简单例子:
想象一下你在网上购物,选择了一些商品加入购物车,然后付款完成,系统就会使用数据库来记录你的个人信息、购买的商品、支付方式、收货地址等数据。这个过程中,数据库充当了一个重要角色,帮助我们存储和管理数据,确保信息能够被快速、准确地查询和更新。
二、数据库管理系统(DBMS)
数据库管理系统(DBMS, Database Management System)是管理和操作数据库的软件。它负责为用户提供与数据库交互的功能,包括创建数据库、插入数据、查询数据、更新数据、删除数据等操作。
DBMS的功能:
- 数据存储与管理:DBMS负责将数据存储在磁盘上,并通过优化的方式存储数据,以保证数据的安全和高效访问。
- 数据查询:DBMS提供查询语言(如SQL),允许用户检索、修改和删除数据。
- 事务管理:确保多个操作在数据库中作为一个完整的事务执行,维护数据库的原子性、一致性、隔离性和持久性(ACID特性)。
- 数据安全性与完整性:DBMS负责控制用户权限,保护数据库不被未经授权的访问,同时通过数据验证和约束,确保数据的完整性。
- 并发控制:在多用户环境中,DBMS能够管理多个用户同时访问数据时的冲突,确保数据库的一致性。
常见的DBMS:
- MySQL:开源的关系型数据库管理系统,广泛应用于Web开发。MySQL简单易用,支持SQL查询,且性能较为优越。
- SQL Server:由微软开发,广泛用于企业级应用,支持强大的事务处理功能,适合大规模数据管理。
- Oracle:功能非常强大的数据库系统,适用于大型企业级应用,支持复杂的查询、存储过程、触发器等功能。
- PostgreSQL:开源关系型数据库,以高扩展性、复杂查询能力和ACID事务支持著称,适用于对数据一致性要求较高的应用。
- SQLite:轻量级的数据库,通常嵌入到应用程序中,适用于移动应用、小型项目等。
三、常见的数据库类型
数据库大体上分为两种类型:关系型数据库(RDBMS)和非关系型数据库(NoSQL)。不同的数据库类型适用于不同的应用场景。
1. 关系型数据库(RDBMS)
关系型数据库是基于关系模型来组织和存储数据的。数据通过表格的形式组织,每个表由行(记录)和列(字段)组成。
-
特点:
- 强调数据之间的关系,通过外键关联不同的表。
- 数据结构严格、固定,使用SQL语言进行查询。
- 数据一致性和完整性较强,适合需要高数据准确性的应用。
-
常见的关系型数据库:
- MySQL、PostgreSQL、SQL Server、Oracle等。
2. 非关系型数据库(NoSQL)
非关系型数据库是一类不基于传统关系模型来存储数据的数据库。它们采用不同的存储方式,如键值对、文档、图等。非关系型数据库能够处理大规模、分布式的数据,通常不要求数据严格遵循结构化模型。
-
特点:
- 灵活的存储结构,可以存储非结构化和半结构化数据。
- 更容易横向扩展,适合处理大规模数据。
- 通常不支持复杂的事务和联合查询。
-
常见的非关系型数据库:
- MongoDB(文档型数据库)
- Redis(键值型数据库)
- Cassandra(列族型数据库)
- Neo4j(图数据库)
四、基本的数据库术语
在数据库管理中,有一些基本的术语和概念是每个学习者必须掌握的。这些术语是理解数据库结构和操作的基础。
-
表(Table):数据库中的数据是按表格的形式组织的,表由列(字段)和行(记录)组成。每张表都有一个名字,用来标识其内容。
- 例子:一个“学生”表可能包含“学号”、“姓名”、“年龄”、“性别”等列,而每一行则代表一个具体的学生。
-
记录(Record):表中的每一行称为记录。每个记录包含了与某个实体相关的所有信息。
- 例子:一个学生记录可能包括该学生的学号、姓名、年龄、性别等信息。
-
字段(Field):表中的每一列称为字段。字段定义了数据的类型和内容。
- 例子:在“学生”表中,“姓名”和“年龄”就是字段,它们分别存储学生的名字和年龄。
-
主键(Primary Key):主键是表中用于唯一标识每一条记录的字段或字段组合。一个表只能有一个主键。
- 例子:“学号”可能是“学生”表的主键,因为每个学号是唯一的。
-
外键(Foreign Key):外键是表中的字段,用于指向另一个表中的主键,表示两张表之间的关系。
- 例子:“学生”表中的“班级ID”可能是“班级”表的外键,表示某个学生属于哪个班级。
五、数据库管理的基本任务
数据库管理系统(DBMS)不仅负责数据的存储,还涉及到很多复杂的任务,确保数据能够高效、准确、安全地存储和处理。
- 数据存储:DBMS负责将数据存储在磁盘中,并通过合适的数据结构(如索引)提高查询效率。
- 数据检索:DBMS使用查询语言(如SQL)来支持用户检索、插入、更新和删除数据。
- 数据保护:DBMS通过备份、权限控制、加密等手段来确保数据的安全性。
- 数据管理:DBMS确保数据的一致性和完整性,避免数据丢失、损坏或冗余。
六、简单的数据库设计模型:ER图(实体-关系图)
ER图(Entity-Relationship Diagram)是一种用于数据库设计的工具,旨在帮助设计者清晰地表示数据实体之间的关系。
- 实体:表示数据库中的对象(如用户、订单、商品等)。
- 关系:表示不同实体之间的联系(如用户和订单之间的“购买”关系)。
- 属性:实体的特征,如用户实体的“姓名”、商品实体的“价格”。
通过ER图,可以直观地理解数据库中的数据结构和实体之间的关系。
系统(如 MySQL、PostgreSQL、SQL Server 等)的优缺点。为了更好地巩固你对数据库概念的理解,以下是一些实践建议和学习资源,帮助你在实际操作中进一步掌握数据库的使用。
七、实践操作建议:
-
创建简单的数据库:
- 使用 SQLite 或 MySQL 等免费数据库系统,在本地安装并创建一个简单的数据库。你可以创建一个“学生”表,包含“学号”、“姓名”、“年龄”等字段,进行基本的增删改查(CRUD)操作。通过练习,你将深入理解表、记录、字段、主键等基本概念。
-
学习SQL:
- SQL(Structured Query Language) 是操作关系型数据库的标准语言。学习如何编写查询、插入数据、更新数据和删除数据的SQL语句。例如:
- 使用
SELECT
语句查询数据。 - 使用
INSERT INTO
语句插入新数据。 - 使用
UPDATE
语句更新现有数据。 - 使用
DELETE
语句删除数据。
- 使用
- SQL(Structured Query Language) 是操作关系型数据库的标准语言。学习如何编写查询、插入数据、更新数据和删除数据的SQL语句。例如:
-
设计简单的ER图:
- 使用ER图设计你自己的数据库模型。可以从一个简单的学生管理系统入手,设计学生、课程和成绩之间的关系图。你可以手动绘制ER图,或使用工具如 Lucidchart 或 draw.io 来帮助你可视化设计。
-
数据关系实践:
- 在实践中,你将遇到如何使用 外键 来链接不同表的情况。尝试设计一个“订单”表,表示用户购买商品的记录,并通过外键将“订单”表与“用户”表、"商品"表进行关联,来体现数据库表之间的关系。
-
使用数据库管理工具:
- 学习如何使用图形化数据库管理工具,如 phpMyAdmin(MySQL)、pgAdmin(PostgreSQL)或 SQL Server Management Studio。这些工具提供了直观的界面,帮助你更容易地管理数据库。
八、推荐学习资源与书籍:
为了进一步深化你的数据库知识,以下是一些优秀的学习资源和书籍推荐:
在线教程:
-
W3Schools SQL Tutorial:一个简单易懂的SQL在线教程,适合初学者。
- 链接:W3Schools SQL Tutorial
-
SQLZoo:通过交互式练习学习SQL,可以立即看到你写的SQL查询的结果。
- 链接:SQLZoo
-
LeetCode SQL 练习:LeetCode提供了大量的SQL编程题目,适合通过实践来提高SQL技能。
- 链接:LeetCode SQL Practice
书籍推荐:
-
《SQL必知必会》(Ben Forta):
- 这是一本非常适合初学者的SQL书籍,内容简明易懂,涵盖了SQL的基础知识,适合零基础的读者。
-
《数据库系统概念》(Abraham Silberschatz、Henry F. Korth、S. Sudarshan):
- 一本经典的数据库教材,适合想深入了解数据库理论的读者,内容深入、全面,适合大学课程和专业学习。
-
《数据库设计与应用》(Thomas M. Connolly、Carolyn Begg):
- 本书介绍了数据库设计的基本理论和实际应用,尤其是ER图设计、规范化等内容,适合刚接触数据库设计的读者。
九、参与社区互动与项目实践:
数据库不仅仅是理论知识,更多的是实践中的运用。以下是一些参与数据库相关项目和社区互动的途径,帮助你巩固所学并与他人分享经验。
-
GitHub:
- GitHub上有大量开源项目,你可以参与到数据库相关的开源项目中,学习如何在实际项目中应用数据库。你可以从查看数据库设计和操作的代码开始,逐渐提高。
-
CSDN平台:
- 在 CSDN 上,你可以找到大量关于数据库的博客、教程和技术文章,参与讨论并与社区成员分享自己的学习经验。同时,CSDN上也有很多数据库开发的实践项目,帮助你在真实环境中进行练习。
-
在线编程平台:
- LeetCode、HackerRank 等编程平台提供了大量与数据库相关的编程题目,可以帮助你提升数据库查询、优化和管理的能力。
-
自己动手做项目:
- 实践是最好的学习方式。你可以设计一个小型的项目,比如一个书籍管理系统、图书馆管理系统或学生成绩管理系统,使用数据库来存储和处理数据。这不仅可以加深对数据库的理解,还能锻炼你的实际操作能力。
结语:
通过本篇文章的学习,你应该已经对数据库的基本概念、数据库管理系统、常见的数据库类型以及数据库设计有了初步的了解。接下来,通过不断的实践、编写SQL查询、设计数据库模型和参与社区互动,你将进一步深化对数据库的掌握。
记住,数据库不仅仅是存储数据的地方,它在现代软件开发中扮演着至关重要的角色。希望你能保持好奇心,继续探索更多数据库的知识,并将其运用到实际开发中。通过不断的学习和实践,你将能够应对越来越复杂的数据管理挑战。
推荐实践任务:
- 设计并实现一个简单的学生管理系统数据库,进行常见的增删改查操作。
- 使用MySQL或SQLite在本地环境中创建数据库,进行SQL查询练习。
- 阅读推荐的数据库书籍,深入理解数据库的理论部分。
互动与反馈:
- 在学习过程中,如果你遇到问题或有不理解的地方,欢迎到 CSDN 或其他技术社区提问,与他人共同讨论和分享解决方案。
相关文章:
第一篇:数据库基础与概念
第一篇:数据库基础与概念 目标读者: 没有接触过数据库的初学者。 内容概述: 在本篇文章中,我们将从零开始,详细介绍数据库的基本概念、常见的数据库管理系统(DBMS)以及数据库设计的基础知识…...
从理论到实践:Django 业务日志配置与优化指南
在现代 Web 开发中,日志记录是确保系统可维护性和可观测性的重要手段。通过合理的日志配置,我们可以快速定位问题、分析系统性能,并进行安全审计。本文将围绕 Django 框架,详细介绍如何配置和优化业务日志,确保开发环境和生产环境都能高效地记录和管理日志。 © ivwdc…...
基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)
一、引言 1.1 研究背景与意义 在临床用药过程中,药物相互作用(Drug - Drug Interaction, DDI)是一个不可忽视的重要问题。当患者同时服用两种或两种以上药物时,药物之间可能会发生相互作用,从而改变药物的疗效、增加不良反应的发生风险,甚至危及患者的生命安全。例如,…...
常用的 ASCII 码表字符
ASCII(美国信息交换标准代码,American Standard Code for Information Interchange)是一种字符编码标准,用于表示英文字符、数字、标点符号以及一些控制字符。ASCII 码表包含 128 个字符,每个字符用 7 位二进制数表示&…...
AI大模型开发原理篇-8:Transformer模型
近几年人工智能之所以能迅猛发展,主要是靠2个核心思想:注意力机制Attention Mechanism 和 Transformer模型。本次来浅谈下Transformer模型。 重要性 Transformer模型在自然语言处理领域具有极其重要的地位,为NLP带来了革命性的突破。可以…...
Golang 并发机制-2:Golang Goroutine 和竞争条件
在今天的软件开发中,我们正在使用并发的概念,它允许一次执行多个任务。在Go编程中,理解Go例程是至关重要的。本文试图详细解释什么是例程,它们有多轻,通过简单地使用“go”关键字创建它们,以及可能出现的竞…...
NVLink 拓扑、DGX 硬件渲染图
文章目录 一个 server 固定 8 个GPUP100(4个NVL)V100(6个NVL)A100(12个NVL)H100(18个NVL)【DGX-2 :2018年发布NVSwitch,实现full-mesh】【NVLink 拓扑&#x…...
Python XML 解析
Python XML 解析 引言 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。Python 作为一种功能强大的编程语言,拥有多种解析 XML 的库,如 xml.etree.ElementTree 和 lxml。本文将详细介绍 Python 中 XML 解析的方法、技巧和注意事项,帮助您更好地掌握 XML 数据的…...
java求职学习day22
MySQL 基础 &SQL 入门 1. 数据库的基本概念 1.1 什么是数据库 1. 数据库 (DataBase) 就是 存储 和 管理 数据的仓库 2. 其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上 1.2 为什么使用数据库 数据存储方式的比较 通过上面的比较 , 我们可以看出 , 使…...
stm32教程:EXTI外部中断应用
早上好啊大佬们,上一期我们讲了EXTI外部中断的原理以及基础代码的书写,这一期就来尝试一下用它来写一些有实际效能的工程吧。 这一期里,我用两个案例代码来让大家感受一下外部中断的作用和使用价值。 旋转编码器计数 整体思路讲解 这里&…...
OVS-DPDK
dpdk介绍及应用 DPDK介绍 DPDK(Data Plane Development Kit)是一组快速处理数据包的开发平台及接口。有intel主导开发,主要基于Linux系统,用于快速数据包处理的函 数库与驱动集合,可以极大提高数据处理性能和吞吐量&…...
快速分析LabVIEW主要特征进行判断
在LabVIEW中,快速分析程序特征进行判断是提升开发效率和减少调试时间的重要技巧。本文将介绍如何高效地识别和分析程序的关键特征,从而帮助开发者在编写和优化程序时做出及时的判断,避免不必要的错误。 数据流和并行性分析 LabVIEW的图形…...
MySQL数据库(二)
一 DDL (一 数据库操作 1 查询-数据库(所有/当前) 1 所有数据库: show databases; 2 查询当前数据库: select database(); 2 创建-数据库 可以定义数据库的编码方式 create database if not exists ax1; create database ax2…...
Python 梯度下降法(五):Adam Optimize
文章目录 Python 梯度下降法(五):Adam Optimize一、数学原理1.1 介绍1.2 符号说明1.3 实现流程 二、代码实现2.1 函数代码2.2 总代码2.3 遇到的问题2.4 算法优化 三、优缺点3.1 优点3.2 缺点 Python 梯度下降法(五)&am…...
表格结构标签
<!-- thead表示表格的头部 tbody表示表格的主体 --> <thead></thead> <tbody></tbody> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&q…...
gcc和g++的区别以及明明函数有定义为何链接找不到
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
Git进阶之旅:tag 标签 IDEA 整合 Git
第一章:tag 标签远程管理 git 标签 tag 管理: 标签有两种: 轻量级标签(lightweight)带有附注标签(annotated) git tag 标签名:创建一个标签git tag 标签名 -m 附注内容 :创建一个附注标签git tag -d 标签名…...
计算机网络一点事(24)
TCP可靠传输,流量控制 可靠传输:每字节对应一个序号 累计确认:收到ack则正确接收 返回ack推迟确认(不超过0.5s) 两种ack:专门确认(只有首部无数据) 捎带确认(带数据…...
集合的奇妙世界:Python集合的经典、避坑与实战
集合的奇妙世界:Python集合的经典、避坑与实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进&#x…...
ubuntu20.04.6下运行VLC-Qt例子simple-player
下载examples-master.zip(https://github.com/vlc-qt/examples),编译运行simple-player 参考链接: https://blog.csdn.net/szn1316159505/article/details/143743735 本文运行环境 Qt 5.15.2 Qt creator 5.0.2 主要步骤…...
Node.js MySQL:深度解析与最佳实践
Node.js MySQL:深度解析与最佳实践 引言 Node.js作为一种流行的JavaScript运行时环境,以其轻量级、高性能和事件驱动模型受到开发者的青睐。MySQL则是一款功能强大的关系型数据库管理系统,广泛应用于各种规模的应用程序中。本文将深入探讨Node.js与MySQL的集成,分析其优势…...
Linux网络 | 网络层IP报文解析、认识网段划分与IP地址
前言:本节内容为网络层。 主要讲解IP协议报文字段以及分离有效载荷。 另外, 本节也会带领友友认识一下IP地址的划分。 那么现在废话不多说, 开始我们的学习吧!! ps:本节正式进入网络层喽, 友友们…...
项目测试之Postman
文章目录 基础实战进行批量测试并输出报告 基础 实战 进行批量测试并输出报告 参考: https://blog.csdn.net/tyh_keephunger/article/details/109205191 概述 Newman是什么?Newman是Postman的命令行工具,用于执行接口测试集合。操作过程…...
C++——list的了解和使用
目录 引言 forward_list与list 标准库中的list 一、list的常用接口 1.list的迭代器 2.list的初始化 3.list的容量操作 4.list的访问操作 5.list的修改操作 6.list的其他操作 二、list与vector的对比 结束语 引言 本篇博客要介绍的是STL中的list。 求点赞收藏评论…...
MySQL基本架构SQL语句在数据库框架中的执行流程数据库的三范式
MySQL基本架构图: MySQL主要分为Server层和存储引擎层 Server层: 连接器:连接客户端,获取权限,管理连接 查询缓存(可选):在执行查询语句之前会先到查询缓存中查看是否执行过这条语…...
(leetcode 213 打家劫舍ii)
代码随想录: 将一个线性数组换成两个线性数组(去掉头,去掉尾) 分别求两个线性数组的最大值 最后求这两个数组的最大值 代码随想录视频 #include<iostream> #include<vector> #include<algorithm> //nums:2,…...
如何用KushoAI提升API自动化测试效率:AI驱动的革命
在现代软件开发中,API测试已经成为确保系统稳定性和可靠性的关键。然而,传统的API测试往往依赖手动编写测试用例,每次修改API后都需要重新进行测试,这不仅耗时费力,还容易因人为疏忽而出现问题。想象一下,你是否曾因API在生产环境中出现微小错误而彻夜未眠?每次修改API后…...
docker安装nacos2.2.4详解(含:nacos容器启动参数、环境变量、常见问题整理)
一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull nacos:2.2.4 2、离线包下载 两种方式: 方式一: -)在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -)导出 # 导出镜像到…...
DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)的解决方法
在使用DBeaver连接MySQL数据库时,如果遇到“Access denied for user ip (using password: YES)”的错误提示,说明用户认证失败。此问题通常与数据库用户权限、配置错误或网络设置有关。本文将详细介绍解决此问题的步骤。 一、检查用户名和密码 首先&am…...
VirtualBox:跨磁盘导入已存的vdi磁盘文件顺便测试冷迁移
目录 1.背景 2.目的 3.步骤 3.1 安装在移动硬盘上 3.2.接管现有主机磁盘上的虚拟机 3.3接管迁移到移动硬盘的虚拟机 4. 结论 1.背景 电脑重新做了系统,然后找不到virtualbox的启动程序了,另外电脑磁盘由于存储了其他文件已经爆红,无法…...
蓝桥杯思维训练营(一)
文章目录 题目总览题目详解翻之一起做很甜的梦 蓝桥杯的前几题用到的算法较少,大部分考察的都是思维能力,方法比较巧妙,所以我们要积累对应的题目,多训练 题目总览 翻之 一起做很甜的梦 题目详解 翻之 思维分析:一开…...
EchoMimicV2的部署使用
最近有一个录课的需要,我不想浪费人力,只想用技术解决。需求很简单,就是用别人现成的录课视频中的形象和声线,再结合我提供的讲稿去生成一个新的录课视频。我觉得应该有现成的技术了,我想要免费大批量生产。最近看到这…...
JVM深入学习(一)
目录 一.JVM概述 1.1 为什么要学jvm? 1.2 jvm的作用 1.3 jvm内部构造 二.JVM类加载 2.1类加载过程 2.2类加载器 2.3类加载器的分类 2.4双亲委派机制 三.运行时数据区 堆空间区域划分(堆) 为什么分区(代)?(…...
线段树(Segment Tree)和树状数组
线段树(Segment Tree)和树状数组 线段树的实现链式:数组实现 解题思路树状数组 线段树是 二叉树结构 的衍生,用于高效解决区间查询和动态修改的问题,其中区间查询的时间复杂度为 O(logN),动态修改单个元素的…...
Teleporters( Educational Codeforces Round 126 (Rated for Div. 2) )
Teleporters( Educational Codeforces Round 126 (Rated for Div. 2) ) There are n 1 n1 n1 teleporters on a straight line, located in points 0 0 0, a 1 a_1 a1, a 2 a_2 a2, a 3 a_3 a3, …, a n a_n an. It’s possible to tele…...
JavaScript 注释
JavaScript 注释 引言 JavaScript 注释是编写代码过程中不可或缺的一部分。它们不仅可以提高代码的可读性和可维护性,还能帮助其他开发者(或未来的自己)更好地理解代码的意图。本文将深入探讨 JavaScript 注释的多种类型、使用方法和最佳实践。 一、注释的分类 JavaScri…...
消息队列篇--原理篇--常见消息队列总结(RabbitMQ,Kafka,ActiveMQ,RocketMQ,Pulsar)
1、RabbitMQ 特点: AMQP协议:RabbitMQ是基于AMQP(高级消息队列协议)构建的,支持多种消息传递模式,如发布/订阅、路由、RPC等。多语言支持:支持多种编程语言的客户端库,包括Java、P…...
AVL搜索树
一、介绍 高度平衡的搜索二叉树,保证每个节点的左右子树高度差不超过1,降低搜索树的高度以提高搜索效率。 通过平衡因子和旋转来保证左右子树高度差不超过1 二、插入节点 1、插入规则 (1)搜按索树规则插入节点 (…...
ELK模块封装starter
文章目录 1.combinations-elk-starter1.目录结构2.log4j2-spring.xml 从环境变量读取host和port3.ELKProperties.java 两个属性4.ELKAutoConfiguration.java 启用配置类5.ELKEnvironmentPreparedListener.java 监听器从application.yml中获取属性值6.spring.factories 注册监听…...
C# 与.NET 日志变革:JSON 让程序“开口说清话”
一、引言:日志新时代的开启 在软件开发的漫长旅程中,日志一直是我们不可或缺的伙伴。它就像是应用程序的 “黑匣子”,默默地记录着程序运行过程中的点点滴滴,为我们在调试、排查问题以及性能优化时提供关键线索。在早期ÿ…...
Ubuntu 系统,如何使用双Titan V跑AI
要在Ubuntu系统中使用双NVIDIA Titan V GPU来运行人工智能任务,你需要确保几个关键组件正确安装和配置。以下是基本步骤: 安装Ubuntu操作系统: 下载最新版本的Ubuntu服务器或桌面版ISO文件。使用工具如Rufus(Windows)或…...
CSDN的历史
CSDN(中国开发者网络,China Software Developer Network)是中国最具影响力的IT技术社区之一,其历史可追溯至1999年。以下是其发展历程和关键节点: --- **一、创立背景(1999年)** - **创始人**:蒋涛(国内知名技术人,曾参与金山软件早期开发)。 - **初衷**:为国内程…...
使用Pygame制作“贪吃蛇”游戏
贪吃蛇 是一款经典的休闲小游戏:玩家通过操控一条会不断变长的“蛇”在屏幕中移动,去吃随机出现的食物,同时要避免撞到墙壁或自己身体的其他部分。由于其逻辑相对简单,但可玩性和扩展性都不错,非常适合作为新手练习游戏…...
【详细教程】如何在Mac部署Deepseek R1?
DeepSeek是目前最火的国产大模型,官方App用户太多服务经常出现卡顿,部署一个本地DeepSeek R1可以方便使用。 1.系统最低要求 macOS 11 Big Sur 或更新 2.下载ollama https://ollama.com/ 3.安装DeepSeek R1 打开终端 运行命令 ollama run deepseek-…...
Java中的getInterfaces()方法:使用与原理详解
在Java中,反射(Reflection)是一个强大的工具,它允许程序在运行时动态地获取类的信息并操作类的属性和方法。getInterfaces()方法是Java反射API中的一个重要方法,用于获取类或接口直接实现的接口。本文将深入探讨getInt…...
PT站点自动签到
在站点下载一些视频电影资源,站点需要长期维护,每天自动签到。 两种方式: 一、保持浏览器登录状态,打开默认用户文件, 模拟点击签到(点击按钮自行设置:根据href名称) log日志 首次…...
计算机网络一点事(23)
传输层 端口作用:标识主机特定进程,TCP,UDP协议 端口号分类:服务器:0-1023,熟知 1024-49151 登记 客户端:49152-65535 功能:实现端到端,进程到进程的通信,…...
vim操作简要记录
操作容易忘记,记录一下基本使用的 :wq保存退出 :w :q :q! :wq! i I a A 方向键 h左 j下 k上 l右 dd删除方行(这其实是剪切行操作,不过一般用作删除,长按可删除,不过按.执行上一次操作删除更快) .执行上…...
DeepSeek大模型技术深度解析:揭开Transformer架构的神秘面纱
摘要 DeepSeek大模型由北京深度求索人工智能基础技术研究有限公司开发,基于Transformer架构,具备卓越的自然语言理解和生成能力。该模型能够高效处理智能对话、文本生成和语义理解等复杂任务,标志着人工智能在自然语言处理领域的重大进展。 关…...
Carla-ModuleNotFoundError: No module named ‘agents.navigation‘
解决办法: You need to make sure that _agents _ is in your (PYTHON)PATH variable or your working dictionary. Setting your working dictionary to <CARLA_ROOT>/PythonAPI/carla would fix it as agents is a sub dictionary. Similarly adding the c…...