day04

tips : mysql-connector-java的包版本用高级的就行。
telnet ip port 可以测试服务器连通性和端口状态

详解Nginx

Nginx以其高并发连接处理能力,和低资源消耗而闻名,有报告表明能支持高达50,000个并发连接数。

Nginx特点

  • 高并发处理能力:采用异步、事件驱动架构,能够高效处理大量并发连接;
  • 低内存消耗:与其他Web服务器相比,Nginx的内存消耗非常低。
  • 高可靠性和稳定性:即使在高负载情况下,Nginx也能保持稳定运行;
  • 跨平台:支持多种操作系统,包括:Linux、Windows等上。

Nginx功能

1. 反向代理

Nginx反向代理,接收客户端请求,然后将这些请求转发给后端服务器处理,并将后端服务器的响应返回给客户端。反向代理可以解决跨域问题、Web缓存等问题,还可以隐藏后端服务器的地址。

2. 负载均衡

Nginx负载均衡功能强大,可以通过“多种策略”,将客户端请求分发到多个后端服务器,从而提高应用的可用性、和响应速度。

  • 轮询,轮询是默认的负载均衡策略,NGINX按顺序将请求依次分配给每个后端服务器。
  • 权重:通过指定每个服务器的权重,可以控制请求的分配比例,权重越高的服务器分配到的请求越多。
  • 最少连接:将请求分配给当前活动连接数最少的服务器,适用于请求处理时间长且差异大的场景。
3. 动静分离

动静分离,它的主要目标是将动态内容(如Java、PHP、Python…等生成的页面),和静态内容(如HTML、CSS、JavaScript、图片等)分开处理,以提高网站的性能和可维护性。

4. 静态文件服务

用作静态文件的快速传输,它能够有效地处理大量的并发连接和高流量请求,是处理静态内容很好的选择。

Nginx配置

Nginx的配置文件:通常位于/etc/nginx/nginx.conf,主要分为全局块、events块、和http块三个部分。

1. 全局块

全局块包含:全局指令,对整个NGINX服务器的行为进行全局设置,它通常位于配置文件的开头。

1
2
3
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
  • worker_processes: 指定NGINX worker进程的数量,通常使用 auto 自动设置。
  • error_log: 指定NGINX的错误日志路径。
2. Events块

Events 块用于配置与NGINX工作进程相关的参数,主要控制NGINX如何处理连接。

1
2
3
4
events {
worker_connections 1024;
multi_accept on;
}
  • worker_connections: 每个worker进程能够同时处理的最大连接数;
  • multi_accept: 是否开启多个accept_mutex互斥锁;
  • use: 指定使用的事件驱动模块,如 epoll, kqueue, eventport.
3. http块(核心配置,代表nginx服务器本身的配置)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

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 /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
  • default_type: 定义默认的MIME类型(比如Application/JSON),当找不到正确的MIME类型时使用;
  • log_format: 定义日志的格式;
  • access_log: 定义访问日志的路径和格式;
  • include: 引入其他配置文件;
  • gzip: 配置gzip压缩;
  • location: 配置请求的处理规则
location匹配规则
  1. location = xxx //精确匹配,不允许任何额外字符的请求,如/xxx和/xxx/都会返回404(页面未找到)。
  2. location ^~ xxx //前缀匹配,会忽略请求中的URI剩余部分,如/xxx/abc与/xxx/abc/def都会匹配到。
  3. location ~ xxx //正则表达式匹配(区分大小写),如果请求的URL匹配了正则表达式,那么就使用该location配置;
  4. location ~* xxx //正则表达式匹配(不区分大小写)
  5. location /xxx //普通匹配,任意请求路径中只要包含/xxx即匹配
  6. location / //匹配所有的请求
配置例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//upstream 代表你的后端服务器地址
upstream backend {
server 192.168.1.2:80; //直接写IP地址与端口
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

server {
listen 80;
server_name example.com;

location / { // /代表所有路径都匹配
proxy_pass http://backend; //代理到后端服务或者本地项目常见的(proxy_pass http://localhost:8080;)
proxy_set_header Host $host; //这设置了代理请求的Host头部为原始请求的Host头部。这意味着后端服务器将看到与客户端请求相同的Host头部。
proxy_set_header X-Real-IP $remote_addr; //这设置了代理请求的X-Real-IP头部为客户端的IP地址($remote_addr)。这允许后端服务器知道原始请求者的真实IP地址,即使请求是通过Nginx代理的。
}
location /images/ {
root /usr/share/nginx; //设定请求的根目录,nginx会在这个指定的目录下寻找资源,一般而言,用来指定静态资源所在的文件路径
}
}

FastJson

FastJson支持Java对象到JSON的序列化和JSON到Java对象的反序列化,同时支持对JSON字符串的高效解析。

序列化和反序列化Java对象、解析JSON字符串

1
2
3
4
5
6
7
8
9
10
11
String jsonStr = JSON.toJSONString(user); //Java对象序列化为JSON字符串

String jsonStr = "{\"id\":1,\"name\":\"张三\",\"age\":18}";
User user = JSON.parseObject(jsonStr, User.class);//JSON字符串反序列化为Java对象,可以说parse类的都是json字符串转java对象的功能

JSONObject jsonObject = JSON.parseObject(jsonStr); //将json字符串解析成对象
int id = jsonObject.getIntValue("id"); //解析JSON
String name = jsonObject.getString("name");

List<OrderVo> list = JSON.parseArray(data, OrderVo.class); //将json字符串(包含多个json数据的数组)转换实体类数组

day05

Mybatis和Mybatis-plus的混合使用

tips: 其实直接导下面两个包就行,配置写mybatis-plus的配置,mybatis-spring-boot-starter和mybatis-plus-spring-boot-starter。

Linux常用命令

1
2
3
4
5
6
7
8
9
10
11
netstat -tunlp
netstat -tnlp | grep :22 #查看指定端口运行状态
lsof -i:8600 #-i:端口号
ps -ef|grep nginx #查看与nginx相关的文件
find / -name xxx #在整个linux系统查找xxx文件
touch a.txt #创建文件
less/cat/more/tail/head a.txt #查看文件内容,head和tail查看文件头几行和尾几行,head
cp file1 file2 #复制文件
mv file1 file2 #重命名文件
rm -rf file1 #删除文件
chmod 777 file1 #更改文件权限,第一位数字所有者权限,第二位组权限,第三位其他用户权限 7读写,5读和执行

可以直接vim jar包改配置文件

vim三大模式

alt text

vim相关快捷操作

1
2
3
4
5
6
7
# 命令行模式
/xxx # 查找字符xxx
u # 撤销
Ctrl + r # 反撤销
. # 重复上一个动作
gg # 到第一行
G #到最后一行