分布式系列之聊聊Nginx实现原理

Nginx原理以及基础知识详解 使用Nginx进行动静分离的基本步骤是将动态内容服务器(如PHP服务器)和静态内容服务器(如文件服务器)分开部署,并在Nginx中配置反向代理。在配置过程中,需要参考Nginx的官方文档和相关教程,确保配置的正确性和有效性。完成以上步骤后,Nginx将开始作为反向代理服务器工作,将客户端的请求转发到你指定的后端服务器。总之,Nginx是一个功能强大的反向代理服务器和负载均衡器,通过了解其工作原理和基础知识,可以更好地应用它来提高系统的性能和可靠性。这个地址应该是你想要将请求转发到的后端服务器的地址和端口。 阅读详情

Nginx作为开源的轻量级的HTTP服务器,广泛应用于分布式应用架构中。本文简要介绍了Nginx的特点及使用场景、Nginx的进程模型和请求处理流程,并结合不同场景进行配置,对Nginx的架构和实现原理有个初步的了解。


1、Nginx是什么

Nginx(engine X)是一个开源的轻量级的HTTP服务器,能够提供高性能的HTTP和反向代理服务。与传统的Apache服务器相比,在性能上Nginx占用系统资源更小、支持高并发,访问效率更高;在功能上,Nginx不仅作为Web服务软件,还适用于反向代理、负载均衡等场景;在安装配置上,Nginx更为简单、灵活。Nginx因为并发性能和资源占用上的优势,已经广泛用于大中型互联网企业。

1.1 Nginx特点

Nginx具有以下特点:

  • 支持高并发:Nginx是专门为性能优化而开发的,采用内核Poll模型,单机能够支持几万以上的并发连接
  • 低资源消耗:Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。一般1万个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗几MB内存
  • 高拓展性:设计极具扩展性,由多个不同功能、不同层次、不同类型且耦合度极低的模块组成
  • 高可用性:Nginx支持热部署,其中的master管理进程与worker工作进程的分离设计;启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
  • 丰富的使用场景:可以作为Web服务端、HTTP反向代理、负载均衡和前端缓存服务等场景使用
  • 开源协议:使用BSD许可协议,免费使用,且可修改源码
1.2 Nginx使用场景
1.2.1 反向代理

代理服务器一般指代局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端。代理服务器是介于客户端和Web服务器之间的服务器,客户端首先与代理服务器创建连接,然后根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或则获得目标服务器的指定资源。

在这里插入图片描述

  • 正向代理:为了从原始服务器取的内容,客户端向代理发送一个请求并指定目标(Web服务器),然后代理向Web服务器转交请求并将获得的内容返回给客户端,客户端必须要进行一些特别的设置才能使用正向代理。
    • 像VPN就是正向代理,一般在浏览器中配置代理服务器的相关信息。
    • 正向代理中代理的对象是客户端,代理服务器和客户端属于同一个LAN,对服务器端来说是透明的。
  • 反向代理:客户端发送请求到代理服务器,由代理服务器转发给相应的Web服务器进行处理,最终返回结果给客户端。
    • 像Nginx就是反向代理服务器软件,对客户端暴露的其实是一个VIP,不是真实的Web服务器的IP
    • 反向代理的是对象是Web服务器端,代理服务器和Web服务端属于同一个LAN,对客户端来说是透明的。

使用反向代理的好处是客户端不需要任何配置就可以访问,对外暴露的是代理服务器的地址隐藏了真实服务器的地址,客户端只需要把请求发送给代理服务器,由代理服务器去选择后端的Web服务器,获取到数据后再返回给客户端。

1.2.2 负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

简而言之,单个Web应用服务器不能承受日益增长的并发量请求,因此需要不断扩展web服务器来支撑高并发请求,根据不同的负载均衡策略将请求分配到各个服务器上。Nginx支持三种不同的负载均衡策略:

  • 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉能够被自动剔除。轮询算法适合服务器配置相当,无状态且短平快的服务使用。
  • weight权重:指定轮询的几率,weight和后端的访问比例成比例,weight权重越高比例越大。通常用于后端服务器配置不均的情况。
  • ip_hash:上面两种算法存在一个问题是就是无法做到会话保持,当用户登录到服务器上后,第二次请求的时候会被定位到服务器集群中的某一个,那么已经登录到某个服务器上的用户会重新定位到另一台,之前的登录信息会丢失。ip_hash算法可以解决这个问题,当用户再次访问请求时,会通过hash算法自动定位到已经登录的服务器上,这样每个客户端可以固定在某个web服务器上,解决客户端session的问题。

