文档章节

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

FansUnion
 FansUnion
发布于 2015/05/03 01:28
字数 952
阅读 3
收藏 0
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个月的日志,发现了很多问题。
目前,修复了一些。
其它方面的问题也是一个接一个,技术细节太多了。

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
记录一下openvpn,填坑之路

题目,占位。。。 整理一下,工作中遇到的openvpn的问题 需求: 两个办公地点:青岛、北京;北京的小伙伴需要访问青岛办公区的内网,同时需要访问阿里云服务器。 解决方案: 在阿里云跳板机上...

liqilong1991
2017/10/10
0
0
优库的按时间点显示广告数据库大体是怎么设计的

比如我想这样 2015年4月7日到2015年5月29号 每周二,四,六的 9:11-12:21, 18:05-21:20 显示指定广告1 优先级别1 2015年4月8日到2015年4月20号 每天的 10:00-11:00, 18:05-23:20 显示指定广告...

不会武功的猪
2015/04/07
85
1
Kaggle问卷主成分分析,16000万数据从业者面临这5类挑战

     大数据文摘作品   编译:李雷、元元、小鱼   数据科学的功能是在数据中寻找有用的观点并加以应用。然而,数据科学并非凭空而来。在向分析目标迈进的过程中,数据从业者可能面临...

大数据文摘
2018/03/31
0
0
微软发布 Windows 10,将于 2015 年下半年上市

跳过Windows 9!微软今天正式宣布,微软下一代Windows命名为Windows 10! 真是万万没想到。 Windows 10内部代号名为“Windows Threshold”,大家之前一直认为这就是Windows 9,但是微软跳过了...

oschina
2014/10/01
6K
52
PHP curl 的CURLOPT_POSTFIELDS之数组和字符串之谜

现象 在最近的工作中遇到一个问题,就是使用post发送请求,post数据死活传递过不去,一直是请求返回error。 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2...

蜗牛奔跑
2018/03/05
16
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
今天
4
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
4
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部