Fork me on GitHub
To the moon

A Coder,a Programmer,a Developer


  • Home

  • Tags

  • Categories

  • Archives

  • Search

InnoDB 读书笔记 2

Posted on 2018-07-31 | Edited on 2023-05-09 | In notes

缓冲池

副标题:姜承尧《MySQL技术内幕 InnoDB存储引擎》读书笔记 2

缓冲池的简介

  • InnoDB引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理

  • 缓冲池是一块内存区域,在数据库进行读取页的操作,首先将磁盘读到的页放在缓冲池中,称为将页“FIX”在缓冲池。下一次读到相同页时,首先判断该页是否在缓冲池中,若是则直接在缓冲池中读取该页,否则,读取磁盘上的页

  • 对于数据库中页的修改操作,首先修改在缓冲池中的页,然后以一定的频率刷新到磁盘上。但并不是每一次修改都会触发刷回数据的操作,而是按照一种称为checkpoint的机制进行

  • 缓冲池的大小直接影响数据库的整体性能,32位操作系统下,该值最多可以设置为3G,此外用户可以打开操作系统的PAE选项来获得32位OS下最大64G内存的支持

    1
    2
    3
    4
    5
    6
    //查看缓冲池的大小,以下134217728B表示128MB
    mysql> show variables like 'innodb_buffer_pool_size'\G;
    *************************** 1. row ***************************
    Variable_name: innodb_buffer_pool_size
    Value: 134217728
    1 row in set (0.00 sec)
Read more »

InnoDB 读书笔记 1

Posted on 2018-07-30 | Edited on 2023-05-09 | In notes

数据库内容纵览

副标题:姜承尧《MySQL技术内幕 InnoDB存储引擎》读书笔记 1

  • MySQL被设计为 一个单进程多线程架构的数据库,故MySQL数据库实例在系统上的表现就是一个进程

    1
    2
    3
    4
    5
    	[root@VM_0_2_centos bin]# mysql --help | grep my.cnf

    order of preference, my.cnf, $MYSQL_TCP_PORT,
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

    • 可以看出,MySQL数据库实例启动时,是按照/etc/my.cnf -> /etc/mysql/my.cnf ->/usr/etc/my.cnf-> ~/.my.cnf的顺序读取配置文件。
    • 配置文件有一个参数 datadir指定了数据库所在的路径,如datadir=/var/lib/mysql
  • 数据库是由一个个文件(二进制)组成的,要对这些文件执行SELECT、INSERT等操作,不能通过操作文件更改数据库的内容,需要通过数据库实例来完成

  • MySQL组成部分:

    • 连接池组件
    • 管理服务和工具组件
    • SQL接口组件
    • 查询分析器组件
    • 优化器组件
    • 缓冲组件
    • 插件式存储引擎(important)
    • 物理文件
  • InnoDB存储引擎支持事务,通过使用多版本并发控制(MVCC)来获得高并发性,并实现SQL标准的4种隔离级别。同时使用next-key locking的策略(也就是间隙锁)来避免幻读(phantom)现象的产生。此外,提供了插入缓存 、二次写、自适应哈希索引、预读等高性能和高可用的功能(其他引擎略过)

Read more »

Note for Computer Network 6

Posted on 2018-07-29 | Edited on 2023-05-09 | In notes

路由器、ADSL、FTTH

副标题:阅读《网络是怎么连接的(户根勤)》读书笔记6

路由器基础知识

  • 路由器分为转发模块和端口模块两部分
  • 转发模块负责,判断包的转发目的地
  • 端口模块负责,进行包的收发操作
  • 如果路由器的端口模块安装了支持无线局域网的硬件,就可以支持无线局域网了

路由器基本原理

  1. 接收。路由器在转发包时,会通过端口将发过来的包接收进来,采取以太网规范或者无线局域网规范来接收
  2. 查找目标地址。转发模块根据收到的包的IP头部中记录的接收方IP地址,在路由表中进行查询,以此判断转发目标
  3. 转发模块将包转移到转发目标对应的端口,再按照硬件的规则(委托端口模块)将包发送出去
  4. 注:端口模块会根据相应通信技术的规范来执行包收发的操作,意味着端口模块具备了发送方或接收方的身份。以以太网端口为例,端口具有MAC地址、IP地址,此时可以理解为实现了网卡的功能
目标地址 子网掩码 网关 接口 跃点数
10.10.1.0 255.255.255.0 - e2 1
10.10.1.101 255.255.255.255 - e2 1
Read more »

Note for Computer Network 5

Posted on 2018-07-14 | Edited on 2023-05-09 | In notes

创建好了的包是如何进入互联网的

副标题:阅读《网络是怎么连接的(户根勤)》读书笔记5

网线中的信号衰减情况

  1. 信号从网卡出口到达集线器,会出现衰减、失真、噪声、能量损失等,严重时产生通信错误
  2. 局域网的网线使用双绞线,可以抑制噪声,使得网线周围或内部的电磁波在网线中产生的的干扰电流

集线器和交换机

  • 集线器将信号发往所有线路
  • 以太网的基本架构就是将包发到所有的设备,设备根据接收方的MAC地址来判断应该接收哪些包
  • 交换机按照地址表进行转发:当接收到包时,会将对应的端口号和发送方MAC地址写入表中,这样就可以根据地址判断出该设备连接在哪个端口上了
MAC地址 端口 控制信息
00-60-97-A-43-3C 2 …
00-00-C0-18-AE-FD 7 …

MAC地址表

Read more »

Note for Computer Network 4

Posted on 2018-07-14 | Edited on 2023-05-09 | In notes

包收发操作

副标题:阅读《网络是怎么连接的(户根勤)》读书笔记4

IP模块如何将包发给对方

通用流程

  1. 发送方的网络设备负责创建包,即生成含控制信息的头部,然后附上要发送的数据
  2. 接着,包被发往最近的网络转发设备
  3. 然后转发设备会根据头部信息判断接下来应该发往哪里,这个过程会用到一张表,按照头部记录的目的地址在表里查询,根据查到的信息判断接下来应该发往哪个方向
  4. 转发设备层层接力,最后到达接收方
  5. 发送方和接收方统称为终端节点,转发设备称为转发节点或中间节点

扩展流程——TCP/IP网络,用以太网规则传输包

  • 转发设备包括路由器和集线器两种
  • 路由器根据目标地址判断下一个路由器的位置,是按照IP规则传输包的设备
  • 集线器在子网中将网络包传递给下一个路由,是按照以太网规则传输包的设备
  • TCP/IP包包含MAC头部和IP头部、TCP头部和数据块,IP头部存入下一级路由器的IP地址,MAC头部存入下一级路由器的MAC地址(即以太网地址,是IP协议写入的,使用ARP广播的形式获取),MAC地址也叫物理地址(Physical Address)
  • 例:
    1. 客户端向服务器发包,先经集线器配合自己的一张表读取MAC头部获取下一个路由器甲的MAC地址,根据MAC地址,让以太网进行包的传输
    2. 包会到达下一个路由器甲,路由器有一张IP协议的表,再读取IP头部获取再下一个路由器乙的IP地址,为了将包发给再下一个路由器,就必须要下一个路由器乙的MAC地址,并记录到MAC头部
Read more »

Note for Computer Network 3

Posted on 2018-07-13 | Edited on 2023-05-09 | In notes

协议栈如何处理数据发送请求

副标题:阅读《网络是怎么连接的(户根勤)》读书笔记3

1

