nginx2

mkdir /usr/local/develop

cd /usr/local/develop

下载

wget http://nginx.org/download/nginx-1.17.4.tar.gz

yum install git

git clone https://github.com/arut/nginx-rtmp-module.git

解压文件

tar zxmf nginx-1.17.4.tar.gz

进入解压目录

cd nginx-1.17.4/

安装编译工具及依赖库 都安装成功后再次执行会有下面提示

yum -y install gcc pcre-devel zlib-devel openssl-devel libxml2-devel libxslt-devel gd-devel GeoIP-devel jemalloc-devel libatomic_ops-devel perl-devel perl-ExtUtils-Embed

编译所有功能模块  可能根据操作系统不同需要指定在./configure --prefix=/usr/local/nginx 加上后面的模块 来指定  我这里不需要

./configure --add-module=/usr/local/develop/nginx-rtmp-module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-pcre-jit

用上面的  下面的我做个记录

./configure --with-threads \
            --with-file-aio \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-http_realip_module \
            --with-http_addition_module \
            --with-http_xslt_module=dynamic \
            --with-http_image_filter_module=dynamic \
            --with-http_geoip_module=dynamic \
            --with-http_sub_module \
            --with-http_dav_module \
            --with-http_flv_module \
            --with-http_mp4_module \
            --with-http_gunzip_module \
            --with-http_gzip_static_module \
            --with-http_auth_request_module \
            --with-http_random_index_module \
            --with-http_secure_link_module \
            --with-http_degradation_module \
            --with-http_slice_module \
            --with-http_stub_status_module \
            --with-stream=dynamic \
            --with-stream_ssl_module \
            --with-stream_realip_module \
            --with-stream_geoip_module=dynamic \
            --with-stream_ssl_preread_module \
            --with-compat \
            --with-pcre-jit

make && make install

编译后默认安装目录为    /usr/local/nginx

cd /usr/local/nginx

ll

进入sbin目录

cd sbin/

nginx的常用命令

在 /usr/local/nginx/sbin目录下

./nginx   启动nginx

./nginx -s stop   关闭nginx

./nginx -s quit  优雅关闭

./nginx -s reload  在启动情况下重启nginx 默认加载的是/usr/local/nginx/conf/nginx.conf配置文件

./nginx -s reload -c /path/to/your/nginx.conf  后面可以指定你配置文件位置

./nginx -s reopen  重新打开日志文件

这样每次都需要在/usr/local/nginx/sbin目录下进行操做,比较麻烦

配置Nginx全局环境变量  

vim /etc/profile.d/nginx.sh(用这个)    和vim /etc/profile

说明:vim /etc/profile.d/nginx.sh 配置PATH=$PATH:/usr/local/nginx/sbin 和vim /etc/profile里配置PATH=$PATH:/usr/local/nginx/sbin 效果是一样的,只不过在/etc/profile.d更加有组织性

PATH=$PATH:/usr/local/nginx/sbin
 

:wq是保存退出

:q是退出不保存

:q!是强制退出不保存

配置完成后 更新环境变量

source /etc/profile

这样你就可以在任何目录执行nginx的命令

nginx   启动nginx

nginx -s stop   关闭nginx

nginx -s quit  优雅关闭

nginx -s reload  在启动情况下重启nginx 默认加载的是/usr/local/nginx/conf/nginx.conf配置文件

nginx -s reload -c /path/to/your/nginx.conf  后面可以指定你配置文件位置

nginx -s reopen  重新打开日志文件

nginx -t 检查配置文件

nginx -V  大写v看安装的模块

nginx -v 小写v看版本

把Nginx注册为系统服务

vim /etc/systemd/system/nginx.service(这里不要选这个  可以查下两者区别)

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q
ExecStart=/usr/local/nginx/sbin/nginx -g "pid /run/nginx.pid;"
ExecReload=/usr/local/nginx/sbin/nginx -t -q
ExecReload=/usr/local/nginx/sbin/nginx -s reload -g "pid /run/nginx.pid;"

ExecStop=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
 

重新加载系统服务

system daemon-reload(我这里  这一步不需要执行)

系统启动后自动启动(注意不要多空格)

systemctl enable nginx  

启动Nginx

systemctl start nginx

重启

systemctl reload nginx

停止

systemctl stop nginx

查看状态

systemctl status nginx

安全组开通80端口

现在你可以通过

http://你的公网IP访问nginx  因为此时nginx的配置文件只配了80端口

