前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Web技术经验总结(十四)

Java Web技术经验总结(十四)

作者头像
阿杜
发布2018-08-06 11:30:53
6140
发布2018-08-06 11:30:53
举报
文章被收录于专栏:阿杜的世界阿杜的世界
  1. try-catch的异常打印原则:(1)优先catch具体异常,最后catch通用异常Exception;(2)异常日志打印需要将入参、结果和请求打印出来,方便排查问题;
  2. 利用HTTP CLIENT发送GET请求时,必须URL Encode.
  3. MySQL和Mybatis的批量更新操作,最近遇到一种情况,需要给多个字段更新成不同的值,最后参考:Mybatis之批量更新操作这篇文章搞定的。
  4. 利用MyBatis写批量插入或者更新的语句,假设参数列表的大小为x,则返回值的范围是[x,2x]。
代码语言:javascript
复制
<insert id="batchInsertOrUpdateWechatFans" parameterType="java.util.List">
    INSERT INTO test(fans_id, test_id, openid, nickname, picture,update_time, create_time)
    VALUES
    <foreach collection="list" item="item" index="index" separator="," >
        (#{item.fansId}, #{item.testId}, #{item.Openid}, #{item.nickName}, #{item.picture},#{item.updateTime},#{item.createTime})
    </foreach>
    ON DUPLICATE KEY UPDATE nickname=VALUES(nickname), picture=VALUES(picture), update_time=VALUES(update_time)
</insert>
  1. 关于断言的使用:我查了下资料,JVM通过-ea配置项控制断言是否打开,默认是关闭的。用在生产项目中的时候,一定不能做的事情是用断言决定业务逻辑,我下午那么用有风险。准备再梳理一遍代码,采取两个方式处理dao层的返回值:(1)上层业务明确需要知道DB操作是否成功,通过逻辑判断返回true or false;(2)上层业务不强关心DB操作是否成功,通过逻辑判断,如果db操作失败,仅仅打印warn日志。
  2. 当你想用Thread.sleep()方法的时候,可以优先使用TimeUnit.SECONDES.sleep(x)接口,代码可读性更好。参见:优先使用TimeUnit类中的sleep()
  3. 最近做一点和微信相关的工作,从微信那边取回来的粉丝昵称中如果有表情符号,存放到MySQL中的时候出现乱码,解决的办法就是:检查JDBC连接、druid连接、MYSQL表的字符集等方面。参考:微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程
  4. 在进行数据迁移的时候,需要从某张表里查询一批数据,最先使用了普通的分页查询,代码如下:
代码语言:javascript
复制
SELECT *
FROM fans
WHERE mp_id=#{mpId}LIMIT #{offset},#{count}

这个语句如果只是查询前面几页,或者是表的数据量不大(小于10万),就没有问题,否则就会出现慢查询。参考文章:【MySQL】 性能优化之 延迟关联进行了优化。

  1. 今天遇到一个JSON解析失败的案例,错误表现为: "com.alibaba.fastjson.JSONException: unclosed string : ^Z",最后查出来是fastjson的锅,我用的fastjson为1.2.0的,版本太低,这个问题在fastjson 1.2.9解决掉了。参考:github issue
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档