win环境nginx实战配置详解

项目中经常使用nginx做负载均衡,接口路由、文件、文档的上传及下载、视频的代理播放等等,都离不开nginx的支持,今天我们分享一下其个使用场景。

1、配置文件 nd-nginx.conf

全局配置


#全局配置端,对全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路径,日志路径等。
#user  nobody;
#user nginx nginx;#启动Nginx工作进程的用户和组
worker_processes  1; #启动工作进程数数量
#worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同
#worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto ; 
#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,
#但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,
#减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;#events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,
#使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
events {#设置单个nginx工作进程可以接受的最大并发,作为web服务器的时候最大并发数为worker_connections * worker_processes,#作为反向代理的时候为(worker_connections * worker_processes)/2worker_connections  1024;
}

文件上面全局配置

2、http 模块详解

#http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,
#http块可以包含多个server块,而一个server块中又可以包含多个location块,
#server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。
http {#通用配置....# N个server 模块虚拟服务器 }

3、http模块里面通用的配置

    include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录,在响应报文中将指定的文件扩展名映射至MIME对应的类型default_type  application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;#作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用sendfile系统调用来传输文件,#sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,#操作效率很高,被称之为零拷贝,硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;  #长连接超时时间,单位是秒#开启gzip压缩,若想关闭gzip压缩,则需要注释掉这句话,或者将on换成off#gzip  on;#配置允许压缩的页面的最小字节数,页面字节数从header头中的Content-Length中获>取,建议设置成1k,因为如果数据小于1k,他也会压缩成1k,这样会起到反作用。#gzip_min_length 1k;#4个16k的数据流用于存储gzip的压缩结果数据流#gzip_buffers 4 16k;#支持的http版本为1.1#gzip_http_version 1.1;#判断客户端是否支持gzip技术,若不支持则不会进行gzip处理#gzip_vary on;# 全局跨域配置#为 * 表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求,也可以指定一个确定的URLadd_header 'Access-Control-Allow-Origin' '*' always;#可选字段,为true表示允许发送Cookie。同时,发送时,必须设置XMLHttpRequest.withCredentials为true才有效,请求若服务器不允许浏览器发送,删除该字段即可。add_header 'Access-Control-Allow-Credentials' 'true';#代表允许使用指定的方法请求该地址add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS';#代表允许在请求该地址的时候带上指定的请求头,例如:Content-Type,Authorization,使用逗号(,)拼接起来放在双引号(")中add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, X-Custom-Header, Access-Control-Expose-Headers, Token, Authorization';add_header 'Access-Control-Allow-Headers'  '*';#代表着在 1728000 秒之内不用请求该地址的时候 不需要再进行预检请求,也就是跨域缓存。add_header 'Access-Control-Max-Age' 1728000;

4、server 虚拟服务器详解及通用配置

#每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器server {#设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个location模块。#比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供web服务listen       80; #配置server监听的端口server_name  localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配。#是否在响应报文中的Content-Type显示指定的字符集,默认off不显示#charset charset | off;#charset koi8-r;#设置编码格式,默认是俄语格式,建议改为utf-8#示例#charset utf-8;#access_log  logs/host.access.log  main;autoindex on; # 显示目录,默认不开启autoindex_localtime on;# 显示文件修改时间 # 显示文件大小#多个 location 配置....}

5、server 中 多个location 配置 

        #以http的方式转发mp4请求到指定web服务器。#访问 http://127.0.0.1/6d.mp4 就可以播放视频,而视频6d.mp4就在html/dist目录下。location ~ /.mp4$ {#root E:\sh\nginx; # 你的文件目录mp4;			# 支持mp4mp4_buffer_size 10m;#处理mp4初始内存大小mp4_max_buffer_size 50m;#处理mp4最大内存大小}location / {root   html/dist;#相当于默认页面的目录名称,默认是安装目录的相对路径,可以使用绝对路径配置。index  index.html index.htm;#默认的页面文件名称#给OPTIONS 添加 204 的返回,为了处理在发送POST请求时Nginx依然拒绝访问的错误,发送"预检请求"时,需要用到方法 OPTIONS,所以服务器需要允许该方法。if ($request_method = 'OPTIONS') {return 204;}}#proxy_pass的配置详解在后面location /test {proxy_pass http://127.0.0.1:9006;proxy_redirect off;#关闭重定向#proxy_redirect #旧地址 新地址;#proxy_redirect default;  #默认配置#若客户端发过来的请求header中有HOST这个字段,$http_host和$host表示的就是原始请求host,比如请求的时候HOST的值是http://demo.com,那么反代后还是http://demo.com。proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;#将$remote_addr的值放进变量X-Real-IP中,此变量名可变,$remote_addr的值为客户端的ipproxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;#获得用户真实ip}location /ars {proxy_pass http://192.8.3.211:9006;}#/person/getPersonUrllocation /kvc {add_header 'Access-Control-Allow-Origin' '*' ;add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' '*';add_header 'Access-Control-Allow-Headers'  '*';add_header 'Access-Control-Max-Age' 1728000;proxy_pass http://192.8.3.211:1288;}location /about {root /app/html; #必须要在html目录中创建一个名为about的目录才可以访问,否则报错。}location /about { #注意about后不要加/ , 使用alias的时候uri后面如果加了斜杠,则下面的路径配置必须加斜杠,否则403alias /opt/html/about; #当访问about的时候,会显示alias定义的/opt/html/about里面的内容。}#注意:location中使用root指令和alias指令的意义不同#root 给定的路径对应于location中的/uri 左侧的/#alias 给定的路径对应于location中的/uri 的完整路径#error_page  404              /404.html;#错误页面的文件名称# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;#错误页面的文件名称location = /50x.html { #location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。root   html;#定义默认页面所在的目录}

6、第二个server,单独处理视频播放

#serverd第二个服务虚拟服务器#访问http://127.0.0.1:8088/6d.mp4 就可以播放视频,而视频6d.mp4就在E:/sh/nginx/nginx目录下。server {listen 8088;server_name 127.0.0.1;charset utf-8,gbk;#root /usr/local/nginx/html/files; # 你的文件目录root E:/sh/nginx/nginx; # 你的文件目录# 显示目录,默认不开启autoindex on;# 显示文件大小# 显示文件修改时间autoindex_localtime on;location ~ /.mp4$ {mp4;			# 支持mp4mp4_buffer_size 10m;mp4_max_buffer_size 50m;}}

7、第三个server 单独展示图片

#作为下载服务器配置#官方文档:http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#作为上传服务器# 定义缓存目录proxy_cache_path E:/sh/nginx/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;server {listen 8081;location ~* /.(jpg|jpeg|png|gif)$ {# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;# 如果未命中缓存则从后端服务器获取并进行缓存#proxy_pass http://backend-server;# 其他相关配置...}location ~* /.(css|js)$ {#1h代表一小时expires 1h;# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;}}

8、整个配置文件展示


#全局配置端,对全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路径,日志路径等。
#user  nobody;
#user nginx nginx;#启动Nginx工作进程的用户和组
worker_processes  1; #启动工作进程数数量
#worker_processes [number | auto]; #启动Nginx工作进程的数量,一般设为和CPU核心数相同
#worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto ; 
#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,
#但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,
#减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;#events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,
#使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
events {#设置单个nginx工作进程可以接受的最大并发,作为web服务器的时候最大并发数为worker_connections * worker_processes,#作为反向代理的时候为(worker_connections * worker_processes)/2worker_connections  1024;
}#http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,
#http块可以包含多个server块,而一个server块中又可以包含多个location块,
#server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。
http {include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录,在响应报文中将指定的文件扩展名映射至MIME对应的类型default_type  application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;#作为web服务器的时候打开sendfile加快静态文件传输,指定是否使用sendfile系统调用来传输文件,#sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,#操作效率很高,被称之为零拷贝,硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈。sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;  #长连接超时时间,单位是秒#开启gzip压缩,若想关闭gzip压缩,则需要注释掉这句话,或者将on换成off#gzip  on;#配置允许压缩的页面的最小字节数,页面字节数从header头中的Content-Length中获>取,建议设置成1k,因为如果数据小于1k,他也会压缩成1k,这样会起到反作用。#gzip_min_length 1k;#4个16k的数据流用于存储gzip的压缩结果数据流#gzip_buffers 4 16k;#支持的http版本为1.1#gzip_http_version 1.1;#判断客户端是否支持gzip技术,若不支持则不会进行gzip处理#gzip_vary on;# 全局跨域配置#为 * 表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求,也可以指定一个确定的URLadd_header 'Access-Control-Allow-Origin' '*' always;#可选字段,为true表示允许发送Cookie。同时,发送时,必须设置XMLHttpRequest.withCredentials为true才有效,请求若服务器不允许浏览器发送,删除该字段即可。add_header 'Access-Control-Allow-Credentials' 'true';#代表允许使用指定的方法请求该地址add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS';#代表允许在请求该地址的时候带上指定的请求头,例如:Content-Type,Authorization,使用逗号(,)拼接起来放在双引号(")中add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, X-Custom-Header, Access-Control-Expose-Headers, Token, Authorization';add_header 'Access-Control-Allow-Headers'  '*';#代表着在 1728000 秒之内不用请求该地址的时候 不需要再进行预检请求,也就是跨域缓存。add_header 'Access-Control-Max-Age' 1728000;#每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器server {#设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个location模块。#比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用80端口提供web服务listen       80; #配置server监听的端口server_name  localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配。#是否在响应报文中的Content-Type显示指定的字符集,默认off不显示#charset charset | off;#charset koi8-r;#设置编码格式,默认是俄语格式,建议改为utf-8#示例#charset utf-8;#access_log  logs/host.access.log  main;autoindex on; # 显示目录,默认不开启autoindex_localtime on;# 显示文件修改时间 # 显示文件大小#以http的方式转发mp4请求到指定web服务器。#访问 http://127.0.0.1/6d.mp4 就可以播放视频,而视频6d.mp4就在html/dist目录下。location ~ /.mp4$ {#root E:\sh\nginx; # 你的文件目录mp4;			# 支持mp4mp4_buffer_size 10m;#处理mp4初始内存大小mp4_max_buffer_size 50m;#处理mp4最大内存大小}location / {root   html/dist;#相当于默认页面的目录名称,默认是安装目录的相对路径,可以使用绝对路径配置。index  index.html index.htm;#默认的页面文件名称#给OPTIONS 添加 204 的返回,为了处理在发送POST请求时Nginx依然拒绝访问的错误,发送"预检请求"时,需要用到方法 OPTIONS,所以服务器需要允许该方法。if ($request_method = 'OPTIONS') {return 204;}}#proxy_pass的配置详解区别 https://blog.csdn.net/jsxztshaohaibo/article/details/134578031location /test {proxy_pass http://127.0.0.1:9016;proxy_redirect off;#关闭重定向#proxy_redirect #旧地址 新地址;#proxy_redirect default;  #默认配置#若客户端发过来的请求header中有HOST这个字段,$http_host和$host表示的就是原始请求host,比如请求的时候HOST的值是http://demo.com,那么反代后还是http://demo.com。proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;#将$remote_addr的值放进变量X-Real-IP中,此变量名可变,$remote_addr的值为客户端的ipproxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;#获得用户真实ip}location /artemis {proxy_pass http://192.8.3.211:9006;}#/person/getPersonUrllocation /kcvc {add_header 'Access-Control-Allow-Origin' '*' ;add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' '*';add_header 'Access-Control-Allow-Headers'  '*';add_header 'Access-Control-Max-Age' 1728000;proxy_pass http://192.8.3.211:1288;}location /about {root /app/html; #必须要在html目录中创建一个名为about的目录才可以访问,否则报错。}location /about { #注意about后不要加/ , 使用alias的时候uri后面如果加了斜杠,则下面的路径配置必须加斜杠,否则403alias /opt/html/about; #当访问about的时候,会显示alias定义的/opt/html/about里面的内容。}#注意:location中使用root指令和alias指令的意义不同#root 给定的路径对应于location中的/uri 左侧的/#alias 给定的路径对应于location中的/uri 的完整路径#error_page  404              /404.html;#错误页面的文件名称# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;#错误页面的文件名称location = /50x.html { #location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。root   html;#定义默认页面所在的目录}}#serverd第二个服务虚拟服务器#访问http://127.0.0.1:8088/6d.mp4 就可以播放视频,而视频6d.mp4就在E:/sh/nginx/nginx目录下。server {listen 8088;server_name 127.0.0.1;charset utf-8,gbk;#root /usr/local/nginx/html/files; # 你的文件目录root E:/sh/nginx/nginx; # 你的文件目录# 显示目录,默认不开启autoindex on;# 显示文件大小# 显示文件修改时间autoindex_localtime on;location ~ /.mp4$ {mp4;			# 支持mp4mp4_buffer_size 10m;mp4_max_buffer_size 50m;}}#作为下载服务器配置#官方文档:http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#作为上传服务器# 定义缓存目录proxy_cache_path E:/sh/nginx/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;server {listen 8081;location ~* /.(jpg|jpeg|png|gif)$ {# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;# 如果未命中缓存则从后端服务器获取并进行缓存#proxy_pass http://backend-server;# 其他相关配置...}location ~* /.(css|js)$ {#1h代表一小时expires 1h;# 开启缓存功能proxy_cache my_cache;# 指定缓存时间(单位为秒)proxy_cache_valid any 30d;}}
}

9、参考proxy_pass的配置详解区别

参考代理uri区别文章

到此,单体服务的多种使用场景从不同角度展示出来了,分享告一段落,后面会持续更新,敬请期待!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode-字符串相加

415. 字符串相加 题目中已经说明不能使用库函数直接将输入的字符串转换为整数。这就需要我们自己实现大数加法的逻辑,我们可以从两个字符串的最后一位开始,逐位相加,同时记录进位。如果某一位相加的结果超过10,那么需要向前进位。…

javascript实现的星座查询

今天在这个网站http://xzxys.wiicha.com/看到查询星座幸运色的效果,想研究一下代码,结果右键禁用。后来参考了一下别人的代码,琢磨着先实现了一下星座查询的功能,输入月份和日期四位数后,可以查询属于哪个星座&#xf…

群体风暴之锤(War3地图编辑器)

文章目录 0、大致原理1、创建隐形单位2、新事件开端3、环境→新条件4、动作4.1、单位组4.1.1、圆范围内单位4.1.2、指定条件 4.2、对单位组内的所有单位释放风暴之锤 0、大致原理 真MK向目标点释放风暴之锤时选定(以技能释放点为圆心,设定半径&#xff0…

Python编程语言常用的包管理工具介绍

conda是一个开源的包管理器和环境管理器,用于安装、运行和更新包和它们的依赖项。conda可以用于Python编程语言,但它也支持其他编程语言。conda的主要特点是它能够在不同的环境中管理不同的包集合,这使得它非常适合于数据科学和机器学习项目&…

洛谷 P1439 最长公共子序列

题目描述 给出 1,2,…,n 的两个排列 P1​ 和 P2​ ,求它们的最长公共子序列。 输入格式 第一行是一个数 n。 接下来两行,每行为 n 个数,为自然数 1,2,…,n 的一个排列。 输出格式 一个数,即最长公共子序列的长度。 输入输出…

详解算法的时间复杂度和空间复杂度!

目录 ​编辑 1. 算法效率 2. 时间复杂度 2.1 时间复杂度的概念 2.2 大O的表示渐进法 2.3 一个栗子 3. 空间复杂度 4. 常见复杂度对比 5. 完结散花 ​​​​​​​ 悟已往之不谏,知来者犹可追 创作不易,宝子们!如果这篇文章对你们有…

Flex布局

Flex布局是一种用于创建灵活且自适应的布局模型,它使得元素能够更好地响应不同的屏幕尺寸和设备。Flex布局基于容器和项目的概念,通过设置容器的属性来控制项目的布局和对齐方式。 Flex布局的关键概念包括: 父容器(Flex容器&…

Git实战(3)之merge与rebase区别

1,采用merge和rebase后,git log的区别,merge命令不会保留merge的分支的commit 2,处理冲突的方式: (一股脑)使用merge命令合并分支,解决完冲突,执行git add .和 git commit -mfix conflict。这个时候会产生一个commit。(交互式)使用rebase命令合并分支,解决完冲突,…

一种求最大最小值的方法(C语言)

作者在做项目时需要分析大量数据,其中需要用到最大值最小值的求解。这里分享一种简单好用的方法,并避免在代码中出现过多的for循环。 这个方法用到了qsort函数。 首先我们需要定义一个比较函数用来比较2个值的大小并通过返回值来表示比较的结果。 int…

STM32标准库开发——FLASH闪存

FLASH介绍 一般来说,宣传的FLASH的大小只是说程序存储器的大小,不包括系统存储器以及选项字节这俩个部分 IAP是内置在boot loader中的一道程序,可以用于辅助下载,用户可以通过有线通信协议或者无线协议实现对程序的更新升级。 FLA…

如何使用grafana 下JSON API访问展示接口数据

一.新增connection 点击左侧菜单栏,选择Add new connection 下载安装即可。 二. 增加对应url和参数 1. 添加新的数据源 2. 配置对应url 3.新建仪表盘和添加接口url和参数等

LeetCode每日一题之 移动0

前言: 我的每日一题专栏正式开始更新,我会分享关于我在LeetCode上刷题时的经验,将经典题型拿出来详细讲解,来提升自己及大家的算法能力,希望这篇博客对大家有帮助。 题目介绍: 题目链接:. - …

SpringBoot+aop实现主从数据库的读写分离

读写分离的作用是为了缓解写库,也就是主库的压力,但一定要基于数据一致性的原则,就是保证主从库之间的数据一定要一致。如果一个方法涉及到写的逻辑,那么该方法里所有的数据库操作都要走主库。 一、环境部署 数据库:…

深入了解Java虚拟机(JVM)

Java虚拟机(JVM)是Java程序运行的核心组件,它负责解释执行Java字节码,并在各种平台上执行。JVM的设计使得Java具有跨平台性,开发人员只需编写一次代码,就可以在任何支持Java的系统上运行。我们刚开始学习Ja…

【leetcode】用队列实现栈

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 点击查看题目 思路: 在做此题之前,我们先要实现队列,这在上个博客中已经写过&#…

学习人工智能的方法及方向!

目录 一、第一部分:了解人工智能 二、人工智能学习路线图 三、职业规划 四、未来展望 五、总结 在这个信息爆炸的时代,想要系统性地学习人工智能(AI)并找到对应方向的工作,你需要一个明确的学习路径和职业规划。本…

复合机器人是一种集成了移动机器人

复合机器人是一种集成了移动机器人、协作机器人和机器视觉等多项功能的新型机器人。它的开发目的是为了解决工厂物流中最后一米的问题,提供智能搬运解决方案。复合机器人不仅集成了自主移动机器人(AMR)、机械臂等工作单元,还使用了…

Java电梯模拟

Java电梯模拟 文章目录 Java电梯模拟前言一、UML类图二、代码三、测试 前言 此程序为单线程简单模拟电梯(初版),如果存在问题或者设计不合理的地方,请大家帮忙指出。 一、UML类图 二、代码 电梯调度器 package cn.xx.evevator;import java.util.*;pub…

#LLM入门|Prompt#2.1_第二部分:搭建基于 ChatGPT 的问答系统_简介_Introduction

《第二部分:搭建基于 ChatGPT 的问答系统》! 本部分基于吴恩达老师与OpenAI合作开发的课程《Building Systems with the ChatGPT API》创作,旨在指导开发者基于ChatGPT的API进行智能问答系统的构建。 课程内容 课程背景: 使用C…

Web3游戏基础设施提供商Stardust为Sui上的游戏开发者提供支持

Stardust将其在钱包服务(wallets-as-a-service)基础设施和用户获取平台方面的专业知识带到了Sui,为游戏开发者提供了关键的帮助,以吸引玩家。近日,Stardust公司宣布将为Sui游戏开发者调整其成熟的钱包服务(…