在这里插入图片描述

1.2.3 动静分离

动静分离技术是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,将静态文件放在一个单独的web服务器上,加快解析速度,降低原来单个服务器的压力。在Nginx的配置中,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。

在这里插入图片描述

1.3 Nginx功能模块说明

Nginx由内核和模块组成,其中内核在设计上非常简洁,完成的工作非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

1.3.1 Nginx模块分类

Nginx的模块从结构上分为核心模块、基础模块和第三方模块,其中用户根据自己的需要开发的模块都属于第三方模块:

  • 核心模块:HTTP模块、EVENT模块和MAIL模块
  • 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,
  • 第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

在这里插入图片描述

1.3.2 Nginx模块功能

在这里插入图片描述

Nginx模块常规的HTTP请求和响应的过程如上图所示,Nginx模块从功能上分为以下三类:

  • Handlers处理器模块:此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。
  • Filters过滤器模块:此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。
  • Proxies代理类模块:此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

Nginx本身处理的工作很少,当它接到一个HTTP请求时,通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作。

2、Nginx架构解析
2.1 Nginx进程模型

在这里插入图片描述

Nginx默认采用多进程工作方式,在Nginx启动后,会运行一个master进程和多个worker进程。

  • master主要用来管理worker进程,充当整个进程组与用户的交互接口,同时对进程进行监护,实现worker进程的重启服务、平滑升级、更换日志文件、配置文件实时生效等功能;
  • worker进程用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求。一个请求只能在一个worker进程中处理,一个worker进程不可能处理其它worker进程中的请求。

另外在Nginx架构中还有Cache Loader和Cache Manager进程,Cache Loader进程加载缓存索引文件信息;Cache Manager进程管理磁盘的缓存大小,超过预定值大小后最小使用的数据将被删除。

2.1.1 Master管理进程

Master进程主要用来管理worker进程,具体包括如下4个主要功能:

  • 接收来自外界的信号;
  • 向各worker进程发送信号;
  • 监控woker进程的运行状态;
  • 当woker进程退出后(异常情况下),会自动重新启动新的woker进程。

Master进程接受到命令重启Nginx进程(./nginx -s reload),会按照以下流程:

  1. 首先master进程在收到重启命令后,会先重新加载配置文件,然后再启动新的worker进程,并向所有老的worker进程发送信号,告诉他们可以光荣退休了。
  2. 新的worker进程在启动后,就开始接收新的请求,而老的worker在收到来自master的信号后,就不再接收新的请求,并且处理完当前进程中的所有未处理完的请求后,再退出。
2.1.2 Worker工作进程

Worker工作进程之间是对等的,每个进程处理请求的机会也是一样的。Nginx采用异步非阻塞的方式来处理网络事件,具体流程如下:

  1. 接收请求:首先,每个worker进程都是从master进程fork过来,在master进程建立好需要listen的socket(listenfd)之后,然后再fork出多个worker进程。
    1. 所有worker进程的listenfd会在新连接到来时变得可读,每个work进程都可以去accept这个socket(listenfd)。
    2. 当一个client连接到来时,所有accept的work进程都会受到通知,但只有一个进程可以accept成功,其它的则会accept失败。
    3. 为保证只有一个进程处理该连接,Nginx提供了一把共享锁accept_mutex来保证同一时刻只有一个work进程在accept连接。
    4. 所有worker进程在注册listenfd读事件前抢accept_mutex,抢到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接。
  2. 处理请求:当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接。

由上可以看出,一个请求完全由worker进程处理,并且只在一个worker进程中处理。

2.2 Nginx请求处理流程

在这里插入图片描述

Nginx工作进程会监听套接字上的事件(accept_mutex和kernel socketsharding),来决定什么时候开始工作。事件是由新的连接初始化的,这些连接会被分配给状态机,Nginx中有三大类状态机:处理应用层的HTTP状态机、处理TCP/UDP的4层的传输层状态机和处理邮件的MAIL状态机,其中HTTP状态机最为常见。

