10 2022 档案

摘要:Stream、Channel 1、Stream 不会自动缓冲数据,Channel 利用系统提供的发送缓冲区、接收缓冲区(更底层) 2、Stream 仅支持阻塞 API,Channel 同时支持阻塞、非阻塞 API,网络 Channel 可配合 Selector 实现多路复用 3、二者均为全双工,即读 阅读全文
posted @ 2022-10-31 09:51 半条咸鱼 编辑
摘要:多路复用 1、单线程可以配合 Selector 完成对多个 Channel 可读写事件的监控 2、多路复用仅针对网络 I/O,普通文件 I/O 无法利用多路复用 3、Selector 保证 (1)有可连接事件时才去连接 (2)有可读事件才去读取 (3)有可写事件才去写入 4、限于网络传输能力,Cha 阅读全文
posted @ 2022-10-31 08:52 半条咸鱼 编辑
摘要:AsynchronousChannel public interface AsynchronousChannel extends Channel 1、支持异步 I/O 操作的通道 2、异步 I/O 操作通常采用以下两种形式之一 (1)Future<V> operation(...) (2)void 阅读全文
posted @ 2022-10-29 15:53 半条咸鱼 编辑
摘要:概述 1、NIO 对非阻塞 Socket 操作支持的组件,封装 Socket 上封装一层,主要支持非阻塞的读写,同时改进传统的单向流 API,Channel 同时支持读写 (1)主要实现类:DatagramChannel、SocketChannel、ServerSocketChannel (2)在被 阅读全文
posted @ 2022-10-29 10:04 半条咸鱼 编辑
摘要:StandardCharsets 1、常规定义的标准 Charsets 2、这些字符集保证在 Java 平台的每个实现上都可用 public final class StandardCharsets { private StandardCharsets() { throw new Assertion 阅读全文
posted @ 2022-10-28 00:59 半条咸鱼 编辑
摘要:概述 1、文件锁是进程级别的,不是线程级别的 2、文件锁可以解决多个进程并发访问、修改同一个文件的问题,但不能解决多线程并发访问、修改同一文件的问题 3、使用文件锁时,同一进程内的多个线程,可以同时访问、修改此文件 4、文件锁是当前程序所属的 JVM 实例持有的,一旦获取到文件锁(对文件加锁),要调 阅读全文
posted @ 2022-10-28 00:18 半条咸鱼 编辑
摘要:概述 1、Java NIO 管道是 2 个线程之间的单向数据连接 2、Pipe 有一个 Pipe.SourceChannel 通道和一个 Pipe.SinkChannel 通道,数据会被写到 sink 通道,从 source 通道读取 3、一旦将一些字节写入 sink 通道,就可以从 source 阅读全文
posted @ 2022-10-27 23:23 半条咸鱼 编辑
摘要:Path 接口 1、是 Java NIO 更新的一部分,在 Java 7 中添加到 Java NIO 2、完全限定名称:java.nio.file.Path 3、Java Path 实例表示文件系统中的路径 (1)一个路径可以指向一个文件或一个目录 (2)路径可以是绝对路径,也可以是相对路径 (3) 阅读全文
posted @ 2022-10-27 22:31 半条咸鱼 编辑
摘要:概述 1、用于读取,写入,映射和操作文件的通道 2、只能在阻塞模式下工作,所以无法搭配 Selector 使用 获取 FileChannel 对象 1、返回与该 FileInputStream 相关的唯一 FileChannel 对象 public FileChannel getChannel() 阅读全文
posted @ 2022-10-26 22:53 半条咸鱼 编辑
摘要:一般读写步骤 1、向 buffer 写入数据 (1)当向 buffer 写入数据时,buffer 会记录写了多少数据 2、调用 flip(),切换为读模式 (1)flip() 使 buffer 中的 limit 变为 position,position 变为 0 (2)读模式下,可以读取之前写入到 阅读全文
posted @ 2022-10-26 00:39 半条咸鱼 编辑
摘要:Channel 1、Channel 表示打开到 IO 设备(如:文件、套接字)的连接 2、Channel 类似于 Stream (1)Stream 为单向通道:输入 / 输出 (2)Channel 为读写数据的双向通道,可以从 Channel 将数据读取 Buffer,可以将数据写入 Buffer 阅读全文
posted @ 2022-10-25 09:16 半条咸鱼 编辑
摘要:限制传输带宽 1、ngx_http_core_module 2、limit_except (1)解除限制一个 loaction 内的 HTTP 方法 (2)method 参数可以是下列之一:GET、HEAD、POST、PUT、DELETE、MKCOL、COPY、MOVE、OPTIONS、PROPFI 阅读全文
posted @ 2022-10-24 00:39 半条咸鱼 编辑
摘要:合并文件输出 1、ngx_http_ssi_module (1)前端合并:节约服务器计算资源,消耗请求数 (2)后端合并:ngx_http_ssi_module:动态资源静态化,不经过后端服务器,部署在 Nginx 2、ssi (1)启用 / 禁用响应中的 SSI 命令的处理 (2)语法 ssi o 阅读全文
posted @ 2022-10-23 15:01 半条咸鱼 编辑
摘要:Gzip 1、在 Nginx 配置文件中,通过配置 gzip,压缩静态资源 2、相关指令可以配置在 http 块、server 块、location 块 3、解析、处理指令的模块 (1)ngx_http_gzip_module (2)ngx_http_gzip_static_module (3)ng 阅读全文
posted @ 2022-10-23 09:28 半条咸鱼 编辑
摘要:资源盗链 1、内容不在自身服务器上,而是通过技术手段,绕过别人的限制,将别人的内容放到自己页面上,最终展示给用户,以此盗取网站的空间和流量 2、HTTP 头信息 Referer (1)当浏览器向 Web 服务器发送请求时,一般都会带上 Referer,包含当前请求页面的来源地址,即表示当前页面是通过 阅读全文
posted @ 2022-10-23 09:26 半条咸鱼 编辑
摘要:ngx_http_core_module 1、client_body_buffer_size (1)设置用于读取客户端请求体的缓冲区大小 (2)如果请求正文大于缓冲区,整个请求体或其部分将被写入一个临时文件中 (3)默认情况下,缓冲区的大小等于两个内存页。在 x86、其他 32 位平台、x86-64 阅读全文
posted @ 2022-10-23 00:49 半条咸鱼 编辑
摘要:HTTP 的 Keep-Alive 1、启用情况 (1)HTTP 1.1 中默认开启,通过 headers 设置 Connection: close 关闭 (2)HTTP 1.0 中默认关闭,通过 headers 设置 Connection: Keep-Alive 开启 2、开启 HTTP Keep 阅读全文
posted @ 2022-10-22 22:30 半条咸鱼 编辑
摘要:lua-nginx-module 1、LuaJIT (1)C 语言编写的 Lua 即时解释器 (2)下载 wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz (3)解压 tar -zxf LuaJIT-2.0.5.tar.gz (4)进入解压目录 阅读全文
posted @ 2022-10-21 22:50 半条咸鱼 编辑
摘要:概述 1、设计目的:嵌入到其他应用程序中,从而为应用程序提供灵活的扩展和定制功能 2、特性 (1)轻量级:轻量、小巧的脚本语言,标准 C 语言编写,并以源代码形式开发,方便嵌入到其他程序中 (2)可扩展:提供丰富、易用的扩展接口、机制,由宿主语言(C/C++)提供功能 (3)支持面向过程编程、函数式 阅读全文
posted @ 2022-10-20 22:56 半条咸鱼 编辑
摘要:高可用 1、减少系统不能提供服务的时间 2、上游服务器的高可用 (1)upstream 配置后端服务器,进行负载均衡 (2)server 的 location 分离访问动、静资源请求 3、Nginx 高可用 (1)需要两台以上 Nginx 服务器对外提供服务,防止宕机 (2)实现:Keepalive 阅读全文
posted @ 2022-10-20 00:26 半条咸鱼 编辑
摘要:概述 1、Cache:数据交换的缓冲区 场景 作用 操作系统磁盘缓存 减少磁盘机械操作 数据库缓存 减少文件系统的IO操作 应用程序缓存 减少对数据库的查询 Web 服务器缓存 减少对应用服务器请求次数 浏览器缓存 减少与后台的交互次数 2、优点 (1)减少数据传输,节省网络流量,加快响应速度,提升 阅读全文
posted @ 2022-10-19 00:51 半条咸鱼 编辑
摘要:概述 1、纵向扩展:单机,通过增加系统的硬件处理能力,提升服务器的处理能力 2、横向扩展:集群,通过添加机器,满足大型网站服务的处理能力 (1)应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理并返回响应的数据 (2)负载均衡器:将用户访问的请求,根据对应的负载 阅读全文
posted @ 2022-10-18 23:38 半条咸鱼 编辑
摘要:概述 1、正向代理 (1)客户端向代理服务器发送一个请求并指定目标 (2)代理服务器向目标服务器转交请求,并将获得的内容返回给客户端 2、反向代理 (1)代理服务器接受 Internet 上的连接请求,将请求转发给内部网络上的服务器 (2)将从服务器上得到的结果,返回给 Internet 上请求连接 阅读全文
posted @ 2022-10-17 11:36 半条咸鱼 编辑
摘要:概述 1、作用:重写 URL 2、Nginx 服务器 Rewrite 实现依赖于 PCRE 支持,在编译安装 Nginx 服务器之前,需要安装 PCRE 库 3、Nginx 使用 ngx_http_rewrite_module 模块,解析、处理 Rewrite 功能的相关配置 4、地址重写、地址转发 阅读全文
posted @ 2022-10-16 23:59 半条咸鱼 编辑
摘要:概述 1、客户端通过浏览器发送一个 HTTP 请求,获取所需要内容后,并把内容回显展示在页面 2、请求内容的类型 (1)静态资源:在服务器端真实存在,并且能直接展示的文件,如:html 页面、css 文件、js 文件、图片、视频等资源 (2)动态资源:在服务器端真实存在,但获取需要经过一定的业务逻辑 阅读全文
posted @ 2022-10-16 02:51 半条咸鱼 编辑
摘要:Nginx 服务的启停方式 1、Nginx 服务的信号控制 2、Nginx 的命令行控制 Nginx 服务的信号控制 1、Nginx 后台进程 (1)一个 master 进程、多个 worker 进程 (2)master 进程:管理 worker 进程,包含接收外界的信息,并将接收到的信号,发送给各 阅读全文
posted @ 2022-10-15 08:19 半条咸鱼 编辑
摘要:.tar.gz 包目录结构 1、auto:编译相关的脚本 2、CHANGES:版本变更记录 3、CHANGES.ru:俄文的版本变更记录 4、conf:默认的配置文件 5、configure:自动脚本程序 (1)检测环境,根据环境检测结果,生成 C 代码 (2)生成编译代码,所需 Makefile 阅读全文
posted @ 2022-10-15 08:01 半条咸鱼 编辑
摘要:前置 1、GCC 编译器 (1)Nginx 使用 C 语言编写的程序,运行 Nginx 需要安装一个编译工具 (2)GCC 是一个开源的编译器集合,用于处理各种各样的语言,其中就包含 C 语言 (3)安装 yum install -y gcc (4)检查是否安装成功 gcc --version 2、 阅读全文
posted @ 2022-10-15 03:17 半条咸鱼 编辑
摘要:Nginx 1、一个具有高性能的 HTTP、反向代理的 WEB 服务器 (1)WEB 服务器:网页服务器,主要功能是为用户提供网上信息浏览服务 (2)HTTP:超文本传输协议的缩写,用于从 WEB 服务器传输超文本,到本地浏览器的传输协议 2、同时也是一个 POP3 / SMTP / IMAP 代理 阅读全文
posted @ 2022-10-14 15:16 半条咸鱼 编辑
摘要:仲裁(Quorum)队列 1、概述 (1)实现基于 Raft 共识算法的持久、复制的 FIFO 队列 (2)从 RabbitMQ 3.8.0 开始可用 (3)Quorum 队列 + Streams 取代持久的镜像队列,即最初的复制队列类型,该队列现在已被废弃并计划被移除 (4)Quorum 队列是复 阅读全文
posted @ 2022-10-12 00:53 半条咸鱼 编辑
摘要:生产端 1、创建生产者 Spring Boot 工程 2、引入 starter <!-- RabbitMQ 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter- 阅读全文
posted @ 2022-10-10 15:29 半条咸鱼 编辑
摘要:死信 1、无法被消费的消息 (1)producer 将消息投递到 broker 或直接到 queue,consumer 从 queue 取出消息进行消费,但由于特定的原因导致 queue 中的某些消息 (2)死信队列:没有被及时消费的消息存放的队列 2、应用场景:当消息消费发生异常时,将消息投入死信 阅读全文
posted @ 2022-10-10 02:12 半条咸鱼 编辑
摘要:概述 1、RabbitMQ 消息传递模型:Pub / Sub(发布 / 订阅模式) (1)生产者生产的消息不会直接发送到队列 (2)实际上,通常生产者不知道消息传递到哪些队列,生产者只能将消息发送到交换机(exchange) 2、交换机 (1)接收来自生产者的消息,并将其推入队列 (2)由交换机的类 阅读全文
posted @ 2022-10-10 00:19 半条咸鱼 编辑
摘要:处理无法投递的消息 1、假设:RabbitMQ 集群不可用 2、RabbitMQ 重启期间,生产者消息投递失败,导致消息丢失,需要手动处理和恢复 消息的可靠投递 1、在使用 RabbitMQ 时,作为消息发送方,希望杜绝任何消息丢失,或者投递失败场景 2、RabbitMQ 提供两种方式,控制消息的投 阅读全文
posted @ 2022-10-09 18:45 半条咸鱼 编辑
摘要:消费端应答 1、问题引入 (1)消费者完成一个任务需要一段时间,如果其中一个消费者处理一个长任务,并只完成部分但突然挂掉 (2)若 RabbitMQ 一旦向消费者传递一条消息,便立即将该消息标记为删除 (3)在这种情况下,突然其中一个消费者挂掉,将丢失正在处理的消息、后续发送给该消费者的消息 2、消 阅读全文
posted @ 2022-10-08 14:20 半条咸鱼 编辑
摘要:MQ 1、message queue 2、本质队列,FIFO 先入先出 3、一种跨进程的通信机制,用于上下游传递消息 (1)在互联网架构中,MQ 是一种上下游“逻辑解耦 + 物理解耦”消息通信服务 (2)使用 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务 4、作用 (1)流量消峰 (2 阅读全文
posted @ 2022-10-06 22:52 半条咸鱼 编辑
摘要:内存回收 1、当内存使用达到上限时,就无法存储更多数据 2、Redis 提供策略实现内存回收 (1)内存过期策略 (2)内存淘汰策略 过期策略 1、通过 expire 命令给 Redis 的 key 设置 TTL(存活时间) 2、Redis 判断一个 key 过期 (1)Redis 本身是一个 ke 阅读全文
posted @ 2022-10-05 20:26 半条咸鱼 编辑
摘要:RESP 协议 1、Redis 是一个 CS 架构的软件,通信一般分两步(不包括 pipeline 和 PubSub) (1)客户端(client)向服务端(server)发送一条命令 (2)服务端解析并执行命令,返回响应结果给客户端 (3)客户端发送命令的格式、服务端响应结果的格式必须有一个规范, 阅读全文
posted @ 2022-10-05 18:48 半条咸鱼 编辑
摘要:用户空间、内核空间 1、任何 Linux 发行版,其系统内核都是 Linux,应用都需要通过 Linux 内核与硬件交互 2、为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的 (1)进程的寻址空间会划分为两部分:内核空间、用户空间 (2)用户空间只能执行受限的命令(Ring3),而且不能 阅读全文
posted @ 2022-10-05 18:35 半条咸鱼 编辑
摘要:动态字符串 1、Redis 中保存的 Key 是字符串,value 往往是字符串或字符串的集合,字符串是 Redis 中最常用的一种数据结构 2、Redis 没有直接使用 C 语言中的字符串,因为 C 语言字符串存在很多问题 (1)获取字符串长度的需要通过运算 (2)非二进制安全 (3)不可修改 3 阅读全文
posted @ 2022-10-05 16:45 半条咸鱼 编辑
摘要:key 结构 1、key 最佳实践约定 (1)遵循基本格式:[业务名称]:[数据名]:[id] (2)长度不超过 44 字节 (3)不包含特殊字符 2、优点 (1)可读性强 (2)避免 key 冲突 (3)方便管理 (4)节省内存:key 是 string 类型,底层编码包含 int、embstr、 阅读全文
posted @ 2022-10-04 23:36 半条咸鱼 编辑
摘要:多级缓存 1、充分利用请求处理的每个环节,分别添加缓存,减轻 Tomcat 压力,提升服务性能 (1)浏览器访问静态资源时,优先读取浏览器本地缓存 (2)访问非静态资源(ajax 查询数据)时,访问服务端 (3)请求到达 Nginx 后,优先读取 Nginx 本地缓存 (4)如果 Nginx 本地缓 阅读全文
posted @ 2022-10-04 22:26 半条咸鱼 编辑
摘要:最简单的消息队列模型包括 3 个角色 1、消息队列:存储、管理消息,也被称为消息代理(Message Broker) 2、生产者:发送消息到消息队列 3、消费者:从消息队列获取消息,并处理消息 Redis 提供三种实现 1、List结构:基于 List 结构模拟消息队列 2、PubSub:基本的点对 阅读全文
posted @ 2022-10-04 01:55 半条咸鱼 编辑
摘要:概述 1、Jedis (1)为性能和易用性而设计的 Java Redis 客户端 (2)以 Redis 命令作为方法名称,学习成本低,简单实用 (3)但 Redis 实例是线程不安全的,多线程环境下需要配合连接池使用 2、Lettuce (1)高级 Java Redis 客户端,基于 Netty 实 阅读全文
posted @ 2022-10-03 18:41 半条咸鱼 编辑
摘要:ACL 1、Access Control List:访问控制列表 2、在 Redis 5 之前,安全规则只有密码控制、rename 调整高危命令(flushdb、keys * 、shutdown 等) 3、Redis 6 提供 ACL 功能对用户进行更细粒度的权限控制 (1)接入权限:用户名和密码 阅读全文
posted @ 2022-10-02 18:15 半条咸鱼 编辑
摘要:缓存穿透 1、key 对应 value 不存在于数据源 (1)每次从缓存中无法获取此 key,获取请求都会压到数据源,从而可能压垮数据源 (2)一个一定不存在缓存及查询不到的数据,出于容错考虑,如果从存储层查不到数据,则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义 阅读全文
posted @ 2022-10-02 17:41 半条咸鱼 编辑
摘要:概述 1、Redis 集群是一个提供在多个 Redis 节点间共享数据的程序集 2、优点 (1)通过分区来提供一定程度的可用性,自动分割数据到不同的节点上 (2)在实际环境中,整个集群的部分节点失败,或不可达的情况下,能够继续处理命令 (3)实现对 Redis 水平扩容,即启动 N 个 Redis 阅读全文
posted @ 2022-10-02 15:56 半条咸鱼 编辑
摘要:Redis 提供不同级别的持久化方式 1、RDB 持久化方式:在指定的时间间隔,对数据进行快照存储 2、AOF 持久化方式:记录每次对服务器写的操作,当服务器重启时,会重新执行这些命令来恢复原始的数据,AOF 命令以 redis 协议追加保存每次写的操作到文件末尾,Redis 还能对 AOF 文件进 阅读全文
posted @ 2022-10-02 01:50 半条咸鱼 编辑

点击右上角即可分享
微信分享提示