- 浏览: 69525 次
- 性别:
文章列表
Spring拦截器配置
- 博客分类:
- spring
Spring的拦截器配置貌似很多种。用到的时候再一一总结吧。
这里只记录一种最常用的类拦截器,以备以后查询使用。
代码配置如下:
<!-- 拦截器 -->
<bean id="facadeInterceptor" class="com.qunar.fax.facade.interceptor.FacadeInterceptor"/>
<bean id="proxFacadeInterceptor"
class="org.springframewo ...
log4j的MDC,DNC配置以及应用
- 博客分类:
- MyLogger
一、背景
人在IT江湖,免不了要排查BUG,查线上服务器日志,可浩如烟海的日志里面,如果没有一个唯一Key将同一个线程打印的日志串联起来,那可大大不妙。如何做到这一点呢。我们的主角,log4j的MDC,NDC出来了
二、实现思路以及关键代码
1、用拦截器或者filter将所有代码的入口拦截住,且在拦截器的里面,业务方法执行之前,写如下代码:
// 日志增加唯一标识
long startTime = SystemTimer.currentTimeMillis();
NDC.push(startTime + "_" + Thread.currentThr ...
MyBatis的SQL语句批量执行
- 博客分类:
- myBatis
一、背景
为了提升性能,时常需要批量执行SQL语句。但是MyBATIS官方并没有给出很好的解决方案。俗话说,自己动手,丰衣足食。自己写一个呗
二、实现思路
Spring中的jdbcTemplate.batchUpdate()能够批量执行SQL语句。所以,只要想办法拿到Mybatis中的SQL语句(以?作为占位符),然后结合jdbcTemplate.batchUpdate()就能够批量执行了
但是,要注意的是此处没有事务控制,事务控制在业务外层需要自己控制
三、代码实现
/**
* 批处理的最大执行次数
*/
protected stat ...
一、背景
有的时候需要返回插入值后DB自动增长生成的记录ID,在Mybatis的 环境下如何做呢?
二、代码示例
<insert id="insert" parameterType="com.qunar.fax.model.qunar.entry.FaxSendNotify" useGeneratedKeys="true" keyProperty="id">
<selectKey resultType="java.lang.Integer" ...
基于权重的资源分布算法实现
- 博客分类:
- algorithm
提纲:一、背景
二、思路
三、实现
一、背景
有的时候需要根据各种类型占用的权重来分配某种资源。如何将权重来用代码来体现呢?我觉得是个概率问题,权重越高的,在某一次资源分配的时候,能占用到资源的可能性就越高。如何用代码来表达呢?
二、思路
设想如下场景,我们将权重用百分比来表示,设想资源是一百份,权重为5%,则占用5份。
三、实现
/**
* 模拟基于权重的随机分布算法
*
* @param args
*/
public static void main(String[] args) ...
基于Spring环境构建单元测试
- 博客分类:
- spring
提纲:
一、背景
二、示例
三、延伸
一、背景
代码可测性,代码单元测试,TDD,,,,等无一不要求能够快速构建测试环境。那么在Spring环境下如何快速加载相应的配置,构建测试环境呢?本章就举一个小例子来说明
二、示例
不打算说太多废话,直接上代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class SendFaxBizTest ...
spring3x管理properties文件
- 博客分类:
- spring
博客提纲
一、背景说明
二、源码以及示例
一、背景说明
很多时候,我们需要将项目中使用到的配置信息,常量等写到properties文件里。然后用java加载该文件,在项目中使用礼貌的配置项以及相应的值。以前需要自己写文件的加载,解析,管理,等一系列的代码,但是自从有了Spring3X管理properties文件的新功能,(腿也不酸了,腰也不疼了,妈妈再也不用担心我的学习了)一切都是那么的优雅美好。。。
二、源码以及示例
其实也没啥好多说的,就是Spring的一个小功能的使用而已。废话不多说,直接上代码。
(1)biz.properties文件的内容如下: ...
XSS攻击与防范小结
- 博客分类:
- webSafety
这篇博客的提纲如下:
一、故障梳理
二、故障解决方案
三、XSS小结
一、故障梳理
这要从最近出的一个故障说起。故障的过程大致如下:
A系统与B系统域名不同,A系统中的数据提交到A系统某个form表单,然后通 ...
java数据传输常用编码方式总结
- 博客分类:
- javase
在开发中常常遇到一种场景,一个系统向另一个系统提交数据的时候,可能是通过json方式提交,也可能先写到html页面的form表单里面提交,这样就会带来几个问题,比如,json格式里面含有疑似XSS攻击的恶意字符串,或者含有与HTML语义相同的标签字符。
在这种情况下,就需要对所提交的字符串进行编码了。然后接收方进行解码。
编码的常见方式总结如下:
一、unicode编码
//import org.apache.commons.lang.StringEscapeUtils;
String test="我是中国人()(),,& ...
最近做的项目总结的目录贴
- 博客分类:
- other
最近一个人做了传真项目,项目不大,也用到了不少的知识点,借这个机会,好好总结下。以下是知识点目录,等总结完毕,会将对应的目录贴在下面。
1、UUID算法以及实现
2、HttpClient实现以及总结
3、Spring注解总结
http://kongxuan.iteye.com/admin/blogs/2023153
4、MyBatis的insert之后如何返回自动生成的主键值
http://kongxuan.iteye.com/blog/2021729
5、Spring注解实现事务管理使用以及源码分析
6、基于权重的资源分布算法实现
...
又一个故障处理分析日志脚本
- 博客分类:
- python
# -*- coding: UTF-8 -*-
import os,sys
import gzip
#找出路径下access_log.gz文件
files=[]
fileDir=sys.argv[1]
listFile = os.listdir(fileDir)
for line in listFile:
filepath = os.path.join(fileDir,line)
if os.path.isdir(filepath):
continue;#如果filepath是目录
if (filepath.find(" ...
shell处理故障
- 博客分类:
- unix/linux
以下是shell处理故障的一点积累,将来可能有用,先mark一下
(1)导出userid不为空,且下单日在2014-01-03日(含)以后的订单
mysql -u*** -h*** -P3307 -p**** -e "use XXX ;set names utf8; select distinct user_id, user_name from commission_order r where (r.user_id is not null and r.user_id !='' and order_date >='2014-01-03') and source= ...
做业务项目的checkList
- 博客分类:
- other
下面是我自己的一些总结,都是做项目过程中血的教训,一定要遵守!
1、项目的需求阶段,需要多想想需求的合理性,一定一定要多问几个为什么。业务的合理性理解了,才能透彻的看到需求背后的理性和逻辑,也有助于 ...
python查数据库发邮件
- 博客分类:
- python
有时候需要将数据库中的统计信息统计好之后,直接每天定时发邮件。
可用python脚本写好逻辑后,使用crontab每天定时执行
# -*- coding: UTF-8 -*-
import MySQLdb
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
def queryDBdata():
#连数据库
conn = MySQLdb.connect(host='****', user='***', ...
解决线上故障-python分析日志脚本
- 博客分类:
- python
简直在作死的节奏,一个项目出了三个故障,半夜被搞醒处理故障。。。
末了,需要从日志里面扣出数据,进行历史数据修复
开始用shell,奈何shell的水准半桶水都不到。。实在不行,果断用python.磕磕碰碰,一路百度。。终于完成了。
贴出来。。半夜的成果
(1)对于gz文件,已上面其中一个文件为例,执行脚本sudo python parse_gz_log.py /home/q/www/hms.***.com/logs/access.2014-01-09.log.gz会在/home/q/www/hms.***.com/logs/下面生成相应的sql文件access.2 ...