在多种流量进入Nginx后,Nginx的三种状态机在Nginx解析出请求后,会动用线程池处理调用,将静态资源、反向代理、错误日志等信息分别导向不同的出口,比如fastcgi会导向PHP处理、html会导向nginx处理,并将处理请求日志记录到本地或远程服务器中。

2.3 Nginx多进程IO模型
2.3.1 Nginx多进程模型

Nginx默认使用多进程的工作方式,相比较多线程的方式,有以下好处:

  1. 首先,对于每个worker进程来说,独立的进程不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多;
  2. 其次,采用独立的进程,可以让进程之间相互不会影响,一个进程退出后,其它进程还在工作,服务也不会中断,master进程则很快启动新的worker进程;
  3. 再次,为Nginx热部署提供了支持。在修改配置文件nginx.conf后,重新生成新的worker进程,新的worker进程会以新的配置处理请求,而老的worker进程,等把以前的请求处理完成以后,kill掉就可以。
2.3.2 Nginx异步非阻塞事件模型

异步非阻塞事件是怎么回事?先看一个请求的完整过程,首先请求过来建立连接,然后再接收数据再发送数据,具体到系统层就是IO读写事件。当读写事件没有准备好,如果不采用非阻塞的方式,就得阻塞调用,阻塞调用会进入内核等待,导致CPU资源被其它进程占用。当并发请求越大时,等待的事件越多,CPU利用不上去,并发也上不去。因此Nginx使用非阻塞的事件模型,系统中事件模型有很多中,比如select/poll/kqueue/epoll等,Nginx采用epoll模型。Epoll模型基于事件驱动机制,可以监控多个事件是否准备完毕,如果可以,就放入epoll队列,这个过程是异步的,worker进程只需要从epoll队列循环处理即可。Epoll调用过程如下图所示:

在这里插入图片描述

3、Nginx部署与配置
3.1 Nginx环境部署

1)下载安装包,官网链接https://nginx.org/en/download.html

2)解压安装包

[root@tango-rac01 src]# tar -xzvf nginx-1.22.1.tar.gz

3)编译配置

[root@tango-rac01 nginx-1.22.1]# ./configure
[root@tango-rac01 nginx-1.22.1]# make
[root@tango-rac01 nginx-1.22.1]# whereis nginx
nginx: /usr/local/nginx

4)启动Nginx

[root@tango-rac01 nginx-1.22.1]# cd /usr/local/nginx/
[root@tango-rac01 nginx]# ./sbin/nginx
[root@tango-rac01 nginx]# ss -antl
State       Recv-Q Send-Q                                        Local Address:Port                                                       Peer Address:Port                              
LISTEN      0      511                                                       *:80                                                                    *:*                  

5)访问页面ip:80

在这里插入图片描述

3.2 Nginx不同场景配置
3.2.1 Nginx配置文件介绍
...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
  • 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location块:配置请求的路由,以及各种页面的处理情况。
3.2.2 反向代理配置

1)简单配置如下:

	server {
        keepalive_requests 120;
        listen       80;
        server_name  192.168.112.135; 
        location ~ /news/ {
           proxy_pass  http://192.168.112.101:8080; 
        } 
        location ~ /prod/ {
           proxy_pass  http://192.168.112.101:8081; 
        } 
    }

访问http:// 192.168.112.135:80/news/时会跳转到http://192.168.112.101:8080,访问http:// 192.168.112.135:80/prod/时会跳转到http://192.168.112.101:8081

3.2.3 负载均衡配置

1)配置如下:

upstream myServer {    
    server 192.168.112.101:8080 down;   
    server 192.168.112.101:8090 weight=2;   
    server 192.168.112.101:6060;   
    server 192.168.112.101:7070 backup;   
}
#指定负载均衡策略为ip_hash
upstream myServer {
    ip_hash
    server 192.168.112.101:8080;   
server 192.168.112.101:6060;   
}
  • down:表示当前的server暂时不参与负载
  • Weight:默认为1,weight越大,负载的权重就越大。
  • max_fails:允许请求失败的次数默认为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误
  • fail_timeout:max_fails 次失败后,暂停的时间。
  • Backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
3.2.4 动静分离配置