基本认证模块(如果需要使用的话,一般不需要安装)

htpasswd -c /usr/local/nginx/htpasswd 你的登录名

安装依赖

yum -y install httpd-tools

再次执行

htpasswd -c /usr/local/nginx/htpasswd 你的登录名  需要确认密码

再次登录时要求你输入用户名密码

文件下载服务器配置

root指令和proxy_pass指令不要写在同一个块中,写了只会执行一个,谁在前执行谁


#user  nobody;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


# 工作进程:根据需要进行设置,一般设置为CPU核心数的2倍或直接设置为auto由程序自动调整
worker_processes 1;
events {
    # 每个工作进程的连接数,默认为1024个
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    server {
        listen 80;
        server_name localhost;
        charset utf-8;
        root /data/nginx-web/files; # 文件存放目录

        location / {
		
			
		
			autoindex on; # 启用自动首页功能
            autoindex_format html; # 首页格式为HTML
            autoindex_exact_size on; # 文件大小自动换算
            autoindex_localtime on; # 按照服务器时间显示文件时间
            default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为
            # application/octet-stream

            if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {
                # 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"
                add_header Content-Disposition: 'attachment;';
#注意加上下面的,不知什么原因 会导致失效问题(就是变成在线浏览或者在线播放了)
				add_header Content-Type 'application/octet-stream';
            }
            sendfile on; # 开启零复制文件传输功能
            sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MB
            tcp_nopush on; # 启用最小传输限制功能
            aio on; # 启用异步传输
            directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件
            directio_alignment 4096; # 与磁盘的文件系统对齐
            output_buffers 4 32k; # 文件输出的缓冲区大小为128KB
            limit_rate 1m; # 限制下载速度为1MB
            limit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式
            max_ranges 4096; # 客户端执行范围读取的最大值是4096B
            send_timeout 20s; # 客户端引发传输超时时间为20s
            postpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送
            chunked_transfer_encoding on; # 启用分块传输标识
			
            #加了好像也没效果
			#expires 365d;  # 设置过期时间为365天
			#add_header Cache-Control "public, max-age=31536000";  # 设置缓存控制为公共缓存,最大缓存时间为一年
			
        }
    }
}

注意:一个IP可以绑定多个域名

如果有多个server监听同一个端口 当用IP访问时候  server_name首先匹配server_name 是对应IP的那个server 如果没有server_name是那个IP  那么哪个server在前就匹配哪个server 当用域名访问时候 哪个server_name和域名相同就用哪个 这里和用localhost或者127.0.0.1无关  只会和请求的host匹配 匹配不到哪个server在前就用哪个

有点绕    在多个域名绑定同一个IP时候

就是说nginx首先会用server_name和请求的host做匹配 匹配上了 就用哪个server

匹配不上的话,哪个server在前就用哪个  和写localhost  127.0.0.1  没半毛钱关系  除非你在本地测试时候,写了localhost或者127.0.0.1 此时也是因为和请求的host匹配

伪装流媒体配置示例

重新编译下

cd /usr/local/develop/nginx-1.17.4  主要是这个--with-http_xslt_module

./configure --add-module=/usr/local/develop/nginx-rtmp-module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-pcre-jit

make && make install

下面是当1个IP地址有多个域名的情况下 SSL部署文件下载服务器示例

