- 博客(122)
- 资源 (4)
- 收藏
- 关注
原创 SpringMVC异步处理Servlet
本文介绍了SpringMVC异步处理Servlet的优势与注意事项。异步处理能避免阻塞Tomcat线程,支持自定义线程池,且对业务无感知。文章详细分析了Callable、DeferredResult和CompletableFuture三种异步返回值类型的工作流程,指出Callable存在线程池问题,推荐使用后两者。同时提醒了拦截器重复调用和线程上下文丢失等注意事项。最后提出Servlet异步与Reactor性能差异的思考,指出Servlet仍被广泛使用的原因。
2025-06-11 12:33:05
920
原创 排序算法考量标准思考:插入排序和冒泡排序
排序(上)——为什么插入排序比冒泡排序更受欢迎?https://blog.csdn.net/every__day/article/details/83419170https://blog.csdn.net/qq_30816517/article/details/86296446
2020-01-28 20:43:30
529
原创 扩展SpringMVC解决拦截器Interceptor.preCheck没有Controller入参的问题
问题接上一篇:SpringMVC异常统一处理并返回数据或视图View我们知道SpringMVC可以通过拦截器处理preHandle,用来提前拦截权限、拦截登录,拦截很多业务逻辑。但是这个preHandle是没有Controller的入参的,因为org.springframework.web.servlet.DispatcherServlet#doDispatch的实现中,调用preHandl...
2020-01-07 22:29:13
971
1
原创 SpringMVC异常统一处理并返回数据或视图View
实现方式和SpringMVC拦截器HandlerInterceptor拦截后返回数据或视图View一致,这里不赘述,贴一份代码参考:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.BeansException;import org.springframewor...
2019-12-27 11:57:20
781
原创 SpringMVC接收参数后处理(前端空参数转为null)
解决办法:自己扩展实现一个ConfigurableWebBindingInitializer,注册为Bean,需要设置为较高优先级(不建议使用,因为SpringBoot中预留的口子不明显)@InitBinder+@ControllerAdvice实现。@ControllerAdvice标注的类中的方法被@InitBinder标注后,所有Controller可用。由于SpringBoot已...
2019-12-26 20:25:39
3417
原创 SpringMVC拦截器HandlerInterceptor拦截后返回数据或视图View
SpringMVC拦截器比如说在SpringMVC Web环境下,需要实现一个权限拦截的功能,一般情况下,大家都是实现了org.springframework.web.servlet.AsyncHandlerInterceptor或者org.springframework.web.servlet.HandlerInterceptor接口,从而实现的SpringMVC拦截。而要实现拦截功能,通常都...
2019-12-26 15:43:23
19577
3
原创 Idea Maven ReImport 报错NoClassDefFoundError: org/codehaus/plexus/util/StringUtils
错误信息2019-09-19 19:04:02,786 [ 960431] INFO - #org.jetbrains.idea.maven - java.rmi.ServerError: Error occurred in server thread; nested exception is: java.lang.NoClassDefFoundError: org/codeh...
2019-09-26 16:07:42
3105
1
原创 Spring 4 XML 多数据源配置多事务管理的问题和原理解读
工程https://github.com/obiteaaron/nomadic-test-spring-transaction说明此工程用于验证spring事务tx:annotation-driven在使用中可能存在的问题。起因是在某实际工程中,配置了多个tx:annotation-driven以及多个org.springframework.jdbc.datasource.Data
2018-01-20 20:27:43
14810
2
转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
原文:http://www.cnblogs.com/dolphin0520/p/3920397.htmlJava并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以
2017-01-03 18:44:37
637
翻译 Reply with 200 from Nginx config without serving a file
参考:http://serverfault.com/questions/196929/reply-with-200-from-nginx-config-without-serving-a-file用nginx返回200,外加一行字符串,会被当成文件下载,如果不想这样,可以使用这样的配置。location / { return 200 'gangnam style!'; # becau
2016-12-14 15:37:25
922
原创 带有通配符的字符串和另一个字符串进行匹配(转载加修改)
字符串匹配,通配符匹配,很常见的一个功能,但是却一直没花时间去做。 今天自己在想,做字符串处理,想到的方法有完全遍历,KMP,还有BM,不过由于长期做业务,算法的东西,都忘光了,想来想去还是上网找个现成的吧。不想找了了一个大神的完全遍历法,虽然和我想的思想一样,但是不得不佩服大神代码的功底,确实不一样啊。原文: http://blog.csdn.net/zzran/article/details/
2016-11-09 23:44:31
4298
2
原创 日常心得 2016-10-20
spring+maven跨模块引用类 maven项目以模块开发时,如果core模块被web模块引用,但是某些类是放在web模块中的,又想要在core模块中使用。 可以通过接口的方式解决。 在core中定义一个接口以提供相应的功能。 由于项目使用spring管理,在web中实现这个类并由spring管理bean,在真实使用时会自动注入,可以实现引用。都是在一个项目中,只是在开发过程中不在一起无
2016-10-20 20:09:36
559
原创 使用ntbind架设Windows下的DNS服务器
使用ntbind架设Windows下的DNS服务器 提到DNS服务器估计多数技术人员首先想到的是Bind,这也没错,Bind的强大自不用细说。Bind入门不难,但要想架设一个实用环境的DNS服务器即使对于专业的运维人员也比较繁琐。对一般企业的网管来说使用Linux架设一台DNS服务器不是那么容易的一件事,也许在windows下
2016-10-15 13:15:51
11190
2
原创 Java——如果我面试别人,可能会用的问题(如果面试,可能被问的问题)
我就面试过很少过的几次,但是这些是一些总结,别人面试我的,还有和面试官司的聊天中总结出来的内容。不全,但是足够找一份很不错的工作了。java方面问题: 1. HashMap和ArrayList实现及其算法复杂度 2. 锁,多线程,线程池,线程同步ThreadLocal,JVM内存模型,类加载机制,双亲委派及热部署 3. spring核心原理,spring事务传播机制 4. myBatis
2016-10-14 13:00:18
4730
转载 mac os x 10.8 mountain lion 创建/home目录
原文地址:http://tinyhema.iteye.com/blog/2116671系统版本 Mac OS X 10.8 Mountain Lion 问题描述 公司部分二方库硬编码了文件路径,强制使用/home/admin作为日志、数据文件路径,为了减少配置成本,需要在本地弄个/home/admin出来,方便开发与调试。 在mountain lion系统中,直接创建/home目录会有以下提示:
2016-10-10 09:49:46
1747
原创 fastjson和gson反序列化时的嵌套集合和抽象类处理
gson参考:http://www.letiantian.me/2014-05-22-java-gson-json/ fastjson参考:https://github.com/alibaba/fastjson/wiki/ObjectDeserializer_cn带泛型的集合类型当使用toJson(obj)时,Gson调用obj.getClass()获取字段信息以在序列化中使用。类似的,也可以将对
2016-09-30 10:42:52
11569
1
原创 hessian远程调用及spring中使用hessian
hessian远程调用及spring中使用hessian官方文档: 使用方法:http://hessian.caucho.com/#TheServiceAPI 序列化协议:http://hessian.caucho.com/doc/hessian-serialization.htmlhessian远程调用接口API:public interface BasicAPI { public Str
2016-09-26 19:24:05
1433
原创 spring管理mybatis事务源码理解随记
mysql中session和connection的关系: mysql中一个session就是一个connection,区别在于,connection是对象池中的一个可复用对象,所以它就是一个物理连接,而session就是connection从对象池中被取出后做的一系列事情,直到connection再次被施加对象池(连接池)中时,发生的所有事情(这里指数据库交互),叫做一个session。跟踪代码分
2016-09-16 06:32:28
3300
原创 come in handy
业务复杂度业务上的复杂度是由其所需要的数据的存储方式决定的,所以数据存储(数据库或者其它)的设计犹为重要。标识符说明$ 这是钱,值钱的钱,重要的内容,表示这个内容很重要。 & 这个是与,与人交流,沟通,表示需要发周报的内容。 # 说明这个东西有问题,或者警告。Jvm编码Charset.defaultCharset() 可以获取到jam默认编码,默认为utf-8,可以通过参数 -Dfile.enc
2016-09-09 18:55:35
722
1
原创 正则表达式的部分替换 $1~$99
来源于js,但是同样适用于java,关于正则表达式的介绍不多赘述。 主要说明一下正则表达式的部分替换。 比如要替换字符串“我是程序员”里面的“程序员”,替换为“工程师”。直接模式匹配是可以的,但是如果更加复杂就难了。 使用正则,可以做到。如 原始字符串:我是程序员 正则:(.*)(程序员)(.*) 替换为:$1工程师$3如上即可,其中$1和$3分别代表第1个和第3个括号内匹配到的内容。嵌
2016-07-05 18:59:20
18302
3
原创 由dubbo引起的 java OutOfMemoryError unable to create new native thread
先说明结果: 由于linux默认限制1024个线程,运行7个tomcat,一个大概150个线程左右,外加其中有两个dubbo占用了200*2个线程,超过1024限制时会出此错。 解决方法: 1. 修改dubbo配置,降低线程数,50-100个足够。 2. 修改linux配置 /etc/security/limits.conf 把 soft nproc 1024 的1024修改大
2016-06-29 13:52:53
10925
转载 git rebase和merge 区别和应用场景
第一篇:git rebase merge 的区别和应用场景查看: http://blog.csdn.net/jollyjumper/article/details/24743751对于两个分支而言,rebase和merge没有区别,但是rebase更干净,因为log hisitory是线性的,但commit不一定按日期先后排,而是local commit总在后面,merge之后history变得比
2016-06-22 17:59:02
1393
原创 自己动手实现Spring View
我是标题党。 首先,这篇文章的内容延续前篇文章,因为前一篇文章中提到,只提供后台请求,所有返回数据都是application/json格式,不支持返回html页面。 而这一篇文章就是要推翻它,要支持返回html页面(暂时不包含模板引擎)。实现步骤: 1. 参考springMVC的实现,按Controller的返回值类型进行区分。对于返回值,分为两种,一种是String类型,另一种是其它类型(最
2016-05-17 16:55:03
1068
原创 自己动手实现SpringIoC
Spring 的核心是一点,Bean管理。在这之上,分为两大块,依赖注入IoC和面向切面AOP。正是因为Bean由Spring管理所以它才能自己去注入实现IoC,也可以对每一个Bean进行动态代理从而实现AOP。实现过程大致包含以下内容: 1. ServletDispatcher拦截,在web.xml中配置 2. ServletDispatcher扫描包从而获取所有类。 3. 对每一个类进行
2016-05-16 15:17:06
985
原创 jedis redis pipeline的理解
简单代码使用Pipeline pipeline = redis.pipelined();Map<String, Response<String>> responseMap = new HashMap<>();for (String key : keys) { String redisKey = getKey(key); responseMap.put(key, pipeline.
2016-04-27 14:16:28
14808
原创 测试canal的数据堆积能力,如果canal可以堆积数据,那么就不需要消息队列来堆积。
测试canal的数据堆积能力,如果canal可以堆积数据,那么就不需要消息队列来堆积。结果发现 1. 如果不确认数据,每次连接后都会从第一次获取,但是由于canal不能根据时间获取数据,所以也是不方便的。 2. 由于canal会维护一个连接的clientId,所以已经连接的会一直获取的是下一次下一次的数据,是连续的数据。只要不确认数据,重新添加一个连接时,都会获取到完整的数据。 3. 另外,c
2016-04-21 22:28:44
8079
1
原创 简记:com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation
dubbo中默认使用的是hessian的序列化,当使用spring-data-commons的pageable时,会在反序列化时出错,出错原因是由于hessian会先生成一个参数为0的类,再去设置类的值,然而,AbstractPageRequest中的构造函数对参数进行了限制,参数小于1的时候直接thrown异常,所以导致反序列化出错。这就是原因。所以要么自己定义。要么自己定义。
2016-04-05 20:25:37
27742
5
原创 elasticsearch 多列 聚合 归类(类似 sql group by)
说明:省份的字段是province_id,是个int类型(es里面对应为long)。另外id是string,amount是double。 不能对string求sum等运算。 且,es的归类是从外向内的。先处理外层的,再处理内层的。以省份进行分类,查看每个省份下的订单数量。{ "fields": [ "show_status" ], "size": 0, "aggs": {
2016-03-24 09:48:59
37488
转载 Tomcat修改service.xml性能调优 增加最大并发连接数
由于在性能测试时遇到返回值较多(返回值过多需要限制,单请求一页招架10000条数据,有问题的),导致tomcat把带宽吃完,然后大量请求滞留未处理,从而导致了tomcat停止响应,卡死~ 故需要优化,即调整参数,其实方法很简单,只要设置个超时就好了。下面是常用的配置,留下备用。转载自:Tomcat修改service.xml性能调优 增加最大并发连接数详细配置:<Connector executor
2016-03-21 09:31:48
2554
原创 用于获取spring所有支持的请求url,也就是{@link RequestMapping}的url
反正从网上没搜索出来,只好自己来。用于获取spring所有支持的请求,也就是{@link RequestMapping}的url想测试一下服务器是否所有接口均正确无误,需要对所有的接口都请求一次,但是无奈接口太多,一个个写是不可能的。文档虽然都有,但是也很分散。寻找过程: 1. 启动服务器,观察日志,日志开启debug模式,可以看到。[03-17 16:02:05,959] DEBUG [tart
2016-03-17 17:32:14
3850
原创 记录一个格式:发邮件时显示邮件联系人名称(昵称)
一直在用javax.mail发邮件,但是我的邮件显示的都是邮件地址,像其它服务邮箱,京东,淘宝之类的都显示的是名称。很奇怪。百度之,网上没有类似。百度之好久,发现有人说是需要用固定的格式填充From属性。// 设置收件人,寄件人String nick = javax.mail.internet.MimeUtility.encodeText("显示名称");messageHelper.setFro
2016-03-17 09:57:32
6990
原创 elasticsearch 为“非查询字段”不建索引 index store
官方文档:index简章翻译文末附原文:索引index 这个参数可以控制字段应该怎样建索引,怎样查询。它有以下三个可用值: · no: 不把此字段添加到索引中,也就是不建索引,此字段不可查询 · not_analyzed:将字段的原始值放入索引中,作为一个独立的term,它是除string字段以外的所有字段的默认值。 · analyzed:string字段的默认值,会先进行分析后,再把
2016-03-10 16:19:13
25310
原创 ac自动机failure跳转表构建
ac自动机:就是一个前缀trie加上一个failure跳转列表。而这个failure跳转列表就是ac自动机的关键。 trie树中的匹配到的字符串的列表,在ac自动机中叫状态转移成功列表,也叫成功跳转表。另外就是有失败跳转表。还有字符串列表(此字符串在trie中仅有一个值,在ac自动机里面会有多个值)前缀树概念不多说,仅说明一下failure跳转表的构造。在前缀树中,根节点的depth(深度)为0.
2016-01-26 14:04:18
1110
原创 随记:安全地关闭 jvm(tomcat停止钩子事件处理)
在jvm中,java.lang.Runtime 有一个方法,public void addShutdownHook(Thread hook) {},此方法始于jdk1.3,用于在jvm关闭时执行一些命令。 参数是一个线程类,所以我们创建Thread对象并重写run方法即可。这里说一下使用到的地方。假如后台有定时任务在运行,或者触发事件。只要是有长时运行的任务,在jvm关闭时都会停止。这可能会导致一
2015-12-28 13:44:00
4567
原创 lombok @EqualsAndHashCode 注解的影响
官方文档:@EqualsAndHashCode原文中提到的大致有以下几点: 1. 此注解会生成equals(Object other) 和 hashCode()方法。 2. 它默认使用非静态,非瞬态的属性 3. 可通过参数exclude排除一些属性 4. 可通过参数of指定仅使用哪些属性 5. 它默认仅使用该类中定义的属性且不调用父类的方法 6. 可通过callSuper=true解决上
2015-12-24 10:01:44
163805
8
翻译 elasticsearch 后置过滤器(Post Filter)
本章翻译自Elasticsearch官方指南的Filtering Queries and Aggregations一章。过滤查询以及聚合A natural extension to aggregation scoping is filtering. Because the aggregation operates in the context of the query scope, any filt
2015-12-20 19:53:42
13427
原创 Elasticsearch dynamic mapping 动态模板 Default mapping 默认列
参考官方文档:Dynamic field mappingeditDefault mappingCustom dynamic mapping问题我们有一个标签,所以这个标签会有很多,而且都是用户自己的标签,会有各种各样的内容。如果使用动态映射列,第一次可能就是数字类型,而后进来其它的字符就全是无法转换的错误。解决elasticsearch提供了一个默认的配置可以设置动态映射列的格式。 简单来说,就是
2015-12-18 16:07:19
7059
Android开源项目 GifView源码+demo+jar包
2014-08-14
httpcomponents-client-4.3.6
2014-12-15
windows7_wifi
2013-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人