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

【MySQL】存储引擎

文章目录

    • 基础
    • MyISAM
    • InnoDB
      • 外键
      • 文件存储方式
      • 事务
      • redo log
    • 对比和选择

基础

存储引擎是指存储数据,建立索引,查询和更新数据等技术的实现方式。Oracle,Sql Server等数据库只有一种存储引擎,而MySQL提供了多种存储引擎的选择。因为MySQL存储引擎是插件式的,所以用户可以根据需要使用最优的存储引擎,甚至编写自己的存储引擎。

MySQL5.0支持的存储引擎包含:InnoDB、MyISAM、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎是非事务安全表。

创建新表时可以通过ENGINE关键字指定存储引擎。举例,

CREATE table test_tab (id bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT
) ENGINE=xxx;

如果不指定,那么MySQL就会使用默认的存储引擎。MySQL5.5之前的默认存储引擎是MyISAM,5.5以及之后的默认存储引擎是InnoDB。

查看MySQL数据库默认的存储引擎:

show variables like '%storage_engine%'

查看当前数据库支持的存储引擎:

show engines;
-- or show variables like '%have%';

从事务、锁等多个方面,对比一下几种常用的存储引擎,如下表所示:

特点InnoDBMyISAMMEMORYMERGENDB
存储限制64TB没有
事务安全支持表锁行锁
锁机制行锁(适合高并发)表锁表锁支持支持
B树索引支持支持支持支持
哈希索引支持支持
全文索引支持(5.6版本之后)支持
集群索引支持
数据索引支持支持支持
索引缓存支持支持支持
数据可压缩支持N/A
空间使用中等
内存使用
批量插入速度
支持外键支持

下面我们将重点介绍最常使用的两种存储引擎:MyISAM、InnoDB。

MyISAM

MYSQL有哪些存储引擎,各自优缺点。

MyISAM是MySQL5.5以前的默认存储引擎。MyISAM不支持事务、也不支持外键,其优势是访问的速度快,对事务的完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎。MyISAM的优点还包括数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能。

每个MyISAM表在磁盘上存储成3个文件,其文件名都和表名相同,但扩展名分别是:

  • .frm:存储表定义;
  • .MYD:存储数据;
  • .MYI:存储索引;

MyISAM把数据和索引存在不同的文件中,甚至可以把数据文件和索引文件放在不同的路径下,以获得更快速度。如果要设置索引文件和数据文件的路径,需要在创建表的时候通过DATA DIRECTORY和INDEX DIRECTORY语句指定。文件路径需要是绝对路径,并且要有访问权限。

MyISAM表支持3种不同的存储格式,分别是:

  • 静态表:默认的存储格式。静态表中的地段都是非变长字段,这样每个记录都是固定的长度。优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用空间通常比动态表多。
  • 动态表:动态表包含变长字段,记录不是固定长度的。优点是占用的空间相对较少,但是可能会产生碎片,需要定期制定OPTIMIZE TABLE语句。
  • 压缩表:压缩表有myisampack工具创建,占据非常小的磁盘空间。

MyISAM表可能会损坏,原因是多种多样的,损坏的表可能不能被访问,会提示需要修复或访问后返回错误的结果。MyISAM有检查和修复的工具,可以用CHECK TABLE语句来检查MyISAM表的健康,并用REPAIR TABLE语句修复一个损坏的MyISAM表。

InnoDB

InnoDB是MySQL5.5及以后的默认存储引擎。InnoDB存储引擎支持外键和事务,具有事务提交、回滚、崩溃恢复的能力,而且支持行级锁。但是对比MyISAM存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。

InnoDB表的自动增长列可以手动插入,但是如果插入的值是0或者NULL,则实际插入的将是自动增长后的值。

InnoDB的默认事务隔离级别是REPEATABLE READ,并且通过间隙锁策略防止幻读,到达了最高隔离级别的效果。

InnoDB的主键索引是聚簇索引,通过主键进行查询有很高的性能;通过非主键索引查询会查出主键值,如果信息不足够再通过主键值进行查询(二次回表)。非主键索引底层也是B+树,叶子节点存放了主键值,所以如果主键很大的话其他的非主键索引都会很大,因此主键应当尽可能小。

外键

外键是指创建一个表(子表)时,使某一列参考另一个表(父表)中的某一列,其中子表中的这一列称为外键。

在所有存储引擎中,只有InnoDB支持外键。在创建外键时,要求父表中被参考的列必须有对应的索引,子表会在外键上自动创建索引。子表中的外键通常会参考父表中的主键。

举例:

CREATE country_tab (country_id int(11) UNSIGNED PRIMARY KEY AUTO_INCREMENT
) ENGINE=Innodb;CREATE city_tab (city_id int(11) UNSIGNED PRIMARY KEY AUTO_INCREMENT,country_id int(11) UNSIGNED NOT NULL,CONSTRAINT `fk_city_country` FOREIGN KEY (country_id) REFERENCES country_tab(country_id)
) ENGINE=Innodb;

