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

网站开发工具有asp/青岛seo软件

网站开发工具有asp,青岛seo软件,学做app软件在哪里学,淮南网课文章目录 1.Binlog二进制日志的基本概念1.1.什么是Binlog二进制1.2.Binlog日志的三种记录格式1.3.Binlog日志中Event事件的概念 2.开启MySQL的Binlog二进制日志3.查看Binlog二进制日志中的Event事件信息3.1.查看当前数据库有那些Binlog日志3.2.产生一些DDL/DML语句3.3.观察Binl…

文章目录

    • 1.Binlog二进制日志的基本概念
      • 1.1.什么是Binlog二进制
      • 1.2.Binlog日志的三种记录格式
      • 1.3.Binlog日志中Event事件的概念
    • 2.开启MySQL的Binlog二进制日志
    • 3.查看Binlog二进制日志中的Event事件信息
      • 3.1.查看当前数据库有那些Binlog日志
      • 3.2.产生一些DDL/DML语句
      • 3.3.观察Binlog日志中产生的Event事件
    • 4.分析Binlog日志内容的技巧
    • 5.读取Binlog日志记录的DML语句详细内容

1.Binlog二进制日志的基本概念

1.1.什么是Binlog二进制

MySQL数据库中的Binlog二进制日志中,记录了所有的DDL数据库定义语句和DML数据操纵语句,但是在二进制日志中不包括DQL数据查询语句。

Binlog二进制日志会记录数据的所有操作记录,几乎是实时的,当数据库发生故障导致数据丢失,并且也没有备份时,可以从Binlog日志中恢复数据库的数据。

Binlog日志的作用:

  • 灾难时可恢复数据库中的数据。
  • MySQL主从复制通过Binlog来同步数据。

Binlog日志默认会保留30年内产生的二进制日志,并且每当重启MySQL后,就会向新的Binlog日志中写入数据。

1.2.Binlog日志的三种记录格式

针对Binlog的日志记录格式有ROW、STATEMENT、MIXED三种。

1)ROW格式

ROW格式是MySQL针对Binlog日志的默认记录格式,简称RBR,是针对行的记录模式,对表中的每一行数据变更都进行记录。

ROW格式的记录由于是针对每一行的变化都进行记录,就会导致日志量级很大,占用部分磁盘空间,并且可读性交叉,会通过自己的语法格式记录一行数据修改前后的内容,虽然可读性差,但是记录到日志里的行变化数据是非常准确的,事务提交后数据变动前后是什么样子记录到日志里就会是什么样子,非常的严谨。

ROW会将数据变化的前后内容都以独特的格式记录在日志中,因此当需要通过Binlog进行日志恢复时,不会出现由于某个字段是函数写入的值,例如时间函数这类的,ROW格式的Binlog记录的旧数据是什么样子的不会因为函数的取值的变化而变化,保证数据的一致性,避免恢复后的数据异常。

ROW格式也是MySQL 5.7默认的格式,企业环境中建议使用。

查看ROW格式的Binlog时需要通过mysqlbinlog命令的-v参数将Binlog中的数据重构成我们易读取的SQL语句。

2)STATEMENT格式

SYAYEMENT格式是针对SQL语句进行记录的,简称SBR,当数据有变化时,将对应的SQL语句记录到日志中,日志里相对于ROW格式来说很少,例如当用户删除了表中id>1000的数据,对于SYAYEMENT格式就只会记录这一条SQL语句,而ROW格式会记录每一行数据执行前后的内容。

SYAYEMENT格式的可读性很强,但是对于语句中的某个字段值是以函数来取值的,就会造成数据从错乱,例如时间函数,当时写在表中的时间是以now函数获取的那个时候的时间,而数据恢复时又是通过now函数,获取的则是当前时间,就会造成数据不一致。

3)MIXED格式

MIXED格式是混合类型的格式,即记录STATEMENT格式又会记录ROW格式,由MySQL自己判断什么样的数据是以什么样的格式去记录。

通过以下命令可以查看当前数据库Binlog的记录格式。

image-20220630215700128