Tips:

  • IEEE802.3/802.2因长度太长、效率降低并未完全普及,更古老的以太网DIX规格仍在使用
  • TCP/IP协议以前是合为一体的,现在分开成两个
  • 像浏览器、邮件等一般的应用程序都是使用TCP收发数据的,而像 DNS 查询等收发较短的控制数据的时候则使用UDP
  • ICMP用于告知网络包传送过程中产生的错误以及各种控制消息,ARP 用于根据IP地址查询相应的以太网MAC地址
  • 套接字的实体就是通信控制信息:IP地址、端口号、通信操作的进行状态、是否收到响应、执行发送操作后经过了多长时间等

2

  • 图2.3的步骤1中,协议栈申请内存空间准备存放套接字(控制信息),刚刚创建时,数据收发操作还未开始,故写入初始状态的控制信息;之后将套接字描述符告知应用程序
  • 步骤2的连接是指双方交换控制信息,必要的信息放在了网络包的头部,另一类放在套接字内存区
    • 将浏览器查到的对方IP和端口号等告知协议栈
    • 服务器创建套接字(其实一般在服务器启动时已经创建好了),客户端将本机IP和端口号等告知服务器
    • 创建一块缓存区,用于临时存放收发的数据
    • connect详见后面段落
Read more »

Pictures play in turn

Posted on 2018-07-06 | Edited on 2023-05-09 | In imooc

图片轮播效果

效果图:

1

说明:

  1. 三张背景图片采用的一张出现一张消失,还有上下替换或左右替换的方式,本次未采用
  2. 背景图片采用2秒一次自动循环轮播
  3. 图片两侧采用“上一页”和“下一页”的切换按钮
  4. 图片右下角采用圆点定位

HTML和CSS部分

  1. 将三张图片重叠放置,banner-slide绝对定位,banner相对定位

  2. 使用slide-active并设置display实现隐/现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!--html-->
    <div class="banner" id="banner">
    <a href="">
    <div class="banner-slide slide1 slide-active"></div>
    </a>
    <a href="">
    <div class="banner-slide slide2"></div>
    </a>
    <a href="">
    <div class="banner-slide slide3"></div>
    </a>
    </div>


    <!--css-->
    .banner{
    width: 1200px;
    height:460px;
    position: relative;
    overflow: hidden;
    }
    .banner-slide{
    width: 1200px;
    height:460px;
    position: absolute;
    background-repeat: no-repeat;
    display: none;
    }
    .slide-active{
    display: block;
    }
Read more »

Note for Computer Network 2

Posted on 2018-07-05 | Edited on 2023-05-09 | In notes

Note for Computer Network 2

副标题:阅读《网络是怎么连接的(户根勤)》读书笔记2

生成 HTTP 请求消息

动作:对URL 进行解析
效果:浏览器确定了 Web 服务器和文件名
后续:根据这些信息来生成 HTTP 请求消息

1

  • 消息头存放“请求行没说清楚的”额外信息,消息头的规格中定义了很多项目,如日期、客户端支持的数据类型、语言、压缩格式、客户端和服务器的软件名称和版本、数据有效期和最后更新时间等。比如Date、Pragma、Cache-control、Connection、Transfer-Encoding、Via等,参考HTTP头字段-wiki百科
  • 写完消息头之后,还需要添加一个完全没有内容的空行,然后写上需要发送的数据(即消息体)

2

  • 响应消息与请求消息差别仅在第一行,内容为状态码和响应短语,用来表示请求的执行结果是成功还是出错。
状态码 含义
1xx 告知请求的处理进度和情况
2xx 成功
3xx 表示需要进一步操作
4xx 客户端错误
5xx 服务器错误
  • 返回响应消息之后,浏览器会将数据提取出来并显示在屏幕上,我们就能够看到网页的样子了。如果网页的内容只有文字,那么到这里就全部处理完毕了,但如果网页中还包括图片等资源,则还有下文
  • 当网页中包含图片时,会在网页中的相应位置嵌入表示图片文件的标签的控制信息。浏览器会在显示文字时搜索相应的标签,当遇到图片相关的标签时,会在屏幕上留出用来显示图片的空间,然后再次访问 Web服务器,按照标签中指定的文件名向Web服务器请求获取相应的图片并显示在预留的空间中
    [扩展思考]就是因为图文的异步,所以可以考虑采用多线程的方式,先刷出文字,后刷出图片,提升浏览器阅读体验
  • 由于每条请求消息中只能写 1 个 URI,所以每次只能获取 1 个文件,如果需要获取多个文件,必须对每个文件单独发送 1 条请求。即,3张图片==额外3次request