外键的使用条件包括:

  1. 父表和子表两个表必须是InnoDB表,MyISAM表暂时不支持外键;
  2. 外键列必须建立了索引,MySQL4.1.2以后的版本在建立外键时会自动给父表中的列创建索引,但如果在较早的版本则需要显式建立;
  3. 建立外键关系的两个列必须是数据类型相似的,也就是两个列的数据类型必须可以相互转换,比如int和tinyint可以,而int和char则不可以;

在子表创建外键时,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、CASCADE、SET NULL和 NO ACTION:

  • RESTRICT和NO ACTION相同,表示在子表有关联记录的情况下,父表不能更新;
  • CASCADE,表示父表在更新或者删除时,更新或者删除子表对应的记录;
  • SET NULL,表示父表在更新或者删除的时候,子表的对应字段被SET NULL。

外键的优点:可以使得两张表关联,保证数据的一致性和实现一些级联操作。

外键的缺点:表之间存在硬性的关联,删除或更新父表可能会导致额外的操作。所以,不推荐使用外键

文件存储方式

InnoDB存储表文件和索引文件有以下两种方式 :

  • 使用共享表空间存储。这种方式创建的表的表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件。
  • 使用多表空间存储(默认)。这种方式创建的表的表结构同样存在 .frm 文件中,但是每个表的数据和索引单独保存在.ibd文件中。

要使用多表空间的存储方式,需要设置参数innodb_file_per_tab,并且重新启动服务后才可以生效。对于新建的表,按照多空间的方式创建,已有的表仍然使用共享表空间存储。

多表空间的数据文件没有大小限制,不需要设置初始大小,也不需要设置文件的最大限制、扩展大小等参数。对于使用多表空间特性的表,可以比较方便地进行单表备份和恢复操作。

事务

事务是一组SQL语句组成的逻辑操作单元。

事务具有4个特性(简称为ACID):

  • 原子性(Atomicity):事务在逻辑上是不可分割的最小工作单元。事务中的所有操作要么全都执行,要么全都不执行,不能只执行其中的一部分。
  • 一致性(Consistency):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如索引或双向链表)也都必须是正确的。数据库总是从一个一致性的状态转换到另一个一致性的状态。
  • 隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着一个事务所做的修改在最终提交以前,对其他事务是不可见的。简单来说,并发运行的多个事务之间不会相互影响。
  • 持久性(Durability):事务完成之后,它对于数据的修改是永久性的。即使系统崩溃,修改的数据也不会丢失。

默认情况下,事务是默认提交的,可以查看@@autocommit变量:

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

当事务是默认提交时,执行一个SELECT、INSERT、UPDATE、DELETE语句都会创建一个事务并自动提交。

如果需要在一个事务中包含多个语句,可以使用BEGIN (或START TRANSACTION)、COMMIT命令,其中BEGIN (或START TRANSACTION)命令用于开启一个事务,COMMIT用于提交一个事务。

另外,也可以通过设置@@autocommit变量关闭自动提交,

mysql> SET autocommit = 0;

注意,设置autommit 是 session 级别的,就是当前连接更改了 autocommit=0,对其他连接没有影响。

当事务不是自动提交时,执行一个SELECT、INSETRT、UPDATE、DELETE语句会开启一个事务,然后需要手动执行COMMIT命令提交事务,否则数据变动无法被其他的session观察到。

redo log

redo log又称重做日志,是Innodb存储引擎自带的日志,用于记录事务操作的变化。redo log记录的是数据修改之后的值,不管事务是否提交都会记录下来。

在数据库服务器崩溃时,比如如数据库突然断电,redo log文件就能派上用场。InnoDB存储引擎会使用redo log恢复到崩溃前的时刻,以此来保证数据的完整性。

对比和选择

MyISAM是MySQL5.5版本之前的默认数据库引擎。MyISAM性能比较好,支持全文索引、数据压缩、空间函数等,但不支持事务、行级锁和崩溃恢复。InnoDB是MySQL5.5及以后的默认存储引擎。InnoDB存储引擎支持外键和事务,具有事务提交、回滚、崩溃恢复的能力,而且支持行级锁。

两者的对比:

  • 外键:MyISAM不支持,而InnoDB支持。
  • 事务和崩溃恢复:MyISAM不提供事务支持。InnoDB提供事务支持,具有事务提交回滚、崩溃修复的能力。
  • 行级锁:MyISAM只有表级锁,而InnoDB支持行级锁和表级锁,默认为行级锁。
  • MVCC:只有InnoDB支持。应对高并发事务,MVCC比单纯的加锁更高效。

