精华内容
下载资源
问答
  • 从零开始学习机器学习视频教程

    万人学习 2017-12-04 22:38:30
    人工智能作为现在最为火热的领域,使得机器学习被越来越多的人所了解。机器学习难学,主要的难度在于算法模型多不好理解,各种各样的工具不知道如何使用,实际项目不知道如何开发。本门课程将系统入门机器学习,课程...
  • stm32+4G从零开始连接阿里云IOT

    千人学习 2021-03-06 18:33:46
    本课程着重介绍如何使用stm32+4G通信模组连接阿里云物联网平台,实现数据属性上报以及远程升级功能。在本课程中,大家可以学习到如何使用操作阿里云物联网平台;4G模块和AT指令的编程技巧;以及MQTT协议的内容和源码...
  • 从零开始开发3D跑酷游戏教程

    千人学习 2017-05-02 19:56:59
    从零开发3D跑酷游戏视频培训课程,教大家从零开始开发一个3D跑酷游戏,涵盖了手势识别、动画系统、水平控制、纵向控制、金币获取、急速暴走、强力磁铁、超级跑鞋、双倍积分、跨越栅栏、车辆管理、随即场景等功能点。...
  • 从零开始学Spring Boot

    千人学习 2018-02-28 21:25:52
  • 《Android开发从零开始视频教程》下载地址,常期可用! 文件大小:2.3GB 文件格式:MP4 视频内容: [Android开发从零开始].1.Android开发环境搭建.mp4 30.6MB [Android开发从零开始].2.模拟器的使用.mp4 20.8MB ...
  • 14天学会安卓开发_(完整版) 从零开始学android开发

    千次下载 热门讨论 2013-07-24 15:09:52
    如何把一本书读薄,是一件值得思考的问题.相信看过那本书的都知道有500页,哪里才是重点...本书针对有JAVA基础的孩纸们,基本JAVA基础都没的,赶紧去找21天学会JAVA回去从头开始学,或者找一本从零开始学android开发看也行.
  • Windows游戏编程之从零开始》.pdf

    热门讨论 2014-04-13 10:46:14
    Windows游戏编程之从零开始》.pdf,相当不错啊 !
  • 从零开始学Wireshark抓包-协议分析与故障排除视频培训课程,教大家学会借助于Wireshark抓包工具,对常见的协议进行分析,从而定位并解决相关的网络故障。本课程建议大家至少具有CCNA相关的网络基础知识,Wireshark...
  • 从零开始手写 VIO

    万次阅读 多人点赞 2019-05-13 21:40:18
    第二期『视觉SLAM进阶:从零开始手写VIO』课程将于6月30日正式开课(不耽误秋招),当晚举行开课仪式。整个学习周期为八周,课程有效期为一年,期间可反复回看课程内容。(第一期课程刚开课 4 天报名满了 600 人,...

    前言

    最近和高博合作推出了一个关于 VIO 的课程,借此博客推荐下。这个课程的图优化后端是我们自己写的,仅依赖 Eigen, 实现后系统的精度和 ceres 以及 g2o 不相上下。 个人感觉这个课程还是能学到不少东西,特别是网上关于 SLAM 后端的资料比较少。系统代码已经完全开放在github,感兴趣的也可以一起探讨下,多多提issue, 共同维护好,谢谢啦。

    下面是一些关于这个课程的介绍:
    这两年视觉 SLAM 相当火了,作为面试官常常感叹现在的小伙伴比我们那会厉害多了,简历中一般都会说熟悉开源框架如 ORBSLAM,SVO等,但是面试一圈下来,真正合适的候选人并不多。给人的感觉是大家基础还不是很扎实,比不能让人眼前一亮。最主要的是实际工程应用中,仅视觉的 SLAM 使用环境有限,视觉 SLAM 往往需要和其他传感器配合使用,比如视觉与 IMU 的多传感器融合方案— VIO,不仅应用在无人车、机器人,还应用于手机 AR 等领域。可以说,VIO 已成为 vSLAM 算法工程师的必备技能。

    VIO 知识面广,公式繁多复杂,初学者入门时间长且不容易掌握,半途而废者居多,这也导致熟练掌握 VIO 的 SLAMer并不多,企业相关人才需求缺口较大。为此,我与高博在深蓝学院联合推出了『从零开始手写VIO』课程。通过这门课程,我们将详细讲解VIO的实现细节。更重要的是,课程将手写后端作为重点。

    为什么开设 VIO 课程

    在这里插入图片描述

    这门课适合谁

    在这里插入图片描述
    当然,如果你刚刚入门,基础还比较薄弱,没有系统阅读过主流代码 (如ORBSLAM、SVO、DSO等),这门课程可能不太适合你…建议先学习下高翔的《视觉 SLAM 十四讲》或者对应的深蓝学院的视觉SLAM基础课程。

    8周时间,学会哪些方法&技能

    在这里插入图片描述

    课程详细大纲

    在这里插入图片描述
    在这里插入图片描述

    关于课程的其他介绍

    1. 上课时间
      第二期『视觉SLAM进阶:从零开始手写VIO』课程将于6月30日正式开课(不耽误秋招),当晚举行开课仪式。整个学习周期为八周,课程有效期为一年,期间可反复回看课程内容。(第一期课程刚开课 4 天报名满了 600 人,所以这里开了第二期)
    2. 学习形式
      为了保证学习效果,本门课程采取录播的形式,每周解锁一章。建议同学们登陆深蓝学院PC端官网,体验更佳!在整个学习过程中,有班主任全程带班、监督学习及完成作业;助教老师每周1V1批改作业、及时反馈学习效果;课后微信群答疑解惑,同期学员相互交流学习。请大家每周留出至少4个小时的时间用来学习、做作业。
    3. 如何报名
      第二期的报名通道已经开启,严格限报300人,登录深蓝学院官网了解。
    展开全文
  • 本课程是从零学JAVA的第一章,是JAVA的一个入门课程
  • 从零开始深度学习(仅视频课)

    千人学习 2019-05-21 17:56:26
    本页面购买不发书!!!仅为视频课购买!!!...下单,方可购买课程+图书。... 本课程由浅入深的讲授人工智能、机器学习、深度学习的原理和实现,尤其会重点介绍搜索引擎和自然语言处理等热门技术,不但会用生动的例子帮助...
  • 从零开始写一个RTSP服务器(一)RTSP协议讲解

    万次阅读 多人点赞 2019-08-09 20:17:55
    从零开始写一个RTSP服务器系列 从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解 从零开始写一个RTSP服务器(二)RTP传输H.264(待写) 从零开始写一个RTSP服务器(三)一个传输H.264的RTSP服务器(待写) 从零开始...

    从零开始写一个RTSP服务器系列

    ★我的开源项目-RtspServer

    从零开始写一个RTSP服务器(一)RTSP协议讲解

    从零开始写一个RTSP服务器(二)RTSP协议的实现

    从零开始写一个RTSP服务器(三)RTP传输H.264

    从零开始写一个RTSP服务器(四)一个传输H.264的RTSP服务器

    从零开始写一个RTSP服务器(五)RTP传输AAC

    从零开始写一个RTSP服务器(六)一个传输AAC的RTSP服务器

    从零开始写一个RTSP服务器(七)多播传输RTP包

    从零开始写一个RTSP服务器(八)一个多播的RTSP服务器

    从零开始写一个RTSP服务器(九)一个RTP OVER RTSP/TCP的RTSP服务器

    从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解

    前言

    • 为什么要写这个系列?

      因为我自己在学习rtsp协议想自己从零写一个rtsp服务器的时候,由于rtsp比较复杂,所以觉得这个过程非常的困难,网上许多相关文章或模棱两可,或是复制粘贴。所以想写这样一个系列,来帮助想要学习rtsp协议或者想要从零写一个rtsp服务器的初学者

    • 本系列的文章特点

      并系列文章实现追求精简,能够让人明白rtsp协议的实现过程,不追求复杂和完美

      如果想要实现一个比较完善的rtsp服务器,可以参考我的开源项目-RtspServer

    言归正传,下面开始本系列的文章

    一、什么是RTSP协议?

    RTSP是一个实时传输流协议,是一个应用层的协议

    通常说的RTSP包括RTSP协议RTP协议RTCP协议

    对于这些协议的作用简单的理解如下

    RTSP协议:负责服务器与客户端之间的请求与响应

    RTP协议:负责传输媒体数据

    RTCP协议:在RTP传输过程中提供传输信息

    rtsp承载与rtp和rtcp之上,rtsp并不会发送媒体数据,而是使用rtp协议传输

    rtp并没有规定发送方式,可以选择udp发送或者tcp发送

    二、RTSP协议详解

    rtsp的交互过程就是客户端请求,服务器响应,下面看一看请求和响应的数据格式

    2.1 RTSP数据格式

    RTSP协议格式与HTTP协议格式类似

    • RTSP客户端的请求格式

      method url vesion\r\n
      CSeq: x\r\n
      xxx\r\n
      ...
      \r\n
      

      method:方法,表明这次请求的方法,rtsp定义了很多方法,稍后介绍

      url:格式一般为rtsp://ip:port/session,ip表主机ip,port表端口好,如果不写那么就是默认端口,rtsp的默认端口为554,session表明请求哪一个会话

      version:表示rtsp的版本,现在为RTSP/1.0

      CSeq:序列号,每个RTSP请求和响应都对应一个序列号,序列号是递增的

    • RTSP服务端的响应格式

      vesion 200 OK\r\n
      CSeq: x\r\n
      xxx\r\n
      ...
      \r\n
      

      version:表示rtsp的版本,现在为RTSP/1.0

      CSeq:序列号,这个必须与对应请求的序列号相同

    2.2 RTSP请求的常用方法

    方法描述
    OPTIONS获取服务端提供的可用方法
    DESCRIBE向服务端获取对应会话的媒体描述信息
    SETUP向服务端发起建立请求,建立连接会话
    PLAY向服务端发起播放请求
    TEARDOWN向服务端发起关闭连接会话请求

    2.3 RTSP交互过程

    有了上述的知识,我们下面来讲解一个RTSP的交互过程

    OPTIONS

    • C–>S

      OPTIONS rtsp://192.168.31.115:8554/live RTSP/1.0\r\n
      CSeq: 2\r\n
      \r\n
      

      客户端向服务器请求可用方法

    • S–>C

      RTSP/1.0 200 OK\r\n
      CSeq: 2\r\n
      Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY\r\n
      \r\n
      

      服务端回复客户端,当前可用方法OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY

    DESCRIBE

    • C–>S

      DESCRIBE rtsp://192.168.31.115:8554/live RTSP/1.0\r\n
      CSeq: 3\r\n
      Accept: application/sdp\r\n
      \r\n
      

      客户端向服务器请求媒体描述文件,格式为sdp

    • S–>C

      RTSP/1.0 200 OK\r\n
      CSeq: 3\r\n
      Content-length: 146\r\n
      Content-type: application/sdp\r\n
      \r\n
      
      v=0\r\n
      o=- 91565340853 1 in IP4 192.168.31.115\r\n
      t=0 0\r\n
      a=contol:*\r\n
      m=video 0 RTP/AVP 96\r\n
      a=rtpmap:96 H264/90000\r\n
      a=framerate:25\r\n
      a=control:track0\r\n
      

      服务器回复了sdp文件,这个文件告诉客户端当前服务器有哪些音视频流,有什么属性,具体稍后再讲解

      这里只需要直到客户端可以根据这些信息得知有哪些音视频流可以发送

    SETUP

    • C–>S

      SETUP rtsp://192.168.31.115:8554/live/track0 RTSP/1.0\r\n
      CSeq: 4\r\n
      Transport: RTP/AVP;unicast;client_port=54492-54493\r\n
      \r\n
      

      客户端发送建立请求,请求建立连接会话,准备接收音视频数据

      解析一下Transport: RTP/AVP;unicast;client_port=54492-54493\r\n

      RTP/AVP:表示RTP通过UDP发送,如果是RTP/AVP/TCP则表示RTP通过TCP发送

      unicast:表示单播,如果是multicast则表示多播

      client_port=54492-54493:由于这里希望采用的是RTP OVER UDP,所以客户端发送了两个用于传输数据的端口,客户端已经将这两个端口绑定到两个udp套接字上,54492表示是RTP端口,54493表示RTCP端口(RTP端口为某个偶数,RTCP端口为RTP端口+1)

    • S–>C

      RTSP/1.0 200 OK\r\n
      CSeq: 4\r\n
      Transport: RTP/AVP;unicast;client_port=54492-54493;server_port=56400-56401\r\n
      Session: 66334873\r\n
      \r\n
      

      服务端接收到请求之后,得知客户端要求采用RTP OVER UDP发送数据,单播客户端用于传输RTP数据的端口为54492,RTCP的端口为54493

      服务器也有两个udp套接字,绑定好两个端口,一个用于传输RTP,一个用于传输RTCP,这里的端口号为56400-56401

      之后客户端会使用54492-54493这两端口和服务器通过udp传输数据,服务器会使用56400-56401这两端口和这个客户端传输数据

    PLAY

    • C–>S

      PLAY rtsp://192.168.31.115:8554/live RTSP/1.0\r\n
      CSeq: 5\r\n
      Session: 66334873\r\n
      Range: npt=0.000-\r\n
      \r\n
      

      客户端请求播放媒体

    • S–>C

      RTSP/1.0 200 OK\r\n
      CSeq: 5\r\n
      Range: npt=0.000-\r\n
      Session: 66334873; timeout=60\r\n
      \r\n
      

      服务器回复之后,会开始使用RTP通过udp向客户端的54492端口发送数据

    TEARDOWN

    • C–>S

      TEARDOWN rtsp://192.168.31.115:8554/live RTSP/1.0\r\n
      CSeq: 6\r\n
      Session: 66334873\r\n
      \r\n
      
    • S–>C

      RTSP/1.0 200 OK\r\n
      CSeq: 6\r\n
      \r\n
      

    2.4 sdp格式

    我们上面避开没有讲sdp文件,这里来好好补一补

    sdp格式由多行的type=value组成

    sdp会话描述由一个会话级描述和多个媒体级描述组成。会话级描述的作用域是整个会话,媒体级描述描述的是一个视频流或者音频流

    会话级描述v=开始到第一个媒体级描述结束

    媒体级描述m=开始到下一个媒体级描述结束

    下面是上面示例的sdp文件,我们就来好好分析一下这个sdp文件

    v=0\r\n
    o=- 91565340853 1 in IP4 192.168.31.115\r\n
    t=0 0\r\n
    a=contol:*\r\n
    m=video 0 RTP/AVP 96\r\n
    a=rtpmap:96 H264/90000\r\n
    a=framerate:25\r\n
    a=control:track0\r\n
    

    这个示例的sdp文件包含一个会话级描述一个媒体级描述,分别如下

    • 会话级描述

      v=0\r\n
      o=- 91565340853 1 IN IP4 192.168.31.115\r\n
      t=0 0\r\n
      a=contol:*\r\n
      

      v=0

      表示sdp的版本
      o=- 91565340853 1 IN IP4 192.168.31.115
      格式为 o=<用户名> <会话id> <会话版本> <网络类型><地址类型> <地址>
      用户名:-
      会话id:91565340853,表示rtsp://192.168.31.115:8554/live请求中的live这个会话
      会话版本:1
      网络类型:IN,表示internet
      地址类型:IP4,表示ipv4
      地址:192.168.31.115,表示服务器的地址

    • 媒体级描述

      m=video 0 RTP/AVP 96\r\n
      a=rtpmap:96 H264/90000\r\n
      a=framerate:25\r\n
      a=control:track0\r\n
      

      m=video 0 RTP/AVP 96\r\n

      格式为 m=<媒体类型> <端口号> <传输协议> <媒体格式 >
      媒体类型:video

      端口号:0,为什么是0?因为上面在SETUP过程会告知端口号,所以这里就不需要了

      传输协议:RTP/AVP,表示RTP OVER UDP,如果是RTP/AVP/TCP,表示RTP OVER TCP

      媒体格式:表示负载类型(payload type),一般使用96表示H.264

      a=rtpmap:96 H264/90000

      格式为a=rtpmap:<媒体格式><编码格式>/<时钟频率>

      a=framerate:25

      表示帧率

      a=control:track0

      表示这路视频流在这个会话中的编号

    三、RTP协议

    3.1 RTP包格式

    rtp包由rtp头部和rtp荷载构成

    • RTP头部

    在这里插入图片描述

    版本号(V):2Bit,用来标志使用RTP版本

    填充位§:1Bit,如果该位置位,则该RTP包的尾部就包含填充的附加字节

    扩展位(X):1Bit,如果该位置位,则该RTP包的固定头部后面就跟着一个扩展头部

    CSRC技术器(CC):4Bit,含有固定头部后面跟着的CSRC的数据

    标记位(M):1Bit,该位的解释由配置文档来承担

    载荷类型(PT):7Bit,标识了RTP载荷的类型

    序列号(SN):16Bit,发送方在每发送完一个RTP包后就将该域的值增加1,可以由该域检测包的丢失及恢复

    ​ 包的序列。序列号的初始值是随机的

    时间戳:32比特,记录了该包中数据的第一个字节的采样时刻

    同步源标识符(SSRC):32比特,同步源就是RTP包源的来源。在同一个RTP会话中不能有两个相同的SSRC值

    贡献源列表(CSRC List):0-15项,每项32比特,这个不常用

    • rtp荷载

      rtp载荷为音频或者视频数据

    3.2 RTP OVER TCP

    RTP默认是采用UDP发送的,格式为RTP头+RTP载荷,如果是使用TCP,那么需要在RTP头之前再加上四个字节

    第一个字节:$,辨识符

    第二个字节:通道,在SETUP的过程中获取

    第三第四个字节: RTP包的大小,最多只能12位,第三个字节保存高4位,第四个字节保存低8位

    四、RTCP

    RTCP用于在RTP传输过程中提供传输信息,可以报道RTP传输情况,还可以用来音视频同步,这里就不详细讲解了

    展开全文
  • Arduino开发从零开始学:学电子的都玩这个

    千次下载 热门讨论 2014-09-29 13:32:52
    第一篇介绍了Arduino的起源、发展和应用,并安装开发环境(IDE)开始,对Arduino语法和电子基础知识(AVR)有一个初步的学习。第二篇通过使用Arduino制作一些电子玩具进一步讲解Arduino与传感器、电机、网络的相关...
  • 从零开始自然语言处理

    千人学习 2019-08-07 14:38:22
    【超实用课程内容】 课程自然语言处理的基本概念与基本任务出发,对目前主流的自然语言处理应用进行全面细致的讲解,包括文本分类,文本摘要提取,文本相似度,文本情感分析,文本特征提取等,同时算法方面包括...
  • 3.x初学者,希望学习了解Python的编程爱好者,在校大学生,职场新手,相关教师,一切需要Python的人 课程概述 适用人群 希望从零开始快速掌握Python编程基础并能够独立做出相关项目的小伙伴。 课程概述 ★学以致用:...
  • 从零开始学Storm.pdf

    热门讨论 2015-08-13 16:06:13
    从零开始学Storm》适合所有大数据处理、实时流数据处理、Storm的开发者或爱好者,也适合高等院校和培训学校相关专业的师生参考使用。
  • 系列学习笔记: 从零开始带你成为MySQL实战优化高手学习笔记(一) 从零开始带你成为MySQL实战优化高手学习笔记(二) 关于buffer pool的相关知识 从零开始带你成为MySQL实战优化高手学习笔记(三)MySql byffer ...

     

    重复是有必要的。


    很多新入职的小朋友可能和现在的我一样,对数据库的了解仅仅停留在建库建表增删改查这些操作,日常工作也都是用封装好的代码,别说底层原理了,数据库和系统之间是如何工作都不是很懂。

    长此以往,当你的老大哥让你去优化sql提升性能的时候,绝对是一脸懵逼。毕竟优化并不仅仅建个索引就能完事的。

    所以我们需要去了解底层的东西。

     

    推荐《MySQL技术内幕InnoDB存储引擎  第2版》、《高性能mysql第三版》、《深入理解MySQL核心技术》

    还没看完。。

     

    提示:刚开始会接触很多概念,之后会细讲,先了解即可。

    目录

    一、驱动是干嘛的?

    二、数据库连接池又是什么鬼?

    三、MySQL是怎么执行sql语句的?

    四、初步了解InnoDB存储引擎架构设计

    1、缓冲池

    2、undo日志

    3.redo log buffer

    4.innodb_flush_log_at_trx_commit



    一、驱动是干嘛的?

    以MySQL为例,还记得JDBC连接数据库的步骤吗?

    1.导入驱动jar包
    
    2.注册驱动
    
    3.获取数据库连接对象Connection
    
    3.对JDBC中各个接口和类的详解
    
    4.定义sql
    
    5.获取执行sql语句的对象Statement
    
    6.执行sql,接受返回结果
    
    7.处理结果
    
    8.释放资源

    第一步就是导入驱动jar包,我们都知道,系统要想对数据库进行操作,肯定要与数据库建立一个链接,谁来建立?

    驱动。

     

    二、数据库连接池又是什么鬼?

    如果只考虑一个查询任务,系统建立一个链接,查询完毕处理结果,然后释放链接,完事了。

    假如有多个线程都要对数据库进行操作,怎么办?处理完一个之后再处理下一个?

    这个时间是等不起的,再一个,假如有几百个线程都要操作,那是不是就要建立链接+释放几百次?这效率你想是不是太低了。

    如果能够省去每次建立和释放的过程,这就大大减少了资源浪费和时间消耗,于是池的概念就被提出来了,建立一个连接池,池子里维持多个链接,来一个线程给他一个链接,用完了再放回到池子里而不是释放,这样就省去了频繁创建、释放的时间。

    三、MySQL是怎么执行sql语句的?

    我们日常对sql的操作就是写sql语句,使用封装好的方法去执行然后获取结果并处理,完事了。

    我们只知道写insert,表里就多了一条数据,写delete,表里就少了一条数据,但MySQL是怎么知道要删除还是要增加的?

    你肯定要说,这还不简单,这不是有insert和delete语法上的区别吗,是,然后那?

     

    数据库其实就是一个系统,这个系统就是拿到发给它的数据,解析、执行并返回结果。这里面涉及到SQL接口、查询解析器、查询优化器、调用存储引擎接口、执行器。

    首先,这个系统创建并分配线程去监听请求,读取请求数据,转交给SQL接口,然后由查询解析器根据SQL语法去解析这条SQL语句表达的是什么意思,解析之后由查询优化器生成查询路径树,选出一条最优查询路径调用存储引擎接口真正执行SQL语句。

    但是,谁调用存储引擎接口?执行器。(这个过程后面会有细讲)

    四、初步了解InnoDB存储引擎架构设计

    上面说执行器调用存储引擎真正执行SQL语句,但是,比如说执行update,万一MySQL崩溃了怎么办,这数据到底有没有更新成功?数据库的设计师们做了一系列的东西来保证这个。

    1、缓冲池

    为什么要有缓冲池?因为快,缓冲池在内存中,数据库最终存储在磁盘中,对磁盘进行增删改查和对内存进行增删改查肯定不在一个级别。InnoDB存储引擎在内存中设置了缓冲池(Buffer Pool),这里面会缓冲很多数据,当查询的时候先去缓冲池中查,如果有就不用去磁盘文件中读取。

    比如,要执行下面这条语句

    update devices set devicename='xxx' where id=1 

    InnoDB会先去缓冲池去找id为1的这条数据,如果不在,就会从磁盘文件加载到缓冲池中。这时候就有个问题,万一又有别人也想更新这条数据咋整?加独占锁。关于锁的知识,后面也会有。

     

    2、undo日志


    搞个图,这两个图都是InnoDB架构图,包含很多东西,先不讲,了解一下。

    还是上面那个更新,更新失败,肯定要回滚,要不然数据不一致就产生错误了?要回滚就要有记录,上图中是不是在缓冲池中有个undo块,这就是undo日志。

    逻辑是:把更新前的值保存到undo日志中,等到需要回滚的时候,去这里取。

    好,现在数据也加到缓冲池了,也加独占锁了,也能确保正常回滚了,下面就开始更新了。

    首先会去缓冲池中更新这条记录,你想现在还没有对磁盘中的数据进行处理,还是原始数据,如果恰好这时候数据库崩了,内存里的数据可就没了!

     

    3.redo log buffer

    我再来一个东西记录下,等到崩溃之后恢复就好了,innodb在内存中还有一块叫做redo log buffer的地方,用来存放redo日志,这个日志就是记录对内存中的数据做了什么更改。

    这里分两个情况:

    1、提交事务之前,如果崩溃了,其实并不怎么影响,磁盘中还是原来的数据。

    2、提交事务之后。

    可是,你要注意,“nnodb在内存中还有一块叫做redo log buffer的地方”   redo log buffer在内存里,程序崩了,内存中的数据不没了吗?

     

    4.innodb_flush_log_at_trx_commit

    这个参数是用来控制如何把redo log buffer中的记录刷入磁盘中的,而且是提交事务之后

    • 设为0的时候,提交事务之后,不会把redo log buffer里的数据刷入磁盘文件,如果mysql崩了,内容中的数据全部丢失,也就没办法恢复了。
    • 设为1的时候,提交事务之后,会从redo log buffer 刷入磁盘文件,只要事务提交成功,redo log就会保存到磁盘中,如果此时数据库崩了,可以根据磁盘中的redo log恢复。
    • 设为2,会把redo日志刷入系统的cache缓存中,每隔一段时间MySQL再主动将系统Cache中的数据批量同步到磁盘。这种情况就和0差不多了。

    这三种策略选哪一种还需要根据不同情况做取舍。

     

    当这一切都准备完毕之后,什么时候更新数据到磁盘那?

    MySQL自己还有一个日志文件,叫做binlog,在提交事务的时候还会把这次更新对应的binlog日志写到磁盘中,它也是有一个刷盘策略的,可以通过sync_binlog参数控制。

    当把binlog日志写入到磁盘后,就会完成最终的事务提交,会把这次更新对应的binlog日志文件名和本次更新在binlog日志中的位置写入redo log日志文件中,同时在redo log日志文件中写入commit标记。

     

    MySQL会有一个后台IO线程,会在之后随机把内存中的buffer pool中修改的数据刷回磁盘。

    系列学习笔记:

    从零开始带你成为MySQL实战优化高手学习笔记(一)

    从零开始带你成为MySQL实战优化高手学习笔记(二) 关于buffer pool的相关知识

    从零开始带你成为MySQL实战优化高手学习笔记(三)MySql byffer pool的运行过程

     

     

    欢迎关注微信公众号,公众号的好处是可以持续保持联系。

     

     

     

    展开全文
  • 电子设计从零开始 part2

    热门讨论 2012-02-06 11:36:00
    电子设计从零开始,第二版,高清。要同时下载 电子设计从零开始_12673534.part1.rar、电子设计从零开始_12673534.part2.rar、电子设计从零开始_12673534.part3.rar 这3个文件才能正常解压。
  • Eclipse从零开始搭建一个SpringBoot项目

    千次阅读 2019-03-22 17:04:22
    然后开始编写我们的Controller 然后我们回到SpringBoot给我们自动创建的入口类Application中Run--As启动 启动后我们在控制台查看端口号以及是否启动成功 启动没有异常我们网页访问项目SpringBoot...

    Eclipse和IDEA不太一样,IDEA可以直接创建而Eclipse需要先将SpringBoot相关的插件下载到本地

    打开eclipse----->help----->Eclipse Marketplace----->选择Popular----->选择Spring Tools----->Installed,

    下载完成后让我们NEW一个Project选择SpringBoot----->Spring Starter Project

    点击Next进入创建项目页面

    再次Next,这里我的版本号是1.5.19,这里演示一个简单的WEB工程所以我们将WEB选中

    直接Finish

    由于需要访问,我们新建一个Controller包里面放一个入口类

    这里需要注意SpringBoot是内置Tomcat不需要我们来配置,但SpringBoot有一个Application入口类这是我们启动项目的入口,红框中的类是SpringBoot默认生成的,还有SpringBoot的机制是默认扫描Application启动类,包下的类(注意在写项目时你创建的所有类不要跟Application类同级这样它默认扫描不到)

    然后开始编写我们的Controller

    然后我们回到SpringBoot给我们自动创建的入口类Application中Run--As启动

    启动后我们在控制台查看端口号以及是否启动成功

    启动没有异常我们网页访问项目SpringBoot项目由于是内置Tomcat所以不需要加入项目名访问,如果你非要加入项目名访问需要在配置文件中加入server.context-path=/XXXXXXX

    展开全文
  • 从零开始学架构——架构基础

    千次阅读 2019-05-19 20:37:41
    本文章的内容是根据书籍《从零开始学架构》整理的资料,供作者以及读者查阅。 1. 架构的定义 软件架构指软件系统的顶层架构。详细阐述如下: a. “系统由一群关联个体组成”,个体分别是:系统、子系统、模块、...
  • 从零开始带你成为MySQL实战优化高手

    千次阅读 热门讨论 2021-02-03 14:36:39
    笔记:https://blog.csdn.net/qq_34136569/article/details/106586741 pdf:https://pan.baidu.com/share/init?surl=iuffXAGEK-kBVSjwsMB83A 解压码:i7fl 文档密码:www.pplsunny.top 或者 pplsunny.top
  • 从零开始学MQL4语言

    2020-11-30 22:51:47
    2019最新版从零开始学MT4平台MQL4语言编程,本系列课程共75节高清视频,系统、全面、新颖、详细介绍了MQL4语言的所有知识,本教程由资深程序员15年开发经验的总结,完美展现MQL4语言的全部功能。
  • 架构探险——从零开始写Java Web框架试读样章

    千次下载 热门讨论 2015-11-09 14:20:14
    程序猿到架构狮的那点事儿,带您步入神奇的架构探险之旅,开源中国创始人红薯作序力荐.pdf
  • 从零开始搭建一个Vue项目

    千次阅读 2019-03-26 14:55:15
    Vue.js是现在比较优秀的Web前端框架,下面开始从零开始搭建一个Vue项目。流程如下: 一、安装node.js 1.进入node.js官网下载相应安装包:https://nodejs.org/en/ 安装过程没有什么要注意的地方,直接安装到自己...
  • 说明:对从零开始学架构这本书看时所做的记录 模块,逻辑角度拆分,如注册模块、登录模块 组件,物理角度来分,如web服务器,nginx 框架是标准的,有规范的产品,关注规范 架构关注结构 软件架构指软件系统的顶层...
  • 如何从零开始一个uniapp项目

    千次阅读 2019-09-25 10:25:14
    如何创建一个项目uniapp 1.新建项目 2.配置底部模块导航 当前项目目录下 pages.json配置页面 相应的创建对面的页面,否则会报错,这样一个简单的基础模块页面就搭建成功了。 3.组件引入 打开HBUILDER官网 - uniapp...
  • JAVA从零开始

    热门讨论 2011-11-15 11:06:19
    从零开始学Java,一定能学到你想要的结果。
  • FPGA从零开始到大神怎么学

    万次阅读 多人点赞 2018-07-14 02:42:34
    原创: 刘勇材 玩儿转FPGA 微信公总号 1 选好一本比较全,排版比较...[1] FPGA从零开始到大神怎么学 http://www.51openchip.com/forum.php?mod=viewthread&tid=38946&fromuid=2 (出处: openchip--中国开源芯片社区)
  • 从零开始学USB(一、基础知识1)

    万次阅读 多人点赞 2018-12-08 19:04:26
    再加上各个接口硬件形状和软件配置也都不一样,导致不兼容,为了不同的应用,而要配置多种不同的硬件接口,设置对于有些硬件接口来说,还需要手动去配置一些更细节的参数。 关于USB出现之前,计算机领域中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 640,325
精华内容 256,130
关键字:

从零开始