01_MySQL架构篇
第04章_逻辑架构1. 逻辑架构剖析1.1 服务器处理客户端请求首先MySQL是典型的C/S架构,即Clinet/Server 架构,服务端程序使用的mysqld。
不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。
那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为 例展示:
下面具体展开如下:
1.2 ConnectorsConnectors, 指的是不同语言中与SQL的交互。MySQL首先是一个网络程序,在TCP之上定义了自己的应用层协议。所以要使用MySQL,我们可以编写代码,跟MySQL Server 建立TCP连接,之后按照其定义好的协议进行交互。或者比较方便的方法是调用SDK,比如Native C API、JDBC、PHP等各语言MySQL Connecotr,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互
接下来的MySQL S ...
手写Web应用服务,彻底搞懂Tomcat © pepsi-wyl
前提知识点
Socket
IO流
思路
启动Socket服务,循环接收浏览器请求
接收到请求后,取出流中数据
判断目标资源是否存在,不存在则返回404,存在则通过输出流将目标资源响应给客户端
类
Server:开启Socket服务
Request:封装请求,处理相关的请求业务
Response:封装响应,处理相关的响应业务
Test:测试类
编码1234GitHub https://github.com/pepsi-wyl/Web_Tomcat git@github.com:pepsi-wyl/Web_Tomcat.githttps://github.com/pepsi-wyl/Web_Tomcat.git
HttpServer123456789101112131415161718192021222324252627282930313233343536373839404142434445import lombok.SneakyThrows;import java.io.InputStream;import java.io.OutputStream;import j ...
TCP三次握手和四次挥手 © JavaGuide
为了准确无误地把数据送达目标处,TCP 协议采用了三次握手策略。
建立连接-TCP 三次握手建立一个 TCP 连接需要“三次握手”,建立了 3 次握手之后,客户端和服务端就可以传输数据啦! ( 序号(SEQ)确认序号(ACK) )
一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND(请求连接) 状态,等待服务器的确认;
二次握手:服务端发送带有 **SYN+ACK(SEQ=y,ACK=x+1) **标志的数据包 –> 客户端,然后服务端进入 SYN_RECV 状态;
三次握手:客户端发送带有 ACK(ACK=y+1) 标志的数据包 –> 服务端,然后客户端和服务器端都进入ESTABLISHED 状态,完成TCP三次握手;
为什么要三次握手三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收正常
第一次握手 :Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
...
HTTP © CS-Notes
HTTP基础入门HTTPHTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。
请求和响应报文客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。请求报文结构:
第一行包含请求方法、URL、协议版本;
接下来的多行都是请求首部 Header,每个首部都有一个首部名称,以及对应的值;
一个空行用来分隔首部和内容主体 Body;
最后是请求的内容主体;
12345678910111213GET http://www.example.com/ HTTP/1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q= ...
EasyExcel © pepsi-wyl
初识EasyExcelApache POIApache POI是Apache软件基金会的开源函式库,提供跨平台的Java API实现Microsoft Office格式档案读写。特点
功能强大
代码书写冗余繁杂 ,学习和使用成本较高
读写大文件耗费内存较大,容易OOM
EasyExcelGitHub地址 官网地址EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目,在尽可能节约内存的情况下支持读写百M的Excel。特点
在数据模型层面进行了封装,使用简单
重写了07版本的Excel的解析代码,降低内存消耗,能有效避免OOM
只能操作Excel
不能读取图片
性能测试64M内存20秒读取75M(46W行25列)的Excel(3.0.2+版本),也有极速模式能更快,但是内存占用会在100M多一点。![large-4261205e1a145b60a6051d57afe137d1.png](./assets/1668427614873-2a21e2a6-e3fb-40d2-a08f-9430f3faa6de.png %}
快速入门官 ...
Hadoop © pepsi-wyl
Hadoop简介Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中。Hadoop的核心是分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce。Apache Hadoop版本分为三代,分别是Hadoop 1.0、Hadoop 2.0和Hadoop3.0。除了免费开源的Apache Hadoop以外,还有一些商业公司推出Hadoop的发行版。2008年,Cloudera成为第一个Hadoop商业化公司,并在2009年推出第一个Hadoop发行版。此后,很多大公司也加入了做Hadoop产品化的行列,比如MapR、Hortonworks、星环等。2018年10月,Cloudera和Hortonworks宣布合并。一般而言,商业化公司推出的Hadoop发行版也是以Apache Hadoop为基础,但是前者比后者具有更好的易用性、更多的功能以及更高的性能。
单机安装预先配置关闭防火墙1234 ...
Hexo入门
基础入门基础命令1234567hexo help # 帮助hexo clean # 清除缓存和已生成的静态文件hexo g # 生成页面hexo s # 本地预览hexo d # 部署hexo g -d # 生成页面并部署
新建页面1hexo new page "name" # 新建页面
创建文章1hexo new "name" # 新建文章
Front-matterFront-matter 选项中的所有内容均为非必填的。但我仍然建议至少填写 title 和 date 的值。
123456789# 基本属性title 文章标题date 文件创建时间updated 文件更新时间author 文章作者tags 文章标签categories 文章分类top true 设置为 true,文章则置顶summary ...