绝大部分情况,我们都应该使用InnoDB 存储引擎,因为其支持事务和崩溃恢复。但是,在某些情况下使用 MyISAM 也是合适的,比如读密集、对事务的完整性没有要求的场景。


相关文章:

  • 《MLB美职棒大联盟》:年度最佳教练奖·棒球1号位
  • 19、Javaweb案例-登录功能
  • 【Git :分布式版本控制工具】
  • jvm面试题汇总
  • 电商项目之同一笔单多次收款成功
  • 零基础学JavaWeb开发(二十二)之 springmvc入门到精通(2)
  • Issues with peer dependencies found
  • CSS 艺术之心形-彩虹-加载动画
  • Python---自动生成二维码
  • Java集合常见面试题(四)
  • input 实现回车失焦,考虑输入法的情况
  • 高等数学【合集2】
  • 雅睿生物在创业板IPO终止:安信证券为保荐人,曾计划募资7.5亿元
  • 【操作系统】—— Windows常用快捷键(带你快速了解)
  • 基于Andriod的智慧校园卡系统的设计与实现
  • (18)go-micro微服务ELK介绍
  • OSG三维渲染引擎编程学习之二十八:“第三章:OSG场景组织” 之 “3.10 Switch开关节点”
  • 动态站点地图提交百度收录
  • 【价格型需求响应】基于Logistic函数的负荷转移率模型需求响应研究(Matlab代码实现)
  • javascript中Math.random()产生随机数进行随机点名
  • Hyperbolic geometry (双曲几何简介)
  • 【Leetcode每日一题】34.在排序数组中查找元素的第一个和最后一个位置|二分求下标
  • 【JavaEE】如何开始基础的Servlet编程(基于Tomcat服务器)
  • 【SpringCloud20】SpringCloud Alibaba Seata处理分布式事务
  • MODBUS总线的学习笔记
  • OSG三维渲染引擎编程学习之二十七:“第三章:OSG场景组织” 之 “3.9 AutoTransform自动对齐节点”
  • 最实用的 Docker 知识(一)
  • Leetcode:78. 子集、90. 子集 II(C++)
  • 1月23日Linux c编程之Makefile
  • UPS BP650CH实现nas自动关机
  • MySQL —— 库操作
  • ❤️如何实现所谓的“关键字传参”--理论+易懂版⭐
  • 【JavaEE】认识线程Thread类及常用方法线程状态
  • Shell语法
  • MP-2平面烟雾气体传感器介绍
  • springboot中restful风格请求的使用
  • 【19】C语言 | 三子棋
  • 【每日一题Day97】LC1828统计一个圆中点的数目 | 模拟
  • 议论文书写总结
  • Day869.索引(下) -MySQL实战
  • 离线召回与排序介绍
  • 【Ajax】防抖和节流
  • CMAKE
  • 【面试克星】【公式少代码少话多】Vins-Mono预积分相关知识点总结与概述
  • C语言基础知识(36)
  • Python实现一个简易的CLI翻译程序
  • SQL学习
  • 【计组笔记01】计算机组成原理之冯诺依曼体系结构、计算机编码、定点数的表示、原码和补码的乘除法
  • 人世正道沧桑,她亦奋力向前 --读《李清照传》有感
  • Android 深入系统完全讲解(37)
  • 【QT5.9】与MFC对比学习笔记-感悟篇2【2023.01.23】
  • ARP渗透与攻防(五)之Ettercap劫持用户流量
  • C++初阶--继承
  • 学习率衰减、局部最优、Batch归一化、Softmax回归
  • 树状数组(代码模板和原理详解)
  • 我的第一次真实对国外某购物平台web漏洞挖掘
  • Intellij IDEA 丢失 Project Structure 问题
  • 分享139个ASP源码,总有一款适合您
  • Java | 解决并发修改异常问题【CurrentModificationException】
  • Mybatis遇到的脑残问题
  • 为了方便项目打包,我用Node写了个git-tag工具
  • RK3399平台开发系列讲解(内存篇)访问虚拟内存的物理内存过程
  • Essential C++第五章习题
  • JDK8 新特性之并行的Stream流
  • Cesium:Indexed 3D Scene Layers (I3S)加载
  • 【代码阅读】MSC-VO
  • Python基础学习六
  • 使用 AJAX+JSON 实现用户查询/添加功能
  • 在linux下安装docker
  • 【Hadoop】HDFS+Shell实践(定时上传数据至HDFS)
  • 《Rust权威指南》读书笔记9 - 泛型、特性、生命周期
  • 文本情感分类TextCNN原理+IMDB数据集实战
  • 【蓝桥杯】历届真题 作物杂交(省赛)Java
  • Tkinter的Listbox控件
  • 进阶C语言 第二章-------《进阶指针》 (指针数组、数组指针、函数指针、回调指针)知识点+基本练习题+深入细节+通俗易懂+完整思维导图+建议收藏
  • 梯度之上:Hessian 矩阵
  • Ubiquiti MAC Address Changer 3.0 Crack
  • 机器学习(五):机器学习算法分类
  • 路由处理及功能(实现了权限控制vue admin)
  • 【JavaSE专栏5】Java 基本数据类型和取值范围
  • 英语学习打卡day4
  • 【数据库概论】3.1 SQL简述、数据定义和索引
  • 【C语言进阶】一文带你学会C语言文件操作
  • 欧几里得与扩展欧几里得算法(含推导过程及代码)
  • 【My Electronic Notes系列——晶闸管】
  • 安装配置Ecplise插件PyDev 8.3.0
  • LeetCode刷题记录---贪心算法
  • 蓝桥杯-刷题-补基础
  • 多线程不安全函数的理解
  • 插入排序算法的实现和优化~
  • 协调中心性能大对比:zookeeper是如何解决负载均衡问题的
  • Email Signature Manager 9.3 Crack
  • CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂
  • 2022——>2023
  • 【手写 Vue2.x 源码】第四十二篇 - 组件部分 - 组件挂载流程简述
  • 数据结构 最短路径课设(源码+实验报告+视频讲解)(用了自取)
  • 高等数学(第七版)同济大学 习题12-6 个人解答
  • Nacos集群搭建
  • JVM快速入门学习笔记(三)
  • 作为项目经理,如何做好项目进度管理
  • Linux进程信号
  • 我的1周年创作纪念日
  • 量子力学奇妙之旅-微扰论和变分法
  • CS61A 2022 fall HW 01: Functions, Control
  • MySQL主从复制、读写分离
  • NR PUSCH(七) 相干传输
  • 【Java|golang】1828. 统计一个圆中点的数目
  • Nginx与LUA(7)
  • 设计模式 - 六大设计原则之LoD(迪米特法则原则)
  • C++程序设计——动态内存管理
  • Leetcode:93. 复原 IP 地址(C++)
  • 《TPM原理及应用指南》学习 —— TPM实体4
  • 树,堆,二叉树的认识
  • OSG三维渲染引擎编程学习之二十五:“第三章:OSG场景组织” 之 “3.7 PositionAttitudeTransform位置姿态变换节点”
  • 几种觉排序优劣
  • 【C++】右值引用和移动语义 | 新的类功能 | 可变参数模板
  • 园区网典型组网架构及案例实践
  • 【学习Arduino单片机AD传感器采样的十大滤波算法】
  • PAT 1074 宇宙无敌加法器(C++解法)
  • Kubernetes:基于命令行终端UI的管理工具 K9s
  • 【JavaSE】一文看懂构造器/构造方法(Cunstructor)
  • 排序算法: 数据的离散化(排序+去重 C++例题实现)
  • 【每日一道智力题】之海盗分金币(上)
  • TypeScript
  • C++第七讲——Demon和Angela的魔法之旅
  • 美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)
  • CSS样式基础内容2
  • 【C++】类和对象(上)---什么是类?
  • 【头歌】单链表的基本操作
  • ConcurrentHashMap的死循环问题
  • C++6:STL-模拟实现string
  • 一文吃透python多线程(全面总结)
  • 计算机基础——无处不网络(2)
  • Docker安装教程(看这篇就够了)
  • 高性能 Java 框架。Solon v1.12.3 发布(春节前兮的最后更)
  • 内存函数及其模拟实现
  • Spring介绍
  • scala函数柯里化
  • C++基础回顾
  • 深度学习数据自动标注器开源 目标检测和图像分类(高精度高效率)
  • Redis脑裂为何会导致数据丢失?
  • Spring控制反转(IoC)和依赖注入(DI)
  • 客快物流大数据项目(一百零八):Spring Cloud 技术栈
  • CUDA编程笔记(5)
  • 【SpringCloud】Nacos注册中心、配置中心用法与原理(下)
  • Python 超强命令行解析工具 argparse !
  • 【C++】lambda 表达式 | 包装器
  • JQUERY案例
  • 第九层(1):初识STL
  • 【蓝桥云课】最大公约数与最小公倍数
  • Redis常用的数据类型
  • 抖音小黄车挂淘宝店相关问题记录
  • 【C语言进阶】指针进阶(干货)
  • 棋盘放麦子-蓝桥杯
  • 【Hadoop】HDFS高可用与高扩展原理分析(HA架构与Federation机制)
  • 23种设计模式(二十二)——访问者模式【行为变化】
  • 3.1 卷积神经网络的应用领域|卷积的作用|卷积特征值的计算方法|得到特征图表示|步长与卷积核大小对结果的影响|边缘填充方法
  • 安卓S开机动画流程
  • react源码:目录结构、调试源码
  • 车辆占用应急车道识别抓拍系统 opencv
  • 2022年“网络安全”赛项黑龙江省赛选拔赛 任务书
  • Webpack5 教程 (7) --- 减少代码
  • Elasticsearch7.8.0版本入门——JavaAPI操作(环境准备)
  • 常见递归模式
  • 偷偷理解Java和Scala中==和equals()的区别
  • 基于双层优化的微电网系统规划设计方法(Matlab代码实现)
  • STL - 常用算法
  • 基于Springboot+Vue+Sercurity实现的大学生健康管理平台
  • Linux内核驱动初探(二) TI声卡
  • 有关Java多线程的几个概念
  • JavaEE 突击 5 - Spring 更简单的读取和存储对象(2)
  • 约数个数及约数之和知识点(含公式)
  • 50个常用的 Numpy 函数详解
  • JavaEE5-Spring更简单的读取和存储对象
  • 过完2022,依然记得仰望星空
  • MyBatis 连接数据库与增删改查
  • Java标准输入输出流(in/out)
  • 【Python百日进阶-Web开发-Linux】Day236 - Win11安装Windows Subsystem for Android(WSA)
  • java8新特性
  • cmake 目录
  • C++进阶 哈希表封装unordered_map和unordered_set
  • Spring事务、事务隔离级别、事务传播机制
  • 【13】C语言 | “go_to“语句
  • Vue3悬浮返回主页按钮设计与实现
  • XILINX FPGA OV5640 摄像头驱动(一)
  • 合宙ESP32C3上手使用
  • 英语学习打卡day3
  • 2.4总线操作和定时
  • 8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
  • 基于networkx聚类技术—复杂网络社团检测(附完整版代码)
  • avb校验相关与块校验原理
  • SpringBoot 统一功能处理
  • 基于PythonOpenCv的视频图像处理
  • 力扣sql简单篇练习(五)
  • Java---微服务---SpringCloud(2)
  • 【手写 Vue2.x 源码】第四十一篇 - 组件部分 - 生成组件的真实节点
  • 02 |「数据结构、逻辑结构、物理结构」基本概念简析
  • 06_平台总线匹配规则,自己搭建总线xbus
  • 什么是数据库连接池?Druid(德鲁伊)连接池的使用详细解读
  • 自己动手写一个操作系统——MBR(1)
  • Redis在秒杀场景的作用
  • await 返回了什么
  • pytorch零基础实现手写数学符号识别项目(三)——模型训练与预测
  • eBPF 入门开发实践指南五:在 eBPF 中使用 uprobe 捕获 bash 的 readline 函数调用
  • windows权限维持方法详解
  • 【LeetCode】二叉树的序列化与反序列化 [H](二叉树)
  • 【JavaSE专栏4】关键字、标识符和命名规范
  • 使用小程序+网页简易实现多客户端实时弹幕
  • 【JavaScript】多态(Symbol),迭代器接口,getter/setter
  • Java/JavaScript有哪些图形图像处理的框架?
  • Unity HurricaneVR 插件中的 VRIK 设置
  • Maplab 2.0发布:多传感器融合的SLAM框架,支持多机器人、语义回环检测功能
  • 汇报写作学习总结
  • Java中的hashCode,真的很容易弄懂
  • 域环境搭建
  • 单片机扫盲
  • C++:类的构造函数与析构函数
  • Canal实时同步发送JSON数据示例代码
  • 《TPM原理及应用指南》学习 —— TPM实体3
  • 面试官问我有没有分布式系统开发经验,我一脸懵圈…
  • 七、python-PySpark篇(黑马程序猿-python学习记录)
  • redis 数据库简介
  • 多线程(5)
  • mysql锁
  • 你对CSS权重真的足够了解吗?
  • E2PROM 蓝桥杯 stm32 AT24C02读写函数
  • 【SpringBoot】SpringBoot三层开发
  • Redis数据类型简介
  • 深度学习TensorFlow—GPU2.4.0版环境配置,一文简单易懂详细大全,CUDA11.0、cuDNN8.0
  • YOLOv5/v7 引入 YOLOv8 的 C2f 模块
  • 1月24日,30秒知全网,精选7个热点
  • MySQL(五):事务简介、事务的特性、事务的概念及状态、支持事务的引擎
  • 顺序表的具体使用方法.数据解构(二)
  • UE INI文件操作 INI File Operation [ Read / Write ] 插件说明
  • 【程序环境和程序预处理】万字详文,忘记了,看这篇就对了
  • 从零开始的python基础教程
  • STL分析(九 适配器)
  • MySQL间隙锁详细分析
  • 使用C++实现学委作业管理系统
  • 【IDEA】自动部署SpringBoot Jar包到远程服务器并通过脚本启动jar
  • 【My Electronic Notes系列——三极管】
  • 【操作系统】—— 如何安装双系统与多系统(带你快速了解)
  • OSG三维渲染引擎编程学习之八:“第一章:OSG介绍” 之 “1.8 基于QT的第三方库编译”
  • 三、利用迁移学习进行模型微调(Datawhale组队学习)
  • Kubernetes:分享一个很简洁的 k8s 管理工具 Skooner
  • <C++>哈希
  • Day09 - 子类父类多继承多层继承多态
  • Python---字典相关知识
  • fpga实操训练(一个典型的fpga系统)
  • 【剧前爆米花--爪哇岛寻宝】Java中有关异常类的详细讲解
  • Centos7 Docker安装APISIX
  • 06-jquery函数
  • C语言中不定参数 ... 的语法、函数封装
  • Cadence PCB仿真使用Allegro PCB SI生成振铃ringing仿真报告及报告导读图文教程
  • Kubernetes:通过 kubectl 插件 kubectl-tree 查看API对象层级关系
  • 博客系统项目的自动化测试
  • 深入剖析JVM垃圾收集器
  • 【并发编程十二】c++20线程同步——信号量(semaphore)
  • 深度估计算法原理与论文解读
  • 【Android】手机安装Termux运行nodejs学习Javascript编程入门
  • JAVA练习29
  • MySQL —— 数据库基础
  • 【HBase入门】2. 集群搭建
  • 【蓝桥杯】简单数论2——快速幂矩阵快速幂
  • 十二、网络基础2
  • 【数据结构】二叉搜索树的实现
  • 【文本分类实战练习】使用多个经典神经网络模型(词嵌入 词向量 LSTM CNN ),含问题记录及解决。
  • JDBC快速入门,如何使用JDBC操作数据库?
  • 20230123英语学习
  • 7个流行的强化学习算法及代码实现
  • Spring笔记上(基于XML配置)
  • 【目标检测论文解读复现NO.25】基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法
  • Go Data race and Vector clock
  • 前后端联调经验总结
  • Java多线程(二)—— ReentrantLock 源码分析
  • Springcloud 笔记
  • C++虚继承,虚基表 ,菱形继承以及解决方法
  • 我的硕士前半生
  • 【设计模式】我终于读懂了外观模式。。。
  • 【苹果家庭群发推】软件keychain中刚打开的证书下载的证书文件要决不会报错 UNTimeIntervalNotificationTrigge
  • 《Rust权威指南》读书笔记8 - Error handling 错误处理
  • CSS 特效之心形-彩虹-加载动画
  • 使用 Grafana 请求API接口
  • cmake 04 使用 python 管理 cmake 工程
  • POJ 1845 Sumdiv题解(C++ 整数惟一分解定理+分治法求等比数列之和+快速幂)
  • macm1使用Docker制作jar镜像并连接宿主机mysql
  • Vue TypeScript 使用eval函数的坑
  • CSDN原创图片链接失效分析
  • postgresql源码学习(52)—— vacuum①-准备工作与主要流程
  • 学习记录668@项目管理之项目沟通管理和干系人管理
  • Linux条件判断(全)
  • 【手写 Vue2.x 源码】第四十篇 - 组件部分 - 组件的生命周期
  • 01_kobject和ktype创建设备文件和设备目录
  • 大数据之HBase集群搭建
  • 我的创作纪念日——“永远相信美好的事情即将发生”
  • 期货交易原理(期货交易原理与实务)
  • C语言基础知识总结大全(五)
  • Linux——innode
  • 一本通-1033:计算线段长度
  • Python数模笔记-模拟退火算法(5)求解旅行商问题的联合算子模拟退火算法
  • 【青训营】Go语言的基本语法
  • HashMap1.7中的线程安全问题
  • 数学表达式的处理
  • casbin权限和配置文件的理解
  • 详解1247:河中跳房子(二分经典例题)
  • Yolo系列理论
  • 尚硅谷前端ES6-ES11
  • 08 |「双指针」算法分析
  • ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1
  • 高等数学【合集】
  • sbt编程语言scala的构建工具配置及项目构建(附带网盘下载)
  • 【蓝桥杯】历届真题 质数行者(决赛)Java
  • Java多线程(二)——ReentrantLock源码解析(补充2——可打断的锁)
  • 如何与他人交流
  • JavaScript 入门基础 - 对象(五)
  • 网关超详解
  • Multiple Dimension Input 处理多维特征的输入
  • React源码之render过程中发生了什么?
  • java spring IOC xml 方式 内部Bean注入
  • JavaScript 输出
  • 《啊哈算法第四章之bfs》(17张图解)
  • ArcGIS Pro脚本工具(17)——生成多分式标注
  • 【手写 Vue2.x 源码】第三十九篇 - 组件部分 - 创建组件虚拟节点
  • 【MySQL进阶】MySQL事务详解
  • Maplab:一个用于视觉惯性建图和定位研究的开源框架
  • 代码随想录--字符串习题总结
  • 【pytorch】.mul .add_ 和直接 + * 有什么区别
  • 2022年度总结:反思与回顾
  • 动态规划(基础)
  • 分享129个ASP源码,总有一款适合您
  • 第55章 SQL EXISTS 运算符教程
  • 【模拟CMOS集成电路】电路失调与CMRR—— 随机失调与系统失调分析(1)
  • 《MLB美职棒大联盟》:赛扬奖·棒球1号位
  • 文件操作和IO
  • java入门作业-DAO,读取sql数据库
  • Python基础学习 -- 文件操作
  • Python 匿名函数
  • STM32编写OLED显示屏驱动
  • 春节假期后,如何快速让员工恢复上班的元气和状态?
  • 【Unity Shader 赛博小人01】UV准备 SD制作特效贴图
  • Git使用Merge和Rebase区别及心得技巧
  • 20230123使AIO-3568J开发板在Android12下永不休眠
  • 【回望2022,走向2023】一个双非二本非科班的学生的旅途
  • 【经典算法】双指针(尺取法):爱,是双向奔赴,还是你追我赶?
  • Redis内部的阻塞式操作以及应对方法
  • 2023年大年初一 —— 牛客网刷题经验分享~
  • 一、pyhon准备工作篇(黑马程序猿-python学习记录)
  • AcWing第87场周赛题解
  • 【每日一道智力题】之蚂蚁走树脂和绳子秒表
  • 【Vue】我的尚品汇项目笔记---20230109~20230120
  • eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具
  • 数据结构 最短路径课设(源码+实验报告+视频讲解)(不要钱、用了自取)
  • autojs模仿QQ长按弹窗菜单(二)
  • python能做的100件事03-python爬虫
  • 【求职】济南地区-运维工程师
  • SpringBoot+Vue项目月度员工绩效考核管理系统
  • 实现升序降序排列问题
  • C++普通类,派生类,虚基类的成员构造顺序以及构造函数调用顺序详解
  • 每日算法4 —— UVa10474 大理石在哪里? Where is the Marble?
  • 【进击的算法】基础算法——动态规划
  • logstash + logback实现分布式日志采集
  • 在java中操作redis
  • 线程常用方法及常见状态
  • JDK8 新特性之Stream流方法详解
  • 设计模式之原型模式
  • 【C++】从0到1入门C++编程学习笔记 - 核心编程篇:类和对象(下)
  • 7.Java判断和循环+面试相关力扣算法题详解
  • 【Kotlin】泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )
  • Java 23种设计模式(2.创建者模式-工厂设计模式)
  • Java基础进阶
  • 【附代码】python绘图集锦-关系Correlation图
  • 【蓝桥杯】历届真题 蓝肽子序列(决赛) Java
  • 【大数据hive】hive ddl语法使用详解
  • linux系统中使用QT实现APP开发的基本方法
  • Linux基本功系列之rename命令实战
  • 2023-1-22 刷题情况
  • Java面试题,Spring Bean的注册与依赖注入
  • 什么是数字经济
  • Java 集合之Stream流
  • Tkinter的Entry与Text
  • 二维费用背包问题
  • while循环——求100以内偶数和
  • 04 |「链表」简析
  • RESTful开发风格 与 SpringMVC跨域访问
  • eBPF 入门开发实践指南二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用
  • 【ARM体系结构】之相关概念与公司简介
  • 超级完整的 Git 下载、安装与配置
  • Tkinter的Menu与Messagebox
  • (考研湖科大教书匠计算机网络)第二章物理层-第一、二节:物理层基本概念和传输媒体
  • ARP渗透与攻防(一)之ARP原理
  • English Learning - L1-13 主动脉修饰 (上) 2023.1.16 周一
  • 从零实现一个组件库(一)项目环境搭建
  • acwing基础课——快速幂
  • 双指针思想,c语言
  • 【HTML | CSS】春节将至,为网页挂上精美的灯笼吧(附源码)程序员的浪漫
  • 第三章 AOP
  • 【leetcode】学了栈和队列却觉得无用武之地?试试这几道题目吧!
  • CMMI之工程类
  • 【算法题】1604. 警告一小时内使用相同员工卡大于等于三次的人
  • 【Leetcode面试常见题目题解】8. 合并两个有序链表
  • linux系统中利用QT实现视频监控的基本方法
  • Python数据可视化之条形图和热力图
  • 浅析Spring的五大类注解和方法注解
  • 【蓝桥杯】历届真题 蓝肽子序列 Java
  • Kotlin 中 infix 函数的应用:构建清晰易读的语法
  • 机器学习(四):机器学习工作流程
  • 零基础学MySQL(三)-- 对表中数据的增删改【新年快乐】
  • Nacos注册中心
  • PAT 1058 选择题(C++实现)
  • 【手写 Vue2.x 源码】第三十七篇 - 组件部分 - 组件的合并
  • 【Java】比较器 Comparator Comparable
  • HTTPS 是这样握手的
  • 【每日一题Day96】LC2303计算应缴税款总额 | 模拟
  • 看我使用Python秒变高级程序员
  • 目录 行盒的盒模型 显著特点 行块盒 空白折叠 可替换元素 和 非可替换元素 分页例子 display:inline-block object-fit
  • 函数式编程之stream开发实战
  • 基于android手机选课系统的设计与实现
  • 【Android笔记68】Android之相机控制类Camera相关操作的API介绍(Camera已过期不推荐)
  • LeetCode_单周赛_329
  • 第十届蓝桥杯省赛 C++ A/B组 - 完全二叉树的权值
  • <Python的文件>——《Python》
  • 扩散模型 Diffusion Models 入门到实践 | 论文、学习资源、课程整理
  • Linux常用命令——strace命令
  • 字节青训前端笔记 | Web安全
  • Java | 浅谈多态中的向上转型与向下转型
  • 【MySQL】第九部分 MySQL信息函数
  • 生物化学 电阻抗成像OpenEIT,Dbar算法,数据集等(暂记)
  • python基础——列表推导式
  • 自定义Filter后,我的业务代码怎么被执行了多次?
  • 5-2中央处理器-指令周期的数据流
  • day25-类加载器反射
  • 3.5 拉普拉斯定理
  • 【操作系统】—— Windows卸载与清除工具“ Geek 与 CCleaner ” (带你快速了解)
  • Socket通信
  • 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 435. 无重叠区间
  • Java EE之线程编(进阶版)
  • 零入门容器云实战之文章目录列表
  • expect实现无交互操作
  • Linux进程学习【一】
  • 跨平台freebasic集锦(4)-基本语法(3)-dim(3)
  • 2022年,经历了两段实习后,我学会了……
  • JVM面试一
  • Sprig框架集成(SSM框架) | Sping+SpringMVC+Mybatis
  • 【计算机网络】HTTP/HTTPS
  • 【MySQL】第八部分 加密和解密函数
  • 线性代数[向量]
  • PHP XML DOM
  • Couplet | 用Python写一副对联送给诸位科研汪!~
  • 线段树学习
  • 分享130个ASP源码,总有一款适合您
  • 高等数学(第七版)同济大学 习题12-3 个人解答
  • linux shell脚本学习
  • 当你编码时
  • 汇编【王爽】实验8、9
  • 第四章必备前端基础知识-第二节2:CSS属性
  • P2615 [NOIP2015 提高组] 神奇的幻方
  • Allegro如何统计包含过孔长度的网络长度操作指导
  • Java-线程基础
  • 【C++】从0到1入门C++编程学习笔记 - 实战篇:职工管理系统
  • 目标检测论文解读复现【NO.24】改进 YOLOv5s 的轨道障碍物检测模型轻量化研究
  • 将字符串代码编译为字节代码对象 compile()
  • Java的基本语法格式
  • 进程概念——Linux
  • Java面试题,JVM相关问题
  • Windows 服务器刷题(2)(带答案)
  • liunx centos9安装nodejs并搭建vue 图文详解手把手教程
  • Android 国际化
  • 【基础】BMP格式
  • 使用账号激活MATLAB软件
  • 【ArcGIS微课1000例】0059:三种底图影像调色技巧案例教程
  • Java基础练习题(四)
  • 从0开始深入学习Elasticsearch
  • JQUERY总结(四)
  • Week 12
  • 狂神。JVM入门学习笔记。
  • HDFS高可用单NameNode从standby恢复为active(二)
  • day23-网络编程01
  • Solid Edge 放样使用引导曲线
  • 基于双层共识控制的直流微电网优化调度(Matlab代码实现)
  • 使用Py6S计算瑞利反射率教程
  • 走进 HTML
  • 我用笨办法啃下了一个开源项目的源码!
  • 第四十四章 动态规划——背包问题模型(一)
  • 3.7 克拉默法则
  • Ubuntu显示优化 动画
  • 动态规划完全背包 fullbackpack
  • 第十三届蓝桥杯省赛 JAVA A组 - 蜂巢
  • C语言-qsort函数基本使用
  • 创建者模式-建造者模式
  • 卷积神经网络进阶--基础知识
  • 十六进制转八进制+超大数据处理(蓝桥杯基础练习C/C++)
  • 《深入浅出计算机组成原理》学习笔记 Day7
  • Windows SDK编程 初学笔记
  • vue学习笔记(更新中)
  • 2023年springboot面试题集合
  • Python烟花秀
  • 左值和右值的概念
  • pytorch 神经网络笔记-RNN和LSTM
  • KK集团再冲刺港交所上市:期内被罚款30万元,曾存在“二清”问题
  • 【JavaSE】保姆级教程|1万字+10张图学会类与对象--建议收藏