Read more »

A simple demo _Web page layout

Posted on 2018-07-05 | Edited on 2023-05-09 | In imooc

javaweb之网站布局demo

demo课程来源:慕课网javaweb课程
分析:实现了静态网页的展示效果。
效果图:
1
2
3
4
add

绘制概述:

  1. 将备用图片新建image文件夹,与html和css文件置于同一目录下
    5
  2. 将整个网页6个区域,找6个盒子对应
    • 标题及导航区
    • 横幅栏
    • about区
    • picture-word区
    • gallery区
    • footer区
  3. 按照不同区特点,设计css样式,主要涉及知识点:盒子模型、定位、浮动、遮罩、hover等

步骤详解

一、标题及导航区

6

  • html指向外部css文件
  • header由logo及nav两部分构成
  • nav细分出六个小导航
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--html文件-->
<head>
<meta charset="utf-8">
<title>Career Builder</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<div class="header">
<div class="logo"><img src="images/logo.png"></div>
<div class="nav">
<div class="nav-li">HOME</div>
<div class="nav-li">ABOUT</div>
<div class="nav-li">GALLERY</div>
<div class="nav-li">FACULTY</div>
<div class="nav-li">EVENTS</div>
<div class="nav-li">CONTACT</div>
</div>
</div>
  • 消除浏览器默认边距,设置微软雅黑字体
  • logo设置左浮动
  • nav设置右浮动
  • nav-li设置左浮动,同时调整间距,垂直居中对齐
  • nav-li设置hover效果,悬浮时nav-li块出现黑色背景效果,鼠标变为“小手”效果
Read more »

notes_for_HeadFirstServletsAndJsp5

Posted on 2018-06-08 | Edited on 2023-05-09 | In notes

Head First Servlets&JSP 读书笔记_5

如何将某些参数写在DD中,而非写死在类中

初版解决办法(以Email地址为例):

1
2
3
4
5
6
7
8
9
10
//DD中:
<servlet>
...

<init-param>
<param-name>adminEmail</param-name>
<param-value>***@163.com</param-value>
</init-param>

</servlet>

同时

1
2
//servlet中:
getServletConfig().getInitParameter("adminEmail");
  • 一般Servlet都是继承自HttpServlet,而HttpServlet是GenericServlet的子类。getInitParameter()方法来自于GenericServlet,所以Servlet可以调用此方法去获取web.xml配置文件中的配置信息。
  • 容器初始化一个servlet时,会为这个servlet建一个唯一的ServletConfig。其出场顺序为:先由容器加载servlet类,然后init()初始化,初始化完成前得到了ServletConfig对象,同时可以调用getInitParameter方法,从DD中读取初始化参数,经由ServletConfig传递给init()方法。
  • 划重点:先 init(),后得到ServletConfig,同时使用初始化参数(只能读一次)!可参考Head First Servlets&JSP 读书笔记_3中关于init()方法的讲解
  • 以上的代码只是专属于此Servlet的初始化参数,无法全局使用;若采取保存下来的方式,又必须使此Servlet最早先运行,这么一来可维护性极差
Read more »
1…13141516

Harrison Lee / Email (harrisonli60@163.com)

It is never too late to learn a new skill, even a challenging one.

156 posts
24 categories
34 tags
© 2026 Harrison Lee / Email (harrisonli60@163.com)
Powered by Hexo v6.3.0
|
Theme – NexT.Mist v7.0.0
|