我的编程空间,编程开发者的网络收藏夹
学习永远不晚

高并发下Nginx性能怎么优化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

高并发下Nginx性能怎么优化

本篇内容介绍了“高并发下Nginx性能怎么优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(UniformResources ldentifier)URl或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。

Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存sz操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。

这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。

特点

是一个高性能的HTTP和反向代理web服务器,轻量级提供了IMAP/POP3/SMTP服务发布于2004年10月4日(第一个公开版本0.1.0 )Nginx的1.4.0稳定版已经于2013年4月24日发布C语言编写Nginx是一个跨平台服务器Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。

优势

占有内存少(在3W并发连接中,开启的10个nginx进程消耗内存大约150M)高并发能力强(官方测试能够支撑5W并发连接,在实际生产环境中能到2-3W并发连接数)简单(配置文件通俗易懂)价格(免费、开源)支持Rewriter重写(能够根据域名、URL的不同,将HTTP请:求分到不同的后端服务器群组)内置健康检查(如果nginx后端有几个服务宕机了,不会影响前端访问,能自动检测服务状态)节省带宽(支持GZIP压缩,可以添加浏览器本地缓存的Header头)
稳定性高,反向代理,很少宕机中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

功能:web服务器、轻量级;负载、均衡;缓存;高并发

应用场景:代理服务器;IP负载、静态负载;动静分离;限流、健康监控

安装和命令

安装:

sudo apt-get install nginx

查看版本

nginx -v                  nginx version: nginx/1.18.0 (Ubuntu)

基本命令

# nginx的访问页面(welcome to nginx)具体所在位置vi /usr/share/nginx/html/index.html# 访问IPcurl 192.168.100.111# 关闭nginx进程nginx -s stop# 启动nginx进程/usr/sbin/nginx          # yum安装的nginx也可以使用         servic nginx start# 检查配置文件是否有误nginx –t# 重新加载配置文件nginx –s reload# 查看日志tail -f filename #显示文件默认10行,刷新显示# 例:tail -f /var/log/lvs-agent.log          tail -f /etc/nginx/nginx.conf# 查看文件后几行tail -n 行数 文件名 例: tail -n 100 /var/log/aa.log# 删除网卡ipip addr del 192.168.11.5/32 dev lo (lo eth2 eth3)# lvs清空所有集群服务ipvsadm –C# 获取eth0网卡上的所挂的ip值ip a|grep eth0|grep inet|awk ‘{print $2}'|cut -d “/” -f1# 验证该ip或者网址是否通 可用返回200curl -I -m 10 -o /dev/null -s -w %{http_code} 10.110.26.10:8080# 后台启动jar包nohup java -jar /usr/sbin/项目名.jar >>/var/log/项目名.log 2>&1 &# 查看上一个命令是否执行成功 返回0执行成功 其他不成echo $?# 查看nginx进程是否启动。此命令用在代码判断nginx进程是否启动,如果只用ps aux | grep nginx 即使没有启动也会用内容返回,影响判断ps aux | grep nginx | greo –v grep

配置文件

nginx.conf

# nginx.conf# 全局配置区user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;# 网络事件配置区events {worker_connections 768;# multi_accept on;}# HTTP模块http {### HTTP 全局设置##sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;### SSL 设置##ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;### 日志设置##access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;### 资源压缩设置##gzip on;# 默认开启# gzip_vary on;# gzip_proxied any;# gzip_comp_level 6;# gzip_buffers 16 8k;# gzip_http_version 1.1;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;### 虚拟主机配置##include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;}

