一次nginx的排查经历

现象

配置nginx的https,但是修改配置文件之后一直无法访问。。。

排查步骤

刚开始以为是防火墙的原因,由于是阿里云的主机,所以直接登录云主机查看安全配置。一切都是OK的。

然后又查看主机自己的防火墙,由于是centos7,所以在此花了点时间,最后还是将443端口添加到了防火墙规则中,然后重启防火墙。。。

阅读更多

使用Mybatis遇到的there is no getter 异常

在使用mybatis的时候有时候会遇到一个问题就是明明参数是正确的,但是还是会提示There is no getter XXX这个异常,但是一般的解决办法是在mapper里面添加@Param注解来完成是别的,那么为什么会遇到这个问题呢?

以下为举例代码:

Mapper层代码

1
2
3
4
5
public interface Pro1_Mapper {

Pro1_Studnet insertStu(Pro1_Studnet pro1_studnet);

}

实体类代码

阅读更多

netty的一些概念

这里面的部分概念参考了《Apress JavaI.O . NIO and NIO2》

Buffer

NIO的一些操作基础就是Buffer

Channels

它的具体作用是帮助 DMA 快速的从硬盘上获取和写入数据

阅读更多

在nginx中编写rewrite

在使用Nginx做一个反向代理的时候难免会碰到一些特殊的URL,例如获取图片的URL是http://dsda/XXX.jpg,后来由于需要加一个时间戳来获取另外一张图片的话,此时的URL就为http://dsda/XXX.jpg?time=YYYY
当遇到这个情况的时候是有两种选择的,分别如下:

配置location

也就是在nginx中的server里面再加入一个匹配 ,但是这样加入的话若以后不再更改还好,一旦需求再次变更,就会导致配置许多的location。所以这种做法的话如果只是一些固定的URL还是可行的,但是若匹配一些动态的URL则不推荐。
官网的说明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
server_name example.org www.example.org;
root /data/www;

location / {
index index.html index.php;
}

location ~* \.(gif|jpg|png)$ {
expires 30d;
}
}

配置rewrite规则

阅读更多

在Mybatis中使用bind进行枚举和模糊查询

首先在网上查询了下关于bind得用法,网上大多数都是bind和模糊查询绑定在一起,但是在这里的话其实bind和枚举一起结合起来使用会有很大的便利,比如一个班级的名称和班级的ID,需要根据班级的ID查询出班级的姓名的话,一般在mybatis中的sql语句是select * from table where class_id =#{class_id} 但是这样就有一个问题,假设学校现在系统升级,每一个班级的ID都变了,这时候需要到处修改mybatis的参数,将其修改成为正确的ID,那么这是一个浩大的工程,同时如果以后再需要改的话,会比较麻烦。处理这个问题,这个时候有如下方法:

  1. 枚举和typehandle组合解决问题;
  2. 枚举和bind一起组合解决;
  3. 暂时没想到

##枚举和bind组合解决:
新建一个实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class clazzEntity {
private String clazz_name;
private int clazz_id;

public clazzEntity(String clazz_name, int clazz_id) {
this.clazz_name = clazz_name;
this.clazz_id = clazz_id;
}

public String getClazz_name() {
return clazz_name;
}

public void setClazz_name(String clazz_name) {
this.clazz_name = clazz_name;
}

public int getClazz_id() {
return clazz_id;
}

public void setClazz_id(int clazz_id) {
this.clazz_id = clazz_id;
}
}

新建一个枚举类:

阅读更多

在Mybatis中使用association进行一对一查询

在今天主要是测试了下在mybatis中使用两种方式来进行一对一查询。在mybatis中进行普通查询的话肯定是一个JavaBean对应一个Sql语句,但是当需要进行两表或者多表之间一对一的查询的时候就需要使用mybatis中的association进行一对一查询,而association的设置一般有两种方式:

##基础类:
员工类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class People implements Serializable {
private int people_id;
private String people_card;
private Role role;

public int getPeople_id() {
return people_id;
}

public void setPeople_id(int people_id) {
this.people_id = people_id;
}

public String getPeople_card() {
return people_card;
}

public void setPeople_card(String people_card) {
this.people_card = people_card;
}

public Role getRole() {
return role;
}

public void setRole(Role role) {
this.role = role;
}
}

权限类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Role  implements Serializable {
private int myrole_id;
private String role_name;
private RoleDetail roleDetail;

public RoleDetail getRoleDetail() {
return roleDetail;
}

public void setRoleDetail(RoleDetail roleDetail) {
this.roleDetail = roleDetail;
}

public int getMyrole_id() {
return myrole_id;
}

public void setMyrole_id(int myrole_id) {
this.myrole_id = myrole_id;
}

public String getRole_name() {
return role_name;
}

public void setRole_name(String role_name) {
this.role_name = role_name;
}
}
阅读更多