- 博客(652)
- 资源 (2)
- 收藏
- 关注

原创 Nginx面试题一步到位
Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发。一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。正向代理总结就一句话:代理端代理的是客户端。
2023-02-23 10:04:31
477

原创 一文打通java线程
是为完成特定任务、用某种语言编写的一组指令的集合。即指一 段静态的代码,静态对象。是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期进程可进一步细化为线程,是一个程序内部的一条执行路径。 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程 的任务。例如:虽然有多车道,但是收费站只有一个工作人员在收费,只有收了费 才能通过,那么CPU就好比收费人员。如果有某个人不想交钱,那么收费人员可以 把他“挂起”(晾着他,等他想通了,准
2023-01-24 17:30:41
1887
原创 Nginx之memcached_module模块解读
nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的请求不再经过应用程序处理,如php-fpm、django,大大的提升动态页面的速度。nginx只负责从memcached服务器中读取数据,要往memcached写入数据还得需要后台的应用程序来完成,主动的将要缓存的页面缓存到memcached中,可以通过404重定向到后端去处理的。
2023-09-27 07:43:02
31
原创 Nginx之带宽限制解读
在高负载的网络环境下,为了保持服务的稳定性,限速 (download rate) 是一种必要的操控拜访量的手法。Nginx 是一款高性能的 Web 服务器和反向代理服务器,可以运用 limit_rate_after 和 limit_rate 两个首要指令来完结流量操控和限速。作为NGINX流量管理的三大功能之一,带宽控制的实现相对简单。它也只是实现了单个连接上的带宽控制,经常要和速率控制、并发控制一起使用来实现客户端的流量管理。
2023-09-26 08:46:22
33
原创 Nginx之QPS限制模块解读
NGINX通过limit_req_zone和limit_req两条指令来实现速率限制。指令limit_req_zone定义了限速的参数,指令limit_req在所在的location使能定义的速率。QPS即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。QPS = req/sec = 请求数/秒,即每秒的响应请求数,也即是最大吞吐能力。
2023-09-25 09:11:34
49
原创 Nginx之error_page模块解读
其原理是响应到错误代码后,导向指定的路由,然后再由指定的路由处理,如下当错误代码是404时,相当于访问http://localhost:80/50x.html,正好被内部传送给 location = /50x.html让其来进行处理(需要注意必须有50x.html这个页面)当nginx发生内部错误时,比如说404、403、500等错误,默认会跳转到nginx自带的错误页面。其原理是响应到错误代码后,302(临时重定向到目标网址),如下当错误代码为404时,导向。,默认为 200,不加。
2023-09-24 08:48:27
75
原创 Nginx之gzip模块解读
gzip是GNUzip的缩写,最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术,web服务器和客户端(浏览器)必须共同支持gzip。目前主流的浏览器,Chrome,firefox,IE等都支持该协议。常见的服务器如Apache,Nginx,IIS同样支持gzip。
2023-09-23 09:04:55
159
原创 Nginx之防盗链及高可用解读
网页的加载顺序是先加载HTML相关的内容,然后解析HTML的内容,那些需要加载图片,那些需要加载文件,是逐步加载的,对于我们线上的图片等静态资源,经常会被其他网站盗用,外面可以我们请求到一个页面后,这个页面一般会再去请求其中的静态资源,这时候请求头中,会有一个refer字段,表示当前这个请求的来源,我们可以限制指定来源的请求才返回,否则就不返回,这样可以防止资源被盗用。高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
2023-09-22 07:43:22
81
原创 Nginx之会话管理解读
集群模式下,里面会含有多个服务器,而客户端在某个时刻访问哪个服务器是由负载均衡器决定的,这里就产生了一个问题如果一个用户的Session信息如果存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器上,由于服务器上没有用户的session信息,那么该用户就需要重新进行登录操作,或者是在某一个服务器上时创建的重要session信息将丢失。瓶颈:一直扩容下去也是有瓶颈的,比如主板只能支持100G的内存,你插再大的内存条也不管事,主板不支持,所以得再叠加水平扩容。比如说买块内存条,换个ssd。
2023-09-21 08:40:08
43
原创 Nginx之sticky第三方模块使用解读
Sticky就是基于cookie的一种负载均衡解决方案,它是通过基于cookie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。请求来了,服务器发个cookie,并说:下次来带上,直接来找我。Sticky是nginx的一个模块,它是基于cooki e的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route。
2023-09-20 07:46:09
248
原创 Nginx之keepalive配置解读
keepalive是HTTP/1.1协议中的一个特性,它允许客户端和服务器之间的TCP连接在一个HTTP请求/响应周期结束后保持打开状态,以便在后续的请求中重复使用。这样可以减少TCP连接的建立和关闭次数,从而提高性能。(注意:keepalive是tcp层长连接探活机制;keep-alive是应用层http协议使用,在其头部Connection字段中的一个值,只是代表客户端与服务之间需要保持长连接,可以理解为通过此字段来告诉nginx此连接需要维持长连接,处理完别直接关闭连接。
2023-09-19 08:52:19
122
原创 Nginx之负载均衡解读
为了避免服务器崩溃,大家会通过负载均衡的方式来分担服务器压力。将对台服务器组成一个集群,当用户访问时,先访问到一个转发服务器,再由转发服务器将访问分发到压力更小的服务器。负载均衡(Load Balancing)是将传入的请求流量分发到多个后端服务器的技术,以达到消除单点故障、提高可用性、增加扩展性等目的。
2023-09-18 09:18:05
58
原创 华为云云耀云服务器L实例评测|基于Docker环境快速部署Halo个人博客实操
云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。云计算服务的入门用户服务器中部署简单应用的个人开发者、中小企业云耀云服务器L实例购买地址云耀云服务器L实例具备计算、存储、镜像安装、备份等能力。智能不卡顿:瑶光AI智能调度与新一代网络技术,软硬实力驱动性能倍增,成就更流畅、稳定的上云体验价优随心用。
2023-09-16 08:47:25
218
原创 华为云云耀云服务器L实例评测|Java常见开发环境实操部署
云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。云计算服务的入门用户服务器中部署简单应用的个人开发者、中小企业云耀云服务器L实例购买地址云耀云服务器L实例在不同区域中部署,一个区域发生故障后不会影响其他区域的云服务器。
2023-09-15 07:58:39
82
原创 华为云云耀云服务器L实例评测|手把手教你搭建一个论坛
本文基于华为云云耀云服务器快速搭建的个人论坛网站,基于Discuz!开源代码,新手也可快速把握,拳拳到肉
2023-09-14 08:29:58
103
原创 Liunx系统下载安装Nginx下载安装
Nginx开源版 http://nginx.org/en/官方原始的Nginx版本Nginx plus商业版开箱即用,集成了大量功能OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。更适用于需要大量二次开发的场景,有极强的扩展性由淘宝网发起的Web服务器项目。它在的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如。
2023-09-13 07:47:44
146
原创 Redis之string类型的三大编码解读
在 Redis 中,String 类型的数据结构并不是采用 C 语言中自带的字符串类型,C 语言中的数据结构存在很多问题,比如:获取字符串长度的需要通过运算非二进制安全不可修改因此,String 在 Redis 中有其他三种编码方式: int、embstr、raw。其中, raw 和 embstr 类型,都是基于动态字符串(SDS)实现的。
2023-09-12 08:39:11
239
原创 Redis之Redis为什么这么快解读
当别人问我们Redis这么快的时候,很多小白都只会简简单单的回答,因为Redis它是基于内存存储的,使用内存存储数据,可以避免频繁的进行写盘操作,大大降低响应时间。这个确实是一个原因,但回答的还是不够面。起码在这里还得回答上高效的数据结构以及IO网络多路复用的设计架构。Redis 采用网络 I/O 多路复用技术,要想理解IO多路复用的话,还得去理解下阻塞 I/O 模型,非阻塞 I/O 模型。
2023-09-11 08:19:21
58
原创 Redis之Redis 6.0中Hash(ziplist)解读
Redis中hash数据类型使用了两种编码格式:ziplist(压缩列表)、hashtable(哈希表) 在redis.conf配置文件中,有以下两个参数,意思为:当节点数量小于512并且字符串的长度小于等于64时,会使用ziplist编码。ziplist 是一个经过特殊编码的双向链表,旨在提高内存效率。它存储字符串和整数值,其中整数被编码为实际整数而不是一系列字符。它允许在 O(1) 时间内在列表的任一侧进行推送和弹出操作。但是,由于每个操作都需要重新分配 ziplist 使用的内存。
2023-09-10 09:24:39
109
原创 Redis之布隆过滤器(Bloom Filter)解读
在实际开发中,会遇到很多要判断一个元素是否在某个集合中的业务场景,类似于垃圾邮件的识别,恶意ip地址的访问,缓存穿透等情况。类似于缓存穿透这种情况,有许多的解决方法,如:redis存储null值等,而对于垃圾邮件的识别,恶意ip地址的访问,我们也可以直接用 HashMap 去存储恶意ip地址以及垃圾邮件,然后每次访问时去检索一下对应集合中是否有相同数据。
2023-09-09 08:08:14
220
原创 Redis之SDS底层原理解读
Redis 采用一段连续的内存空间来存储 SDS 结构,具体结构如下图所示,free 代表指这个字符串剩余可用空间的长度,而 len 代表这个字符串已占用空间的长度,buf [] 就是字符数组。// 记录 buf 数组中已使用字节的数量// 等于 SDS 所保存字符串的长度int len;// 记录 buf 数组中未使用字节的数量int free;// 字节数组,用于保存字符串char buf[];
2023-09-08 07:42:03
227
原创 Redis之过期key的淘汰及缓存淘汰策略解读
我们都知道在Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。想象一下里面有一个专门删除过期数据的线程,如果数据已过期就立马删除。这个时候可以思考一下,会不会因为同一时间太多的 key 过期,以至于线程忙不过来。同时因为 Redis 是单线程的,删除的时间也会占用线程的处理时间,如果删除的太过于繁忙,会不会导致线上读写指令出现卡顿。
2023-09-06 07:35:31
60
原创 Redis之缓存和数据库双写一致方案讨论解读
只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题。我们需要保证redis跟数据库的中的数据保持一致,返回正确的数据。
2023-09-05 08:11:29
339
原创 Redis之哨兵模式解读
当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
2023-09-04 07:53:30
1025
原创 Redis之主从复制解读
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower)数据的复制是单向的!只能由主节点复制到从节点(主节点以写为主、从节点以读为主)数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能有一个主节点。
2023-09-03 08:55:06
215
原创 Redis之MoreKey问题及Scan命令解读
大量的数据使用key*查看或者删除会导致严重的时间消耗,这个指令没有offset、limit 参数,是要一次性吐出所有满足条件的key,由于redis,是单线程的,其所有操作都是原子的,而keys算法是遍历算法,复杂度是O(n),SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。返回值:返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。
2023-09-02 00:05:55
240
原创 Redis之bigkey问题解读
目录什么是bigkey?bigkey引发的问题如何查找bigkeyredis-cli --bigkeysMEMORY USAGEbigKey如何删除渐进式删除unlinkbigKey生产调优bigkey简单来说就是存储本身的key值空间太大,或者hash,list,set等存储中value值过多。具体来衡量的话大key是:可以通过redis客户端提供的命令 redis-cli --bigkeys来查看好处:给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小不足:想查询
2023-09-01 09:13:30
533
原创 Redis之发布订阅解读
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:Redis 客户端可以订阅任意数量的频道。Redis的Pub/Sub展示了最多一次消息传递语义。
2023-08-31 10:37:39
92
原创 Redis之管道解读
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务器。客户端发送一个请求到服务器,并以阻塞的方式从socket读取数据,获取服务端响应。服务端处理请求命令并发送响应回给客户端。以上两步称为:Round Trip Time(简称RTT,数据包往返于两端的时间)。管道主要解决的就是redis频繁命令往返造成的性能瓶颈Clients 和 Servers 通过网络连接. 可以是本地非常快的网络,或者是通过互联网连接很远的网络。不管网络延迟如何,
2023-08-30 09:40:57
553
原创 Redis之事务解读
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行。Redis事务的三个特性:一致性,顺序性,排他性开始事务。命令入队。执行事务。Redis事务不可回滚。
2023-08-29 09:35:12
85
原创 Redis持久化之AOF解读
以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作AOF持久性记录服务器收到的每个写入操作。然后可以在服务器启动时再次重播这些操作,重建原始数据集。命令的记录格式与 Redis 协议本身相同。
2023-08-28 10:24:29
123
原创 Redis持久化之RDB解读
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
2023-08-27 09:16:49
205
原创 Redis之stream类型解读
Redis stream(流)是一种数据结构,其作用类似于仅追加日志,但也实现了多个操作来克服典型仅追加日志的一些限制。其中包括O(1)时间的随机访问和复杂的消费策略,如消费者群体。您可以使用流实时记录和同时联合事件。Redis 为每个stream(流)条目生成一个唯一的 ID。可以在以后使用这些 ID 检索其关联的条目,或读取和处理流中的所有后续条目。Redis Stream 主要用于消息队列(MQ,Message Queue)
2023-08-26 08:36:57
710
原创 Redis之GEO类型解读
GEO 主要用于存储地理位置信息(纬度、经度、名称)添加到指定的key中。该功能在 Redis 3.2 版本新增。GEO(Geo Redis)是一个用于存储和操作地理空间数据的 Redis 模块。它提供了一组命令,可以将地理位置数据存储为 Redis 键值,并支持各种地理位置查询和操作。Redis GEO 可以在需要处理地理位置数据的场景中使用,例如近邻查询、地理位置路由、基于地理位置的服务等。使用 Redis GEO 可以高效地处理大量的地理位置数据。
2023-08-25 09:14:01
775
原创 Redis之HyperLogLog类型解读
HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
2023-08-24 08:27:14
101
原创 Redis之bitmap类型解读
Redis 的位图(bitmap)是由多个二进制位组成的数组,只有两种状态,0和1, 数组中的每个二进制位都有与之对应的偏移量(从 0 开始),通过这些偏移量可以对位图中指定的一个或多个二进制位进行操作。可以把 Bitmap 想象成一个以位为单位的数组,数组的每个单元只能存储 0 和 1,数组的下标在 Bitmap 中叫做偏移量 offset,bitmap默认值都为0.
2023-08-23 08:35:49
511
原创 Redis之zset(sorted set)类型解读
Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
2023-08-22 11:39:36
379
原创 Reids之Set类型解读
新的存储需求:存储大量的数据在查询方面提供更高的效率需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询set类型:与hash存储结构完全相同,底层数据结构使用哈希表,仅存储field,不存储value(nil),并且field不允许重复Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
2023-08-21 20:28:07
173
ssm框架整合实战课设,代码简单容易上手
2023-02-24
Python商品推荐课程设计
2023-02-24
学生管理系统数据库课设
2023-02-24
c语言数据结构课设:神秘国度的爱情故事
2023-02-23
数据结构课设:串的查找,给一文替代换某一个词
2023-02-23
javafx+jdbc+mysql实现学生宿舍管理系统
2023-02-23
一个c语言数据结构的简单课设,500多行代码,用到了链表
2023-01-25
html+css+jq+js网页设计课设(6个页面)环保主题 有登录注册功能,简单的js和jq适合新人,含报告文档
2023-01-03
基于springboot的学生选课管理系统
2022-11-05
jdbc解决mysql8.0连接失败,下载新的驱动
2022-04-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人