自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 List -> Map<String, Map<String, Striing>> demo

package com.ctrip.framework.apollo.demo;import com.google.common.collect.Lists;import com.google.common.collect.Maps;import java.util.List;import java.util.Map;import java.util.stream.C...

2018-07-17 10:27:26 262

原创 CompletableFuture源码赏析

文章原创,转载请注明出处:http://abc08010051.iteye.com/blog/2409693后面会再修改一下,让文章读起来更好读,现在的版本还比较粗糙  CompletableFuture是java 1.8提供的一个新类,是对Future的增强,吸收了guava异步线程的特点,可以实现一系列的异步线程操作,很多常规的用法网上有很多博客,这里说说部分代码的实现:...

2018-01-29 17:26:52 1965

原创 spring 事件机制 异步操作

1 spring 事件机制的好处:解耦合,对于一对多的操作,可以接触代码耦合 2 针对于要解耦的操作,很多都可以异步操作,主线程响应时间会变快,spring提供的事件机制默认是同步的,  @Override public void multicastEvent(final ApplicationEvent event, ResolvableType eventType) {...

2018-01-07 09:50:43 954 2

原创 Function 对代码封装带来的改变

java 8 Function特性也出现了很久了,在项目用的越来越多,记录一下个人的感悟 1 函数式参数的编程思想,对callback功能的全面替代    这个很容易理解,callback本身就是接近函数式参数的一个概念,代码封装中常会对同一个方法中相同的部分抽取,不同的部分定义成callback,调用者提供具体的实现,使用过的类HibernateDaoSupport是一个很好的体...

2017-12-18 16:40:12 206

原创 Curator zookeeper 分布式锁实现

curator版本: &lt;dependency&gt; &lt;groupId&gt;org.apache.curator&lt;/groupId&gt; &lt;artifactId&gt;curator-recipes&lt;/artifactId&gt; &lt;version&gt;2....

2017-12-18 14:53:23 169

原创 java 8 Stream list to Map key 重复 value合并到Collection

关于把list转换成key value的map有很多博客上都有实现,这里是一个吧value放入到集合中去  List&lt;String&gt; list = Lists.newArrayList("1", "2", "3", "1"); Map&lt;String, List&lt;String&gt;&gt; map = list.str

2017-08-09 10:38:34 8320

原创 LinkedHashMap理解

注: 下面的源码理解均基于jdk1.8的源码    HashMap是常用的数据集合,但是是无序, LinkedHashMap就是在HashMap上进行的一种扩展,在HashMap特性的基础上增加了有序这个特性(还可以根据最新使用自动排序)设计十分巧妙    1 LinkedHashMap继承自HashMap    public class LinkedHashMap&lt...

2016-11-16 14:55:54 99

原创 spring boot 异常处理扩展(返回格式protofuf)

spring boot 提供了统一的异常处理机制,@ControllerAdvice, @ExceptionHandler两个注解,可以处理controller里抛出的异常,不要对每个controller方法进行try catch,如果你使用json或者返回固定的错误页面作为传输数据格式,普通的使用方法即可解决,由于我们服务端使用protobuf与客户端进行交互,每个controller方法的...

2016-09-05 16:24:46 732

原创 泛型的使用

public class ClassTest { public static void main(String[] args) throws Exception { ParameterizedType type = (ParameterizedType) Bar.class.getGenericSuperclass(); System.out.pri...

2016-06-22 15:08:17 78

原创 disruptor 异常封装小技巧

 disruptor部分代码流程控制使用的是异常,抛出自定义的异常,外层捕捉,下面是它封装的异常 直接贴代码:public final class AlertException extends Exception{ /** * Pre-allocated exception to avoid garbage generation */ ...

2015-10-09 17:33:02 560

原创 disruptor(二) MultiProducerSequencer

  在《disruptor(一) 单一生产者和WorkPool消费者源码阅读》介绍了单一生产者 当多个生产者向RingBuffer中写入数据时,创建Disruptor时要修改对应的参数: Disruptor disruptor = new Disruptor(eventFactory, BUFFER_SIZE, executor, ProducerType.MULTI,...

2015-10-09 17:09:39 777

原创 disruptor(一) 单一生产者和WorkPool消费者源码阅读

 最近项目中有用到disruptor,提供一个类似队列或者数据容器的功能,并发能力很强 概念:Sequence:就是一个增长序列,类似oracle的增长序列,生产和消费程序都有Sequence,记录生产和消费程序的序列Sequencer: 多个概念的一个组合,持有Sequence,等待策略等一些引用,生产者引用SequenceBarrier:直接翻译就是序列屏障,就是Seq...

2015-10-09 11:45:56 580

原创 java akka

1 需要的依赖 &lt;dependency&gt; &lt;groupId&gt;com.typesafe.akka&lt;/groupId&gt; &lt;artifactId&gt;akka&lt;/artifactId&gt; &lt;version&gt;2.1.4&lt;/version&gt; &lt;/dependency&gt

2015-06-30 17:48:37 127

原创 logback 多线程 死锁

logback 多线程下频繁的写日志会出现死锁,可以使用异步appender避免这个问题: &lt;!-- 异步写日志,用户简介专用日志 --&gt; &lt;appender name="ASYNC_USER_PROFILE_MODEL" class="ch.qos.logback.classic.AsyncAppender"&gt; &lt;File&gt;${LO...

2015-05-12 11:07:41 2179

原创 logback log4j 冲突

logback的jar包和slf4j-log4j12.jar包在linux环境下冲突,windows下正常; hadoop的jar包会下载其依赖的jar包slf4j-log4j12.jar;同时使用logback和hadoop操作,要在pom中exclusion slf4j-log4j12.jar;否则在linux环境下打不出日志...

2015-05-08 16:55:56 206

原创 关于String的问题

关于String的经典问题很多,不过弄清楚jvm如果创建和存储String对象,一般的问题应该都能对付1 String对象的存放   (1) 直接使用双引号:String s = "abc"; "abc"字符串存在jvm的常量池中,常量池在方法区中   (2) 使用new String:String s = new String("abc");在堆中分配内存区域 2 + 操作...

2015-03-05 14:07:08 111

原创 linux 防火墙 psftp 上传下载相关命令

1) 永久性生效,重启后不会复原开启: chkconfig iptables on关闭: chkconfig iptables off2) 即时生效,重启后复原开启: service iptables start关闭: service iptables stop需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。在开启了防火墙时,做如下设置,开...

2014-12-04 15:04:29 209

原创 visualvm jmx 监控linux上的tomcat

1 在java home下的bin目录下面创建文件java.all.policy文件,并添加一下内容:  grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;}; 2 执行命令jstatd -J-Djava.securit...

2014-12-03 17:51:16 224

原创 java高并发下的唯一性验证

做java ee程序基本上都会遇到唯一性的问题,我们通常不考虑并发性的问题的情况下的做法是:先根据条件去数据中查询是否存在,如果存在则提示不唯一,否则插入 下面是一个简单的例子, 向表t_test_curr插入数据,t_test_curr表包含两个字段,一个id(主键,自增长),一个username,要求唯一1 不考虑并发性的做法:   public void tes...

2014-11-21 14:03:36 3118 3

原创 java静态方法是否可以被重写

首先来看一段代码:public class ExtendDemo { public static void main (String[] args) { SuperClass superClass = new SuperClass(); SuperClass subClass = new SubClass(); superCl...

2014-11-18 17:40:43 247

原创 深入java虚拟机 方法调用指令

1 方法调用指令     2 实例方法,类方法   调用实例方法时, 虚拟机从所调用方法栈内的操作数栈中弹出objectref和args, 虚拟机把objectref作为局部变量0放到新的栈中, 把所有args作为变量1,2,。。。等处理,objectref是隐式传给所有实例方法的this指针   调用类方法时, 虚拟机只从所调用方法栈桢中的操作数栈中弹出参数,并将它们放到新的栈桢...

2014-11-17 16:12:42 246

原创 深入java虚拟机 finally,return问题

刚开始学习java的时候,finally,return是个头疼的问题,面试题里天天都是问谁先执行?下面我们就结合《深入java虚拟机》第18章 finally子语句和例子对应的字节码来探讨一下这个问题   看此篇文章之前可以看看前面一篇文章描述finally字节码:http://abc08010051.iteye.com/admin/blogs/2154981例子1: ...

2014-11-14 17:37:43 170

原创 深入java虚拟机 异常,异常表, finally

每个异常表入口包含四个信息:   下面一个小例子:  public class GreetDemo { public static void main (String[] args) { GreetDemo gd = new GreetDemo(); gd.testException(); } pub...

2014-11-12 17:36:55 207

原创 Intellij Idea + Maven 使用jstl遇到的问题

请按照以下步骤操作:1 在pom.xml文件中引入jstl需要的jar包 &lt;dependency&gt; &lt;groupId&gt;jstl&lt;/groupId&gt; &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;...

2014-11-11 10:27:33 691

原创 几个处理 Java 的 class 文件的工具(转载)

本文转载自:http://qixinglu.com/post/some_handle_java_class_file_tools.html 一般来说手动修改二进制文件是件苦差事,有源码在手不如直接修改重新编译。但有些软件是不开源的,又想修改它的功能以便更好使用,就想反编译,但很 多代码都是混淆过的,反编译后几乎不能阅读,如果要改的的地方不是很多,比如最常做的是反转条件和替换字符串,这还...

2014-11-03 17:06:45 326

原创 java 数组

1 数组是引用类型 2 java虚拟机在装入数组时,会根据数组元素的类型以及数组维度创建对应的Class对象,数组元素的类型和维度唯一确认了数组类的Class对象,比如下面的代码: public static void main (String[] args) { int[] a = new int[5]; System.out.printl...

2014-10-31 14:37:55 87

原创 java 多线程 wait nofity notifyAll 线程唤醒之后的执行

下面是我自己写的一个生产者消费者程序 /** * 馒头 */class Mantou {}/** * 仓库,用来存放馒头 */class GodOwn { private List&lt;Mantou&gt; mantouList; int max = 10; GodOwn () { thi...

2014-10-28 17:08:25 342

原创 spring ehcache 集群配置

本篇文章是个人实践证明的,下面是步骤:      1 在spring的配置文件中启用spring对ehcache的注解, 并声明cacheManager,指明ehcache的配置文件路径:      &lt;!-- spring cache 配置 --&gt; &lt;!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配...

2014-08-06 10:09:50 234

原创 用户 'malone' 登录失败。 ClientConnectionId:

使用jdbc.properties配置文件配置数据库连接的时候,spring的配置文件中引用jdbc.properties, jdbc.properties配置如下:className=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver://client.retail-download.com:9572;dat...

2014-08-01 17:09:50 7413

原创 ios 推送 java 实现

package com.malone.common;import com.google.common.base.Joiner;import com.google.common.base.Splitter;import com.google.common.collect.Lists;import com.malone.exception.OperateFailureExcept...

2014-07-19 15:28:30 87

原创 jenkins maven svn 持续化构建

1 在使用Jenkins进行构建的时候,报invocationtargetexception,是因为jenkins的版本 和maven的版本不兼容,maven 3.0.4, maven 3.0.5对当前最新版本的jenkins没有兼容问题,maven 2.2.2和jenkins有兼容性的问题,构建的时候会报invocationtargetexception 2 使用intellij...

2014-07-17 10:09:55 152

原创 基于注解的spring mvc 异常封装

在使用基于注解的spring mvc时,使用情况如下: @Controller@RequestMapping("/test")public class TestController { @RequestMapping(value="/index/{userId}", params="username") public ModelAndView index(...

2014-07-15 14:42:11 211

原创 Restful 概念(转载)

不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火如荼:虽然当前主流的方式明显地集中在基于SOAP、WSDL和WS-*规范的Web Services领域,但也有少数人用细小但洪亮的声音主张说更好的方式是REST,表述性状态转移(REpresentational State Transfer)的简称。在本文中,我不会涉及争论的话题,而是尝试对REST和RE...

2014-07-12 09:24:54 119

原创 Amazon AWS S3 上传文件 并获取公用url

      最近在用aws的s3做云存储,把文件上传上去,在数据库中记录对应的url,下面是示例代码:  public static String uploadToS3(File tempFile, String remoteFileName) throws IOException { PropertiesUtil propertiesUtil = new Pro...

2014-06-20 13:38:37 11481

原创 File Path 相对路径

         最近在项目中想使用相对路径存放上传的apk包,所以研究了一下相对路径创建File的相关知识     1 参考以前的代码,写下如下代码:      public static void main(String[] args) throws IOException { File parentFile = new File("/intelStore/apk/...

2014-06-07 10:32:48 1360 1

原创 Guava 风格之 Builder

    喜欢用guava的原因之一就是喜欢guava的编码风格,guava的fluent风格的api使用起来非常清爽,其中内部实现就使用了Builder模式     1 在使用不可变集合ImmutableList时,可以直接初始化:   ImmutableList&lt;String&gt; strings = ImmutableList.of("1", "2");    ...

2014-06-03 15:14:19 479

原创 java Tuple 元组

    场景:当在一个方法中, 你需要返回几个对象,这几个对象的类型一致,你可以返回一个数组;如果几个对象的类型不同呢,当然你可以返回一个Object[]数组,可是这样在使用结果数组的时候,就需要强转对象的类型,会导致类型不安全;也可以定义一个dto,当多个场景下需要使用的不同,需要定义多个dto,这样会类爆炸,而且重用率极低;在非常接近Java语言的Scala里有元组的定义:val t = ...

2014-05-30 18:01:34 1160

原创 Guava Optional<T> 关于null

   对于Java中null的缺点和如何处理,大家讨论了很多遍,guava给出的解决方法是Optional&lt;T&gt;  public static Optional&lt;String&gt; getYourName () { return Optional.of("malone"); } public static void ma...

2014-05-30 17:06:10 90

原创 JodaTime 时间处理

  最近看别人在谈项目中时间处理的问题,jdk提供的Date好多方法都废弃了,现在基本上都是统一用Calendar来处理,用过Calendar处理日期的想必都有感觉,Calendar是一个笨重的东西,计算时间的时候更是劣势尽显,代码冗余很高,现在推荐一个非常好的时间处理类库:Joda Time 1 使用到的jar包&lt;dependency&gt; &lt;...

2014-05-30 13:47:05 150

原创 Guava 字符串处理(Joiner, Splitter, CharMatcher)

guava 提供了非常强大的字符串处理操作 1 Joiner   以前肯定遇到过这样的场景,为了sql查询,把一个List&lt;Integer&gt;集合拼接成一个字符串,用逗号隔开,看一下Joiner如何实现的:  public static void main (String args[]) { List&lt;Integer&gt; list = ...

2014-05-27 15:46:49 645

spring security 完整项目实例

基于用户,角色,权限的spring security完整项目,包括登陆,免登陆,session配置,角色,权限验证等功能

2014-01-07

servlet 2.1 chm api

servlet 2.1 chm api 包括api,servlet规范,servlet相关的东西都有

2013-09-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除