nginx笔记
1. nginx 简介
nginx性能比apache强,体现 在io模型方面
76
Pv:
UV : 不同浏览器是不同的UV
GET 获取
POST 上传
HEAT 只看头
访问网站的流程
1.dns解析
2.cdn
3.tcp
4.web服务器 处理
建立连接
接收请求
处理请求 GET POST等
获取资源
构建响应报文
发送响应报文
记录日志
5) 浏览器接收响应报文,进行页面渲染
http请求报文
http响应报文
nginx如何优化?
要优化 Nginx 的性能和效率,可以考虑以下几个方面的优化措施:
-
调整工作进程和连接数:
- 调整 Nginx 的工作进程数,根据服务器的 CPU 核心数和负载情况进行合理的设置。
- 调整 Nginx 的最大连接数限制,确保与实际需求相匹配。
-
合理配置缓存:
- 针对静态资源(如图片、样式表、JavaScript 等),使用 Nginx 的内置缓存来加速访问。
- 配置适当的缓存时间和缓存规则,以减少对后端服务器的请求。
-
优化 SSL/TLS:
- 使用更高效的 SSL/TLS 版本,并配置适当的密码套件,以确保安全性和性能的折中。
- 考虑使用缓存 SSL/TLS 会话以减少握手的开销。
-
开启 Gzip 压缩:
- 配置 Nginx 开启 Gzip 压缩,减小传输的数据量,提高响应速度。
- 可以根据不同的文件类型选择合适的压缩级别和压缩算法。
-
负载均衡和反向代理:
- 使用 Nginx 的负载均衡功能,将请求分发到多个后端服务器,提高系统的吞吐量和可用性。
- 使用 Nginx 的反向代理功能,将请求代理到不同的后端服务器,实现请求的路由和负载均衡。
-
配置文件优化:
- 优化 Nginx 配置文件,确保配置项的正确性和一致性。
- 避免不必要的模块加载,只加载需要的模块和功能。
- 使用 include 文件来组织和管理配置项,提高可维护性。
-
监测和日志优化:
- 启用 Nginx 的访问日志和错误日志,进行监测和故障排查。
- 使用日志切割来管理日志文件的大小和数量,避免过大的日志文件影响性能。
需要注意的是,优化策略和步骤可能因环境和实际需求而有所不同。建议根据实际情况进行针对性的优化,并进行性能测试和监测,以评估优化效果和调整进一步优化的策略。
请求的流程
描述: 1.客户发起情况到服务器网卡;
2.服务器网卡接受到请求后转交给内核处理;
3.内核根据请求对应的套接字,将请求交给工作在用户空间的Web服务器进程
4.Web服务器进程根据用户请求,向内核进行系统调用,申请获取相应资源(如index.html)
5.内核发现web服务器进程请求的是一个存放在硬盘上的资源,因此通过驱动程序连接磁盘
6.内核调度磁盘,获取需要的资源
7.内核将资源存放在自己的缓冲区中,并通知Web服务器进程
8.Web服务器进程通过系统调用取得资源,并将其复制到进程自己的缓冲区中
9.Web服务器进程形成响应,通过系统调用再次发给内核以响应用户请求
10.内核将响应发送至网卡
11.网卡发送响应给用户
这就是整个web请求的全过程。这个过程涉及到2个IO,一个就是客户端请求的网络I/O,另一个就是Web服务器请求资源的磁盘I/O
服务器发送请求>到达服务器网卡 缓冲区》
一个常见的 Web 请求过程可以分为以下几个步骤:
-
用户在浏览器中输入 URL(统一资源定位符),并按下回车键。
-
浏览器解析 URL,提取出主机名(如:www.example.com)和资源路径(如:/index.html)。
-
浏览器首先会查询本地缓存,看是否有之前请求过的相同资源的副本。如果有且未过期,浏览器会直接从缓存中获取资源,跳过后续步骤。
-
如果缓存中没有相应的资源或资源已过期,浏览器会通过 DNS(域名系统)解析获取主机的 IP 地址。DNS 解析将域名转换为 IP 地址,以便浏览器能够与服务器建立连接。
-
浏览器使用获取到的 IP 地址与服务器建立 TCP(传输控制协议)连接。TCP 提供可靠的、面向连接的数据传输。
-
一旦建立 TCP 连接,浏览器会发送 HTTP(超文本传输协议)请求到服务器。请求中包含请求方法(如 GET、POST)、请求头(包含一些元数据)、请求路径等信息。
-
服务器接收到请求后,根据请求路径找到对应的资源,并进行处理。这可能涉及到业务逻辑的处理、数据库查询等。
-
服务器将处理完的资源以 HTTP 响应的形式返回给浏览器。响应中包含状态码(用于表示请求的成功或失败)、响应头(包含一些元数据)、响应体(包含实际的响应内容)等信息。
-
浏览器接收到响应后,会根据响应的内容类型进行相应的处理。比如,如果响应是 HTML 页面,浏览器会解析 HTML 并渲染页面;如果响应是图片,浏览器会显示该图片。
-
浏览器将解析完的资源进行展示,用户可以在浏览器中看到相应的内容。同时,浏览器还会将响应内容保存到缓存中,以便下次请求同样的资源时可以直接从缓存中获取,提高性能。
以上是一个常规的 Web 请求过程,不同的应用场景和技术可能会有所不同,但基本的流程是相似的。
HTTP(超文本传输协议)中的首部字段是用于在请求和响应消息中传递元数据和其他相关信息的一种机制。以下是HTTP中常见的首部字段:
-
通用首部字段:
- Cache-Control:控制缓存行为。
- Connection:控制连接的行为。
- Date:日期和时间。
- Upgrade:要求服务器升级到不同的协议。
- Via:中间代理服务器的信息。
-
请求首部字段:
- Accept:指定客户端可以接受的内容类型。
- Accept-Encoding:指定客户端可以接受的内容编码方式。
- Content-Type:请求中发送的实体的媒体类型。
- User-Agent:客户端的用户代理标识。
-
响应首部字段:
- Content-Length:返回的实体主体的长度(以字节为单位)。
- Content-Encoding:指定响应实体使用的编码方式。
- Content-Type:响应实体的媒体类型。
- Server:服务器的软件名称和版本号。
- Set-Cookie:设置一个或多个Cookie。
-
实体首部字段:
- Content-Length:实体主体的长度(以字节为单位)。
- Content-Encoding:实体主体的编码方式。
- Content-Type:实体主体的媒体类型。
还有许多其他的首部字段,用于传递不同的信息。每个首部字段都有其特定的作用和语义,用于帮助客户端和服务器之间进行正确的通信和处理请求或响应。
curl -v www.baidu.com
< HTTP/1.1 302 Moved Temporarily #302 临时重定向
< Server: openresty
< Date: Fri, 08 Sep 2023 14:10:10 GMT #表示服务器生成响应的日期和时间,以协调世界时(UTC)表示。
< Content-Type: text/html #响应主体的媒体类型,这里的值是 “text/html”,表示返回的内容是 HTML 文档
< Content-Length: 142 #表示响应主体的长度,以字节为单位,这里的值是 142。
< Connection: keep-alive #指示服务器是否要求客户端保持持久连接,在此示例中,服务器要求客户端维持持久连接。
< Location: https://www.oppo.com/
< Request-Id: 64fb2b421cfe0cfcf891adbc83ce4faa #用于标识请求的唯一编号或标识符
< X-IP-Source: 4cb2b356b598ca96d5297afa558bd372 #指示客户端的 IP 地址或来源
< Access-Control-Allow-Origin: * #用于指示服务器所允许的跨域请求的来源。在这个示例中,服务器允许所有来源的跨域请求。
< strict-transport-security: max-age=31536000 #用于指示服务器所允许的跨域请求的来源。在这个示例中,服务器允许所有来源的跨域请求。
网络IO
同步:你去问
异步:主动通知你
阻塞:影响干别的事
异步: 不影响
I/O 多路复用
windows不支持epoll
nginx为什么性能好?
epoll模型,MMAP
支持0复制
Nginx之所以具有良好的性能,主要有以下几个原因:
-
异步非阻塞模型:Nginx采用了事件驱动的异步非阻塞架构,通过使用少量的线程即可处理大量并发连接。这种设计方式使得Nginx在高并发场景下能够高效地处理请求,提高了系统的吞吐量。
-
轻量级:Nginx是一个轻量级的服务器软件,具有很小的内存占用和CPU消耗。它的代码精简,功能模块化,只包含了核心的功能,减少了不必要的资源开销,提高了性能。
-
出色的内存管理:Nginx使用了高效的内存管理机制,能够快速分配和释放内存,有效地降低了内存碎片化的问题,并提高了内存的利用率。
-
高度可定制性:Nginx提供了丰富的配置选项,可以根据具体需求进行灵活的配置和定制。用户可以根据自己的需求选择合适的模块和功能,避免了不必要的开销,提高了性能。
综上所述,Nginx通过其异步非阻塞的架构、轻量级设计、高效的内存管理和可定制性等特点,使得其具有优秀的性能表现。
nginx缓存功能?
主进程指派工作
2. nginx安装
编译安装
#yum -y install gcc pcre-devel openssl-devel zlib-devel make
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xf nginx-1.24.0.tar.gz
cd nginx-1.24.0/
useradd -s /sbin/nologin nginx
cd /apps/nginx-1.24.0
./configure --help
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
make && make install
chown -R nginx.nginx /apps/nginx
nginx没有线程
nginx 平滑升级
yum安装升级
模拟用户访问:
dd if=/dev/zero of=1.img bs=1M count=100
wget --limit-rate=100 http://192.168.1.150/1.img
nginx1.18 ->nginx 1.24
1.nginx -V 查看参数
root@ubuntu20:/apps/nginx-1.24.0# nginx -V
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 1.1.1f 31 Mar 2020
TLS SNI support enabled
configure arguments: --with-cc-opt=‘-g -O2 -fdebug-prefix-map=/build/nginx-lUTckl/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2’ --with-ld-opt=‘-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC’ --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
2.下载包解压,
./configure 带上nginx -V 查询到的参数
uubuntu20.04./configure: error: the HTTP XSLT module requires the libxml2/libxslt libraries. You can either do not enable the module or install the libraries.
安装sudo apt update && sudo apt install libxml2-dev libxslt-dev
nginx ./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries.
安装 sudo apt update sudo apt install libgd-dev
3.编译:
make
生成的二进制文件在objs目录
root@ubuntu20:/apps/nginx-1.24.0/objs# ll nginx
-rwxr-xr-x 1 root root 8083408 Sep 9 12:33 nginx*
4.备份的二进制文件
root@ubuntu20:/apps/nginx-1.24.0/objs# which nginx
/usr/sbin/nginx
cp /usr/sbin/nginx{,.bak}
untu20:/usr/sbin# cd
root@ubuntu20:~# \cp /apps/nginx-1.24.0/objs/nginx /usr/sbin/nginx
cp: cannot create regular file ‘/usr/sbin/nginx’: Text file busy
强制替换root@ubuntu20:~# \cp -f /apps/nginx-1.24.0/objs/nginx /usr/sbin/nginx
5.测试升级的nginx是否兼容,出现ok才能升级,我这里是测试
root@ubuntu20:~# /usr/sbin/nginx -t
nginx: [emerg] module “/usr/share/nginx/modules/ngx_http_image_filter_module.so” version 1018000 instead of 1024000 in /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed
这个原因是因为以前nginx modules 和现在官方的modules 不匹配需要我们先将旧的modules 卸载安装新版官方的modules
安装官方源
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
导入密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
配置稳定版本的源
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \| sudo tee /etc/apt/sources.list.d/nginx.list
优先选择nginx官方的包。而不是系统源的包
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \| sudo tee /etc/apt/preferences.d/99nginx
更新
sudo apt update
查看源中所有nginx的模块,可用看到之前是libnginx-mod .1.24版本是nginx-mod
apt remove lib-nginx-mod* #卸载旧的nginx模块
apt install nginx-mod* #安装1.24版本的nginx模块
/usr/sbin/nginx -t 测试ok
root@ubuntu20:~# //usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
升级后访问zabbix 网站 502 Bad Gateway
可能是nginx 版本和zabbix不匹配的原因
源码安装平滑升级
升级要经过充分的测试
nginx版本与业务是否匹配
编译:注意不要make install
备份nginx
拷贝新的nginx文件
cp -f /apps/nginx-1.25.2/objs/nginx /apps/nginx/sbin/
测试
[root@rocky8 logs]# /apps/nginx/sbin/nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
nginx -t 测试通过后,发送usr2信号
kill -USR2 cat /apps/nginx/logs/nginx.pid
#会生成新进程,旧版本主进程PID的文件重命名为nginx.pid.oldbin,并启动新的nginx
[root@rocky8 logs]# cat /apps/nginx/logs/nginx.pid.oldbin
25094
[root@rocky8 logs]# cat /apps/nginx/logs/nginx.pid
25329
向旧的进程发送which信号, 它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
kill -WINCH cat /apps/nginx/logs/nginx.pid.oldbin
退出老的进程
kill -QUIT cat /apps/nginx/logs/nginx.pid.oldbin
项目标题: nginx平滑升级
1.项目背景(版本过旧,添加新模块)
2.项目目标
3.项目实现过程(原理、步骤)
4.项目结果
nginx配置文件
worker_processes auto; 自动匹配cpu核数
root@server01:/etc/nginx# ps axo pid,cmd,psr |grep nginx
worker_cpu_affinity 0001 0010; 绑定cpu #防止缓存失效#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
nginx 的master 进程是root运行,work进程是普通用户运行, 因为nginx端口80是特权端口小于1023,只能用root运行
worker_connections 2048; #所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例
如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级
别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致,
这是一些常见的 Nginx 配置指令,用于设置代理请求的头部信息。
proxy_set_header Host $http_host;
设置代理请求的 Host 头部为客户端的请求 Host 头部值。proxy_set_header X-Real-IP $remote_addr;
设置代理请求的 X-Real-IP 头部为客户端的真实 IP 地址。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
设置代理请求的 X-Forwarded-For 头部,将客户端的 IP 地址追加到该头部中,以表明客户端的真实 IP 地址。proxy_set_header X-Forwarded-Proto $scheme;
设置代理请求的 X-Forwarded-Proto 头部为请求的协议(HTTP 或 HTTPS)。
这些配置指令通常用于反向代理服务器的配置,用于将客户端请求转发给后端服务器,并在请求头部中传递一些关键的信息。
好奇,开心
sendfile on; 提示性能
#tcp_nopush on; #在开启了sendfile的情况下,合并请求后统一发送给客户端,必须开启sendfile,但会延迟
- server_tokens off; 不显示版本
- 包含
nginx虚拟主机
vi /conf/nginx.conf
include /apps/nginx/conf/conf.d/*; #添加
root@server01:/apps/nginx/conf/conf.d# cat www.luohw.org
server {
listen 8889;
server_name www.luohw.org;
root /apps/nginx/html/pc;
}
root@server01:/apps/nginx/conf/conf.d# cat m.luohw.org
server {
listen 8889;
server_name m.luohw.org;
root /apps/nginx/html/mobile;
}
配置文件在前的优先级高
server 块
alias和root的区别?
root是定义根的
location /about { #相当于访问/opt/pc/aaa/alias /opt/pc/aaa/;}location /about { #/opt/pc/aaa/about/root /opt/pc/aaa/;}server {listen 8889;server_name www.luohw.org;location / {root /apps/nginx/html/pc;}location /about {
root /opt/pc/aaa/;
}
curl www.luohw.org:8889/about222/ 访问 /opt/pc/aaa/about222/index.htmllocation /about/ {
root /opt/pc/aaa/;
}
curl www.luohw.org:8889/about222/ 访问/apps/nginx/html/pc/about222/index.html
location ^~ /about/ { 以什么开头
^~ 包含
^*
~* 包含,不区分大小写
#匹配优先级从高到低:
=, ^~, /*, 不带符号
配置密码验证访问
htpasswd -cb /etc/nginx/conf.d/.nginx-user luo 123456
auth_basic "login password";auth_basic_user_file /etc/nginx/conf.d/.nginx-user;
指定密码访问
curl -I -u luo:123456 zabbix.luo.com
自定义错误页面
#访问不存在会报404,就会访问 /data/html/40x.html
error_page 404 /40x.html;
location = /40x.html {root /data/html/ ;}
检测文件是否存在
location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/index.html $uri/html /index.html; #访问url找不到就找$uri/index.html,最后找index.html
}
GET / HTTP/1.1
HOST: 192.168.1.150
下载文件配置
location /down {autoindex on;#自动索引功能alias /apps/nginx/html/mobile/luo;# autoindex_exact_size off;#计算文件确切大小(单位bytes),此为默认值,off只显示大概大小(单位kb、mb、gb)autoindex_localtime on;
#上传一个包到nginx,太大会报413
root@server01:/apps/nginx/conf/conf.d# curl -T /root/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz http://120.77.146.92:8889/down/
413 Request Entity Too Large
上传文件太大
修改参数
client_max_body_size 1m; #设置允许客户端上传单个文件的最大值,默认值为1m,上传文件超过此值会出413错误
高价值展示生活
安全感建立
具备信息交换
兴趣爱好,工作,职业
生活状态
T / HTTP/1.1
HOST: 192.168.1.150
# 下载文件配置
location /down {autoindex on;#自动索引功能alias /apps/nginx/html/mobile/luo;# autoindex_exact_size off;#计算文件确切大小(单位bytes),此为默认值,off只显示大概大小(单位kb、mb、gb)autoindex_localtime on;
root@server01:/apps/nginx/conf/conf.d# curl -T /root/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz http://120.77.146.92:8889/down/
413 Request Entity Too Large
上传文件太大
client_max_body_size 1m; #设置允许客户端上传单个文件的最大值,默认值为1m,上传文件超过此值会出413错误
nginx高级配置
高价值展示生活
安全感建立
具备信息交换
兴趣爱好,工作,职业
生活状态
相关文章:
nginx笔记
1. nginx 简介 nginx性能比apache强,体现 在io模型方面 76 Pv: UV : 不同浏览器是不同的UV GET 获取 POST 上传 HEAT 只看头 访问网站的流程 1.dns解析 2.cdn 3.tcp 4.web服务器 处理 建立连接 接收请求 处理请求 GET POST等 获取资源 构…...
动态库的制作和使用
动态库和静态库的工作原理 配置环境变量 方式1: 坏处:环境变量是临时的 方式2: 1 用户级别的配置: 进入到/home,找到.bashrc,进入 先去找到库的路径 然后再到.bashrc最后一行输入路径 使其生效 2 系统…...
AWS Glue Pyspark+Athena基础学习汇总
Pyspark 基础学习汇总篇🍎 一、AWS 架构 ① AWS Glue:工作平台,包括脚本的编写以及管理脚本的运行状态以及调度等(主要:数据库配置、ETL和数据转换脚本编写、调度) ② Amazon S3 数据湖(数仓):数据的存储 ③ Athena:(雅典娜)SQL直接编写查询工作台(会产生费用) ④ Q…...
智能合约安全新范式,超越 `require`和`assert`
智能合约安全新范式,超越 require_assert 摘要 不要只为特定的函数写 require 语句;为你的协议写 require 语句。函数遵循检查(requirements)-生效(Effects)-交互(INteractions)协议不变性(Invariants)或 FREI-PI 模式可以帮助你的合约更加安全&#x…...
【ESP-S3-BOX-Lite花屏问题】:Github下载源码(出厂源码factory_demo)编译调试到ESP-S3-BOX-Lite中出现花屏现象
项目场景: 最近拿到了一块乐鑫的 ESP-S3-BOX-Lite (esp-box: ESP-BOX 是乐鑫信息科技) 详细资料(esp32_s3_box_lite) 版本信息 ESP-BOX依赖的 ESP-IDF分支信息支持状态master> release/v5.1 commit id: 22cfbf3…...
Redis集群3.2.11离线安装详细版本(使用Ruby)
1.安装软件准备 1.Redis版本下载 Index of /releases/http://download.redis.io/releases/ 1.2gcc环境准备 GCC(GNU Compiler Collection,GNU编译器套件)是一套用于编译程序代码的开源编译器工具集。它的主要用途是将高级编程语言(如C、C++、Fortran等)编写的源代码转换…...
Ansible自动化运维
目录 前言 一、概述 常见的开源自动化运维工具比较 二、ansible环境搭建 三、ansible模块 (一)、hostname模块 (二)、file模块 (三)、copy模块 (四)、fetch模块 ÿ…...
MSTP + Eth-Trunk配置实验 华为实验手册
1.1 实验介绍 1.1.1 关于本实验 以太网是当今现有局域网LAN(Local Area Network)采用的最通用的通信协议标准,以太网作为一种原理简单、便于实现同时又价格低廉的局域网技术已经成为业界的主流。 本实验主要介绍了LAN网络中的Eth-Trunk技术…...
滚动菜单 flutter
想实现这个功能: 下面的代码可以实现: import package:flutter/material.dart;void main() > runApp(MyApp());class MyApp extends StatelessWidget {static const String _title Flutter Code Sample;overrideWidget build(BuildContext context)…...
javaee springMVC数字类型转换之通过注解的方式
po 在属性上增加注解 NumberFormat(pattern “#,#.#”) package com.test.pojo;import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.NumberFormat;import java.util.Date;public class Users {private int uid;pr…...
SQL中CASE的用法
在SQL中,CASE语句是一种条件表达式,用于根据条件执行不同的操作。它有两种形式:简单CASE表达式和搜索CASE表达式。 简单CASE表达式的语法如下: CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE result …...
自己的碎碎念集合
自己的碎碎念集合 2023-09-07 c++叠加三目运算符闰年计算法2023-08-13 一个小题目 A+B problem一、问题及解答关碍总结2023-07-26 C的2至36进制转换函数一、itoa()函数的示例代码总结2023-07-19 平面坐标下判断三角形以及输出周长和面积一. 基本知识总结2023-06-25 达芬奇去除白…...
暂定名「码道功成:Coder启示录」
听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…...
Apache HTTPD (CVE-2017-15715)换行解析漏洞复现
Apache HTTPD 换行解析漏洞 CVE-2017-15715漏洞简介 组件版本漏洞名称 Apache HTTPD 换行解析漏洞(CVE-2017-15715) 漏洞描述 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞&…...
Spring Boot集成JasperReport生成文档
由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲染生成PDF文档。 一、使用Ireport designer 5.6设计模板 ireport的使用由于时间关系不便多…...
02-Tomcat打破双亲委派机制
上一篇:01-从JDK源码级别剖析JVM类加载机制 Tomcat 如果使用默认的双亲委派类加载机制行不行? 我们思考一下:Tomcat是个web容器, 那么它要解决什么问题: 一个web容器可能需要部署两个应用程序,不同的应用…...
怎么理解flink的异步检查点机制
背景 flink的checkpoint监控页面那里有两个指标Sync Duration 和Async Duration,一个是开始进行同步checkpoint所需的时间,一个是异步checkpoint过程所需的时间,你是否也有过疑惑,是否只是同步过程中的时间才会阻塞正常的数据处理…...
SpringMVC <url-pattern/>解读
1. < url-pattern/>的值 (1).使用拓展名的方式,语法*.xxx,xxx是自定义的拓展名,常用的方式*.do,*.action,不能使用*.jsp. (2).使用斜杠 "/"当项目中使用了 / ,他会替代tomcat中的default。导致所有的…...
大学毕业设计的益处:培养实践能力、深入专业领域、展示自信与建立联系
大学生做毕业设计有许多好处,以下是一些主要的原因和好处: 实践应用能力:毕业设计通常需要学生将所学的知识和技能应用到一个具体的项目中,这有助于他们将理论知识转化为实际应用能力。 独立思考和解决问题:毕业设计要…...
ChatGPT:概述Vue.js中data函数初始化和created钩子函数调用的顺序和问题解决方法
ChatGPT:概述Vue.js中data函数初始化和created钩子函数调用的顺序和问题解决方法 我将输入一段Vue代码,请你记住: created() {console.log(this.queryInfo)this.getClueList();},data() {return {allQueryInfo: {str: ,//线索标题查询信息},/…...
SpringBoot【基础篇】
一、快速上手 按照要求,左侧选择web,然后在中间选择Spring Web即可,选完右侧就出现了新的内容项,这就表示勾选成功了 关注:此处选择的SpringBoot的版本使用默认的就可以了,需要说一点,SpringBo…...
Vuex - state 状态(获取和使用共享数据)
文章目录 一、state是什么?二、state状态的作用三、如何使用store数据呢?使用数据的两种方式:1. 通过store 直接访问2. 通过辅助函数访问(简化) 一、state是什么? state是状态(数据) , 类似于v…...
tcp连接+套接字编程
tcp头部 tcp端口号 TCP的连接是需要四个要素确定唯一一个连接:(源IP,源端口号) (目地IP,目的端口号) 所以TCP首部预留了两个16位作为端口号的存储,而IP地址由上一层IP协议负责传递 源…...
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
目录 1.轮廓外接最大矩形boundingRect() 2.轮廓外接最小矩形minAreaRect() 3.轮廓外接多边形approxPolyDP() 1.轮廓外接最大矩形boundingRect() Rect cv::boundingRect ( InputArray array ) array:输入的灰度图像或者2D点集,数据类型为vector<Point>或者M…...
Kafka3.0.0版本——消费者(offset的默认维护位置)
目录 一、offset的默认维护位置1.1、offset的默认维护位置概述1.2、offset的默认维护位置图解 二、消费者offset的案例 一、offset的默认维护位置 1.1、offset的默认维护位置概述 Kafka0.9版本之前,consumer默认将offset保存在Zookeeper中。从Kafka0.9版本开始&am…...
Wireshark技巧[监听串口包]
监听串口包 本文摘录于:https://blog.csdn.net/qq_20405005/article/details/79652927只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 这里要保证安装了USBpcap: 打开USBpcap后一半都要输入过滤条件,否则USB太多数据了,比如…...
安全运营中心即服务提供商评估
如果组织当前没有自己的安全运营中心(SOC),那么可能需要考虑如何在不从头开始构建的情况下获得安全运营中心(SOC)。自己构建安全运营中心(SOC)的费用可能会非常昂贵,考虑到工作人员全天候运营的配置成本,就更是如此。在过去几年中,…...
算法通关村第十三关——幂运算问题解析
前言 幂运算为常见的数学运算,形式为 a b a^b ab ,其中a为底数,b为指数, 力扣中,幂运算相关的问题主要是判断一个数是不是特定正整数的整数次幂,以及快速幂的处理。 1.求2的幂 力扣231题,给…...
Python 之使用Numpy库来加载Numpy(.npy)文件并检查其内容
文章目录 总的介绍data.dtypedata.shapedata.ndimdata.size 总的介绍 要判断一个Numpy(.npy)文件的数据集类型,你可以使用Python中的Numpy库来加载该文件并检查其内容。以下是一些常见的步骤: 导入Numpy库: 首先&…...
C#学习系列之UDP同端口收发问题
C#学习系列之UDP同端口收发问题 前言解决办法关于JoinMulticastGroup总结 前言 想测试自己的程序问题,建立了两个UDP程序,一个往端口中接到数就传出去,另一个从这个端口接数据来解析。 出现的问题是 每次打开端口,另一个程序就无…...
交互式网站开发技术有哪些/苏州排名搜索优化
3.为什么蛇没有脚都能走路?么蛇没有脚都能走路?蛇的身上有很多鳞片,这是它们身上最外面的一层盔甲.鳞片不但用来保护 身体,还可以是它们的"脚" .蛇向前爬行时,身体会呈 S 形.而每一片在 S 形外边的鳞片,都会翘起来,帮助蛇前进时抓住不平的路面.这些鳞片跟蛇的肌肉互…...
企业网站打不开的原因/整合网络营销是什么
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我:Baksmaling…我:加载资源表……我:加载。我:解码AndroidManifest。xml资源……从文件加载资源表:? / apktool /框架/ 1. apk我:加载。W:不能解码attr值,使用undecoded值:ns android,名称主题,值 0 x080d0018W:不能解码attr值,…...
网站界面设计需要首先做市场研究/小网站广告投放
我刚刚开始学习面向对象的编程,只是通过观察发现,在所有的例子中,成员变量都是私有的.通常情况如何?// Classclass Building {// Object variables/propertiesprivate $number_of_floors 5; // These buildings have 5 floorsprivate $color;// Class constructorp…...
wordpress怎么添加音乐播放器/2023年5月疫情爆发
One option is have temp buffer start some known size then increase it if see it’s not enough with vsnprintf. Are there better approach? Thanks您可以使用vasprintf(),但这会进行不必要的堆分配 – 平均来说不太可能更快.使用alloca可以避免堆.或者,您可以直接写入返…...
域名历史记录查询网站/商业推广
一、直方图均衡化目的 直方图过于集中,偏向左边太暗,偏向右边太亮,偏向中间太模糊;因此如要想让图像对比度更高,更容易看清楚一些细节,则需要直方图均衡化处理 二、直方图均衡化重要公式 其中 S 为 r 的映…...
织梦网站图片怎么修改不了/百度竞价怎么排名第一
为什么80%的码农都做不了架构师?>>> COBOL(上册) COBOL(下册) 转载于:https://my.oschina.net/tadcat/blog/147758...