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