Java开发过程中遇到的问题及解决⽅法
1、SpringMVC前台提交参数绑定list时⼤⼩超过256
  解决⽅案:①在使⽤该⽅法的类上添加⽅法修改默认长度
  @InitBinde
  public void initBinder(WebDataBinder binder) {
    //长度根据实际情况修改
    binder.setAutoGrowCollectionLimit(500);
  }
  ②在整个项⽬中使⽤
  定义⼀个初始化类
public class myInitializer implements WebBindingInitializer {
   @Override
    public void initBinder(WebDataBinder binder) {
      binder.setAutoGrowCollectionLimit(100000);
    }
  }
  然后在配置⽂件中配置
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="webBindingInitializer">
      <bean class="Initializer"/> //class指myInitializer类
    </property>
  </bean>
2、get⽅式请求后台时,由于参数中带有特殊字符&导致异常
  前端传递参数时使⽤encodeURIComponent⽅法进⾏重新编码,后端因为spring默认会进⾏⼀次解码操作,所以可以直接获取。
3、使⽤hql语句对其中的⽇期属性和当前⽇期进⾏过滤时,直接使⽤new Date()导致的问题
  可以先把当前⽇期转成字符串然后再进⾏过滤(配合Date和Calender类)
4、sql语句处理分组的时候,在本地服务使⽤没问题,在服务器上出现sql异常
  group by语句规范,本地安装的MySQL,对group by进⾏了泛化,⽽服务器是Linux,只会按照标准来执⾏。
  解决:严格按照group by规范书写sql语句
  select list from table group by cause;
  ①确保每组单值(确保查询列表都是单⼀的值)
  ②查询列表中包含聚合函数(效果也是同1)
  ③查询列是group by中的列
  ④查询列是功能性的依赖于group by中的列
5、程序运⾏效率低
  问题:程序设计使⽤⼤量for循环嵌套sql查询,加⼤流操作,造成查询缓慢。
  解决:⼀次查询,多次使⽤。将需要的数据进⾏⼀次性查询并存放于Map中,需要的使⽤利⽤判断条件代替for循环查询。
6、使⽤zookeeper注册服务时,API调⽤⽅法失败,抛出⽅法不到的异常信息。
  ①检查⽅法是否存在
  ②检查配置⽂件中zookeeper的注册地址是否⼀致
7、循环删除list中的数据(使⽤Iterator)
8、设置MySQL区分⼤⼩写
  在MySQL的配置⽂件my.ini中增加⼀⾏:
lower_case_table_names = 0
其中 0:区分⼤⼩写,1:不区分⼤⼩写
9、获取操作⼈IP
public static String getIpAddress(HttpServletRequest request) {
String ip = Header("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("Proxy-Client-IP");
}
spring framework面试题
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = RemoteAddr();
}
return ip;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。