java
imduan
这个作者很懒,什么都没留下…
展开
-
maven的settings.xml如何配置
<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven....转载 2019-07-09 14:58:52 · 335 阅读 · 0 评论 -
blocked Queue
有几种blocked Queue 系统开发中,经常会用到 阻塞型的容器,适合于实现“消费者生产者”模式转发类图介绍核心接口放入数据offer(anObject): 非阻塞, 表示如果可能的话,如可容纳,return true;offer(E o, long timeout, TimeUnit unit), 阻塞+超时;put(anObject): 一直阻塞;获取数据poll(time):转载 2016-12-23 20:35:23 · 1316 阅读 · 0 评论 -
java的日志
介绍推荐找篇文章Log大的体系结构java的日志体系略微复杂, 不但涉及到各个日志组件,还涉及到各个日志组件之间的桥接, 理解起来略微困难. 所以我们分层来看. 上图. 第一层:业务访问层, 业务上层使用各种Log的API: JDK的logging, slf4j, apache的common-logging, 第二层:标准日志接口层:slf4j, 第三层:日志实现层: 还是那四个组件.第原创 2016-12-26 12:20:14 · 1469 阅读 · 0 评论 -
Async Http Client
转载异步http有几个选择:apache的库com.ningok httpcom.ning的使用更广泛.<dependency> <groupId>com.ning</groupId> <artifactId>async-http-client</artifactId> <version>1.9.32</version></dependency>用法1, Futur转载 2016-12-20 15:07:30 · 727 阅读 · 0 评论 -
joda-time
常用的JDK, apache自带的日期处理Date->StringSimpleDataFormat: 非线程安全. FastDataFormate: 线程安全, 对于同一种格式化日期的pattern,FastDateFormat可以保证只有一个实例产生,实现了对pattern的管理。这点上做了优化. DateFormatUtils : 线程安全private String initDate()转载 2016-09-22 14:19:55 · 432 阅读 · 0 评论 -
数据同步遇到的问题
系统之间的数据同步是比较容易出现问题,切难以测试。 曾经遇到的两个问题数据库事务隔离导致的问题limit offset导致的问题转载 2016-12-18 19:11:30 · 1299 阅读 · 0 评论 -
良好的接口设计不需要潜规则
例子class A{ private static A INSTANCE = new A(); public A getInstance(){return INSTANCE}; private A(){ initData(); } private void initData(){remotecall()};}这个class的设计有一个API. getInstanc原创 2016-12-14 12:24:29 · 499 阅读 · 0 评论 -
Java的锁
转载 锁像synchronized同步块一样,是一种线程同步机制 Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现, 可以了解一下.一个简单的锁让我们从java中的一个同步块开始:public class Counter{ private int count = 0; public int inc(){ synchroni转载 2016-11-25 15:48:39 · 179 阅读 · 0 评论 -
Callable和Future
多线程开发, 之前用Thread, Runnable.存在的问题是:1.Thread类和Runnable接口都不允许声明检查型异常 2.也不能定义返回值public void run()方法契约意味着你必须捕获并处理检查型异常Callablepublic T call() throws Exception 可抛出检查型异常和定义强类型的返回值.FutureFuture是Java 1.5中引入的接转载 2016-11-25 11:50:09 · 289 阅读 · 0 评论 -
servlet3.0 异步请求
servlet3.0异步请求的好处提高吞吐, 减少tomcat线程数量代码相关1.返回 Callable 来完成异步处理@RequestMapping(method=RequestMethod.POST)public Callable<String> processUpload(final MultipartFile file) { return new Callable<String>()转载 2016-11-23 10:10:15 · 335 阅读 · 0 评论 -
tomcat远程调试
说明JPDA: Java Platform Debugger Architecture JDI : Java Debug Interface JDWP: Java Debug Wire Protocol配置-tomcat启用JPDA: JVM命令行+ -Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=转载 2016-12-14 20:55:56 · 335 阅读 · 0 评论 -
java堆外内存
简介谁在使用堆外内存:线程栈,应用程序代码,NIO缓存 什么东西需要池化,昂贵的对象:线程,数据库连接池, socket。好处: 理论上能减少GC时间, 提高效率JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。 JDK7开始,DirectByteBuffer分配内存时默认已不做分页对齐,不会再每次分配并清零 实际需要+分页大小(4转载 2017-02-18 15:51:33 · 1025 阅读 · 0 评论 -
java-hashmap
Capacity : 桶的size threshold : 下次扩容的size阈值 loadFactor : 负载因子, 用于计算threshold .loadFactor 负载因子越高, 扩容的阈值越高, 桶越少, hash冲突越大, 查询性能越低, 存储空间占用小. loadFactor 负载因子越低,扩容的阈值越高,hash冲突少, 查询性能高, 存储空间占用大. 举例, 要总共插入16转载 2017-02-13 18:09:48 · 228 阅读 · 0 评论 -
spring-mvc的问题
component-scan位置不当404http://blog.tmaize.net/posts/2017/06/24/spring-mvc常见问题.html一开始Spring和SpringMVC的配置都是一个文件,一点问题没有后来把一个文件拆分成两个文件,分别是applicationContext.xml和spring-mvc.xml,为的是结构清晰,结果导致所有的controller ...转载 2018-09-29 15:32:18 · 135 阅读 · 0 评论 -
架构的理解
近来一直在做一个产品的架构升级,架构升级的前期工作是对旧架构现存的问题进行梳理,考虑新架构的设计如何规避旧架构的坑,完善旧架构支持不佳的缺陷。终于完成了新架构设计,在给开发工程师讲解时,还会遇到开发的疑惑:新架构真能实现旧架构上支持的特别困难或别扭的场景么,如此等等。一个架构从设计到实现,到底要做些什么,关注些什么?那么我们就从下面这个问题开始梳理吧。架构做什么要明白做什么,首先需要考虑目标是什么?转载 2017-06-02 18:05:29 · 1047 阅读 · 0 评论 -
Java的Optional,更有意义的“空”
背景NullPointerException是java开发中的常见的异常.Person person = people.find("John Smith");if (person != null) { person.doSomething();}遗憾的是,在绝大多数Java代码里,我们常常忘记了判断空引用. 如何优雅的解决这个问题. Optional是对可以为空的对象进行的封装, 并不会转载 2017-06-02 16:48:00 · 2160 阅读 · 0 评论 -
各种坑的合集
spring的坑spring的deadlock的问题http://www.cnblogs.com/zhukunrong/p/5104138.html转载 2017-04-21 16:39:06 · 770 阅读 · 0 评论 -
ListenableFuture in Guava
说明并发编程是一个难题,但是一个强大而简单的抽象可以显著的简化并发的编写。出于这样的考虑,Guava 定义了 ListenableFuture接口并继承了JDK concurrent包下的Future 接口,ListenableFuture 允许你注册回调方法(callbacks),在运算(多线程执行)完成的时候进行调用, 或者在运算(多线程执行)完成后立即执行。这样简单的改进,使得可以明显的支持转载 2017-04-21 14:47:03 · 310 阅读 · 0 评论 -
Execute框架
Execute框架是Java并发包里面的框架简介把任务的提交和执行解耦. 要执行任务的人只需把Task描述清楚,然后提交即可。这个Task是怎么被执行的,被谁执行的,什么时候执行的,提交的人就不用关心了。具体点讲,提交一个Callable对象给ExecutorService(如最常用的线程池ThreadPoolExecutor),将得到一个Future对象,调用Future对象的get方法等待执行转载 2017-04-17 16:09:43 · 775 阅读 · 0 评论 -
static clinit死锁问题
代码/** * */package com.test.util;import com.google.common.util.concurrent.SettableFuture;public class TestConstant { public static final int wrapperLength = 11; private static int a; stat转载 2017-05-10 18:55:11 · 807 阅读 · 0 评论 -
Code Cache满导致接口性能变慢
参考wikihttp://blog.leanote.com/post/zenglingshu/%E4%B8%80%E4%B8%AART%E4%B8%8B%E9%99%8D%E7%9A%84%E5%A5%87%E6%80%AACase%5B%E8%BD%AC%5Dhttps://blogs.oracle.com/poonam/entry/why_do_i_get_messagehttp://hello转载 2017-03-16 10:15:50 · 6467 阅读 · 0 评论 -
如何解决jar包冲突和类冲突
方法一定要讲究方法, 胡乱的尝试是效果最差, 且最没有提高的方式.工具//打印出工程的所有jar依赖关系mvn -U dependency:tree -Dverboselog4j, logback, loggin的类冲突这类冲突是比较难搞的, 建议必须搞清楚这几个组件之间关系, 才能正确处理. 可以参考这个wiki : http://blog.csdn.net/imduan/article/det转载 2017-03-22 17:28:16 · 4051 阅读 · 1 评论 -
Elasticsearch-Java开发
需要依赖的包需要elastic的jar包, 还有guava,fasterxml.jackson 否则会出现 1.NoSuchMethodError的问题 2.FAIL_ON_SYMBOL_HASH_OVERFLOW的问题<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</art转载 2017-01-26 17:42:32 · 392 阅读 · 0 评论 -
Java中ReentrantLock和synchronized两种锁定机制的对比
转载代码块声明为 synchronized,后果: 1.原子性(atomicity) 2.可见性(visibility) 可见性则更为微妙;它要对付内存缓存和编译器优化的各种反常行为转载 2016-11-29 21:22:18 · 1480 阅读 · 0 评论 -
[转]分层编译对逃逸分析的影响
原始链接JIT简介JVM JIT有多种选择:client(C1), server(C2), 和两者相结合(C1+C2)。client编译速度快,但是所使用的优化较为保守,而server编译速度慢一些,但是使用的优化较为激进。所以client有较好的启动性能,但是server有较好的巅峰性能。那么有没有可能将两者相结合呢?对,这就是分层编译。可以简单的理解为在开始的时候分层编译会使用client编译,转载 2016-11-16 20:25:18 · 862 阅读 · 0 评论 -
java hashcode
hashCode的作用:当向不允许重复的集合中插入对象时,如何判别在集合中是否已经存在该对象了? 1.采用 equals方法去逐一比较,效率必然是一个问题 2.利用hashcode提高效率.实际上在HashMap的具体实现中会用一个table保存对象的hashcode ,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的转载 2016-11-01 15:16:39 · 359 阅读 · 0 评论 -
spring aop如何织入代码
spring aop又是如何实现将增强代码织入到原有方法的业务逻辑里面去的呢?spring通过jdk dynamic proxy 和 cglib 两种方式,各有优缺,综合使用。jdk dynamic proxyjdk dynamic proxy,是创建出目标类的proxy,你在代理类接口约定的方法中去实现自己的增强逻辑,同时告诉代理类目标对象是什么,目标对象的interface,这样代理对象便可根据转载 2016-04-14 20:40:17 · 3406 阅读 · 0 评论 -
spring mvc Json转换
spring如何实现Java对象到Json对象的转换注意:当springMVC-servlet.xml中使用时: 3.1之前已经默认注入AnnotationMethodHandlerAdapter 3.1之后默认注入RequestMappingHandlerAdapter,只需加上上面提及的jar包即可! 如果是采用mvc:annotation-driven标签 可以这样注入信息 注入的m转载 2016-04-14 14:27:42 · 411 阅读 · 0 评论 -
深入浅出单实例Singleton设计模式--陈皓
深入浅出单实例Singleton设计模式陈皓单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只能出现一个实例。当然,作为一个技术负转载 2016-03-25 17:11:48 · 279 阅读 · 0 评论 -
Tomcat启动报Error listenerStart错误
今天启动Tomcat启动不了,报以下错:org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/**] startup failed due转载 2016-04-06 22:44:19 · 323 阅读 · 0 评论 -
线程池相关
public class ExecutorServiceTest { public static void main(String[] args) throws IOException, InterruptedException { // 创建一个固定大小的线程池 ExecutorService service = Executors.newFixedThrea转载 2015-12-26 13:11:10 · 190 阅读 · 0 评论 -
xml构建是解析
XML处理有DOM和SAX. DOM: 基于XML文档树结构的解析 SAX:是基于事件流的解析 DOM4J:易于使用.import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element; Document document = DocumentHelper.createDoc转载 2016-01-02 23:55:37 · 274 阅读 · 0 评论 -
java 调试
查看线程top -p pid再按H或者直接输入top−bH−d3−p{pid} 再按H 或者直接输入 top -bH -d 3 -p {pid}jstack定位.通过jstack命令dump出堆栈“AppController_ThreadPool_L2_Pool Thread” daemon prio=10 tid=0x0000000051c2b000 nid=0x7bb3 in Object转载 2015-12-15 10:40:26 · 314 阅读 · 0 评论 -
文章标题
java环境安装JDK安装 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html转载 2015-12-15 11:03:06 · 197 阅读 · 0 评论 -
java pom 引入本地jar
<dependency> <groupId>cn.outofmemory</groupId> <artifactId>my-tools</artifactId> <version>2.5.0</version> <type>jar</type> <scope>system</scope> <s转载 2015-12-29 10:26:31 · 596 阅读 · 0 评论 -
java各种错误汇总
@Override is not allowed when implementing interface method解决方案转载 2015-12-28 18:57:31 · 371 阅读 · 0 评论 -
guava中的join和split功能
guava库中,包含了很好的join和split的功能,例子如下:将LIST转换为使用字符串连接的字符串 List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); String result = Joiner.on(",").join(names); assertEquals(result, "转载 2016-03-10 16:07:07 · 3010 阅读 · 0 评论 -
GC的介绍
堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆的内转载 2016-06-12 10:20:01 · 455 阅读 · 0 评论 -
魔鬼在细节
转http://javatar.iteye.com/blog/1056664不注重细节, 带来的就是代码质量的下降, 开发效率的下降.线上故障和问题, 技术能力没有提升的空间. 如何注重代码细节:了解实现的细节代码修改过程中不要偷懒, 要点进去看一下具体的实现, 不管是修改别人的代码,还是使用工具类等, 这样才能说自己实现的代码是完全把控的.防止空指针和下标越界返回集合, 尽量使用空集合,而不是n转载 2016-10-20 20:52:16 · 369 阅读 · 0 评论 -
[待整理] Exceptions and Java 8 Lambda Expressions
https://dzone.com/articles/draft-a-story-of-checked-exceptions-and-java-8-lam http://www.oracle.com/technetwork/articles/java/lambda-1984522.htmlhttp://stackoverflow.com/questions/18198176/java-8-lamb转载 2016-11-08 14:55:39 · 226 阅读 · 0 评论