【数据库原理】快速入门关系型数据库

MyBatis-plus(一):快速入门 MyBatis-Plus 第一章。 阅读详情

什么是数据库?以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。--wikipedia.org


Table of Contents

为什么要有数据库

数据库类型

关系型数据库

非关系型数据库

关系型数据库设计范式

1NF(第一范式)

2NF(第二范式)

3NF(第三范式)

多表关系


为什么要有数据库

根本原因:数据保存问题

数据保存到内存:

       优点:读写非常快

       缺点:程序关闭导致数据丢失

数据保存到文件:

       优点:数据可以永久保存

       缺点:频繁地IO操作,效率不高!数据管理不方便。例如查询某个数据需要全部读取出来,再匹配。

数据保存到数据库软件:

1)数据永久保存下来

2)数据管理非常方便。(例如查询非常快速和方便)

数据库:俗称数据的仓库。方便管理数据的软件(或程序)。

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

 


数据库类型

数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。

数据库类型的主要分类:

  1. 网络数据库:是指把数据库技术引入到计算机系统中,借助于网络技术将储存于数据库中的大量信息及时发布出去。而计算机网络借助于成熟的数据库技术对网络中的各种数据进行有效管理,并实现用户与网络中的数据库进行实时动态数据交互。
  2. 层级数据库:层次结构模型实质上是一种由根节点的定向有序树(在数学中 " 树 " 被定义为一个无回的联通图)
  3. 关系数据库:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
  4. 数据库的另外一种区分方式:基于存储介质,存储介质分为两种:磁盘和内存。关系型数据库:存储在磁盘中。非关系型数据库,存储在内存中。

 

关系型数据库

什么是关系型数据库:指使用了关系模型来组织的数据库。

什么是关系模型:关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系模型由:关系数据结构 + 关系操作集合 + 关系完整性约束 三部分组成.

  1. 关系数据结构:指的数据以什么方式来存储,是一种二维表的形式存储。行决定了表里面放什么数据,列决定了这一列里面只能放哪一种数据。每个关系都具有一个关系明,也就是表名。
  2. 关系操作集合:如何来关联和管理对应的存储数据和SQL指令。获取张三年龄,已知条件为姓名:select * from 二维表 where 姓名 = 张三 。我们把这种语句通过已知条件获取信息的方式就叫做关系操作集合.
  3. 关系完整性约束:数据内部有对应的关联关系,以及数据与数据之间也有对应的关联关系。
    1. 表内约束 : 对应的具体列只能放对应的数据(不能乱放)
    2. 表间约束 : 自然界各实体都是有着对应的关联关系(外键)

 

关系模型中常用的概念:

  1. 关系:一张二维表,每个关系都具有一个关系名,也就是表名
  2. 元组:二维表中的一行,在数据库中被称为记录
  3. 属性:二维表中的一列,在数据库中被称为字段
  4. 域:属性的取值范围,也就是数据库中某一列的取值限制
  5. 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
  6. 关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, … … ,属性N),在数据库中成为表结构

 

关系型数据库的优点:

  1. 容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
  2. 使用方便:通用的SQL语言使得操作关系型数据库非常方便
  3. 易于维护:丰富的完整性(实体完整性、参照完整性和用户自定义完整性)大大减低了数据冗余和数据不一致的概率

 

典型的关系型数据库:

  • 小型关系型数据库:Microsoft Access ,SQLite.
  • 中型关系型数据库:SQL Server ,MySQL.
  • 大型关系型数据库:Oracle , DB2.

 

非关系型数据库