1.3.Binlog日志中Event事件的概念

Event事件是Binlog二进制日志中记录的最小单元,在Binlog中DDL、DCL等语句一个语句就是一个Event事件。

在Binlog日志中对于DML语句来讲,只会记录已经提交事务的DML语句,

如下所示:一组事务大概分成了四个Event事件,每个Event事件都有开始标识位和结束标识位作为位置号,在起始位置和结束位置内记录的就是事件的内容,也就具体SQL。

一个事件的结束标识位和下一个事件的开始标识位是一样的,也就表示每一个事件之间是由顺序关联的,不会出现偏差,例如begin这个事件的开始标识位是120,结束标识位是340,DML1的开始标识与begin的结束标识是相同的,都是340。

这个开始标识和结束标识相当于一个位置号,都是顺序记录的。

				开始标识  结束标识
begin;			   120	   340DML1		   340	   460DML2		   460     550
commit;             550     760

当我们需要只针对Binlog中部分的事件进行数据恢复,就可以通过开始标识和结束标识(Position号)来进行截取,通过Position号截取的内容要比时间截取的更加精准。还是如上所示,当我们要截取这个事务的日志数据,要进行数据恢复,那么就只需要截取开始标识位120到结束标识位760之间的事件信息,进行数据恢复即可。

2.开启MySQL的Binlog二进制日志

在MySQL5.7版本中Binlog默认不开启。

mysql> show variables like '%log_bin%';
+---------------------------------+-----------------------------+
| Variable_name                   | Value                       |
+---------------------------------+-----------------------------+
| log_bin                         | OFF                         |				#OFF表示关闭binlog
| log_bin_basename                |                             |
| log_bin_index                   |                             |
| log_bin_trust_function_creators | OFF                         |
| log_bin_use_v1_row_events       | OFF                         |
| sql_log_bin                     | ON                          |
+---------------------------------+-----------------------------+

开启Binlog日志。

1.在主配置文件中开启Binlog
[root@mysql ~]# vim /etc/my.cnf 
[mysqld]
server_id=1
log_bin=mysql-bin					#binlog日志的名称,不指定路径默认在数据目录创建,mysql-bin只是binlog的前缀
binlog_format=row					#binlog的记录类型
max_binlog_size=1G					#binlog日志文件的大小2.重启MySQL
[root@mysql ~]# systemctl restart mysqld3.查看生成的Binlog日志
[root@mysql ~]# ll /data/mysql/mysql-bin.*
-rw-r----- 1 mysql mysql 154 630 17:00 /data/mysql/mysql-bin.000001
-rw-r----- 1 mysql mysql  19 630 17:00 /data/mysql/mysql-bin.index
#二进制日志默认从000001开始,每当重启一次MySQL就会产生一个新的的binlog日志

每当重启一次数据库或者当Binlog日志容量超出最大限制时,就会产生一个新的Binlog日志文件,在mysql-bin.index文件中记录了当前MySQL实例中所有的Binlog日志文件有哪些以及其路径,MySQL在读Binlog日志时首先会读取index这个文件。

image-20220630170219022

3.查看Binlog二进制日志中的Event事件信息

我们可以通过命令来查看当前数据库正在往哪一个Binlog日志文件中写入日志数据,并且我们再前面也提到了针对DDL、DCL、DML这类的语句,每一条都是以一个事件记录在Binlog日志中的,我们可以通过通过命令来查看指定的Binlog日志文件中有那些事件,还可以看到事件的内容是什么,也就是了解这个事件做了什么操作。

当我们清楚了Event事件之后,就可以再通过命令去查看Event事件中的具体内容,包括修改数据的SQL等等。

3.1.查看当前数据库有那些Binlog日志

首先来查看一下当前数据库中有那些Binlog日志文件,以及正在使用的是哪个Binlog日志文件。

通过以下命令可以查看当前数据库中有哪些Binlog日志文件,一般来说最后一行就是我们当前正在使用的Binlog日志文件,第二列的File_size并不是说该Binlog日志文件当前的容量有多大,这个File_size指的是这个Binlog日志中最大结束标识位是多少,也就是Position号偏移量记录到了那里。

mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       177 |
| mysql-bin.000002 |       154 |
+------------------+-----------+

通过以下命令可以看到当前数据库正在往哪一个Binlog日志中记录数据,当前数据库正在往mysql-bin.000002日志文件中写入数据,Position一列记录的就是该日志文件中目前记录到的结束标识位号,也就是最大的标识位号,默认从4开始,1-3作为保留,另外前154个标识位号是记录MySQL的一些信息的,是MySQL5.7版本独有的特性,后面的字段是主从复制中才会用到的。

可以看到这个Position号与前面的File_size是一致的,所以更加证明了前面那个命令显示的不是文件大小,而是该日志中记录到哪一个结束标识号了。

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

3.2.产生一些DDL/DML语句

产生一些DDL、DML语句,方便后面观察Binlog日志中针对每一条语句产生的时间信息。

1.创建个数据库
mysql> create database db_2;2.创建个表
mysql> use db_2;
mysql> create table t1 (id int);3.插入一条数据
mysql> insert into t1 values (1);

3.3.观察Binlog日志中产生的Event事件

通过以下命令可以查看指定Binlog日志中的事件信息,每一个事件都对应一条DDL、DCL、DML语句。

mysql> show binlog events in 'mysql-bin.000002';
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| mysql-bin.000002 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.36-log, Binlog ver: 4 |
| mysql-bin.000002 | 123 | Previous_gtids |         1 |         154 |                                       |
| mysql-bin.000002 | 154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql-bin.000002 | 219 | Query          |         1 |         313 | create database db_2                  |
| mysql-bin.000002 | 313 | Anonymous_Gtid |         1 |         378 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql-bin.000002 | 378 | Query          |         1 |         476 | use `db_2`; create table t1 (id int)  |
| mysql-bin.000002 | 476 | Anonymous_Gtid |         1 |         541 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql-bin.000002 | 541 | Query          |         1 |         613 | BEGIN                                 |
| mysql-bin.000002 | 613 | Table_map      |         1 |         658 | table_id: 108 (db_2.t1)               |
| mysql-bin.000002 | 658 | Write_rows     |         1 |         698 | table_id: 108 flags: STMT_END_F       |
| mysql-bin.000002 | 698 | Xid            |         1 |         729 | COMMIT /* xid=16 */                   |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
11 rows in set (0.00 sec)

输出的内容每个字段的含义:

  • Log_name:Binlog日志的名称

  • Pos:开始的标识位号,默认从4开始,1-3是保留的标识位,前154个标识位是记录MySQL的一些信息。从上面输出的内容我们可以看到从标识位4-154之间的事件都是关于MySQL信息的一些事件内容。从154之后才是真正用户操作的信息。

  • Event_type:事件的类型,主要关心Query类型。

  • Server_id:声明这个时间是由哪个数据库实例产生的,主要是在主从复制模式下,说明都是由主节点产生的事件。

  • End_log_pos:结束标识位。

  • Info:具体时间的内容,DDL语句还好,在Info中显示除了具体的DDL操作语句,但是像DML类型的操作只是记录了这是一个事务,事务内的SQL语句却看不出来是什么,如果我们硬要看事务内执行的SQL,就需要去读Binlog日志了。

image-20220630230902034

4.分析Binlog日志内容的技巧

通过Binlog的事件我们只能看到DDL执行的语句,对于DML语句是看不懂的,下面就需要去Binlog日志中读取DML的内容,在读取DML内容之前,我们先来掌握分析Binlog日志文件的技巧。

通过mysqlbinlog命令分析Binlog日志文件。

[root@mysql ~]# mysqlbinlog /data/mysql/mysql-bin.000002 

如下图所示,会输出很多很多的内容,但是实际上SET开头的语句是没有用的,并且占比也比较多,我们可以过滤掉。

image-20220630231639498

[root@mysql ~]# mysqlbinlog /data/mysql/mysql-bin.000002 | grep -v 'SET'

