修复图片资源问题

This commit is contained in:
朱毅骏 2023-10-16 14:58:37 +08:00
parent 7f0abdd52f
commit 6688c60959
13 changed files with 10 additions and 10 deletions

View File

@ -708,7 +708,7 @@ int main()
面向对象程序设计Object-oriented programmingOOP是种具有对象概念的程序编程典范同时也是一种程序开发的抽象方针。 面向对象程序设计Object-oriented programmingOOP是种具有对象概念的程序编程典范同时也是一种程序开发的抽象方针。
![图片](https://mmbiz.qpic.cn/mmbiz_png/kChlCQZAfH5FqDts5YrdZGE45XzVJudXRcRILjlpAIuhvY3jR92az84fibr0icTn6WH5Alo2Vxdrh1HMVnaMxdhQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)面向对象特征 ![图片](images/640.webp)面向对象特征
面向对象三大特征 —— 封装、继承、多态 面向对象三大特征 —— 封装、继承、多态
@ -1220,7 +1220,7 @@ class doSomething(Flyable *obj) // 做些事情
> >
> #### Google C++ Style Guide 图 > #### Google C++ Style Guide 图
![图片](https://mmbiz.qpic.cn/mmbiz_png/kChlCQZAfH5FqDts5YrdZGE45XzVJudXSb48q1TO1UwsBmib9bSAWfLdF4rOfJNbf7HwQrLeCRvzvIibXpd737LQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1) ![图片](images/650.webp)
> 图片来源于CSDN . 一张图总结Google C++编程规范(Google C++ Style Guide) > 图片来源于CSDN . 一张图总结Google C++编程规范(Google C++ Style Guide)
@ -1647,7 +1647,7 @@ typedef struct BiTNode
#### 八叉树图片 #### 八叉树图片
![图片](https://mmbiz.qpic.cn/mmbiz_png/kChlCQZAfH5FqDts5YrdZGE45XzVJudXgibemJh7kI2KuG7IuADenHTWm8XZRE1AwEIbczibHbR03rtibCibibxLEKw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1) ![图片](images/660.webp)
八叉树octree或称八元树是一种用于描述三维空间划分空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素每个节点有八个子节点这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中心。 八叉树octree或称八元树是一种用于描述三维空间划分空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素每个节点有八个子节点这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中心。
@ -2459,7 +2459,7 @@ ssize_t write(int fd, const void *buf, size_t count);
只有就完了三次握手,但是这个三次握手发生在 Socket 的那几个函数中呢?请看下图: 只有就完了三次握手,但是这个三次握手发生在 Socket 的那几个函数中呢?请看下图:
![图片](https://mmbiz.qpic.cn/mmbiz_png/kChlCQZAfH5FqDts5YrdZGE45XzVJudXU3CYC5EU3tKckJvC4XB2vaUpFyFvKNiaQ8k5icVONibnILdyXpIlvPBYA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)socket 中发送的 TCP 三次握手 ![图片](images/670.webp)socket 中发送的 TCP 三次握手
从图中可以看出: 从图中可以看出:
@ -2472,7 +2472,7 @@ ssize_t write(int fd, const void *buf, size_t count);
上面介绍了 socket 中 TCP 的三次握手建立过程,及其涉及的 socket 函数。现在我们介绍 socket 中的四次握手释放连接的过程,请看下图: 上面介绍了 socket 中 TCP 的三次握手建立过程,及其涉及的 socket 函数。现在我们介绍 socket 中的四次握手释放连接的过程,请看下图:
![图片](https://mmbiz.qpic.cn/mmbiz_png/kChlCQZAfH5FqDts5YrdZGE45XzVJudXxNJlh5gfLcegmkogu0QWWl1LT5mD5E2bEhQtNlYRMhB6PnrOtVuUPw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)socket 中发送的 TCP 四次握手 ![图片](images/680.webp)socket 中发送的 TCP 四次握手
图示过程如下: 图示过程如下:

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -20,7 +20,7 @@ date: 2022-02-07 00:00:00
运行期多态的设计思想要归结到类继承体系的设计上去。对于有相关功能的对象集合,我们总希望能够抽象出它们共有的功能集合,在基类中将这些功能声明为虚接口(虚函数),然后由子类继承基类去重写这些虚接口,以实现子类特有的具体功能。典型地我们会举下面这个例子: 运行期多态的设计思想要归结到类继承体系的设计上去。对于有相关功能的对象集合,我们总希望能够抽象出它们共有的功能集合,在基类中将这些功能声明为虚接口(虚函数),然后由子类继承基类去重写这些虚接口,以实现子类特有的具体功能。典型地我们会举下面这个例子:
![图片](https://gitee.com/zyjblog/img/raw/master/md/2021-9-30-640.png) ![图片](images/2021-9-30-640.png)
```cpp ```cpp
class Animal class Animal

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -42,7 +42,7 @@ date: 2021-08-13 00:00:00
BIO通信一请求一应答模型图如下(图源网络,原出处不明) BIO通信一请求一应答模型图如下(图源网络,原出处不明)
![传统BIO通信模型图](./img/2.png) ![传统BIO通信模型图](images/2.png)
采用 **BIO 通信模型** 的服务端,通常由一个独立的 Acceptor 线程负责监听客户端的连接。我们一般通过在`while(true)` 循环中服务端会调用 `accept()` 方法等待接收客户端的连接的方式监听请求,请求一旦接收到一个连接请求,就可以建立通信套接字在这个通信套接字上进行读写操作,此时不能再接收其他客户端连接请求,只能等待同当前连接的客户端的操作执行完成, 不过可以通过多线程来支持多个客户端的连接,如上图所示。 采用 **BIO 通信模型** 的服务端,通常由一个独立的 Acceptor 线程负责监听客户端的连接。我们一般通过在`while(true)` 循环中服务端会调用 `accept()` 方法等待接收客户端的连接的方式监听请求,请求一旦接收到一个连接请求,就可以建立通信套接字在这个通信套接字上进行读写操作,此时不能再接收其他客户端连接请求,只能等待同当前连接的客户端的操作执行完成, 不过可以通过多线程来支持多个客户端的连接,如上图所示。
@ -58,7 +58,7 @@ BIO通信一请求一应答模型图如下(图源网络,原出处不明)
伪异步IO模型图(图源网络,原出处不明) 伪异步IO模型图(图源网络,原出处不明)
![伪异步IO模型图](http://study.zyjblogs.cn/3.png) ![伪异步IO模型图](images/3.png)
采用线程池和任务队列可以实现一种叫做伪异步的 I/O 通信框架,它的模型图如上图所示。当有新的客户端接入时,将客户端的 Socket 封装成一个Task该任务实现java.lang.Runnable接口投递到后端的线程池中进行处理JDK 的线程池维护一个消息队列和 N 个活跃线程,对消息队列中的任务进行处理。由于线程池可以设置消息队列的大小和最大线程数,因此,它的资源占用是可控的,无论多少个客户端并发访问,都不会导致资源的耗尽和宕机。 采用线程池和任务队列可以实现一种叫做伪异步的 I/O 通信框架,它的模型图如上图所示。当有新的客户端接入时,将客户端的 Socket 封装成一个Task该任务实现java.lang.Runnable接口投递到后端的线程池中进行处理JDK 的线程池维护一个消息队列和 N 个活跃线程,对消息队列中的任务进行处理。由于线程池可以设置消息队列的大小和最大线程数,因此,它的资源占用是可控的,无论多少个客户端并发访问,都不会导致资源的耗尽和宕机。
@ -194,7 +194,7 @@ NIO有选择器而IO没有。
选择器用于使用单个线程处理多个通道。因此,它需要较少的线程来处理这些通道。线程之间的切换对于操作系统来说是昂贵的。 因此,为了提高系统效率选择器是有用的。 选择器用于使用单个线程处理多个通道。因此,它需要较少的线程来处理这些通道。线程之间的切换对于操作系统来说是昂贵的。 因此,为了提高系统效率选择器是有用的。
![一个单线程中Selector维护3个Channel的示意图](./img/Slector.png) ![一个单线程中Selector维护3个Channel的示意图](images/Slector.png)
### 2.3 NIO 读数据和写数据方式 ### 2.3 NIO 读数据和写数据方式
@ -205,7 +205,7 @@ NIO有选择器而IO没有。
数据读取和写入操作图示: 数据读取和写入操作图示:
![NIO读写数据的方式](./img/NIO读写数据的方式.png) ![NIO读写数据的方式](images/NIO读写数据的方式.png)
### 2.4 NIO核心组件简单介绍 ### 2.4 NIO核心组件简单介绍

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB