当前位置: 首页 > news >正文

Nginx

目录

基本介绍

Nginx核心功能

Nginx下载&安装&启动

配置防火墙

Nginx常用命令

Nginx配置文件

全局块

events块

http块

http全局块 

server 块

检查配置信息

快速入门

安装JDK

安装Tomcat

反向代理分析

Location语法规则

反向代理配置-Location实例

负载均衡规则 

 负载均衡-配置实例

动静分离

Nginx工作机制&参数设置

master-worker机制

参数设置

worker-processes

worker_connection 

配置Linux最大打开文件数

搭建高可用集群

集群架构图

具体搭建步骤

搭建基础环境

集群配置

测试

自动检测Nginx异常,终止keeppalived

配置文件keepalived.conf详解


基本介绍

1、通过不同的URI来访问不同的服务(反向代理

2、如果服务是集群,通过URI轮询访问(负载均衡

3、动静分离

4、高可用集群(多个Nginx)

Gateway也可以做到

 请求先到Nginx,再反向代理到网关,再找到真正服务的接口

Nginx核心功能

正向代理

反向代理

不希望公开目标服务器,只允许反向代理访问,提供一个统一的访问IP

客户端将请求发送到代理服务器,代理服务器去选择目标服务器获取数据,返回给客户端,这种代理方式为反向代理

反向代理帮助的对象是目标服务器,反向代理会屏蔽目标服务器的信息,实现负载均衡

负载均衡

当客服端向反向代理服务器(比如Nginx)发出请求,如果Nginx代理了多个Web服务器(集群),Nginx会将请求/负载分发到不同的服务器,也就是负载均衡

动静分离

加快网站的解析速度,把动态和静态资源由不同的服务器来解析,降低单个服务器的压力

静态资源也会发出Http请求,服务器压力很大,把静态资源剥离出来

Nginx下载&安装&启动

下载地址

安装 Nginx

首先安装依赖:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

启动 Nginx

Linux浏览器输入localhsot,nginx默认端口是80

配置防火墙

让Windos访问Nginx:IP:端口(默认80,可以不写)

查看防火墙状态:firewall-cmd --list-all

设置开放的端口号:firewall-cmd --add-port=80/tcp --permanent

设置关闭的端口号:firewall-cmd --remove-port=80/tcp --permanent

每次开启/关闭必须重启:firewall-cmd --reload

Nginx常用命令

查看监听的端口:netstat -anp | more

Nginx配置文件

Nginx 的配置文件是在/usr/local/nginx/conf目录中的nginx.conf文件
Nginx 的配置文件分由三部分组成:全局块、events块、http块

Nginx配置文件nginx.conf详解

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

全局块

        从配置文件开始到 events 块之间的内容

        主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

worker_processes 1;

        这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。

events块

        events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接

        常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

events {worker_connections  1024;}

        上述例子就表示每个 work process 支持的最大连接数为 1024,这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

http块

        这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
        需要注意的是:http 块也可以包括 http 全局块 和 server 块。

http全局块 

        http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块

        这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。

        每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
        每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。

全局 server 块
        最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
location 块
        一个 server 块可以配置多个 location 块。
        这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。 比如地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

检查配置信息

查看nginx.conf配置错误信息:nginx -t

快速入门

安装JDK

1、将压缩包上传到/opt/jdk并解压,移动到/usr/local/java

2、配置环境变量:vim /etc/profile,按 i 进入编辑模式,在最后添加配置

export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH

必须要带$PATH,保留原本的PATH路径

3、添加完成,按ESC键,退出insert,下方-- insert --会消失,然后再输入:wq,退出并保存 

4、刷新环境变量:source /etc/profile,查看PATH:echo $PATH

5、查看JDK版本:java -version

安装Tomcat

1、将压缩包上传到/opt/tomcat并解压

2、进入解压目录\bin,启动tomcat:./startup.sh(也可以配环境变量,这里就不配了)

3、开放端口8080,可以在windows通过 IP:端口 访问tomcat页面

反向代理分析

关闭8080端口,windows浏览器输入www.hsp.com 

Location语法规则

带^~不一定就是正则匹配,^~优先级比正则匹配高

一、精准匹配(成功直接返回,否则继续普通匹配)(location = /uri/{...})

二、普通匹配(不按顺序)(location /uri/{...})

        1、含有^~,匹配成功直接返回,不做正则匹配

        2、不含有^~,匹配成功记录下来(记录最长匹配结果),继续正则匹配

三、正则匹配(按顺序)

        1、匹配成功直接返回

        2、匹配不成功,返回普通匹配最长匹配结果

反向代理配置-Location实例

修改配置文件

创建Tomcat文件

默认访问webapps目录

linux新建product文件夹和hi.html

member新建product文件夹和hi.html

linux防火墙打开10000端口 
linux访问Windows Tomcat(关闭Windows的防火墙)
启动linux和windows的Tomcat,可以使用
netstat -anp | more来查看是否启动
重新加载Nginx,Windows浏览器输入:
www.hspmall.com:10000/product/hi.html

负载均衡规则 

Nginx分配服务器策略

Nginx的upstream配置技巧

1. 轮询(默认)

       每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

2. weight

        weight 代表权重, 默认为 1,权重越高被分配的客户端越多 

    upstream myserver {server 208.208.128.122:8081 weight=1;  server 208.208.128.122:8082 weight=10;}server {listen       80;server_name  208.208.128.122;location / {root   html;proxy_pass   http://myserver;index  index.html index.htm;}

3. ip_hash

        ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题

upstream myserver {ip_hash;							server 208.208.128.122:8081 ;   server 208.208.128.122:8082 ;}server {listen       80;server_name  208.208.128.122;location / {root   html;proxy_pass   http://myserver;index  index.html index.htm;}

4. fair(第三方)

        按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream myserver {					server 208.208.128.122:8081 ;   server 208.208.128.122:8082 ;fair; 		}server {listen       80;server_name  208.208.128.122;location / {root   html;proxy_pass   http://myserver;index  index.html index.htm;}

 负载均衡-配置实例

修改配置文件

创建Tomcat文件

默认访问webapps目录

在Linux的Tomcat8080创建search文件夹和look.html

在当前目录拷贝一份cp -rf ./apache-tomcat-8.5.59 ./apache-tomcat-8.5.59new

修改look.html

将端口修改成8081

 

redirectPort要和另一个Tomcat不一样

linux防火墙打开80端口
启动linux的两个Tomcat,可以使用
netstat -anp | more来查看是否启动
重新加载Nginx,Windows浏览器输入:
www.hspcrm.com/search/look.html

动静分离

创建Tomcat文件

其他配置在负载均衡已经配置过了

在Tomcat8080和8081的search目录下创建cal.jsp和image目录,即可通过传统方法实现功能

动静分离优化

在/usr/local/nginx/html目录下创建/search/image目录,图片的路径就是ip/search/image

重启Nginx

Nginx工作机制&参数设置

master-worker机制

nginx 启动后,是由两个进程组成的。master(管理者)和worker(工作者)。
一个nginx 只有一个master。但可以有多个worker

Master-Worker 模式

  1. Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
  2. Master 进程接收来自外界的信号(Request请求),向各 worker 进程发送信号,每个进程都有可能来处理这个连接。
  3. Master 进程能监控 Worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。

accept_mutex 解决 "惊群现象"

  1. 所有子进程都继承了父进程的 sockfd,当连接进来时,所有子进程都将收到通知并“争着”与它建立连接,这就叫“惊群现象”。
  2. 大量的进程被激活又挂起,只有一个进程可以 accept() 到这个连接,会消耗系统资源。
  3. Nginx 提供了一个 accept_mutex ,这是一个加在 accept 上的一把共享锁。即每个 worker 进程在执行 accept 之前都需要先获取锁,获取不到就放弃执行 accept()。有了这把锁之后,同一时刻,就只会有一个进程去 accpet(),就不会有惊群问题了。
  4. 当一个 worker 进程在 accept() 这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,完成一个完整的请求。
  5. 一个请求,完全由 worker 进程来处理,而且只能在一个 worker 进程中处理。

用多进程结构而不用多线程结构的好处

  1. 节省锁带来的开销, 每个 worker 进程都是独立的进程,不共享资源,不需要加锁。在编程以及问题查上时,也会方便很多。
  2. 独立进程,减少风险。采用独立的进程,可以让互相之间不会影响,一个进程退出后, 其它进程还在工作,服务不会中断,master 进程则很快重新启动新的 worker 进程

实现高并发的秘密-IO多路复用

  1. 对于 Nginx 来讲,一个进程只有一个主线程,那么它是怎么实现高并发的呢?
  2. 采用了 IO 多路复用的原理,通过异步非阻塞的事件处理机制,epoll 模型,实现了轻量级和高并发,worker获取到锁首先会注册事件(上图)
  3. nginx 是如何具体实现的呢,举例来说:每进来一个 request,会有一个 worker 进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发 request,并等待请求返回。那么,这个处理的 worker 不会这么傻等着,他会在发送完请求后,注册一个事件:"如果 upstream 返回了,告诉我一声,我再接着干"。 于是他就休息去了。此时,如果再有 request 进来,他就可以很快再按这种方式处理。而 一旦上游服务器返回了,就会触发这个事件,worker 才会来接手,这个 request 才会接着 往下走。由于 web server 的工作性质决定了每个 request 的大部份生命都是在网络传输中, 实际上花费在 server 机器上的时间片不多,这就是几个进程就能解决高并发的秘密所在
  4. 可以理解为去吃饭点菜,服务员通知厨师,不会一直在旁边等待

参数设置

worker-processes

  • 需要设置多少个 worker
    cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
  • 每个 worker 的线程可以把一个 设置 worker 数量, Nginx 默认没有开启利用多核 cpu,可以通过增加 worker_cpu_affinity 配置参数来充分利用多核 cpu 的性能

重启Nginx,输入:ps -ef | grep nginx

worker_connection 

配置Linux最大打开文件数

 

搭建高可用集群

Keepalived+Nginx高可用集群(主从模式)

集群架构图

具体搭建步骤

搭建基础环境


查看虚拟机IP,原本是130,现在新的两个是131和132

修改nginx.conf,启动tomcat,重启nginx,目前是独立的两台Linux服务器


在两台Linux服务器安装keepalived,按照步骤安装好即可

keepalived下载

集群配置

修改192.168.102.131为Master:vi /etc/keepalived/keepalived.conf

修改192.168.102.132为BACKUP

 

测试

启动keepalived的指令:/usr/local/sbin/keepalived

命令:ip a 查看是否成功

查看进程:ps -ef | grep keepalived

杀掉进程:killall keepalived

重启:/usr/local/sbin/keepalived

保证Windows能ping通192.168.198.18(ping不同就使用192.168.102.133)

浏览器输入:192.168.198.18/search/cal.jsp

虚拟IP绑定到主nginx(根据优先级决定),找不到再绑定到从nginx(支持负载均衡)

自动检测Nginx异常,终止keeppalived

如果直接停止主Nginx,但keepalived没有关闭,仍会访问keepalived,浏览器返回错误信息

需求,自动检测,如果Nginx关闭,就自动关闭对应的keepalived,让虚拟IP重新绑定 

#!/bin/bash
num=`ps -C nginx --no-header | wc -l`
if [ $num -eq 0 ];thenkillall keepalived
fi

 

修改配置文件:vi /etc/keepalived/keepalived.conf

配置文件keepalived.conf详解

#这里只注释要修改的地方
global_defs {notification_email {test@foxmail.com #接收通知的邮件地址}notification_email_from Alexandre.Cassen@firewall.loc #发送邮件的邮箱smtp_server 192.168.200.1 #smtp server 地址smtp_connect_timeout 30router_id Node132 #Node132 为主机标识vrrp_skip_check_adv_addr#vrrp_strict #这里需要注释,避免虚拟 ip 无法 ping 通vrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state MASTER #主节点 MASTER 备用节点为 BACKUPinterface ens33 #网卡名称virtual_router_id 51 #VRRP 组名,两个节点的设置必须一样,指明属于同一 VRRP 组priority 100 #主节点的优先级(1-254 之间),备用节点必须比主节点优先级低advert_int 1 #组播信息发送间隔,两个节点设置必须一样authentication { #设置验证信息,两个节点必须一致auth_type PASSauth_pass 1111}virtual_ipaddress { #指定虚拟 IP, 两个节点设置必须一样192.168.200.16}
}

相关文章:

Nginx

目录 基本介绍 Nginx核心功能 Nginx下载&安装&启动 配置防火墙 Nginx常用命令 Nginx配置文件 全局块 events块 http块 http全局块 server 块 检查配置信息 快速入门 安装JDK 安装Tomcat 反向代理分析 Location语法规则 反向代理配置-Location实例 …...

CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(没思路了)

通过网盘分享的文件:如果能重来.zip 链接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取码: 1111 --来自百度网盘超级会员v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…...

HTML5系列(7)-- Web Storage 实战指南

前端技术探索系列:HTML5 Web Storage 实战指南 🗄️ 致读者:本地存储的新纪元 👋 前端开发者们, 今天我们将深入探讨 HTML5 中的 Web Storage 技术,这是一个强大的本地存储解决方案,让我们能…...

RocketMQ: 保证消息的可靠性投递

概述 在分布式系统中,消息队列作为异步通信的重要组件,其可靠性和稳定性至关重要RocketMQ 是阿里巴巴开源的一款高性能、高可靠性的分布式消息中间件,广泛应用于各种场景,如交易订单处理、日志收集、流计算等 RocketMQ 的可靠性…...

消息传递神经网络(Message Passing Neural Networks, MPNN)

消息传递神经网络(Message Passing Neural Networks, MPNN) 一、引言二、消息传递框架概述1.消息传递阶段(1)消息生成与传播-message(2)消息聚合-aggregate(3)消息更新-update&#…...

Python干货总结篇:列表、字典、集合、元组的区别与用途

前言: 更详细知识点,搞懂列表、字典、集合、元组到底是什么,可关注主页文章:Python知识点精汇! 目录 一、特点与用途 1.列表:a[ ] 2.集合:a{ } 3.字典:a{key:value} 4.元组&am…...

vue.js学习(day 18)

实例:面经基础版...

【Gitlab】CICD使用minio作为分布式缓存

1、安装minio 下载适合自己系统版本的安装文件https://dl.min.io/server/minio/release/windows-amd64/ yum install xxx.rpm 2、配置/etc/profile export MINIO_ACCESS_KEYroot [ui登录账号] export MINIO_SECRET_KEYminioDev001 [ui登录密码] export MINIO_OPTS"…...

医院管理系统

私信我获取源码和万字论文,制作不易,感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求,创建了一个计…...

编译器优化技术

方法内联 逃逸分析 公共子表达式消除 数据边界检查消除...

高斯消元——acwing

题目一&#xff1a;高斯消元解线性方程组 883. 高斯消元解线性方程组 - AcWing题库 分析 代码 #include<bits/stdc.h> using namespace std;const int N 110; const double eps 1e-6; // 注意了double, 和1e-6 ,,这样才是double的0 int n;double a[N][N];int guass…...

华为关键词覆盖应用市场ASO优化覆盖技巧

在我国的消费者群体当中&#xff0c;华为的品牌形象较高&#xff0c;且产品质量过硬&#xff0c;因此用户基数也大。与此同时&#xff0c;随着影响力的增大&#xff0c;华为不断向外扩张&#xff0c;也逐渐成为了海外市场的香饽饽。作为开发者和运营者&#xff0c;我们要认识到…...

[代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和

前言 哈希表是什么&#xff1f;一句话带你理解&#xff0c;简单来说我们对于杂乱的数据&#xff0c;怎么快速找到数据&#xff0c;如何做呢&#xff1f;一般的做法就是遍历复杂度为o(N)去找寻一个数据&#xff0c;但是吧&#xff0c;我们这样思考的话&#xff0c;还是花了大量时…...

linux网络抓包工具

linux网络抓包工具 一、tcpdump1.1 基本用法1.2 龙芯平台实例操作 二、wireshark2.1 主要功能2.2 龙芯平台实例操作 一、tcpdump tcpdump 指令可列出经过指定网络界面的数据包文件头&#xff0c;可以将网络中传送的数据包的 “头” 完全截获下来提供分析。它支持针对网络层、协…...

运维工程师.云计算工程师面试题.考试题

《(全国)运维自动化阶段第1套卷》 卷面总分 题号 单选题 90 题分 得分 一、单选题(每题2分,共计70分;得分____) 1. 下面哪个选项可以做变量名称?( ) A、if B、123abc C、for D、User_Name 2. 哪种数据类型可以做增,删,改相关操作?( ) A、字符串 B、列表 C、元…...

递归1——递归入门

目录 1.递归 2.递归的基本题目 2.1.题目一——P5739 【深基7.例7】计算阶乘 - 洛谷 | 计算机科学教育新生态 2.2.题目二——B2064 斐波那契数列 - 洛谷 | 计算机科学教育新生态 2.3.题目三——B2142 求 123...N 的值 - 洛谷 | 计算机科学教育新生态 2.4.题目四——B2144…...

XuperChain核心流程

04-XuperChain核心流程 0 XuperChain架构图 核心框架 Xuper Chain主要由 Xuper Core 这个核心引擎来构建。Xuper Core 分为三个部分&#xff1a; 基础组件&#xff1a;日志、存储、监控等关键组件&#xff0c;以及密码学库等基本组件。 核心组件&#xff1a;包括共识、合约、账…...

2024.12.2工作复盘

1.今天学了什么&#xff1f; 简单的写了一篇博客&#xff0c;是关于参数校验的问题&#xff0c;参数校验&#xff0c;一个是前后端校验到底一不一致&#xff0c;一个是绕过前端校验&#xff0c;看后台的逻辑到底能不能校验住。 2.今天解决了什么问题&#xff1f; 3.今天完成…...

关于Vscode配置Unity环境时的一些报错问题(持续更新)

第一种报错&#xff1a; 下载net请求超时&#xff08;一般都会超时很正常的&#xff09; 实际时并不需要解决&#xff0c;它对你的项目毫无影响 第二种报错&#xff1a; .net版本不匹配 解决&#xff1a;&#xff08;由于造成问题不一样&#xff0c;所以建议都尝试一次&…...

微信小程序——文档下载功能分享(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

长短期记忆网络 (LSTM) 简介

文章目录 一、说明二、传统 RNN 的问题三、为什么梯度消失&#xff1f;四、长短期记忆网络简介五、忘记门六、Update Gate (Input Gate)七、Output Gate八、数学上的内存九、从 LSTM 到 Transformer十、总结 一、说明 机器学习取得进步的领域之一是自然语言处理。对于用于机器…...

【电子通识】USB Type-C线缆为什么有的用到E-Marker芯片

USB Type-C接口具备数据传输、充电(基于USB PD协议)和音频视频传输能力。但是,上述功能都有强弱之别,并因此衍生出了无数种规格的USB Type-C线缆。 如下所示直接搜索就可以看到,虽然都是Type-C接口,但存在很多不同种类的线缆规格。 以数据传输为例,USB Type-C可选USB2.0…...

【故障处理系列--移动云云盘根目录在线扩容】

移动云云盘根目录扩容 **目的&#xff1a;**测试harbor仓库服务器的根目录能否在线扩容 1、移动云控制台系统盘扩容 这里以我自己的虚拟机演示 2、查看分区的文件类型 3、安装growpart工具 rootgitlab-cli:~# apt install cloud-guest-utils -y rootgitlab-cli:~# apt ins…...

混沌工程/混沌测试/云原生测试/云平台测试

背景 私有云/公有云/混合云等具有复杂&#xff0c;分布式&#xff0c;环境多样性等特点&#xff0c;许多特殊场景引发的线上问题很难被有效发现。所以需要引入混沌工程&#xff0c;建立对系统抵御生产环境中失控条件的能力以及信心&#xff0c;提高系统面对未知风险得能力。 …...

CQ 社区版 2024.11 | 新增“审批人组”概念、可通过SQL模式自定义审计图表……

CloudQuery 社区 11 月新版本来啦&#xff01;本月版本依旧是 CUG&#xff08;CloudQuery 用户组&#xff09;尝鲜版的更新。 针对审计模块增加了 SQL 模式自定义审计图表&#xff1b;在流程模块引入了“审批人组”概念。此外&#xff0c;在 SQL 编辑器、连接管理等模块都涉及…...

【maven-4】IDEA 配置本地 Maven 及如何使用 Maven 创建 Java 工程

IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;是一款功能强大的集成开发环境&#xff0c;广泛应用于 Java 开发。下面将详细介绍如何在 IDEA 中配置本地 Maven&#xff0c;并创建一个 Maven Java 工程&#xff0c;快速上手并高效使用 Maven 进行 Java 开发。 1. Maven …...

c语言结构体

c语言结构体 1. 结构体的定义 在C语言中&#xff0c;结构体是一种用户自定义的数据类型&#xff0c;它允许你将不同类型的数据组合成一个单一的实体。结构体的定义以struct关键字开头&#xff0c;后面跟着结构体标签&#xff08;可以省略&#xff0c;但为了方便后续引用&#…...

洛谷二分题

P1024 [NOIP2001 提高组] 一元三次方程求解 题目描述 有形如&#xff1a;&#x1d44e;&#x1d465;3&#x1d44f;&#x1d465;2&#x1d450;&#x1d465;&#x1d451;0ax3bx2cxd0 这样的一个一元三次方程。给出该方程中各项的系数&#xff08;&#x1d44e;,&#x1d44…...

vue3的项目目录和关键文件

注意换插件 vue2的是 Vetur &#xff1b;vue3的是volar 这里注意volar插件已更名为Vue - Official vite.config.js 放跟vite配置相关的内容 区别于vue2&#xff1b;vue2是vue.config.js&#xff1b;vue2是基于webpack的&#xff0c;vue3是基于vite的 main.js import { creat…...

rabbitmq原理及命令

目录 一、RabbitMQ原理1、交换机&#xff08;Exchange&#xff09;fanoutdirecttopicheaders&#xff08;很少用到&#xff09; 2、队列Queue3、Virtual Hosts4、基础对象 二、RabbitMQ的一些基本操作:1、用户管理2、用户角色3、vhost4、开启web管理接口5、批量删除队列 一、Ra…...

洛谷 P1308 [NOIP2011 普及组] 统计单词数 C语言

题目&#xff1a; https://www.luogu.com.cn/problem/P1308 复制Markdown 展开 题目描述 一般的文本编辑器都有查找单词的功能&#xff0c;该功能可以快速定位特定单词在文章中的位置&#xff0c;有的还能统计出特定单词在文章中出现的次数。 现在&#xff0c;请你编程实现…...

vue基础之5:vue数据代理、事件处理、事件修饰符、键盘事件

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…...

RK3568平台开发系列讲解(PWM篇)sysyfs 操作 pwm 原理讲解

🚀返回专栏总目录 文章目录 一、高精度定时器介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢使用 sysfs 和内核 API 函数对硬件 PWM 进行控制, 而当硬件 PWM 不够用的时候, 可以使用 GPIO 来模拟实现 PWM, 也可以称之为软件 PWM, 软件 PWM 是通过软件编程实…...

python 练习题

目录 1&#xff0c;输入三个整数&#xff0c;按升序输出 2&#xff0c;输入年份及1-12月份&#xff0c;判断月份属于大月&#xff0c;小月&#xff0c;闰月&#xff0c;平月&#xff0c;并输出本月天数 3&#xff0c;输入一个整数&#xff0c;显示其所有是素数因子 4&#…...

SprinBoot整合KafKa的使用(详解)

前言 1. 高吞吐量&#xff08;High Throughput&#xff09; Kafka 设计的一个核心特性是高吞吐量。它能够每秒处理百万级别的消息&#xff0c;适合需要高频次、低延迟消息传递的场景。即使在大规模分布式环境下&#xff0c;它也能保持很高的吞吐量和性能&#xff0c;支持低延…...

CSS学习记录03

CSS背景 CSS 背景属性用于定义元素的背景效果。 CSS background-color background-color属性指定元素的背景色。 页面的背景色设置如下&#xff1a; body {background-color: lightblue; } 通过CSS&#xff0c;颜色通常由以下方式指定&#xff1a; 有效的颜色名称-比如“…...

在Java中使用Apache POI导入导出Excel(二)

本文将继续介绍POI的使用&#xff0c;上接在Java中使用Apache POI导入导出Excel&#xff08;一&#xff09; 使用Apache POI组件操作Excel&#xff08;二&#xff09; 14、读取和重写工作簿 try (InputStream inp new FileInputStream("workbook.xls")) { //Inpu…...

Vue3学习宝典

1.ref函数调用的方式生成响应式数据&#xff0c;可以传复杂和简单数据类型 <script setup> // reactive接收一个对象类型的数据 import { reactive } from vue;// ref用函数调用的方式生成响应式数据&#xff0c;可以传复杂和简单数据类型 import { ref } from vue // 简…...

Unity开发FPS游戏之完结篇

这个系列的前几篇文章介绍了如何从头开始用Unity开发一个FPS游戏&#xff0c;感兴趣的朋友可以回顾一下。这个系列的文章如下&#xff1a; Unity开发一个FPS游戏_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个FPS游戏之二_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个F…...

基于BM1684的AI边缘服务器-模型转换,大模型一体机(二)

目标追踪 注&#xff1a;所有模型转换都是在docker环境中的 先进入docker 这里我们是要在docker环境里编译的&#xff0c;所以先进入docker :~/tpu-nntc# docker run -v $PWD/:/workspace -it sophgo/tpuc_dev:latest初始化环境 root2bb02a2e27d5:/workspace/tpu-nntc# s…...

IDEA连接Apifox客户端

IDEA连接Apifox客户端 一、下载Apifox安装包二、IDEA配置三、配置Apifox和IDEA项目同步 一、下载Apifox安装包 Apifox官网&#xff0c;根据自己的操作系统下载对应的Apifox安装包&#xff0c;我是windows系统所以下载的是windows版。 下载 默认仅为我安装&#xff0c;点击下一…...

vue中引用svg图标

要在 Vue 项目中引用 SVG 图标&#xff0c;有几种常见的方法。这里我将介绍两种方法&#xff1a;一种是直接在组件中内联 SVG 代码&#xff0c;另一种是将 SVG 作为单独的文件引用。 方法一&#xff1a;内联 SVG 代码 你可以直接在 Vue 组件的模板中嵌入 SVG 代码。这种方法适…...

【Laravel】模型封装属性基础

文章目录 概要什么是封装模型属性&#xff1f;使用访问器和修改器封装属性访问器&#xff08;Accessor&#xff09;修改器&#xff08;Mutator&#xff09;测试业务实现 运行结果小结 概要 随着项目规模的扩大&#xff0c;模型中的属性和方法可能会变得越来越复杂&#xff0c;这…...

【ROS编译未来时间戳报错修正】一种无需重零编译的文件时间戳更新方法分享

问题描述 无论在ROS1还是ROS2使用catkin_make或者colcon build指令后&#xff0c;有时候会出现文件时间戳的问题&#xff0c;通常报错的内容大致如下文件的修改时间在未来XX秒后&#xff0c;警告&#xff1a;检测到时钟错误。您的构建版本可能是不完整的。 解决方法 不完美的…...

tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录

这些error的坑&#xff0c;肯定是很多人不想看到的&#xff0c;我的开源软件PakePlus是使用tauri开发的&#xff0c;PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序&#xff0c;利用Tauri轻松构建轻量级多端桌面应用和多端手机应用&#xff0c;为了实现发布的时候…...

事务常见分类

目录 1.扁平事务 2.带有保存点的扁平事务 3.链事务 4.嵌套事务 5.分布式事务 从事务理论的角度来看&#xff0c;可以把事务分为以下几种类型&#xff1a; 扁平事务&#xff08;Flat Transactions&#xff09; 带有保存点的扁平事务&#xff08;Flat Transactions with Sa…...

深度学习案例:ResNet50模型+SE-Net

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 回顾ResNet模型 ResNet&#xff0c;即残差网络&#xff0c;是由微软研究院的Kaiming He及其合作者于2015年提出的一种深度卷积神经网络架构。该网络架构的核心创新在于引入了“残差连接”&…...

第三方Cookie的消亡与Google服务器端标记的崛起

随着互联网用户对隐私保护的关注日益增强&#xff0c;各大浏览器正在逐步淘汰第三方Cookie。这一变革深刻影响了广告商和数字营销人员的用户跟踪和数据分析方式。然而&#xff0c;Google推出的服务器端标记技术为这一挑战提供了新的解决方案。 什么是第三方Cookie&#xff1f; …...

arkTS:使用ArkUI实现用户信息的持久化管理与自动填充(PersistentStorage)

arkUI&#xff1a;使用ArkUI实现用户信息的持久化管理与自动填充&#xff08;PersistentStorage&#xff09; 1 主要内容说明2 例子2.1 登录页2.1.1登陆页的相关说明2.1.1.1 持久化存储的初始化2.1.1.2 输入框2.1.1.3 记住密码选项2.1.1.4 登录按钮的逻辑2.1.1.5 注册跳转 2.1.…...

01-Zabbix监控快速入门

01-Zabbix监控快速入门 1、监控知识基本概述1.1 什么是监控1.2 为何需要监控1.3 如何进行监控 2、单机时代如何监控2.1 监控CPU2.2 监控内存2.3 监控磁盘2.4 监控⽹络2.5 监控TCP2.6 监控脚本示例 3、常⻅的监控⽅案3.1 Cacti3.2 Nagios3.3 Zabbix3.4 Prometheus3.5 商业监控⽅…...