随笔分类 -  Java

摘要:1.并发 使用CompletableFuture可以控制并发,并且等待所有异步处理完成后返回allOff; 2.限流 使用guava中的RateLimiter可以控制秒级限流。 3.缓存 使用guava中的CacheBuilder和LoadingCache。其中设置超时可用expireAfterAc 阅读全文
posted @ 2017-09-25 15:00 11楼的日记 阅读(260) 评论(0) 推荐(0)
摘要:需要增加:archetypeCatalog internal 阅读全文
posted @ 2017-04-07 16:59 11楼的日记 阅读(154) 评论(0) 推荐(0)
摘要:Servlet API中,对servlet安全考虑,可以使用@ServletSecurity 但是@ServletSecurity中,value需要返回@HttpConstraint 而@HttpConstraint中,rolesAllowed需要返回String[]类型的roles。 那么问题来了 阅读全文
posted @ 2017-03-27 17:31 11楼的日记 阅读(378) 评论(0) 推荐(0)
摘要:-javaagent:xxx.jar 会在main方法之前预先执行premain方法 Agent 类必须打成jar包,然后里面的 META-INF/MAINIFEST.MF 必须包含 Premain-Class这个属性 public static void premain(String args, 阅读全文
posted @ 2017-03-15 18:10 11楼的日记 阅读(7124) 评论(0) 推荐(0)
摘要:1、首先使用DatagramSocket实现UDP Socket客户端,并且使用DatagramPacket封装要发送和接收的数据 2、使用DatagramSocket 实现UDP Socket服务端,并且使用DatagramPacket封装需要接收与发送的数据 阅读全文
posted @ 2017-02-28 12:58 11楼的日记 阅读(1188) 评论(0) 推荐(0)
摘要:1、首先我们使用SocketChannel,实现socket客户端 2、使用ServerSocketChannel实现服务端,并且使用Selector 阅读全文
posted @ 2017-02-28 11:39 11楼的日记 阅读(909) 评论(0) 推荐(0)
摘要:1、定义一个Java类,需要继承javax.servlet.jsp.tagext.TagSupport,里面有许多方法,不一一详述,自己去看看源码就知道了 2、需要在classpath下META-INF目录下创建.tld文件 3、在JSP中使用taglib 阅读全文
posted @ 2017-02-28 11:05 11楼的日记 阅读(433) 评论(0) 推荐(0)
摘要:jsp org.apache.jasper.servlet.JspServlet fork false xpoweredBy false ... 阅读全文
posted @ 2017-01-20 09:46 11楼的日记 阅读(2278) 评论(0) 推荐(0)
摘要:1、通过JVM参数: -javaagent:./lib/springloaded-1.2.6.RELEASE.jar -noverify ,可以实现热部署,但是用idea的同学有点坑,必须手动编译,因为检测的是target目录中的classes 2、通过向pom中添加依赖可以直接热重启(比重启更快, 阅读全文
posted @ 2017-01-18 15:08 11楼的日记 阅读(1235) 评论(0) 推荐(0)
摘要:一.基本垃圾回收算法 1.引用计数(Reference Counting) 比较古老的回收算法。原理是此对象有一个引用则增加一个引用计数,删除一个引用则较少一个引用计数。垃圾回收时,只回收引用计数为0的对象。此算法最致命的是无法处理互相引用的问题。 2.标记-清除(Mark-Sweep) 此算法执行 阅读全文
posted @ 2017-01-05 16:24 11楼的日记 阅读(551) 评论(0) 推荐(0)
摘要:目前Java中最IO有多种文件读取的方法,本文章对比Stream,NIO ByteBuffer,NIO MappedByteBuffer的性能,让我们知道到底怎么能写出性能高的文件读取代码。 结论非常明显啦,以后再使用IO读写文件的时候,多使用NIO MappedByteBuffer吧,毕竟NIO比 阅读全文
posted @ 2016-12-28 15:18 11楼的日记 阅读(1866) 评论(0) 推荐(0)
摘要:org.apache.commons.pool2.ObjectPool提供了对象池,开发的小伙伴们可以直接使用来构建一个对象池 使用该对象池具有两个简单的步骤: 1、创建对象工厂,org.apache.commons.pool2.BasePooledObjectFactory已经对工厂有抽象实现,所 阅读全文
posted @ 2016-12-26 11:49 11楼的日记 阅读(3520) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2016-12-22 11:16 11楼的日记 阅读(280) 评论(0) 推荐(0)
摘要:1、最近最少使用算法LRU (Least recently used,最近最少使用) 【实现】:最常见的是使用一个链表保存缓存数据 1、新数据插入到链表头部; 2、每当缓存命中(即缓存数据被访问),将数据移动到链表头部; 3、当链表满的时候将链表尾部的数据丢弃; 【代价】 命中时需要遍历链表,找到命 阅读全文
posted @ 2016-12-20 12:27 11楼的日记 阅读(9600) 评论(2) 推荐(0)
摘要:1、策略模式: 策略模式就是将能够通用的算法,封装成不同的组件,实现同一个接口,使之可以互换。 例子:SpringMVC的9大组件,都采用策略模式。比如HandlerMethodArgumentResolver,有非常多不同的实现类,这些实现类都可以互相替换来处理不同类型的参数,这就是策略模式。 策 阅读全文
posted @ 2016-12-19 18:03 11楼的日记 阅读(1777) 评论(0) 推荐(0)
摘要:本文的目的: 使用者在程序运行期间,可以动态的写Java Class,不需要生成任何.Class文件就可以完全在内存中编译,加载,实例化。 1、需要用到的组件介绍 1)JavaCompiler:用于编译Java Code。 2)CharSequenceJavaFileObject:用于保存Java 阅读全文
posted @ 2016-12-06 11:33 11楼的日记 阅读(6276) 评论(3) 推荐(0)
摘要:1、首先我们了解一下JDK动态代理的使用方法: 2、我们看一下JDK源码,是如何实现动态代理的 Proxy.newProxyInstance最终会调用Proxy.ProxyClassFactory.apply()方法生成代理Class 3、具体proxyClass是如何生成的 大致就是: proxy 阅读全文
posted @ 2016-12-06 10:22 11楼的日记 阅读(618) 评论(1) 推荐(0)
摘要:package com; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** * Created by yangyu on 16/11/28. */ /** * FutureTa... 阅读全文
posted @ 2016-11-28 16:43 11楼的日记 阅读(1599) 评论(0) 推荐(0)
摘要:package com; import java.util.concurrent.*; /** * Created by yangyu on 16/11/28. */ /** * Callable and Future用法 * Callable可以被ExecutorService的submit方法使用,可以取线程执行的返回值; * * Future是返回值的封装类型: * g... 阅读全文
posted @ 2016-11-28 15:54 11楼的日记 阅读(1853) 评论(0) 推荐(0)
摘要:package com; import java.util.concurrent.Semaphore; /** * Created by yangyu on 16/11/28. */ /** * Semaphore控制并发线程数量 * * 使用场景: * 当大批量的并发请求来到系统当中时,为了保证系统稳定,真正执行业务逻辑的线程其实数量有限; * 为了保证业务系统的稳定,不会... 阅读全文
posted @ 2016-11-28 12:52 11楼的日记 阅读(971) 评论(0) 推荐(0)