1)配置如下:

   server {
       listen       10000;
       server_name  localhost;
      
      #拦截后台请求
      location / {
        proxy_pass http:// 192.168.112.101:8888;
        proxy_set_header X-Real-IP $remote_addr;
      }

      #拦截静态资源
      location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
        root /static/;
        autoindex on;
       }
    }

上述配置中,访问静态资源在根目录的/static/下。

4、总结

Nginx作为开源的轻量级的HTTP服务器,广泛应用于分布式应用架构中。本文简要介绍了Nginx的特点及使用场景、Nginx的进程模型和请求处理流程,并结合不同场景进行配置,对Nginx的架构和实现原理有个初步的了解。


参考资料:

  1. https://www.nginx.com/resources/library/infographic-inside-nginx/
  2. https://blog.youkuaiyun.com/hguisu/article/details/8930668
  3. https://blog.youkuaiyun.com/khuangliang/article/details/122345060
  4. https://blog.youkuaiyun.com/qq_42511550/article/details/125054697
简历上写精通Nginx/OpenResty详解,Nginx的核心原理应该不过分吧 Nginx的核心原理 本节为大家介绍Nginx的核心原理,包含Reactor模型、Nginx的模块化设计、Nginx的请求处理阶段。 虽然本节的知识有一定的理论深度,但是与另一个有名的Java底层通信框架Netty在原理上有很多相似的地方。如果大家了解Netty的原理和Reactor模式,阅读本节将会更加轻松和愉快。 Reactor模型 Nginx对高并发IO的处理使用了Reactor事件驱动模型。Reactor模型的基本组件包含事件收集器、事件发送器、事件处理器3个基本单元,其核心思想是将所有要. 阅读详情

相关推荐

高并发分布式系统架构——Nginx

Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 —— [ 百度百科 ] Nginx由C语言编写,对系统资源和CPU...

Elio_LiuHeng的博客 1万+

Nginx基础和原理介绍

一、nginx基本概念 1、nginx简介 nginx是一个反向代理服务器,特点是占用内存少,并发能力强,在同类的网页服务器中表现较好。 nginx专门为性能优化而开发,性能是其最重要的考量,有报告表能支持高达50000并发连接数。 2、nginx功能 【1】反向代理 正向代理:由客户端向代理指定它要访问哪个原始的服务器,然后又代理将请求转发给对应的服务器。向vpn就是正向代理,客户端访问不了外网。 反向代理:客户端指访问代理服务器,它并不知道它访问的原始服务器是谁,有代理服务器根据配置规则转发给相应的原

专栏 1万+

微服务系列(一)聊聊服务网关

微服务系列(一)聊聊服务网关 前几年随着分布式架构的演变,微服务开始兴起,自然也产生了一系列支持微服务的框架,例如本文要聊到的Spring Cloud。 Spring 相信做Java的小伙伴们已经耳熟能详了,也正是应该这个Spring生态获得广大的关注,在Spring之上开发的新兴框架如Spring Boot、Spring Cloud也很快让大家熟知。 下面主要针对Spring Cloud聊聊它...

XCXCXCXCX 5495

Nginx工作原理和优化总结。

NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站。在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做些调整。首先我们先了解其工作原理。 1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客...

黄规速博客:学如逆水行舟,不进则退 15万+

避开CPU瓶颈:手把手教你用RK3588的DMA-BUF实现V4L2到NPU的零拷贝数据流

本文详细介绍了如何在RK3588平台上利用DMA-BUF实现V4L2到NPU的零拷贝数据流,显著提升异构计算性能。通过实战指南展示了如何配置摄像头采集、RGA图像预处理和NPU推理优化,最终实现CPU占用率降低60%、延迟减少60%的效果,特别适合YOLOv5等AI推理应用的高效部署。

weixin_30374009的博客 571

C++版Cesium实战:从OpenGL到3DTiles的全流程开发指南

本文提供了一份C++版Cesium全流程开发指南,详细阐述了如何利用OpenGL和Qt从零构建高性能、可离线部署的三维GIS应用。内容涵盖开发环境搭建、OpenGL渲染引擎初始化、Cesium核心坐标系与场景管理移植,并重点解析了3DTiles数据的解析、异步加载与渲染优化等硬核实战技术,旨在帮助开发者实现与现有C++工业软件的深度集成。

weixin_28077113的博客 164

Nginx 入门系列一之 Nginx 有什么功能