如果你希望把对应IP也写上可以在对应的一个域名上的80和443加上对应IP 不然Nginx不知道你具体要访问的是哪个

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
 
    keepalive_timeout  65;

    server {
		listen 80;
		#填写证书绑定的域名
		server_name www.example.com example.com;
		#将所有HTTP请求通过rewrite指令重定向到HTTPS。
		rewrite ^(.*)$ https://$host$1;
		location / {
			index index.html index.htm;
		}
	}
    server {
		 #HTTPS的默认访问端口443。
		 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
		 listen 443 ssl;
		 
		 #填写证书绑定的域名
		 server_name www.example.com example.com;
	 
		 #填写证书文件绝对路径
		 ssl_certificate /usr/local/nginx/cert/www.example.com.pem;
		 #填写证书私钥文件绝对路径
		 ssl_certificate_key /usr/local/nginx/cert/www.example.com.key;
	 
		 ssl_session_cache shared:SSL:1m;
		 ssl_session_timeout 5m;
		 
		 #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
		 #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
		 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

		 #表示优先使用服务端加密套件。默认开启
		 ssl_prefer_server_ciphers on;
		 root /data/nginx-web/files2; # 文件存放目录	
         
         ## 白名单设置,只允许下面的ip的客户端以及本地能访问。
		 ##allow 123.123.123.1;
		 ##deny all;
        #location是匹配IP+端口或者是域名后面的
		location / {
            autoindex on; # 启用自动首页功能
            autoindex_format html; # 首页格式为HTML
            autoindex_exact_size on; # 文件大小自动换算
            autoindex_localtime on; # 按照服务器时间显示文件时间
            default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为
            # application/octet-stream

            if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {
                # 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"
                add_header Content-Disposition: 'attachment;';
#注意加上下面的,不知什么原因 会导致失效问题(就是变成在线浏览或者在线播放了)
				add_header Content-Type 'application/octet-stream';
            }
            sendfile on; # 开启零复制文件传输功能
            sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MB
            tcp_nopush on; # 启用最小传输限制功能
            aio on; # 启用异步传输
            directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件
            directio_alignment 4096; # 与磁盘的文件系统对齐
            output_buffers 4 32k; # 文件输出的缓冲区大小为128KB
            limit_rate 1m; # 限制下载速度为1MB
            limit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式
            max_ranges 4096; # 客户端执行范围读取的最大值是4096B
            send_timeout 20s; # 客户端引发传输超时时间为20s
            postpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送
            chunked_transfer_encoding on; # 启用分块传输标识
        }
	}

	server {
		listen 80;
		#填写证书绑定的域名
		server_name www.example2.com example2.com;
		#将所有HTTP请求通过rewrite指令重定向到HTTPS。
		rewrite ^(.*)$ https://$host$1;
			location / {
				index index.html index.htm;
			}	
	}
	server {
		 #HTTPS的默认访问端口443。
		 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
		 listen 443 ssl;
		 
		 #填写证书绑定的域名
		 server_name www.example2.com example2.com;
	 
		 #填写证书文件绝对路径
		 ssl_certificate /usr/local/nginx/cert/www.example2.com.pem;
		 #填写证书私钥文件绝对路径
		 ssl_certificate_key /usr/local/nginx/cert/www.example2.com.key;
	 
		 ssl_session_cache shared:SSL:1m;
		 ssl_session_timeout 5m;
		 
		 #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
		 #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
		 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

		 #表示优先使用服务端加密套件。默认开启
		 ssl_prefer_server_ciphers on;
		 root /data/nginx-web/files; # 文件存放目录		
         ## 白名单设置,只允许下面的ip的客户端以及本地能访问。
		 ##allow 123.123.123.1;
		 ##deny all;
		location / {
            autoindex on; # 启用自动首页功能
            autoindex_format html; # 首页格式为HTML
            autoindex_exact_size on; # 文件大小自动换算
            autoindex_localtime on; # 按照服务器时间显示文件时间
            default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为
            # application/octet-stream

            if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {
                # 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"
                add_header Content-Disposition: 'attachment;';
#注意加上下面的,不知什么原因 会导致失效问题(就是txt变成在线浏览)
				add_header Content-Type 'application/octet-stream';
            }
            sendfile on; # 开启零复制文件传输功能
            sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MB
            tcp_nopush on; # 启用最小传输限制功能
            aio on; # 启用异步传输
            directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件
            directio_alignment 4096; # 与磁盘的文件系统对齐
            output_buffers 4 32k; # 文件输出的缓冲区大小为128KB
            limit_rate 1m; # 限制下载速度为1MB
            limit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式
            max_ranges 4096; # 客户端执行范围读取的最大值是4096B
            send_timeout 20s; # 客户端引发传输超时时间为20s
            postpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送
            chunked_transfer_encoding on; # 启用分块传输标识
        }
	}
}

输入域名访问: 浏览器首先会检查本地缓存,看是否有对应域名的解析记录。 如果本地缓存没有,浏览器会查找操作系统的 hosts 文件,看是否有对应的 IP 地址。 如果 hosts 文件中没有,浏览器会向 DNS 服务器发起域名解析请求,获取对应的 IP 地址。 输入 IP 访问: 浏览器会直接使用输入的 IP 地址进行访问,不再进行 DNS 解析。此时不会再向 DNS 服务器发起域名解析请求。 总体来说,如果你直接输入 IP 地址访问,浏览器会跳过 DNS 解析的步骤,直接使用输入的 IP 地址