简单理解非关系型数据库:

  1. NoSQL(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。
  2. 非关系型数据库以键值对<Key, Value>存储,每一个元组(行)可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

 

特性:

  1. 支持高并发的读写;
  2. 对海量数据的高效存储和访问;
  3. 灵活的数据模型;

 

NoSQL数据库的四大分类:

  1. 键值(Key-Value)存储数据库
    1. 相关产品:Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
    2. 典型应用:内容缓存,主要用于处理大量数据的高访问负载·
    3. 数据模型:一系列键值对
    4. 优势:快速查洵
    5. 劣势:存储的数据缺少结构化
  2. 列存储数据库
    1. 相关产品:Cassandra, HBase, Riak
    2. 典型应用:分布式的文件系统
    3. 数据模型:以列簇式存赌,将同一列数据存在一起
    4. 优势:查找速度快,可扩展性强,更容易进行分布式扩展
    5. 劣势;功能相对局限
  3. 文档型数据厍
    1. 相关产品:CouchDB、MongoDB
    2. 典型应用:web应用(与Key-Value类似,Value是结构化的)
    3. 数据模型:一系列值对
    4. 优势:数据结构要求不严格
    5. 劣势:杳询性能不高,而且缺乏统一的查询语法
  4. 图形(Graph)数据库
    1. 相关数据库:Ne04J、InfoGrid、Infinite Graph
    2. 典型应用:社交网络
    3. 数据模型:图结构
    4. 优势:利用图结构相关算法·
    5. 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案·

关系型数据库设计范式

范式定义:

  1. 为了建立冗余较小、结构合理的数据库,数据库设计的规范原则,即规定数据库的某些设计只能在这样的规矩下进行。
  2. 在关系型数据库中这种规则就称为范式。
  3. 范式是符合某一种设计要求的总结。
  4. 要想设计一个结构合理的关系型数据库,必须满足一定的范式。

 

范式的目的:

  1. 范式可以指导我们更好地设计数据库的表结构,减少冗余的数据,借此可以提高数据库的存储效率,数据完整性和可扩展性。
  2. 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

 

目前关系数据库有六种范式:

  1. 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
  2. 满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。
  3. 越高的范式数据库的冗余度就越低。

 

三范式简介:

  1. 第一范式(1NF)如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。即,每一列都是一种基础数据类型。
  2. 第二范式(2NF):满足第一范式的前提下,不能出现部分依赖。如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式。即,能区别对待每一行(一般用主键)。
  3. 第三范式(3NF)唯一性:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。即,所有表的列名都不重复。

 

1NF(第一范式)

第一范式是:

  1. 指数据库表中的每一列都是不可分割的基本数据项,不能是集合、数组等非原子项;
  2. 同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
  3. 简而言之,第一范式就是每个列的内容都是不重复的!

 

例如,下图由于住址列还可以再继续划分成为省、市、区等属性,因此下表设计不符合第一范式的要求:

不符第一范式的影响:

  1. 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
  2. 一般来说,第一范式是存在大量的数据冗余、插入异常、删除异常和更新异常的,因此我们有更高级别的第二范式。

 

2NF(第二范式)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

 

2NF特性:

  1. 一行的其他列完全依赖主键列。
  2. 第二范式(2NF)要求数据库表中的每个实例或记录(即每一行)必须可以被唯一地区分。
  3. 选取一个能区分其他每个实体的属性或属性组(也就是主键),作为实体的唯一标识。

 

2NF要求:

  1. 一个表必须有主键;
  2. 其他的列必须是和主键有直接的依赖关系,并且只依赖于主键(这句话不理解?请看下例);

 

例如,表中 ( 学号,课程名称 ) 是联合主键,但是学分字段只和课程名称有关,和学号无关,相当于只依赖联合主键的其中一个字段,不符合第二范式。

 

所以,当数据表中是联合主键,但是有的列只依赖联合主键中的一个或一部分属性组成的联合主键,此时需要拆表才能符合第二范式。

若要使其满足第二范式,那么我们应该将(课程名称,学分)两个字段单独划出一个课程信息表,将(学号, 课程名称, 成绩)划分为选课关系表。

 

修改为符合2NF的表如下:

  1. 学生:Student(学号, 姓名, 年龄)
  2. 课程:Course(课程名称, 学分)
  3. 选课关系:StudentCourse(学号, 课程名称, 成绩)

 

不符合第二范式的影响:

  1. 数据冗余,每条记录都含有相同信息
  2. 删除异常:删除所有学生成绩,就把课程信息全删除了;
  3. 插入异常:学生未选课,无法记录进数据库
  4. 更新异常:调整课程学分,所有行都调整

 

3NF(第三范式)

第三范式是在第二范式基础上,更进一层,第三范式的目标就是确保表中各列与主键列直接相关,而不是间接相关。即各列与主键列都是一种直接依赖关系(非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况),则满足第三范式。

 

理解直接依赖:假设张三是李四的兵,王五则是张三的兵,这时王五是不是李四的兵呢?从这个关系中我们可以看出,王五也是李四的兵,因为王五依赖于张三,而张三是李四的兵,所以王五也是。这中间就存在一种间接依赖的关系,而非我们第三范式中强调的直接依赖。

 

例如,表中员工id能够唯一确定员工信息,但是部门名称、部门电话可由部门id唯一确定,则部门信息传递依赖于员工id,此时,该表不符合第三范式。

若要使上表满足第三范式,那么我们应该将(部门id,部门名称,部门电话)三个字段单独划出一个部门信息表,并在上表中把部门名称,部门电话删除即可。此时上表中部门id成为外键,因为在部门信息表中部门id为主键。


多表关系

多实体关系:

  1. 一对一:一个人只有一个身份证,一个身份证只能对应一个人
  2. 一对多:一个部门有多个员工,一个员工只能对应一个部门
  3. 多对多:一个学生可以选择很多门课程,一个课程也可以被很多学生选择


 

flyway的快速入门教程 Flyway是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本。在项目或产品中,很难一开始就把业务理清楚,把数据库表设计好,因此数据表也会在迭代周期不断迭代。在Java应用程序中使用Flyway,能快速有效地用于迭代数据库表结构,并保证部署到测试环境或生产环境时,数据表都是保持一致的。flyway官方文档[这里是图片001]https在控制台可以看到相关日志打印,并在数据库中查看到已经创建好的表和相关记录变更。... 阅读详情

相关推荐

微信聊天记录丢失原因与恢复方案详解

SQLite数据库作为移动应用常见的本地存储方案,其加密机制和存储结构直接影响数据安全性。以微信为例,聊天记录存储在EnMicroMsg.db等SQLite文件中,采用AES加密保护。当手机清理工具误删这些文件时,会导致特定时间段记录丢失。理解数据恢复原理需要掌握文件系统删除机制和闪存特性,其中关键点包括TRIM指令的影响和数据块覆盖风险。通过专业工具如DiskDigger或iMyFone D-Back,配合ADB调试和SQLite数据重组技术,可在黄金时间窗口内恢复记录。日常维护建议结合自动化备份方案和存

weixin_32612263的博客 386

(整理)关系型数据库基本知识点

整理内容来自互联网。

BTD-Winnie 9716

人脸情绪识别(使用深度学习和OpenCV)

基于opencv与深度学习的人脸情绪识别系统

mx0390304的博客 8251

关系型数据库和非关系型数据库详解

关系型数据库是一种基于关系模型的数据库,其数据以表格的形式存储,表与表之间可以建立关系。关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。非关系型数据库,又称NoSQL,是一种数据结构化存储方法的集合,可以是文档、键值对等形式。它不是单一的数据库类型,而是一种数据存储解决方案的集合。关系型数据库和非关系型数据库各有千秋,选择哪种数据库技术取决于具体的应用场景和需求。

ning的博客 4447

SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南

本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。

weixin_26905487的博客 527

C++新手也能搞定!Windows下Cesium-Native编译全流程(附依赖下载技巧)

本文为C++新手详细介绍了在Windows系统下编译Cesium-Native库的全流程。重点针对网络环境不佳的情况,提供了手动下载依赖库的实用技巧,并指导用户使用CMake配置、生成解决方案,最终完成编译与测试验证,帮助开发者成功构建这一处理3D地理空间数据的C++运行时库。

weixin_28839549的博客 380

数据库原理及应用 1

<<数据库原理及应用>> SQL Server --数据库的创建和管理

weixin_62271784的博客 823

别再死记硬背了!用Multisim仿真5分钟搞懂运放电压跟随器到底要不要加反馈电阻

本文通过Multisim仿真实验,深入解析运放电压跟随器中反馈电阻的必要性。实验对比不同阻值对电路性能的影响,揭示反馈电阻在提供偏置电流通路、提升高频稳定性和ESD保护中的关键作用,并给出工程实践中的优化建议,帮助工程师快速掌握运放电路设计要点。

weixin_42641998的博客 371

《数据库系统概论》期末复习速成

北京化工大学大三上学期《数据库原理》的期末复习总结。这里只列出了一些本人认为重要的知识点。

weixin_48469642的博客 7285

基于射频技术的校园无人超市管理系统_360

本设计实现了一种基于射频技术的校园无人超市管理系统,系统集成了环境监测与商品管理两大核心模块。在环境监测部分,采用DHT11温湿度传感器与MQ2烟雾传感器对超市内部环境进行实时监测,结合温控与报警机制,实现自动通风与烟雾报警功能,并通过1.44寸SPI LCD显示屏进行本地信息显示。商品管理部分基于RC522-RFID读卡器完成商品识别,结合Qt上位机软件实现顾客自助选购与结算,同时支持管理员进行商品入库与会员卡管理等操作。系统采用STM32F103RCT6为主控核心,结合串口通信方式与Qt开发的上位机进行

375

【YOLOv11改进[Backbone]】 使用Ghostnetv2替换Backbone

使用Ghostnetv2替换Backbone

静谧、淡雅 518

快速学会数据库基础及应用

数据库是一个系统化的、存储数据的集合,用于高效地管理、存取、更新和处理信息。它可以被视为一个电子化的数据仓库,允许用户以结构化的方式组织和存储数据。

L_F0724的博客 3086

国社科“选题设计论证”部分不再难!用AI快速梳理五大核心板块,轻松撰写出高质量的基金申报书(附AI提示词)

七哥给大家推荐的高校都在用的AI平台——高级学术版专业应用平台,集成了ChatGPT、Claude、Gemini、Grok等Al大模型的PLUS版本平台,包括 ChatGPT-5、4o、o3、4.1、4.5、Gemini 2.5 Pro、Claude 3.7、Claude 4、DeepSeek 满血版、Grok 3 、Grok 4等原生线路,还有国际主流的GPTs学术应用,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。

智能AI让学术科研更容易 930

JDBC快速入门,JDBC各个接口和类详解,JDBC管理事务

JDBC,JDBC各个接口和类详解。java连接数据库。jdbc事务管理

buyanf的博客 432

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux和Windows下Mysql数据库安装详解

目录 数据库原理 Linux/UNIX 上安装 MySQL Windows 上安装 MySQL 登录 MySQL   数据库原理 数据库简介 文件存储 对数据的存储需求一直存在。保存数据的方式,经历了手工管理、文件管理等阶段,直至数据库管理阶段。 文件存储方式保存数据的弊端: 缺乏对数据的整体管理,数据不便修改; 不利于数据分析和共享; 数据量急剧增长,大量数据不可能长期...

AlbertYang的博客 2990

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JDBC(Java和数据库最基本的用法)

1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 2. 快速入门: * 步骤: 1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.复制mysql-conne.

五指峰的博客 205

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JDBC和数据库连接池

(1)使用JDBC_utils增删改(2)使用JDBC_utils进行查询。

renxiaoyaxiaotia的博客 378

国产数据库快速入门《数据库技术原理及应用》(DM8)

全书共9章:数据库概述、数据库技术基础、关系数据库、关系数据库标准语言——SQL、数据库设计与开发、数据库管理与应用、数据库安全、国产数据库的迁移与适配、DM数据库综合设计示例——在线购物平台。对于已具备数据库设计基础的技术人员,阅读本书可以进一步了解国产数据库应用技术,提高数据库应用开发能力。基于达梦数据库( DM8),特别绍国产信息系统的数据库适配与迁移 符合《信息技术应用创新人才考试评价大纲(数据库工程师)》要求 提供电子课件、教学大纲、习题答案等丰富的教学资源。

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 311

信创数据库快速入门《数据库技术原理及应用》(DM8)

《国产数据库新书出版助力信创产业》摘要:历经三年编撰的国产数据库教材正式出版,为信创产业发展贡献力量。该书提供全套教学资源(含大纲、电子课件),面向高校师生开放样书申请渠道。读者可通过指定网址查看京东购买信息或申请教学样书。(99字)

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 330

【考研考博通用】又全又细的数据库原理导引,过来看了!!!【持续更新】

1、数据库视频学习快速入门 (1)数据库系统原理 浙江大学 陈岭 (2)数据库原理及应用 东南大学 徐立臻 (3)数据库结构大图 2、最全的数据库学习网站,当然有之一 (1)数据库练习-力扣网 (2)数据库练习-牛客网 ...

weixin_44077556的博客 2万+

day69 JavaWeb框架阶段—SpringBoot快速入门(默认配置原理,SpringBoot实战,Thymeleaf快速入门)

0.学习目标 了解SpringBoot的作用 掌握java配置的方式 了解SpringBoot自动配置原理 掌握SpringBoot的基本使用 了解Thymeleaf的基本使用 1. 了解SpringBoot 在这一部分,我们主要了解以下3个问题: 什么是SpringBoot 为什么要学习SpringBoot SpringBoot的特点 1.1.什么是SpringBoot SpringBo...

qq_38454176的博客 1205

Mybaits 快速入门

Mybaits 快速入门

m0_74012211的博客 903

学好数据库,看这9本书就够了

美团点评技术俱乐部 软件开发者编写代码,最终都是要处理数据,因此数据库是必备技能。 悲剧的是,学校里与此最相关的数据库原理课,对初学者的体验却非常不好。相信很多同学都有这样的痛苦经历:一上来就一通数据库历史,罗列一大堆从来没见过以后也不会见到的各种古老数据库;然后是数学公式密集的关系模型、关系代数,一连串不知道什么用却很难懂的范式……全学完了,数据库咋用、咋编程都不知道

限量发行的专栏 10万+

Spring Security快速入门

实际开发的过程中,我们需要应用程序更加灵活,可以在SpringSecurity中创建自定义配置文件Java自定义配置用来管理用户信息,是UserDetailsService的一个实现,用来管理基于内存的用户信息。创建一个WebSecurityConfig文件:定义一个@Bean,类型是UserDetailsService,实现是InMemoryUserDetailsManager@EnableWebSecurity//Spring项目总需要添加此注解,SpringBoot项目中不需要@Bean。

weixin_70705450的博客 1800

如何仅用Java连接数据库全攻略:零基础快速上手

今天,我们来聊一个老生常谈的话题,在当前的软件开发行业中甚至前景,数据库的使用都是不可或缺的重要一环,不像古时候,页面还可以写伪数据,不走库的概念。在当今,数据库连接也是程序与数据库之间通信的关键一环。所以关于在本文中,我将介绍如何使用Java编程语言进行数据库连接,并探讨其应用场景和优缺点等实例阐述。希望能帮助到同学们,并能带初学者快速入门数据库等与Java开发语言连接的知识点,助人为乐,不亦乐乎。在此,本文将会重点介绍,如何使用Java的JDBC。

jjc4261的博客 1839

Mybatis入门

在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。在客户端工具中,编写增删改查的SQL语句,发给MySQL数据库管理系统,由数据库管理系统执行SQL语句并返回执行结果。增删改操作:返回受影响行数查询操作:返回结果集(查询的结果)我们做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库,现在主流的方式是:Mybatis。什么是MyBatis?MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。

qq_63763836的博客 1095
上一篇: 【渗透-主机发现】从0到1,结合工具,入门渗透中的主机发现技术
下一篇: 【MySQL】如何管理数据库
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值