1 什么是 Nginx 与 Nginx 中的反向代理 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,具有正反向代理,负载均衡,HTTP 服务器等功能,以其高性能、稳定、功能丰富、配置简单及占用系统资源少而著称。今天我们主要来聊聊这个反向代理,因为之前一直感觉 Nginx 都是与反向代理捆绑的,每当提到反向代理,必定得在后面跟上个实现工具为 Nginx。那反向代理跟正向代理有什么...

Geffin的博客 453

从零到一:高通QCS6490边缘AI开发板的Linux生态构建与实战避坑指南

本文详细介绍了在高通QCS6490边缘AI开发板上构建Linux生态系统的完整流程,包括开发环境准备、系统镜像构建与烧录、AI运行时环境配置、模型部署优化以及性能调试。重点解析了如何利用Hexagon DSP的高达12 TOPS AI算力,并提供了实战中的避坑指南和性能优化技巧,帮助开发者高效实现边缘AI应用从概念验证到产品落地的全过程。

eee77的博客 770

网络原理视角下的CasRel模型分布式部署与通信优化

本文介绍了如何在星图GPU平台上自动化部署CasRel关系抽取模型镜像,以构建高可用的分布式推理服务。通过该平台,用户可以快速部署并优化模型服务,有效应对智能客服、内容审核等场景下的高并发文本关系抽取需求,从而提升处理效率与系统稳定性。

weixin_42600128的博客 20

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标和遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 267

【天气雷达】双偏振产品-差分传播相移KDP详解

双偏振产品-差分传播相移KDP详解。

珞瑜的博客 2660

聊聊分布式高并发应用中的高可用性

面试题:高并发场景/接口被刷怎么办? 【1】架构和细节 首先参考上篇博文:聊聊高并发应用中秒杀场景的方案实现,其中限流,缓存等思想是一致的。 这里需要注意的是,如果在现有集群环境下,负载压力仍然很大怎么办?观察上图最后一步—容器化技术。使用Docker+K8s(Kubernetes)构建Docker集群环境。当QPS超过阈值后,自动扩容。比如扩容两个虚拟机,将登录子系统从四节点扩容到6节点,然后...

小小默:进无止境 1207

NR PUCCH(一) PUCCH format 0/1

NR中PUCCH物理信道用来发送上行控制信息Uplink Control Information(UCI),当然UCI也可以在PUSCH上发送。UCI 内容包括:CSI,HARQ ACK/NACK ,SR 及上述三者的组合信息。 那先看下PUCCH format ,序列的生成及资源映射的相关内容。 NR中支持5种格式PUCCH,根据PUCCH format占用时域符号长度分为短PUCCH(1-2个符号,PUCCH 0/2)和长PUCCH(4-14个符号,PUCCH1/3/4)。使用短PUCCH 能够支

asd199086的博客 6060

分布式网关概念及Spring Cloud Gateway动态路由实现

服务网关作为分布式系统对外服务的统一入口,设计功能上具有路由转发、熔断限流、安全认证以及监控等功能。本文简要介绍服务网关的基本概念,以及动态路由的实现方式,以加深了解。

牧羊人的方向 3630

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1850

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

多图详解CLH锁的原理与实现

前言 对Java开发的知识点进行深入的学习,并打算做成系列,先从基础常用的重点**(面试点)**知识开始,后续会陆续扩展,加油! 涉及到底层的可能代码块会多点,但要学习底层不看代码看啥?代码说明一切!!!放心,基本上每句代码都会写上注释。若有不对请指出! 一、分布式架构学习路线图 据统计,人的阅读时间在20分钟以内是能够达到全身心投入的,顾文章单张篇幅以后会尽量缩短,但更新会尽量相应频繁一些。 二、计算机软件发展历史 首先我们了解下计算机软件的发展历史,大概总结概括,分为c/s时代,web1.0时代和we

m0_57700563的博客 231

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Redis+Nginx+设计模式+Spring全家桶技术整理

计算机的书籍有几个很大的缺点, 1是知识更新太快,体系时间跨度太短,谁从业N年都能写本工具书。相比医学著作的权威性,计算机方向有太多“李时珍,李时真,李时珍的皮”等作者用fashion的名字出书了。 2是应用类书籍知识点太多,代码太多,靠粘代码翻官方文档混页数的太多,通常这些知识点我们可能不会用到,空占脑细胞记忆容量。 所以说程序员不应该是如何看书,而是如何利用好书。不要被书本所拖累。 把家里的书自己翻翻目录,看看有哪些章节可能对现实迫切问题有帮助的看看,然后熟悉一下一本书到底讲了哪些东西,到时候用

