发表于: 2020-06-05 23:39:35

1 1551


今天完成的事情:Nginx的学习,代理把我搞太久了,做了些深度思考
明天计划的事情:明天把深度思考做完,然后收拾提交任务二。
遇到的问题:1. nginx: [error] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory) 

https://www.cnblogs.com/chenmingjun/p/10052205.html

收获:

Nginx代理

nginx关闭

nginx -s (stop 强制重启)(quit 优雅停止)(reload 重新加载)

代理:java设计模式中定义,给某个对象一个代理对象,由代理对象控制原对象的引用。类似于买房中介。

正向代理代理客户端,反向代理代理服务器

正向代理:意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。典型的正向代理是用户知道并使用的代理方式。

反向代理:客户端对代理是无感知的,因为客户端不需要任何配置就能访问,只需要发送请求到反向代理服务器就能获得目标服务器的资源(反向代理服务器还是去目标服务器请求的资源,只是对于客户端而言,看不见而已),此时对外,反向代理服务器和目标目标服务器就像是一个服务器,暴露的是反向代理服务器地址,隐藏的是目标服务器IP。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

然后就实现一下简单的代理吧。

任务2-18 配置Nginx,配置域名指向Resin,本地配置Host,通过域名在浏览器,Postman等测试数据

1.需要配置的是conf/nginx.conf   server模块和location模块,这儿容易搞混,我绕了很久,就是不知道哪个是代理的服务器地址,哪个是目标服务器地址。https://www.cnblogs.com/hanmk/p/9289069.html,这个博主的让我成功实现。

server模块:配置虚拟主机的相关参数,一个http可以配置多个server

location模块:配置请求路由,以及页面处理情况

首页我的是远程阿里云服务器地址http://120.25.222.150/,安装了resin和nginx的,resin我的访问端口是8088.

2.在server块中修改,并修改location

listen和server_name配置的是客户端要输入的代理地址

location配置的是目标服务器的信息

我不走代理,直接访问resin项目的地址

下面是我走代理的访问路径,走代理我是更改端口为8089了

nginx.conf配置页面的解析

########### 每个指令必须有分号结束。#################

#user administrator administrators;  #配置用户或者组,默认为nobody nobody。

#worker_processes 2;  #允许生成的进程数,默认为1

#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址

error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

events {

    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on

    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off

    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections  1024;    #最大连接数,默认为512

}

http {

    include       mime.types;   #文件扩展名与文件类型映射表

    default_type  application/octet-stream; #默认文件类型,默认为text/plain

    #access_log off; #取消服务日志    

    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式

    access_log log/access.log myFormat;  #combined为日志格式的默认值

    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {   

      server 127.0.0.1:7878;

      server 192.168.10.121:3333 backup;  #热备

    }

    error_page 404 https://www.baidu.com; #错误页

    server {

        keepalive_requests 120; #单连接请求上限次数。

        listen       4545;   #监听端口

        server_name  127.0.0.1;   #监听地址       

        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。

           #root path;  #根目录

           #index vv.txt;  #设置默认页

           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表

           deny 127.0.0.1;  #拒绝的ip

           allow 172.18.5.54; #允许的ip           

        } 

    }

}

深度思考

1.什么叫MVC,Spring里对应的MVC分别是什么,是怎么收到用户请求然后分发给不同的Controller的?  

mvc即是模型(model)-视图(view)-控制器(controller)的缩写,作为一种架构模式,用一种业务逻辑、数据、界面显示分离的方法组织代码。

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

最典型的MVC模式为:jsp+servlet+javabea

MVC模式在Spring MVC框架的应用

一个正常工作的 Spring MVC框架由下面几个部分组成:

1). DispatcherServlet前端控制器
2). 处理器映射器
3). 处理器适配器
4). 业务逻辑处理器(Model-controller)
5). 视图解析器

2.什么是参数校验,前端和后端需要分别做校验吗?Validation的好处和坏处分别是什么,在真实项目中需要使用Validation吗?  

参数校验是对前后端的数据进行限制为规定的标准,前端的有邮箱,必填项,密码强度,手机号,便于提升用户体验,减少服务器压力,节省流量。后端则是唯一性验证,验证码,防止有恶意破环数据库结构。

JSR-303

JSR-303是Java为Bean数据合法性校验所提供的标准框架,它已经包含在JavaEE 6.0中。JSR-303通过在Bean属性上标注类似于 @NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证          

JSR-303定义了一套可标注在成员变量、属性方法上的校验注解,

@Null 被注解的元素必须为null

@AssertTrue 被注解的元素必须为true

@AssertFalse 被注解的元素必须为false

@Max(value) 必须为数字,其值必须大于指定的最大值

@Size(max=, min=) 被注解的元素的大小必须在指定的范围内

@Past 被注解的元素必须是一个过去的日期

@Future 被注解的元素必须是一个将来的日期

@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

Hibernate Validator是JSR-303的一个参考实现,它除了支持所有标准的校验注解外,还支持一些扩展注解

@Email 被注解的元素必须是电子邮箱地址

@Length(min=,max=) 被注解的字符串的大小必须在指定的范围内

@NotBlank 验证字符串非null,且长度必须大于0

@Range(min=,max=) 被注解的元素必须在合适的范围内

3.SpringMVC分页查询和显示  

一次性把数据全部查询出来很耗费内存,不利于GC,而且不方便查看。

分为逻辑分页和物理分页。

逻辑分页:数据库查询出全部数据,被程序员放在list中,返回在Session中,等待手动编写分页显示。

物理分页: 数据库使用limit关键词,限制查询的条数,limit start,size  

start:从第几条记录开始,起始行号

size : 读取几条记录。

首先需要知道,从第几条[下标]开始读,要往后读取多少条。

即分页显示的话,需要传给sql语句两个参数,某一页面中第一条在表中的下标,以及页面中数据的条数。

size:默认指定一个,或者从前台输入后取一个。

start下标:前端传过来要跳转到的页码,后台sql中加入(pageNum-1)*size的计算,即为对应页面的start下标值。

每页的起始行号(beginRownum) = 当前页数(pageNum - 1)* 每页条数(pageRows)

beginRownum = (pageNum - 1) * pageRows;

总条数(totalRows)/每页条数(pageRows)=总页数(totalPages)有无余数 url中传值负数跳页面

totalPages = totalRows % pageRows == 0 ? totalRows / pageRows : (totalRows / pageRows) + 1



返回列表 返回列表
评论

    分享到