hosts文件地址:C:\Windows\System32\drivers\etc  目录下

负载均衡:

package com.example.demo16.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author hrui
 * @date 2024/2/9 19:17
 */
@RestController
public class TestController {

    @Value("${server.port}")
    private String port;
    @RequestMapping("/test1")
    public Object test(String name,String age){
        return "端口"+port+","+"name="+name+","+"age="+age;
    }

}

端口一个设置为8081,一个设置为8082,一个设置为8083

需要JDK环境

启动命令:分别启动3个jar包

 nohup java -jar backend8081.jar > backend8081.log 2>&1 &

 nohup java -jar backend8082.jar > backend8082.log 2>&1 &

 nohup java -jar backend8083.jar > backend8083.log 2>&1 &

server {
		listen 80;
		#填写证书绑定的域名
		server_name www.example.com example.com;
		#将所有HTTP请求通过rewrite指令重定向到HTTPS。
		rewrite ^(.*)$ https://$host$1;   
			location / {
				index index.html index.htm;
			}	
	}
	server {
        #HTTPS的默认访问端口443。
		 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
		 listen 443 ssl;
		 
		 #填写证书绑定的域名
		 server_name www.example.com example.com;
	 
		 #填写证书文件绝对路径
		 ssl_certificate /usr/local/nginx/cert/www.example.com.pem;
		 #填写证书私钥文件绝对路径
		 ssl_certificate_key /usr/local/nginx/cert/www.example.com.key;
	 
		 ssl_session_cache shared:SSL:1m;
		 ssl_session_timeout 5m;
		 
		 #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
		 #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
		 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

		 #表示优先使用服务端加密套件。默认开启
		 ssl_prefer_server_ciphers on;
		 
		 
		 ## 白名单设置,只允许下面的ip的客户端以及本地能访问。
		 ##allow 123.123.123.1;
		 ##deny all;

        location / {
             
            proxy_pass http://backend;
			
        }
	}
	upstream backend{
		
		server 127.0.0.1:8081;
		server 127.0.0.1:8082;
		server 127.0.0.1:8083;
	}

每次访问它都会切换不通端口

此种方式叫轮询策略

IP哈希策略

它会根据你你客户端IP计算得出该访问那台服务器,如果IP不换,就会一致访问同一个端口(服务器)

最少连接策略 

随机负载策略

权重负载策略  简单说就是81->1次   82->2次  83->3次  此种方式在服务器性能有差距时使用合适

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/384224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EMC学习笔记(二十六)降低EMI的PCB设计指南(六)

降低EMI的PCB设计指南(六) 1.PCB布局1.1 带键盘和显示器的前置面板PCB在汽车和消费类应用中的应用1.2 敏感元器件的布局1.3 自动布线器 2.屏蔽2.1 工作原理2.2 屏蔽接地2.3 电缆屏蔽至旁路2.4 缝隙天线:冷却槽和缝隙 tips:资料主要…

蓝桥杯嵌入式第六届真题(完成)STM32G431

蓝桥杯嵌入式第六届真题(完成)STM32G431 题目部分 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…

windows11 MSYS2下载安装教程

MSYS2 可以理解为在windows平台上模拟linux编程环境的开源工具集 当前环境:windows11 1. 下载 官网地址可下载最新版本,需要科学上网 https://www.msys2.org/ 2. 安装 按照正常安装软件流程一路next就可以 打开 3. 配置环境 网上很多教程提到需…

基于multiprocessing.pool的多进程池与单进程访问多网页的比较示例