/etc/nginx/sites-enabled/*

server {# 虚拟主机配置listen 80 default_server;# 监听端口listen [::]:80 default_server;# SSL 配置## listen 443 ssl default_server;# listen [::]:443 ssl default_server;## Note: You should disable gzip for SSL traffic.# See: https://bugs.debian.org/773332## Read up on ssl_ciphers to ensure a secure configuration.# See: https://bugs.debian.org/765782## Self signed certs generated by the ssl-cert package# Don't use them in a production server!## include snippets/snakeoil.conf;# 数据缓存位置root /var/www/html;# Add index.php to the list if you are using PHPindex index.html index.htm index.nginx-debian.html;# 域名,可以有多个server_name _;# 对/进行反向代理location / {# First attempt to serve request as file, then# as directory, then fall back to displaying a 404.# uwsgi_pass 127.0.0.1:8000;# include /etc/nginx/uwsgi_params;try_files $uri $uri/ =404;}# pass PHP scripts to FastCGI server##location ~ \.php$ {#include snippets/fastcgi-php.conf;### With php-fpm (or other unix sockets):#fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;## With php-cgi (or other tcp sockets):#fastcgi_pass 127.0.0.1:9000;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#deny all;#}}

代理模式和配置反向代理

正向代理(forward proxy) :

是一个位于客户端(用户A)和原始服务器(origin server)(目标服务器)之间的服务器(代理服务器),为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标(原始服务器),然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的配置才能使用正向代理。一般情况下,如果没有特别说明,代理技术默认是指正向代理技术。

相当于是一个职业中介,且客户端和实际服务器不能沟通,客户端知道他是中介

反向代理(reverse proxy)︰

和正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

相当于是一个买房和卖房的人,买房的时候相对于卖房的是一个买房的,卖房的时候相对于买房的是一个卖房的。
客户端不知道他是一个代理服务器,服务器也认为他只是客户端而不是代理服务器

透明代理∶

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的requestfields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。透明代理实践的例子就是时下很多公司使用的行为管理软件

高并发下Nginx性能怎么优化

# 反向代理默认是关闭的# upstream localhost是第三方模块,均衡upstream localhost {# 实际服务器server 192.168.136.133:8081;server 192.168.136.133:8081;server 192.168.136.133:8081;} # 负载server {listen 80# 代理服务器的端口server_name localhost;location / {proxy_pass http://localhost;# 将请求发送给其中一台实际服务器}}

负载均衡方法:

轮询法(默认)

加权轮询法(权重)

Fair

url_hash

源地址哈希法

最小连接法(least_conn)

动静分离

Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离

严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面

动静分离从目前实现角度来讲大致分为两种:

  • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案

  • 一种是动态跟静态文件混合在一起发布,通过nginx来分开

mkdir static # 存放静态文件

server {# 虚拟主机配置listen 80 default_server;# 监听端口listen [::]:80 default_server;# 数据缓存位置root /var/www/html;# Add index.php to the list if you are using PHPindex index.html index.htm index.nginx-debian.html;# 域名,可以有多个server_name _;# 对/进行反向代理location / {# First attempt to serve request as file, then# as directory, then fall back to displaying a 404.# uwsgi_pass 127.0.0.1:8000;# include /etc/nginx/uwsgi_params;try_files $uri $uri/ =404;}# 如果是这些文件后缀就去这里面找location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css) $ {root /static;expires 30d;# 缓存有效期}}

日志管理

日志格式

日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式默认“main”日志格式

og_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';$remote_addr:客户端的ip地址(代理服务器,显示代理服务ip)$remote_user:用于记录远程客户端的用户名称(一般为“-”)$time_local:用于记录访问时间和时区$request:用于记录请求的url以及请求方法$status:响应状态码,例如:200成功、404页面找不到等。$body_bytes_sent:给客户端发送的文件主体内容字节数

日志切割

nginx的日志文件没有rotate功能

编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件

  • 第一步就是重命名日志文件 (不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述符而不是文件名定位文件 )

  • 第二步向nginx主进程发送USR1信号
    nginx主进程接到信号后会从配置文件中读取日志文件名称
    重新打开日志文件 (以配置文件中的日志名称命名) ,并以工作进程的用户作为日志文件的所有者
    重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知
    工作进程使用新打开的日志文件工作进程立刻打开新的日志文件并关闭重名名的日志文件,然后你就可以处理旧的日志文件了。[或者重启nginx服务]

nginx日志按每分钟自动切割脚本如下 :

新建shell脚本

高并发架构分析

什么是高并发?

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS (Query Per Second),并发用户数等。

  • 响应时间:系统对请求做出响应的时间

  • 吞吐量:单位时间内处理的请求数量。

  • QPS:每秒响应请求数

如何提升系统的并发能力?

互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(ScaleUp)与水平扩展(Scale Out)。

垂直扩展:提升单机处理能力。垂直扩展的方式又有两种。

  • 增强单机硬件性能

  • 提升单机架构性能

在互联网业务发展非常迅猛的早期,如果预算不是问题,强烈建议使用“增强单机硬件性能”的方式提升系统并发能力,因为这个阶段,公司的战略往往是发展业务抢时间,而“增强单机硬件性能”往往是最快的方法。

不管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能总是有极限的。所以互联网分布式架构设计高并发终极解决方案还是水平扩展。

水平扩展:只要增加服务器数量,就能线性扩充系统性能。

服务器都有极限

三种方式实现

limit_conn_zone(限制连接流)

limit_req_zone(限制请求流)

ngx_http_upstream_module(后台服务限制)

此处插上一个小工具:限制测试工具下载

yum install http-tools -y
key含义
Document Path测试的页面
Document Length页面的大小
Concurrency Level并发数量、并发用户数
Time taken for tests测试耗费总时间
Complete requests请求总量、并发连接数
Failed requests请求失败的数量
Write errors错误数量
Requests per second每秒钟的请求量吞吐率
Time per request每次请求需要时间响应时间

限制连接流

http {# binary_remote_addr:IP# zone=one:10m;申请一块10M的空间存放连接的IPlimit_conn_zone $binary_remote_addr zone=one:10m;server {# zone区域中每次放出10个连接nginx处理limit_conn one 10;}}

限制请求流(限速)

http {# rate意思是每个连接每秒能发一个连接limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;server {# brust:令牌,每次新增一个,120个发完后会报错503limit_req zone=req_one brust=120;}}

后台服务限制

该模块是提供了我们需要的后端限流功能的

该模块有一个参数: max_conns可以对服务端进行限流,可惜在商业版nginx中才能使用

在nginx1.11.5版本以后,官方已经将该参数从商业版中脱离出来了,也就是说只要我们将生产上广泛使用的nginx1.9.12版本和1.10版本升级即可使用

server {# max_conns最大接收服务数量server 127.0.0.1:8080 max_conns=100;}

安全配置

版本安全

http {server_tokens off;}

IP安全

http {location / {allow 127.0.0.1;# 白名单deny all;# 黑名单}}

文件安全

http {location /logs{autoindex on;# 展示目录root /static;}location ^/logs~*\.(log|txt)$ {add_header Content_Type text/plain;root /static;}}

连接安全

http {# SSL settings}

Nginx优化

调整Nginx的主配置文件,增加并发量

worker_processes 2;# 调整与CPU一致events {# 每个worker最大并发数量worker_connection 65535;}

Nginx长连接:HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,

nginx长连接短连接,可以增强服务器的容灾能力

减少了建立和关闭连接的消耗和延迟。如果我们使用了nginx去作为反向代理或者负载均衡,从客户端过来的长连接请求就会被转换成短连接发送给服务器端,为了支持长连接,我们需要在nginx服务器上做一些配置

使用nginx时,想要做到长连接,我们必须做到以下两点:

  • 从client到nginx是长连接(events)

  • 从nginx到server是长连接(http)

对于客户端而言,nginx其实扮演着server的角色,反之,之于server,nginx就是一个client

events {# keepalive超时时间,默认是60s,切记这个参数也不能设置过大!否则会导致许多无效的http连接占据着nginx的连接数,终nginx崩溃!keepalive_timeout 60;}http {keepalive_timeout 60;}

Nginx压缩

gzip压缩作用:将响应报文发送至客户端之前可以启用压缩功能,这能够有效地节约带宽,并提高响应至客户端的速度,压缩会消耗nginx的cpu性能。

gzip压缩可以配置http,server和location模块下

http {    #gzip模块设置    #开启压缩    gzip on;    # 设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。    默认值是0,不管页面多大都压缩。建议设置成大于2k的字节数,小于2k可能会越压越大。    gzip_min_length 2k;    # 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 例如 4 4k 代表以4k为单    位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k    为单位的4倍申请内存。    # 如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。    gzip_buffers 4 16k;    #压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间    gzip_comp_level 5;    # 默认值: gzip_types text/html (默认不对js/css文件进行压缩)    # 压缩类型,匹配MIME类型进行压缩    # 不能用通配符 text/*    # (无论是否指定)text/html默认已经压缩    # 设置哪压缩种文本文件可参考 conf/mime.types    gzip_types text/plain application/xjavascript text/css application/xml;    # 值为1.0和1.1 代表是否压缩http协议1.0,选择1.0则1.0和1.1都可以压缩    gzip_http_version 1.0    # IE6及以下禁止压缩    gzip_disable "MSIE [1-6]\.";    # 默认值:off    # Nginx作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服    务器必须要返回包含"Via"的 header头。    # off - 关闭所有的代理结果数据的压缩    # expired - 启用压缩,如果header头中包含 "Expires" 头信息    # no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息    # no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息    # private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息    # no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息    # no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息    # auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息    # any - 无条件启用压缩        gzip_proxied expired no-cache no-store private auth;    # 给CDN和代理服务器使用,针对相同url,可以根据头信息返回压缩和非压缩副本    gzip_vary on}

状态监控

server {location /NginxStatus {stub_status on;access_log off;}}

插件安装

./configure --prefix=... --with-http_stub_status _module

“高并发下Nginx性能怎么优化”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

高并发下Nginx性能怎么优化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

高并发下Nginx性能怎么优化

本篇内容介绍了“高并发下Nginx性能怎么优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Nginx同Apache一样都是一种WEB服务器
2023-06-25

PHP并发编程与高性能优化

php 可并发编程以提升性能,可选用多线程(同时执行多个线程)、多进程(同时启动多个进程)或异步 i/o(非阻塞 i/o 操作)。此外,还可采取优化技巧,例如缓存、数据库优化、使用专门框架和代码分析工具来提升性能。PHP 并发编程与高性能优
PHP并发编程与高性能优化
2024-05-15

浅谈一下Nginx性能优化

这篇文章主要介绍了Nginx性能优化,Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,需要的朋友可以参考下
2023-05-15

单例模式在高并发环境下的性能优化实践

随着互联网的不断发展,高并发的应用场景越来越普遍。在这样的应用场景下,性能优化成为了一个重要的课题。而单例模式作为一种常见的设计模式,在高并发环境下也需要进行性能优化,以保证系统的稳定性和响应速度。单例模式是一种创建型的设计模式,它保证一个
2023-10-21

Golang在高并发系统的性能优化实践

在高并发系统中优化 go 语言性能的实践包括:管理 goroutine:限制数量、使用池、监控状态。锁的使用:根据需要使用读写锁、避免全局锁、细粒度锁。性能分析:使用 pprof、trace、基准测试。其他优化技巧:使用 channel 通
Golang在高并发系统的性能优化实践
2024-05-12

高并发下怎么优化能避免服务器压力过大

这期内容当中小编将会给大家带来有关高并发下怎么优化能避免服务器压力过大,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

2023-06-04

如何进行Nginx高性能优化配置

本篇文章为大家展示了如何进行Nginx高性能优化配置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Nginx是Apache服务不错的替代品。其特点是占有内存少,并发能力强,事实上nginx的并发能力
2023-06-15

css如何优化并提高性能

小编给大家分享一下css如何优化并提高性能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!方法:1、压缩css,减少文件体积;2、使用link引入css文件;3、合理设计CSS布局,注意复用样式,减少渲染上花的时间;4、少用
2023-06-14

使用Golang的同步机制优化高并发场景下的性能

在高并发场景下,使用Golang的同步机制可以优化性能。以下是一些优化建议:1. 使用互斥锁(Mutex):在访问共享资源时使用互斥锁可以确保同一时间只有一个goroutine可以访问该资源。这可以防止竞争条件和数据竞争的发生。2. 使用读
2023-10-08

Linux高并发踩过的坑及性能优化介绍

目录前言linux应用运行过程中出现Too many open files 问题分析和解决Linux高并发下 time_wait 过多的问题分析及解决Linux更多性能优化小结前言 Linux操作系统是现在服务器的首选操作系统,在Linux
2022-06-04

nginx怎么实现高并发

要实现高并发,可以通过以下几个方面来优化Nginx的性能。1. 使用事件驱动模型:Nginx使用异步事件驱动的模型来处理请求,这使它能够同时处理大量的并发连接。2. 增加工作进程数:可以通过增加Nginx的工作进程数来提高并发能力。每个进程
2023-08-24

mongodb并发读性能怎么提高

要提高MongoDB的并发读性能,可以考虑以下几个方面的优化:数据模型设计:合理设计数据模型,将相关的数据放在同一个文档中,避免频繁的查询和多次读取。索引优化:通过创建合适的索引,可以加快读取操作的速度。根据查询频率和查询条件,选择适当的索
2023-10-26

Golang Sync包对高并发请求的性能优化效果

Golang中的Sync包提供了一些用于同步操作的原语,包括互斥锁、读写锁、条件变量等,这些原语可以帮助开发者在高并发环境下确保数据的安全访问。在高并发请求的场景下,Sync包的性能优化效果主要体现在以下几个方面:1. 互斥锁(Mutex)
2023-10-08

PHP如何优化以提高高并发能力?

用于生产环境中的PHP需要对其进行优化,让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php-fpm以及php.ini调优。本文从内存、OPcache、上传、会话以及安全等方面讲解php.ini的配置调优。PHP相对其他的编译性语言,最大的缺点在于每次请求都会去做一些模块解析,真正执行的是work进程。work进程的开启需要消耗更多的资源。同时,来一个请求都会去重新解析一些代码,导致重复
2022-08-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录