元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
全部分类
Java基础 20 JVM 13 中间件 26 Otter篇 3 Otter 1 系统设计 25 高可用 1 Java进阶 5 Spring 5 Nexus 1 工作杂货 6 开发工具 2 Shardingsphere 6 云原生 7 K8S 5 容器化 2 计算机网络 17 基础 7 Kafka篇 4 数据结构 8 数据库 9 MySQL 7 网络 4 设计模式 24 并发编程 2 操作系统 3 Redis篇 10 Nginx篇 1 博客搭建 4 更多 1 技术 9 GitHub技巧 4 技术文档 5 《Git》学习笔记 14

有趣的加密算法-Bcrypt

元月 2023-01-14 计算机网络基础 加密算法

# 一、简介

Bcrypt就是一款加密工具,它内部自己实现了随机加盐处理,使得每次加密后的密文是不一样的

格式:

$2b$[cost]$[22 character salt][31 character hash]
1

示例:

$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
\__/\/ \____________________/\_____________________________/
 Alg Cost      Salt                        Hash
1
2
3
阅读全文

数据结构与算法--LFU算法

元月 2022-12-03 计算机网络数据结构 数据结构

# 数据结构与算法--LFU算法

# 一、简介

LFU 的全称是 Least Frequently Used(最近不经常使用),是一种缓存淘汰策略,它是根据频率维度来选择将要淘汰的元素,即删除访问频率最低的元素。如果两个元素的访问频率相同,则淘汰最久没被访问的元素。它的底层是 两个哈希表 + N个双链表 实现的,查找和添加的时间复杂度都是O(1)。

460. LFU 缓存

阅读全文

数据结构与算法--LRU算法

元月 2022-12-03 计算机网络数据结构 数据结构

# 数据结构与算法--LRU算法

# 一、简介

LRU 的全称是 Least Recently Used(最近最少使用),是一种缓存淘汰策略,它是根据时间维度来选择将要淘汰的元素,即删除掉最长时间没被访问的元素据。它的底层是 哈希表 + 双链表 实现的,查找和添加的时间复杂度都是O(1),Java中的LinkedHashMap就是这样的一种数据结构。

剑指 Offer II 031. 最近最少使用缓存

阅读全文

数组篇:前缀和数组和差分数组

元月 2022-12-03 计算机网络数据结构

数组篇:双指针技巧

元月 2022-12-03 计算机网络数据结构

数据结构与算法--跳表

元月 2022-11-23 计算机网络数据结构 链表

# 数据结构与算法--跳表

# 一、简介

跳表全称叫做跳跃表,本质上就是有序链表 + 多级索引 + 随机技术,它在有序链表上面增加了多级索引,另外采用随机技术来维护数据结构的平衡性。相对于有序链表时间复杂度O(n)而言,跳表的查询、插入、删除的平均时间复杂度都为 O(logn)

采用这种随机技术,跳表中的搜索、插入、删除操作的时间均为O(logn),然而,最坏情况下时间复杂性却变成O(n)。相比之下,在一个有序数组或链表中进行插入/删除操作的时间为O(n),最坏情况下为O(n)。

Leetcode--1206. 设计跳表

阅读全文

链表的特殊状态:相交链表、回文链表、环形链表

元月 2022-11-17 计算机网络数据结构 链表

链表的高级操作:链表的反转、合并、拆分

元月 2022-11-17 计算机网络数据结构 链表

链表的基本操作:查找、删除

元月 2022-11-17 计算机网络数据结构 链表

HTTP详解

元月 2022-11-03 计算机网络网络 HTTP

# HTTP详解

# 一、简介

HTTP是超文本传输协议,是用于在计算机之间传输数据的应用层协议。

# 二、发展

HTTP协议从诞生至今已经经历了多个版本的演变,以下是各个版本的主要区别:

# 2.1、HTTP/0.9

这个版本的协议非常简单,请求和响应只包含数据本身,没有头信息和其他元数据。

# 2.2、HTTP/1.0

引入了请求头和响应头,允许传输多种数据格式。HTTP/1.0每次请求和响应都需要单独建立TCP连接,效率较低。

请求和响应都是由三部分组成:起始行、首部和实体。

# 2.3、HTTP/1.1

为了解决HTTP/1.0的效率问题,引入了持久连接,即同一个TCP连接可以用于多次请求和响应。同时还引入了管道机制,允许多个请求并发发送和响应。这个版本的协议还引入了新的请求方法和状态码,支持压缩和分块传输编码,可以提高传输效率。

# 2.4、HTTP/2
  1. 二进制传输

    http2.0将请求和响应数据分割为更小的帧,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流表示可以重新组装。

  2. Header压缩

    Http2.0开发了专门的“HPACK”算法,大大压缩了Header信息

  3. 多路复用

    http2.0中引入了多路复用技术,很好的解决了浏览器限制同一个域名下的请求数量的问题。

    多路复用技术可以只通过一个TCP链接就可以传输所有的请求数据

  4. 服务端推送

    HTTP2.0在一定程度上改不了传统的“请求-应答”工作模式,服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端推送Server Push”)

    服务器也不能随便将第三方资源推送给服务器,必须经过双方确认。

​ 此外,HTTP/2还可以使用TLS加密协议,提高安全性。

# 2.5、HTTP/3

HTTP/3基于QUIC协议开发,使用UDP协议进行传输,可以避免TCP的慢启动和拥塞控制等问题。

# 三、HTTP状态码分类

HTTP 状态码用于描述 HTTP 请求的结果,例如 200 表示请求被成功处理。

!

阅读全文

上一页

12

下一页

全部分类
Java基础 20 JVM 13 中间件 26 Otter篇 3 Otter 1 系统设计 25 高可用 1 Java进阶 5 Spring 5 Nexus 1 工作杂货 6 开发工具 2 Shardingsphere 6 云原生 7 K8S 5 容器化 2 计算机网络 17 基础 7 Kafka篇 4 数据结构 8 数据库 9 MySQL 7 网络 4 设计模式 24 并发编程 2 操作系统 3 Redis篇 10 Nginx篇 1 博客搭建 4 更多 1 技术 9 GitHub技巧 4 技术文档 5 《Git》学习笔记 14
Theme by Vdoing | Copyright © 2022-2025 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式