这样一看就好多了,但是也别急,刚刚说了标识位4-154都是MySQL内部的信息,无需看,因此我们从第154个标识位处开始分析就行了,一个标识位到另一个标识位之间的内容就是这个Event事件的具体内容,DDL语句还是能清晰的看到,但是DML语句依然被ROW格式单独声明了,还是无法查看,不过后面有办法。

在日志中我们可以看到有很多行的注释,这个注释也是很有作用的:例如这个#220630 22:58:17 server id 1注释,就记录了再2022年的6月30日,22点58分17秒的时候,由server id为1的节点触发了下面的Binlog日志。我们也可以通过注释中的时间截取某个时间段的Binlog日志。

image-20220630232408481

5.读取Binlog日志记录的DML语句详细内容

在前面无论我们是通过事件还是直接读取Binlog日志,对于DML语句的部分都是通过ROW格式独特的显示方式展示的,让我们无法读懂,从而不知道DML做了什么操作。

针对ROW格式独有的显示方式,可以通过mysqlbinlog命令的-v参数,将其重构成我们能读懂的SQL语句。

[root@mysql ~]# mysqlbinlog -v /data/mysql/mysql-bin.000002 

或者使用下面的这个命令,通过base64的方式将ROW格式重构成SQL语句。

[root@mysql ~]# mysqlbinlog --base64-output=decode-rows -vvvv /data/mysql/mysql-bin.000002 

将ROW格式的内容重构成SQL语句如下,INSERT语句会产生一个事务,我们将重构完关于事务的这个事件内容摘了出来,重构成SQL语句之后,就会在事务中显示具体的DML SQL语句。

# at 541
#220630 22:58:17 server id 1  end_log_pos 613 CRC32 0xfb4afd37 	Query	thread_id=3	exec_time=0	error_code=0
SET TIMESTAMP=1656601097/*!*/;
BEGIN
/*!*/;
# at 613
#220630 22:58:17 server id 1  end_log_pos 658 CRC32 0x19bd3592 	Table_map: `db_2`.`t1` mapped to number 108
# at 658
#220630 22:58:17 server id 1  end_log_pos 698 CRC32 0xce62c766 	Write_rows: table id 108 flags: STMT_END_F
### INSERT INTO `db_2`.`t1`
### SET
###   @1=1 /* INT meta=0 nullable=1 is_null=0 */
# at 698
#220630 22:58:17 server id 1  end_log_pos 729 CRC32 0x6f054645 	Xid = 16
COMMIT/*!*/;

从第10行到12行,开头是###的都是DML语句,记录的都是INSERT插入数据的语句,不过和我们常规的INSERT不同,在这里多了一个SET指令,SET后面是@1=1,这个@1表示的是这条数据中的第一个字段,等于号后面是这个字段的值,整个INSERT连起来的意思就是说:在t1表中插入了一条数据,插入的这条数据中第一个字段的值为1,因为表中只有一个字段,因此只显示了一行,如果有多个字段,会显示多个@数字,数字是几就表示是第几个字段对应的值。

image-20220630234022536

相关文章:

第78讲:MySQL数据库Binlog日志的核心概念与应用案例

文章目录 1.Binlog二进制日志的基本概念1.1.什么是Binlog二进制1.2.Binlog日志的三种记录格式1.3.Binlog日志中Event事件的概念 2.开启MySQL的Binlog二进制日志3.查看Binlog二进制日志中的Event事件信息3.1.查看当前数据库有那些Binlog日志3.2.产生一些DDL/DML语句3.3.观察Binl…...

MinGW编译Python至pyd踩坑整理

title: MinGW编译Python至pyd踩坑整理 tags: [Python,CC] categories: [开发记录,Python] date: 2023-12-12 13:48:20 description: sidebar: [‘toc’, ‘related’,‘recent’] 注意需要魔法 用scoop自动安装配置MinGw 需要魔法,不需要手动配置mingw scoop in…...

计算机毕业设计 基于SpringBoot的乡村政务办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

命令行参数(C语言)

目录 什么是命令行参数 main函数的可执行参数 不传参打印 传参打印 IDE传参 cmd传参 命令行参数的应用(文件拷贝) 什么是命令行参数 概念:命令行参数指的是在运行可执行文件时提供给程序的额外输入信息。它们通常以字符串形式出现&am…...

WT2003H4-16S语音芯片:扭蛋机新潮音乐,娱乐升级无限

在扭蛋机的乐趣世界里,唯创知音的WT2003H4-16S语音芯片,作为MP3音乐解码播放IC,为扭蛋机带来了更智能、更富有趣味的音乐体验,为玩家打开了娱乐升级的无限可能。 1. 机启音乐,欢迎扭蛋之旅 扭蛋机启动时,…...

Go 语言开发工具

Go 语言开发工具 VSCode VScode 安装教程参见:https://www.kxdang.com/topic//w3cnote/vscode-tutorial.html 然后我们打开 VSCode 的扩展(CtrlShiftP): 搜索 go: 点击安装,安装完成后我们就可以使用代码…...

神经网络是如何工作的? | 京东云技术团队

作为一名程序员,我们习惯于去了解所使用工具、中间件的底层原理,本文则旨在帮助大家了解AI模型的底层机制,让大家在学习或应用各种大模型时更加得心应手,更加适合没有AI基础的小伙伴们。 一、GPT与神经网络的关系 GPT想必大家已…...

C++ Qt开发:RadioButton单选框分组组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioButton单选框组件以及与之交互的QButto…...

推荐开源项目-网络应用协议框架Socket.D

基于事件和语义消息流的网络应用协议 Socket.D 0 代码仓库地址1 该开源项目特点2 项目结构3 核心理念-协议帧Frame4 结束语 0 代码仓库地址 https://gitee.com/noear/socketd 1 该开源项目特点 代码风格优雅文档说明齐全测试用例非常人性化上手快,代码用例很多代…...

Redis缓存异常问题,常用解决方案总结

前言 Redis缓存异常问题分别是:1.缓存雪崩。2.缓存预热。3.缓存穿透。4.缓存降级。5.缓存击穿,以 及对应Redis缓存异常问题解决方案。 1.缓存雪崩 1.1、什么是缓存雪崩 如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有…...

java开发的智能聊天机器人_超级AI_支持自动绘画功能

支持Web、Android、IOS、H5等多终端应用。它使用OpenAI的ChatGPT模型实现智能聊天机器人,并支持绘图自动生成Vincent图。未来还将接入国内大型AI模型,如文心一言、统一千问、MOSS等模型,并不断更新以满足用户需求。 AI大脑软件中的AI绘画功能…...

亚马逊云科技:向量数据存储在生成式人工智能应用程序中的作用

生成式人工智能深受大众喜爱,并且由于具备回答问题、写故事、创作艺术品甚至生成代码的功能,推动了行业的转变,那么如何才能在自己的企业中充分地利用生成式人工智能等应运而生问题。许多客户已经积累了大量特定领域的数据(财务记…...

小程序面试总结

简单描述下微信小程序的相关文件类型 微信小程序主要涉及以下几种文件类型: JSON 文件(.json): 用于描述小程序的配置信息,比如全局配置、页面路径、窗口样式等。WXML 文件(.wxml)&#xff1a…...

mac 安装anaconda和lightgbm

1.mac安装anaconda 要去[官网](Free Download | Anaconda)下载安装包 不要去清华大学的anaconda的安装包列表去下载安装包,清华的版本太老了, 老到连conda install 安装lightgbm都不只支持 2.安装好anaconda 后, 能用conda install xxx 的尽量不用pip 用pip install light…...

Flink 有状态流式处理

传统批次处理方法 【1】持续收取数据(kafka等),以window时间作为划分,划分一个一个的批次档案(按照时间或者大小等); 【2】周期性执行批次运算(Spark/Stom等)&#xff1b…...

LeetCode //C - 1071. Greatest Common Divisor of Strings

1071. Greatest Common Divisor of Strings For two strings s and t, we say “t divides s” if and only if s t … t (i.e., t is concatenated with itself one or more times). Given two strings str1 and str2, return the largest string x such that x divides …...

智能优化算法应用:基于群居蜘蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于群居蜘蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于群居蜘蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.群居蜘蛛算法4.实验参数设定5.算法结果6.…...

AtCoder Beginner Contest 332

E - Lucky bag(简单状态压缩dp) 题目链接 题意:给你n个物品,m个福袋,让你将这n个物品用m个福袋打包(福袋可以为空),让分完之后的总方差最小,输出最小方差。 思路:其实由题目的数据…...

华为OD试题二(文件目录大小、相对开音节、找最小数)

1. 文件目录大小 题目描述: 一个文件目录的数据格式为:目录id,本目录中文件大小,(子目录id 列表)。其中目录id全局唯一,取值范围[1,200],本目录中文件大小范 围[1,1000],子目录id列表个数[0,10…...

【Spark精讲】Spark作业执行原理

基本流程 用户编写的Spark应用程序最开始都要初始化SparkContext。 用户编写的应用程序中,每执行一个action操作,就会触发一个job的执行,一个应用程序中可能会生成多个job执行。一个job如果存在宽依赖,会将shuffle前后划分成两个…...

Docker容器:Centos7搭建Docker镜像私服harbor

目录 1、安装docker 1.1、前置条件 1.2、查看当前操作系统的内核版本 1.3、卸载旧版本(可选) 1.4、安装需要的软件包 1.5、设置yum安装源 1.6、查看docker可用版本 1.7、安装docker 1.8、开启docker服务 1.9、安装阿里云镜像加速器 1.10、设置docker开机自启 2、安…...

ClickHouse安装和部署

ClickHouse安装过程: ClickHouse支持运行在主流64位CPU架构(X86、AArch和PowerPC)的Linux操作 系统之上,可以通过源码编译、预编译压缩包、Docker镜像和RPM等多种方法进行安装。由于篇幅有限,本节着重讲解离线RPM的安…...

Spring Cloud Gateway中对admin端点进行认证

前言 我们被扫了一个漏洞,SpringBoot Actuator 未授权访问,漏洞描述是这样的: Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计…...

2. 如何通过公网IP端口映射访问到设备的vmware虚拟机的ubuntu服务器

文章目录 1. 主机设备是Windows 11系统2. 安装vmware虚拟机3. 创建ubuntu虚拟机(据说CentOS 7 明年就不维护了,就不用这个版本的linux了)4. 安装nginx服务:默认端口805. 安装ssh服务:默认端口226. 设置主机 -> ubuntu的端口映射7. 设置路由…...

配置android sudio出现的错误

导入demo工程,配置过程参考: AndroidStudio导入项目的正确方式,修改gradle配置 错误:Namespace not specified. Specify a namespace in the module’s build file. 并定位在下图位置: 原因:Android 大括号…...

【初阶C++】前言

C前言 1. 什么是C2. C发展史3. C的重要性4. 如何学习C 1. 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, …...

MAC IDEA Maven Springboot

在mac中,使用idea进行maven项目构建 环境配置如何运行maven项目1.直接在IDEA中运行2.使用jar打包后执行 如何搭建spring boot1.添加依赖2.创建入口类3.创建控制器4. 运行5.其他 环境配置 官网安装IDEA使用IDEA的创建新项目选择创建MAEVEN项目测试IDEA的MAVEN路径是…...

Angular13无法在浏览器debug

前言 本文将介绍如何解决在Angular 13中无法在浏览器中进行调试的问题,并提供了一种解决方法。 发生场景 根据项目需求,升级至Angular 13后,发现无法在浏览器中进行调试。 问题原因 无法进行调试的原因是,当使用Angular 13的…...

H.264与H.265(HEVC):视频编码的演进

目录 H.264的发展历程 1. 标准发布 2. 广泛应用 3. 专业化应用 H.265的出现...

Python从入门到精通九:Python异常、模块与包

了解异常 什么是异常 当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”, 也就是我们常说的BUG bug单词的诞生 早期计算机采用大量继电器工作,马克二型计算机就是这样的。 19…...