- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 API分页最佳实践
提供API分页功能的时候, 有一些最佳实践值得分享, 列出来如下1. 对于合格数据量特别大的情况 比如表中数据1000W, where之后还有30W这种, 禁止使用 limit m,n 这种分页, 越翻越慢, 从而导致mysql消耗资源过高, 此类分页是查出前XX页, 舍弃掉, 如果 limit 100000, 2, 会查出100000条, 然后舍弃掉,推荐使用基于自增id进行分
2013-12-18 11:46:48
843
原创 如何利用反射获得注解的名称和内部的值
使用httpclient向后端API POST数据的时候, 需要构建POST的param, 如果使用代码写的话太不优雅了, 所以考虑一种比较通用的方式实现, 详见代码, 我们使用的注解是 fastjson的, 大家可以使用其他的替换, 意思都是相通的package zhwb.service.util;import com.alibaba.fastjson.annotation.JS
2013-12-06 17:49:23
825
原创 Spring 通过注解注入Properties文件
原来一直使用spring xml来管理properties 的 placeholder, 这种方式造成无法使用Spring注解方式注入, 造成了xml的代码冗余, 现在Spring提供了一种更加优雅的方式来配合annotation的注入方式, 详见代码原本是要这么写的 xml<context:property-placeholder location="
2013-12-06 17:40:35
1825
原创 httpclient4 的封装
支持可配置的连接池, 单例的httpclinet, 更好的response handlepackage zhwb.util;import org.apache.http.HttpHost;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpUriRequest;i
2013-12-01 18:15:06
1287
原创 TestNG和PowerMock EasyMock的结合
PowerMock比较强大, 是一个基于EasyMock之上的mock工具, 它可以帮你mock内部new的对象, final方法, 私有方法等等, 具体请看他的官网, 例子很详细https://code.google.com/p/powermock/我这边想mock httpclient 对象, 因为这个对象是在方法中被new出来的 jmock easymock无能为力
2013-12-01 17:58:41
2133
原创 数据库优雅地实现软删除
一提到软删除, 大家一定会说到, isDeleted这个字段, 或者叫status,关于这个可以看一下其他博友的文章但是这种设计真的好吗, 其实针对不同的场景, 我们可以采用不同的设计方案来减少设计的复杂度。考虑下面的场景: 你是后台API提供方, 调用者每天会定时向你发送一批全量数据, 这些数据每天都会有一定的差别, 比如新增了xx新的记录, 减少了xx条老的记录, 还有
2013-12-01 17:48:46
9757
原创 iBtais 多重嵌套循环
iBatis支持集合循环, 但是如何做到双重循环, 请见下例子例子描述:需要去三张结构相同的表中获取信息, 需要将信息拼合去重后返回入参数据类型: Map, regions = Listclass OrderRegionNums{String regionSchemaString regionCodeList orderNums}
2013-12-01 16:53:11
1034
原创 JAVA与数据库直接时间问题汇总
java存DB的时候 按照本地timeZone 然后toString后的时间存到DBDB中取的时候 按照本地TimeZone作为取到的时间的TimeZone 所以 对于 DB中的时间 取出来的seconds 是根据timeZone不同而不同的,需要特别注意1. DateFormat 不是线程安全 不能作为静态变量 sdf.setLenient(false);要求格式强匹配2.
2013-12-01 16:42:00
387
原创 MySQL 因 select for update 导致的死锁问题 原因及解决方案
问题描述: 检查程序运行日志的时候, 发现了很多DB死锁, 我这边程序中使用的是悲观锁, 因为考虑到不想让调用端重试。死锁原因:有多个请求同时希望insert表, 程序中逻辑如下:select for update where uid = ?if [obj ]not existinsert elseupdate死锁原因就是 select for upda
2013-12-01 16:28:41
14462
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人