• 2015年工作中遇到的10个问题:1-10


    1.NullPointerException。
    内容分类存在脏数据,导致报错,需要判断变量是否为Null。
    查看内容,id不合法,没有找到这条内容,需要判断是否有值,如果为null,跳转到404页面。


    2.PDF下载出现“非法”的文件名。
    Linux和Windows,对文件名有一定的限制,禁止若干字符出现在文件名中。
    在实现PDF下载的时候,我是把文章的title作为文件名的,title出现了“非法字符”,比如
    “一个一线城市的IT白领的生活成本3万/年.pdf”中就有非法字符“/”。


    在Apache Common FilenameUtils里没有找到过滤方法,就自己写个简单的过滤方法,把“/”等字符替换成“”。
    Java正则替换:filteredName = name.replaceAll("[/<>|"?:]", "").replaceAll("\\", "");


    3.log4j输出信息不全面。
    <param name="ConversionPattern"
    value="[%d{yyyy-MM-dd HH:mm:ss} %-5p] [%t] %l - %X{loginUser} %X{userip} %m%n" />

     %c   输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
     %l   输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
     
     %l比%c更有用,就是信息更长了一点。
     不知道行号,定位日志要慢一些。


    4.分页参数,有检查,但是仍然不够全面,竟然出现pageSize为null的情况。
      看来,考虑得还是不够周全。
      以前重点检查了pageSize和pageNo是否为正数,以及范围。
      
    5.搜索参数为空。
      后端做了Null检查,但是前端不输入“搜索词”,也进行了后端查询,比较浪费。
      前端增加JS检查,减少服务器端不必要的请求处理。
      
    6.部署网站过程中,经常出现代码冲突问题。
    第一次部署,有若干目录,比如article,article.service。
    但是第二次部署的时候,代码重构了,只有article一个目录,这个时候直接copy-paste替换进行部署,
    article.service这个目录仍然存在,可能会导致一个类文件,比如SearchService,存在2个。
    导致Spring @Autowired报错。


    这个问题提示我们,部署的时候,需要先清空以前的代码。当然,稳妥起见,最好先完整备份一次。


    7.Maven项目打包的时候,没有把xml文件打包,竟然直接忽视了。
    一直到2015年1月8日以前,从来没有手动配置maven把xml打包,这次出了问题,只好在pom.xml中增加了一些配置。
     <build>
    <plugins>
    </plugins>
    <resources>  
    <resource>  
    <directory>src/main/java</directory>  
    <includes>  
    <include>**/*.xml</include>  
    </includes>  
    </resource>  
    </resources>  
    </build>


    8.p2p试运营。
    很多平台,都有个“试运营”的阶段,在“正式上线”之前。算是一个过渡阶段,如果出现了问题,及时修复。
    试运营阶段,用户一般也不会太多,出现的损失也不会太大。


    “试运营”和网游的“公测”类似。


    9.使用文件时,检查文件是否存在很有必要。
    File file = new File(log4jXmlPath);
    boolean exist=file.exists();
    使用exists方法,比去捕捉java.io.FileNotFoundException要友好的多。

    10.java web项目中,log4j.xml的位置和log4j的日志输出目录,都是可以配置的。
       <servlet-name>Log4jInit</servlet-name> 
         <servlet-class>cn.fansunion.common.web.Log4jInit</servlet-class>  
           <init-param>    
             <param-name>log4jOutputPath</param-name>  
          <param-value>C:/log4j/xiaolei</param-value>    
          </init-param>  
        <init-param>    
             <param-name>log4jXmlPath</param-name>  
          <param-value>C:/log4j.xml</param-value>    
          </init-param>    
      </servlet>
      在web.xml中配置变量,写log4j的初始化servlet,在servlet中解析变量,然后手动初始化log4j。
      
      System.setProperty("log4jOutputPath", log4jOutputPath);
      DOMConfigurator.configure(log4jXmlPath);
      
      把这个servlet写好,测试完成,花了1个多小时。
      详细的自定义配置,不再本篇中分享了。


    个人官网运营有一段时间了,查看最近2个月的日志,发现了很多问题。
    目前,修复了一些。
    其它方面的问题也是一个接一个,技术细节太多了。
  • 相关阅读:
    L1-021 重要的话说三遍
    L1-020 帅到没朋友
    pytest--钩子
    pytest--allure
    pytest--常用插件
    pytest--高级用法
    pytest--配置文件
    pytest--控制运行
    pytest--fixture
    pytest--使用前提
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462934.html
Copyright © 2020-2023  润新知