netty学习五:websocket小demo

netty学习五:websocket小demo...
阅读(424) 评论(2)

netty学习四:监听channel的读写空闲情况

概述netty提供了一个IdleStateHandler类,可以用监听channel的读写空闲状态。构造方法如下: public IdleStateHandler(long readerIdleTime, long writerIdleTime, long allIdleTime,TimeUnit unit) { }1、当隔了readerIdleTime后,如果客户端未发送信息到服务端,那么会触发c...
阅读(325) 评论(0)

netty学习三:基于socket的聊天小demo

netty学习三:基于socket的聊天小demo...
阅读(386) 评论(1)

netty学习二:基于socket通讯的小demo

netty socket编程小demo...
阅读(446) 评论(0)

netty学习一:用netty构造http服务的小demo

概述netty可以支持http、socket、websocket,本文会做一个小demo,简单介绍一下如何用netty搭建一个http服务。netty虽然可以提供http服务,但是相比spring mvc、struts2等框架,netty显得比较底层,很多spring mvc提供的功能,netty统统都没有。步骤编写netty程序的步骤都比较相似: 1、 启动group监听客户端请求 2、编写I...
阅读(663) 评论(1)

利用Apache工具和Guava对ArrayList进行分页

概述之前写过一篇对ArrayList进行分页,介绍如何用JAVA API对ArrayList进行分页,下面再介绍另外两种方法。使用Apache工具使用Apache的ListUtils类,一行代码即可解决。import java.util.Arrays; import java.util.List;import org.apache.commons.collections4.ListUtils;imp...
阅读(510) 评论(2)

下载Spring源代码

概述惭愧,工作好几年了,现在才来开始研究Spring的源代码。Spring 源代码路径https://github.com/spring-projects/spring-framework.git直接使用git clone https://github.com/spring-projects/spring-framework.git下载的过程比较漫长,慢慢等。使用Gradle 构建代码Spring是...
阅读(201) 评论(0)

JAVA+信号量:阻塞线程

概述 为了提高接口的响应速度,可以使用ThreadPoolExecutor + Runnable 或者ThreadPoolExecutor 并发调用 技术来并行执行task。但是ThreadPoolExecutor有个特点,就是当core线程不足以应付请求的时候,会将task加入到队列中。一旦使用队列,那么就可能出现队列爆掉或者队列导致的内存溢出问题。为了尽快提供接口响应速度,但是又不想使用队列特性...
阅读(546) 评论(0)

ThreadPoolExecutor + Runnable

概述 在ThreadPoolExecutor 并发调用 一文中介绍了ThreadPoolExecutor + Callable的方法并行执行task,其实ThreadPoolExecutor还有另一种用法, ThreadPoolExecutor + Runnable。如果你不理会task执行的结果,可以使用这种方法。 代码 public class TestExecutorCountDown...
阅读(420) 评论(0)

重构大型业务型写接口-并行处理注意点

概述 为了提高接口的处理速度,通常会使用并行的方式。在JAVA中可以使用ThreadPoolExecutor 或者ForkJoinPool 。像并行查询或者并行调用外部接口,经常会用到这两种技术,基本上没什么坑。但是如果是使用这两种技术来重构大型的业务型写接口,则需要小心细致。 task切分 task粒度切分是个技术活。必须大小合适。尽量保证执行task的每个线程各自拥有自己的数据,各干各的。没...
阅读(559) 评论(0)

利用ConcurrentHashMap和计数器实现锁

概述 在某些场景下,我们想让线程根据某些业务数据进行排队,简单代码如下:import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.co...
阅读(526) 评论(0)

ThreadPoolExecutor 并发调用

概述 通常为了提供任务的处理速度,会使用一些并发模型,ThreadPoolExecutor中的invokeAll便是一种。 代码 package test.current;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable;...
阅读(865) 评论(0)

系统防刷的一些基本方法

概述 上周系统被刷了,由于系统是纯db操作,没有缓存的,所以db的压力非常大,后续的请求已经无法拿到db连接了。虽然系统用几十个数据库分库,但是黑客就只是刷一个商品,这样所有的请求就会落到同一个DB。当时刚好我是值班人员,全程参与了整个过程。系统被刷了应该如何处理以及系统如何做防刷,算是有一点点心得。 将商品下线 如果某个热门商品被刷了,可以紧急联系后台业务人员,将商品做下线处理,这样可以防止请...
阅读(1781) 评论(3)

请求量稍微比较大-尽量避免长事务

概述 某些后台应用经常需要频繁的操作DB,为了保证数据出错时能回滚数据,通常都会使用事务。在使用事务的时候,尽量避免使用长事务,比如说:某个业务操作需要批量插入数据,而且数据量还不少,如果这整个操作都包在一个事务里面,只有等到数据操作完了,DB连接才会被释放,一旦外部系统发起请求,并发调用这个操作,那么一下子将有大量的DB连接被持有而没有被释放掉,这个时候,如果还有其他请求到来,就很大可能获取不到数...
阅读(837) 评论(0)

库存仓库和推荐仓库进行匹配简单算法

概述 通常在电商项目的库存项目中,每条库存记录都有一个对应的仓库字段,warehouse,同一个商品可能在多个仓库中都存在的。假设用户添加一个商品sku1到购物车中,这个sku1在warehouse1和warehouse2都存在,这个时候到底要扣减哪个仓库中的库存呢?这里有个仓库优先级的概念,一般来说,会有专门的系统来决定仓库扣减的优先级。假设这个专门的系统叫SystemB,我们只需要传入一个用户的...
阅读(478) 评论(0)
123条 共9页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:321265次
    • 积分:3501
    • 等级:
    • 排名:第9876名
    • 原创:118篇
    • 转载:5篇
    • 译文:0篇
    • 评论:163条
    博客专栏