- 博客(19)
- 收藏
- 关注
原创 spring-mvc引入jackson-dataformat-xml依赖后部分接口返回xml
工程是一个spring-mvc,使用jackson作为RestController序列化组件,一切都相安无事。直到有一天添加依赖的时候,间接引入了jackson-dataformat-xml,惊奇的发现部分接口的返回竟然从json变成了xml….带着满脸奔跑的草泥马,不禁提出了3个问题:为什么原来是好的?为什么只有部分接口的json变成了xml?我该怎么解决这个问题?问题1 为...
2018-04-26 11:26:14 7720 3
原创 commons-codec引起的文件名下载指定错误
对于一个Java Web应用来说,如果需要指定客户端下载的文件名,那就需要设置Content-Disposition,指定前由于Web容器的限制,需要对指定的fileName进行URL编码编码。举个栗子,如果文件名叫’测试.txt’,那么需要指定Content-Disposition: attachment; filename=”%e6%b5%8b%e8%af%95.txt”; filenam...
2018-04-02 18:17:51 2009
原创 MySQL常见问题汇总
以下描述建立在以下表结构中:create table test ( id bigint primary key auto_increment, name varchar(32), cts datetime);Dupicate Key假定业务场景,用户登录时已知id=1,name是和请求相关的变量,要求写入test表中,如果test表中之前不存在数据则写入,如果已存在数据则将原数据返回
2017-09-02 22:49:38 409
原创 依赖Jetty实现流转发功能的实践
最近在写文件的下载服务,主要功能是将请求URL调用业务接口进行解析,解析到真实的下载地址,然后将下载流透传出去。这一部分之前使用nginx-lua实现,由于维护过于困难(优雅上下线、截流、熔断能力缺乏, 证书相关运维支持缺失),因此改用Java实现。本文也主要论述如何依赖Jetty实现流转发功能。由于对Jetty的依赖非常深,建议使用EmbeddedJettyServer以引入和统一Jetty依赖。
2017-09-02 21:43:00 1417
转载 Spring中bean循环引用的处理
最近在项目中遇到Bean循环引用的问题 问题是这样的:Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'storageQueryService': Bean with name 'storageQueryService' has
2016-10-09 19:03:04 8021
原创 文件名搜索分词设计
期望目标:能够实现String.contains操作。 举例:”sd.mp4” 不管是搜”s”、”m”、”.”、”d.m”、”mp”都应该可以搜出该关键词。核心难度在于倒排索引的关键词覆盖。参考内部IM的搜索机制如下: 由于IM搜索主要用于群名、人名,垃圾数据少,并且多为中文,因此可以对中文进行拼音提取,对英文进行多段冗余。 这样做有两个好处,第一,开发量低;第二,可以省去搜索补全的部分功
2016-07-18 16:38:17 445
原创 读书笔记-ElasticSearch权威指南
ES是如何保证实时性的?ES的每个示例都拥有一个luence,在luence中有一个段的概念,索引由一或多个段组成,每个段都是索引中可被单独检索的一部分。 当ES的flush事件触发时,新的数据会被ES作为一个新的段加入索引,于是新的数据就可以被检索到了。默认的flush间隔时1s。 那么问题来了,每次刷新都新增一个段,会不会造成查询的段过多,影响查找效率呢? 一般是不会的,ES会静默的对段进
2016-05-27 15:48:31 1046
原创 全半角字符转换
用户输入的内容经常既有全角字符,又有半角字符 在pinyin4j的分词中,会将全角字符转换为半角字符,造成分词前后字符不一致 为了解决这个问题,查找了Unicode表,写了全半角转换的工具如下:/** * <PRE> * 提供对字符串的全角->半角,半角->全角转换 * </PRE> */public class BCConvertUtil { /** * ASCII表
2016-05-26 17:30:35 596
原创 文件对象式解析限制内存方法
解析文件的方式有两种,一种是流式解析,一种是对象式解析(开源的文件解析库采用指针式解析的不多,暂不讨论)。对于复杂文件,更多的是用对象式解析,那么当这个文件足够大的时候,就会发生OOM。 对于用户操作的文件,有时并不能直接限制文件大小(比如在非主要业务中的操作),有时需要对内容做截断处理(比如只允许1G,只忽略超出的内容)。在这种业务场景下,就需要对解析进行限制内存。那如何限制呢? 我大概有两种
2016-05-12 18:16:02 433
原创 Java运行时故障排查
最近单独负责一个应用上线,由于经验不足,踩了很多坑,记录一下,方便以后查看。刚开始我的try,catch是这样写的:try { mediaType = detector.detect(inputStream, metadata); parser.parse(inputStream, handler, metadata, parseContext);} catch (TikaExce
2016-05-10 16:26:36 1005
原创 NodeJs密码模块整理
密码模块我用的crypto-js,因为目测文档比较丰富。因为业务需要,需要将Hmac-sha1摘要出的二进制串Base64编码后发送。 但是由于crypto-js在内部加密使用的是私有的二进制数组WordArray,在给其他模块Base64编码时,总是没法拿到原生的二进制串,于是去认真学习了crypto-js。 结果发现没必要拿到原生的二进制串,crypto直接就可以以Base64编码输出。感觉
2016-03-24 09:53:50 2658
原创 初学Rails
初学Rails环境搭建 安装ruby、rails、gem、DevKit、rake,Windows下强烈推荐RubyInstaller环境运行 进入应用开发目录,执行命令rails new blog,rails会自动创建一个博客APP创建的第一个APP有很大的概率会出现如下问题:Fetching gem metadata from RubyGems.org.......Fetching
2016-01-23 14:41:16 305
原创 bootstrap-datetimepicker控件位置异常
今天在写毕设的时候,用到了bootstrap-datetimepicker作为日期控件。在git上clone下最新的代码,运行demo,发现控件区域整体下移1000px左右。作为一个准备拿来就用的后台程序猿,此刻我的内心是崩溃的…百度了很久,没有找到对应的解决方案,于是自己动手去源码修改。最终解决方案:打开源码,的bootstrap-datetimepicker.js文件line 527行,打开这一
2016-01-15 14:42:53 3933
原创 几种IO模型的比较
几种IO模型比较要说几种IO模型,需要先讨论一下事件分离器的两种模式 1. Reactor模式 由回调函数完成实际的IO读写,操作系统仅通知,不读取 2. Proactor模式 由操作系统代为进行IO读写,将读取后的结果托付给回调函数AIO 非阻塞,采用Proactor模型,Windows的IOCP、Linux的epollNIO 非阻塞,采用Reactor模式BIO
2016-01-09 19:43:27 1241
原创 Spring整合Quartz遇到内存泄露问题
团队的项目需要做定时任务,于是选择了Quartz在整合过程中,遇到了Quartz配置不正确导致内存泄露的问题。 当启动服务器时,程序是正常的,重启时,Web容器报错,无法unregister相应的Bean。 起初并没有在意,之后发现服务器内存占用过高,查看内存后,发现有多个Java进程。 于是猜测是线程池或Quartz没有正常关闭。 加入专门关闭线程池的Listener后,仍然无法解决问题
2016-01-09 17:24:32 4812
原创 express-session遇到session失效的问题
在用express-session的时候,遇到了session存储Set失效的问题经过分析,此失效有两个原因启用了secure选项 Please note that secure: true is a recommended option. However, it requires an https-enabled website, i.e., HTTPS is necessary for s
2016-01-09 17:23:00 6265
原创 Spring整合LogBack
在Sping整合LogBack过程中,发现logback不能操作Spring本身的日志。对整个过程做了分析,发现Spring使用apache的common-log作为日志的入口,而不是使用SLF4j。common-log的LogFactory 内部装载日志系统流程: 1. 首先,寻找org.apache.commons.logging.LogFactory 属性配置 2. 否则,利用JD
2015-12-16 18:46:13 489
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人