javassb的博客 231

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2022 年精选架构合集:Redis+Nginx+ 设计模式 +Spring 全家桶 +Dubbo

最近花了很长的时间去搜罗 Java 核心技术好文,我把每个 Java 核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多 bb 了,直接上干货!

weixin_70730532的博客 685

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

图解Janusgraph系列-并发安全,醍醐灌顶!

前言 提到插件,相信大家都知道,插件的存在主要是用来改变或者增强原有的功能,MyBatis中也一样。然而如果我们对MyBatis的工作原理不是很清楚的话,最好不要轻易使用插件,否则的话如果因为使用插件导致了底层工作逻辑被改变,很可能会出现很多意料之外的问题。 本文主要会介绍MyBatis插件的使用及其实现原理,相信读完本文,我们也可以写出自己的PageHelper分页插件了。 一、分布式架构学习路线图 据统计,人的阅读时间在20分钟以内是能够达到全身心投入的,顾文章单张篇幅以后会尽量缩短,但更新会尽量相应频

m0_57699778的博客 502

想进互联网大厂的小伙伴可以看看:在大厂担任架构师需要掌握哪些核心技能?

今天,我们就一起聊聊在一线互联网大厂担任架构师需要掌握哪些核心能。好了,不多说了,我们开始今天的正题。

冰河的专栏 1367

2022年精选架构合集:Redis+Nginx+设计模式+Spring全家桶+Dubbo

最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多bb了,直接上干货!

m0_62051288的博客 464

Nginx指令式配置安全风险剖析:从堆溢出到网关攻击面管理

在Web网关与反向代理领域,内存安全是保障服务稳定性的基石。堆溢出作为经典的内存安全漏洞,其原理在于程序向动态分配的堆内存写入超量数据,导致相邻内存区域被覆盖,可能引发程序崩溃或被攻击者利用执行任意代码。这类漏洞的技术价值在于揭示了底层系统软件在安全设计上的挑战,尤其在处理非受信网络输入时。应用场景广泛存在于使用C/C++开发的高性能网络组件中,如Nginx、Apache等广泛部署的网关软件。本文聚焦于Nginx的指令式配置范式,分析其如何因配置复杂性和第三方模块集成,无意中扩大了堆溢出等漏洞的攻击面,并结

weixin_33795093的博客 331

从分布式到高可用:后端架构核心问题与面试经

在系统设计中,分布式架构、高性能与高可用是后端开发者迈向架构师的关键阶梯。分布式本质上是分工后的协作问题,需在CAP定理与BASE理论间取舍,解决数据、任务与状态协作的挑战。高性能优化从缓存、异步削峰、读写分离到横向扩展,层层递进;高可用则依赖冗余、故障转移、流量治理与可观测性机制。理解限流熔断降级、分布式锁、事务消息等实践,能帮助你构建稳固系统并应对面试追问。本文以工程视角串联这些核心概念,从原理到落地,助你形成完整知识体系。

weixin_34239592的博客 490

微服务架构

本系列所有文章均为个人学习笔记所需,所以过多要求文章思路、对每段文字精雕细琢,随心所欲地记录想到的每个知识点,用自己最通俗的语言!前文聊到了分布式相关概念,接下来我想聊聊分布式系统常见的问题及解决方案,于是乎想到要借着近些年火热的微服务架构,逐步拆解、探究。那么,我们第一步先了解什么是微服务架构,下一步再针对微服务系统所遇到的问题,详细聊聊具体的解决方案。

usenameR的专栏 472

阿粉给大家总结了如此多的面试题,总有一款你需要的!

每天早上七点三十,准时推送干货阿粉最近在Boss上面公开了自己的简历,好多人在疯狂的私聊阿粉,最近是不是有换工作的意向了,要不要考虑一下?于是阿粉躁动的心难以平静,分分钟准备出了大量的面...

Java极客技术 212
上一篇: 分布式数据库中间件Mycat介绍
下一篇: 分布式数据库中间件Sharding-JDBC介绍
solihawk
博客等级 码龄17年 7995粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值