一、示例代码: from multiprocessing import Pool import time import requestsurls [ # URL队列,通过多进程访问http://www.python.org,http://www.python.org/about/,http://www.python.org/doc/,http…

【JavaEE】_CSS选择器

目录 1. 基本语法格式 2. 引入方式 2.1 内部样式 2.2 内联样式 2.3 外部样式 3. 基础选择器 3.1 标签选择器 3.2 类选择器 3.3 ID选择器 4. 复合选择器 4.1 后代选择器 4.2 子选择器 4.3 并集选择器 4.4 伪类选择器 1. 基本语法格式 选择器若干属性声明 2. 引入…

模拟串口LV2,解决硬件串口资源不足问题!!!!

模拟串口通信 2.0 版本!! 我在前面的文章里面有写了 虚拟串口通信,虽然说能用,但是用过的小伙伴都说 “好!” 优缺点: 先说一点,2.0版本并不适用于同硬件串口的所有场合,仅仅针对自己开发的电子垃圾的主…

Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性

什么是对象和类 什么是 Python 类、类对象、实例对象 类变量、实例变量/类属性、实例属性 前言 只是叫法不一样 实例属性 实例变量 类属性 类变量 个人认为叫属性更恰当 类属性和实例属性区别 类属性,所有实例对象共享该属性实例属性,属于某一…

【MySQL】操作库 —— 库的操作 -- 详解

一、增删数据库 1、创建数据库 create database db_name; 本质就是在 /var/lib/mysql 创建一个目录。 说明: 大写的表示关键字。[ ] 是可选项。CHARACTER SET:指定数据库采用的字符集。COLLATE:指定数据库字符集的校验规则。 2、数据库删除…

Python||数据分析之pyecharts 绘图(词云、气泡)

1. echarts 和 Pyecharts 简介 1.1echarts 简介: • echarts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 • echarts 遵循 Apache-2.0 开源协议,免费商用。 • ECharts 最初由百度团队开源,并于 2018 年初捐赠给 Apache 基金会,成为 AS…

算法day12

算法day12 二叉树理论基础114 二叉树的前序遍历145 二叉树的后序遍历94 二叉树的中序遍历迭代法 二叉树理论基础 直接看代码随想录就完事了,之前考研也学过,大概都能理解 我这里就说说代码层面的。 二叉树的存储: 1、链式存储:这…

内容检索(2024.02.12)

随着创作数量的增加,博客文章所涉及的内容越来越庞杂,为了更为方便地阅读,后续更新发布的文章将陆续在此做简介并附上原文链接,感兴趣的小伙伴们可持续关注文章发布动态: 信号仿真类话题如何看待频域与时域的仿真差别-…

猫头虎分享已解决Bug || Python Error: ImportError: No module named ‘module_name‘

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

数学建模:EWM – TOPSIS 超强讲义! 原理、应用、代码

目录 一、综合评价指标预处理 1.定量指标的一致化处理(正向化处理) 2.定量指标的无量纲化处理 二、熵权法(EWM) 三、TOPSIS法 四、熵权法-TOPSIS的使用流程 案例:熵权法-TOPSIS的案例分析:水质评价 …

贪吃蛇的实现,基于windows操作系统

前言: 贪吃蛇从学习到真正实现花了9天实现,第一二天第一次学习,第三四五天第二次学习,第六七八天一边实现一边思考,才完成了贪吃蛇的代码。实现了贪吃蛇以后已经接近过年,我想自己再根据掌握的知识制作烟花…

leetcode 461. 汉明距离

比较简单的一题,先对两个整数进行异或操作,会将两个整数二进制形式中各个数字进行异或操作,不同的数字则为1,再通过移位操作统计得到的二进制数中为1的个数,即为所求。 Java代码如下: class Solution {pub…

STM32 STD/HAL库驱动W25Q64模块读写字库数据+OLED0.96显示例程

STM32 STD/HAL库驱动W25Q64 模块读写字库数据OLED0.96显示例程 🎬原创作者对W25Q64保存汉字字库演示: W25Q64保存汉字字库 🎞测试字体显示效果: 📑功能实现说明 利用W25Q64保存汉字字库,OLED显示汉字的时…

SVD奇异值分解

一、奇异值 奇异值(Singular Values)是线性代数中矩阵的重要性质之一,与奇异值分解(SVD)密切相关。让我们来更详细地了解一下奇异值的概念: 定义: 对于一个矩阵 ( A ),它的奇异值是…

【Chrono Engine学习总结】4-vehicle-4.1-vehicle的基本概念

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 1、基本介绍 Vehicle Overview Vehicle Mannel Vehicle的官方demo 1.1 Vehicle的构型 一个车辆由许多子系统构成:悬挂、转向、轮子/履带、刹车/油门、动…

双场板功率GaN HEMT电容模型以精确模拟开关行为

标题:Capacitance Modeling in Dual Field-Plate Power GaN HEMT for Accurate Switching Behavior(TED.16年) 摘要 本文提出了一种基于表面电位的紧凑模型,用于模拟具有栅极和源极场板(FP)结构的AlGaN/G…

JMM(Java内存模型)

Java内存模型(Java Memory Model,简称JMM)是Java语言规范中定义的一个抽象概念,它描述了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)在并发环境下的访问规则和一致性保证。JMM的主要目标是…