一次nginx的排查经历
现象
配置nginx的https,但是修改配置文件之后一直无法访问。。。
排查步骤
刚开始以为是防火墙的原因,由于是阿里云的主机,所以直接登录云主机查看安全配置。一切都是OK的。
然后又查看主机自己的防火墙,由于是centos7
,所以在此花了点时间,最后还是将443端口添加到了防火墙规则中,然后重启防火墙。。。
配置nginx的https,但是修改配置文件之后一直无法访问。。。
刚开始以为是防火墙的原因,由于是阿里云的主机,所以直接登录云主机查看安全配置。一切都是OK的。
然后又查看主机自己的防火墙,由于是centos7
,所以在此花了点时间,最后还是将443端口添加到了防火墙规则中,然后重启防火墙。。。
在使用mybatis的时候有时候会遇到一个问题就是明明参数是正确的,但是还是会提示There is no getter XXX
这个异常,但是一般的解决办法是在mapper里面添加@Param
注解来完成是别的,那么为什么会遇到这个问题呢?
以下为举例代码:
Mapper层代码
1 | public interface Pro1_Mapper { |
实体类代码
这里面的部分概念参考了《Apress JavaI.O . NIO and NIO2》
NIO的一些操作基础就是Buffer
它的具体作用是帮助 DMA 快速的从硬盘上获取和写入数据
在使用Nginx做一个反向代理的时候难免会碰到一些特殊的URL,例如获取图片的URL是http://dsda/XXX.jpg
,后来由于需要加一个时间戳来获取另外一张图片的话,此时的URL就为http://dsda/XXX.jpg?time=YYYY
。
当遇到这个情况的时候是有两种选择的,分别如下:
也就是在nginx中的server
里面再加入一个匹配 ,但是这样加入的话若以后不再更改还好,一旦需求再次变更,就会导致配置许多的location。所以这种做法的话如果只是一些固定的URL还是可行的,但是若匹配一些动态的URL则不推荐。
官网的说明如下:
1 | server { |
首先在网上查询了下关于bind得用法,网上大多数都是bind和模糊查询绑定在一起,但是在这里的话其实bind和枚举一起结合起来使用会有很大的便利,比如一个班级的名称和班级的ID,需要根据班级的ID查询出班级的姓名的话,一般在mybatis中的sql语句是select * from table where class_id =#{class_id}
但是这样就有一个问题,假设学校现在系统升级,每一个班级的ID都变了,这时候需要到处修改mybatis的参数,将其修改成为正确的ID,那么这是一个浩大的工程,同时如果以后再需要改的话,会比较麻烦。处理这个问题,这个时候有如下方法:
typehandle
组合解决问题;bind
一起组合解决;##枚举和bind组合解决:
新建一个实体类:
1 | public class clazzEntity { |
新建一个枚举类:
在今天主要是测试了下在mybatis中使用两种方式来进行一对一查询。在mybatis中进行普通查询的话肯定是一个JavaBean对应一个Sql语句,但是当需要进行两表或者多表之间一对一的查询的时候就需要使用mybatis中的association
进行一对一查询,而association
的设置一般有两种方式:
##基础类:
员工类:
1 | public class People implements Serializable { |
权限类:
1 | public class Role implements Serializable { |