自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(130)
  • 资源 (5)
  • 收藏
  • 关注

转载 【Guava】Optional接口来避免空指针错误

null会带来很多问题,从开始有null开始有无数程序栽在null的手里,null的含义是不清晰的,检查null在大多数情况下是不得不做的,而我们又在很多时候忘记了对null做检查,在我们的产品真正投入使用的时候,空指针异常出现了,这是一种讨厌的情况。鉴于此google的guava库中提供了Optional接口来使null快速失败,即在可能为null的对象上做了一层封装,在使用Optional静态方

2017-08-22 09:10:19 624

转载 SOA与微服务基本原则及对比

一、面向服务设计的原则服务可复用:不管是否存在即时复用的机会,服务均被设计为支持潜在的可复用服务共享一个标准契约:为了与服务提供者交互,消费者需要导入服务提供者的服务契约,这个契约可以是一个IDL文件,Java接口定义,WSDL文件,甚至是接口说明文档服务是松耦合的:服务被设计为功能相对独立,尽量不依赖其他服务的独立功能提供者服务是底层逻辑的抽象:只有经服务契约所暴露的服务队外部世界可见,契

2017-08-20 21:47:28 416

转载 Java 8学习之Stream API

一个Stream表面上看与一个集合很类似,允许你改变和获取数据。但是实际上他与集合是有很大区别的:Stream自己不会存储元素。元素可能被存储在底层的集合中,或者根据需要产生出来。Stream操作符不会改变源对象。相反,他们会返回一个持有结果的新Stream。Stream操作符可能是延迟执行的。意味着他们会等到需要结果的时候才执行。下面是一段如何并行统计长单词的代码:long count =

2017-08-15 20:52:39 204

转载 Java 8学习之Lambda表达式

一、lambda表达式一个lambda表达式包含三个部分: - 一段代码 - 参数 - 自由变量的值,这里的自由指的是哪些不是参数并且没有在代码中定义的变量。示例:public static void repeat(String text, int count) { Runnable r = () -> { for (int i = 0; i < count; i++)

2017-08-15 16:19:58 247

原创 【Druid】Access Denied for User ''@'ip'

今天在写单元测试时,遇到一个很奇葩的问题,一直在报这样的错误:Caused by: java.sql.SQLException: Access denied for user ''@'183.134.103.169' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)

2017-08-07 14:52:34 814

转载 【Guava】基于guava的重试组件Guava-Retryer

一、使用场景在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活( Active)。Guava Retrying 是一个灵活方便的重试组件,包含了多种的重

2017-08-03 09:36:15 567

原创 【Guava】使用Guava的RateLimiter做限流

一、常见的限流算法目前常用的限流算法有两个:漏桶算法和令牌桶算法。1.漏桶算法漏桶算法的原理比较简单,请求进入到漏桶中,漏桶以一定的速率漏水。当请求过多时,水直接溢出。可以看出,漏桶算法可以强制限制数据的传输速度。2.令牌桶算法令牌桶算法的原理是系统以一定速率向桶中放入令牌,如果有请求时,请求会从桶中取出令牌,如果能取到令牌,则可以继续完成请求,否则等待或者拒绝服务。这种算法可以应对突发程度的请求,

2017-07-20 11:13:48 1922

原创 【Kafka】Kafka集群搭建

一、准备工作服务器:最好是多台,大于等于2已经搭建好的zookeeper集群下载软件kafka_2.11-0.10.0.1.tgz二、创建目录#创建目录cd /opt/mkdir kafka #创建项目目录cd kafkamkdir kafkalogs #创建kafka消息目录,主要存放kafka消息#解压软件tar -zxvf kafka_2.11-0.10.0.1.tgz三、修

2017-07-17 19:04:15 324

原创 【ZooKeeper】单机伪集群搭建(适用于mac)

1.配置.zookeeper下载地址:http://apache.mirrors.lucidnetworks.net/zookeeper/可以选择需要的版本,我下载的是zookeeper-3.4.6.tar.gz,解压得到文件夹zookeeper-3.4.3由于手头机器不足,所以在一台机器上部署了3个server,如果你手头也比较紧,也可以这么做。在主文件夹下建立一个zookeeper文件夹,在zo

2017-07-17 15:17:26 2295

原创 高性能队列Disruptor的使用

一、什么是 Disruptor从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件

2017-06-08 15:03:00 3624

原创 【Maven学习】maven-enforcer-plugin的使用

我们会经常碰到这样的问题,在pom中引入了一个jar,里面默认依赖了其他的jar包。jar包一多的时候,我们很难确认哪些jar是我们需要的,哪些jar是冲突的。此时会出现很多莫名其妙的问题,什么类找不到啦,方法找不到啦,这种可能的原因就是jar的版本不是我们所设想的版本,但是我们也不知道低版本的jar是从哪个maven里面引用的。此时我们的maven-enforcer-plugin就可以登场了。<p

2017-06-08 09:04:24 599

转载 【Maven学习】maven-assembly-plugin的使用

转自http://liugang594.iteye.com/blog/2093607maven-assembly-plugin使用描述(拷自 maven-assembly-plugin 主页) The Assembly Plugin for Maven is primarily intended to allow users to aggregate the project output al

2017-06-01 17:13:19 1096

原创 【源码分析】Guava源码解析之EventBus

最近看Elastic-Job源码,看到它里面实现的任务运行轨迹的持久化,使用的是Guava的AsyncEventBus,一个内存级别的异步事件总线服务,实现了简单的生产-消费者模式,从而在不影响任务执行效率的基础上,将任务执行和任务轨迹记录解耦,大大提高了EJ的性能。EventBus在Elastic-Job中的使用EventBus的使用方法不难,具体可以参考EJ里面几个相关的类:JobEventLi

2017-05-23 16:34:10 495

原创 【源码分析】Elastic-Job源码分析之AbstractElasticJobExecutor分析

还记得我们在JobScheduler中,在创建任务详情时,会调用一个建造器JobBuilder来创建一个Job,类型是LiteJob。LiteJob.java/** * Lite调度作业. * * @author zhangliang */public final class LiteJob implements Job { @Setter private ElasticJo

2017-05-19 18:23:00 1138

原创 【Maven学习】远程仓库的配置

很多情况下,默认的中央仓库无法满足项目的需求,我们可能需要配置新的远程仓库,此时我们可以这样配置:<repository> <id>java-net</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> <snapshots> <enabled>false</enabl

2017-05-16 21:22:36 442

原创 【Maven学习】maven中依赖的配置详解

根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或多个项目依赖。每个依赖可以包含的元素有:groupId,artifactId和version:依赖的基本坐标,对于一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。type:依赖的类型,对应于项目坐标定义的packaging。大部分情况下,该元素不必声明,默认值为jar

2017-05-15 23:03:39 415

原创 【Maven学习】maven基本命令

maven最主要的命令如下:mvn clean compile:告诉Maven编译项目主代码mvn clean test:执行src/test/main下面的test方法,在执行测试之前,会自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作mvn clean package:打包,使用默认打包类型jar,在打包前会执行编译、测试等操作。生产的jar文件位于target下面m

2017-05-15 22:28:53 446

原创 【源码分析】Elastic-Job源码分析之JobScheduler类分析

JobScheduler这个类是EJ中比较核心的一个类,我们现在开始解析这个类。一、构造器首先我们看一下JobScheduler的几个构造器。 private JobScheduler(final CoordinatorRegistryCenter regCenter, final LiteJobConfiguration liteJobConfig, final JobEventBus jo

2017-05-10 20:24:23 841

转载 【源码分析】分布式锁-RedisLockRegistry源码分析[转]

前言官网的英文介绍大概如下: Starting with version 4.0, the RedisLockRegistry is available. Certain components (for example aggregator and resequencer) use a lock obtained from a LockRegistry instance to ensure th

2017-05-10 16:59:50 2338

原创 elastic-job动态添加定时任务

在elastic-job的使用过程中,我们会遇到动态添加定时任务的时候,但是官网上面并没有对这块内容进行说明。按照我的理解以及官网上面elastic-job的框架图,ej的定时任务其实是存储在zookeeper的一个个节点上面,所以通过给zookeeper添加对应的节点即可完成定时任务的添加动作。下面上代码:import java.text.SimpleDateFormat;import java

2017-04-26 15:34:09 2740

原创 Java程序员的面试经历和题库

最近打算换城市了,受不了北京的雾霾了,所以准备逃离啦。所以一直在面试中,整理了下最近遇到的一些面试题,供大家参考。其中会包含一些面试的小经验,如果您是面霸,希望能给予指导。自己不是大牛,如果您是大牛,也可以忽略之。我面试的岗位是Java后端开发工程师。一、简历简历里面需要包含的内容应该是学历,自己的技术栈,然后自己做过的一些项目。简历不需要太长,两页纸即可。里面应该重点写你使用过的一些框架,自己做的

2017-03-19 21:33:21 12118 39

原创 java中String、StringBuffer、StringBuilder的区别

java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变  String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。private final char value[];  StringBuild

2017-02-18 17:13:30 637

原创 linux命令-寻找超过100M的文件,并将其删除

find / -type f -size +100M | xargs rm -rf其中第一个/表示路径,此时表示的是根目录,也就是搜索全部的文件-type表示类型f表示是文件-size 表示大小+100M:表示大于100M后面就是执行的命令。当然也可以寻找特定后缀的文件,比如:find / -name “*.mp3” |xargs rm -rf,就是寻找以mp3结尾的文件并删除。一般我们在删除之前

2017-02-15 09:34:38 4857

原创 LeetCode-14. Longest Common Prefix

1.题目描述Write a function to find the longest common prefix string amongst an array of strings.找到一组字符串的最长前缀。2.我的分析思路这一题的第一思路就是,把第一个字符串作为基准,遍历每个子字符串,然后判断其他字符串是否以这个子字符串为前缀,然后求出最长的即可。上代码:public String longes

2017-02-12 21:06:37 454

原创 LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)

1.题目描述Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.2.我的分析思路罗马数字转成阿拉伯数字,这里面需要知道罗马数字的构成规则。罗马数字通过7个不同字母的重复或组合,能够表示出所有正整数(罗马数字中没有0)。I = 1V = 5

2017-02-12 20:59:27 475

原创 LeetCode-3. Longest Substring Without Repeating Characters

1.题目描述Given a string, find the length of the longest substring without repeating characters.Examples:Given ==”abcabcbb”==, the answer is ==”abc”==, which the length is 3.Given ==”bbbbb”==, the answer i

2017-02-12 20:44:29 251

原创 LeetCode-2. Add Two Numbers(链表实现数字相加)

1.题目描述You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and ret

2017-02-09 09:56:55 443

原创 LeetCode-9. Palindrome Number(回文数)

1.题目描述Determine whether an integer is a palindrome. Do this without extra space.Some hints: Could negative integers be palindromes? (ie, -1)If you are thinking of converting the integer to string, not

2017-02-07 21:23:51 429

原创 LeetCode-7. Reverse Integer

1.题目描述Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321Note:The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed i

2017-02-07 09:35:27 449

原创 LeetCode-1.Two Sum

1.题目描述Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sa

2017-02-06 11:43:46 393

转载 JAVA源码分析-深度剖析ConcurrentHashMap

还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多面试书中都说到: HashMap是非线程安全的,HashTable是线程安全的。那个时候没怎么写Java代码,所以根本就没有听说过ConcurrentHashMap,只知道面试的时候就记住这句话就行了…至于为什么是线程安全的,内部怎么实现的,通通不了解。今天我们将深入剖析一个比HashTable性能更优的线程安全的Ma

2017-01-15 20:02:17 659

原创 JAVA源码分析-HashMap源码分析(二)

本文继续分析HashMap的源码。本文的重点是resize()方法和HashMap中其他的一些方法,希望各位提出宝贵的意见。话不多说,咱们上源码。final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; //如果老的数组为空,老的数组容量设为0 int oldCap = (oldTab == nul

2017-01-06 21:33:43 493

原创 JAVA源码分析-HashMap源码分析(一)

一直以来,HashMap就是Java面试过程中的常客,不管是刚毕业的,还是工作了好多年的同学,在Java面试过程中,经常会被问到HashMap相关的一些问题,而且每次面试都被问到一些自己平时没有注意的问题。因为HashMap不管对于毕业生,还是对于老司机来说,都非常熟悉,熟悉到你经常忽略它。本着知其然,更要知其所以然的精神,本人对JDK 1.8版本的HashMap源码进行了仔细的学习。大家知道,JD

2017-01-06 17:27:02 537 1

原创 设计模式-桥梁模式

一、定义桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式,其定义如下: Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。)桥梁模式的重点是在“解耦”上,如何让它们两者解耦是我们要了解的重点,我们先来看 桥

2017-01-03 11:31:47 459

原创 设计模式-享元模式

一、定义享元模式(Flyweight Pattern)是池技术的重要实现方式,其定义如下:Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可有效地支持大量的细粒度的对象。)享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还

2017-01-03 11:07:49 376

原创 设计模式-解释器模式

一、定义解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的方案,在现在项目中使 用较少,其定义如下:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences

2016-12-29 23:08:53 361

原创 设计模式-状态模式

一、定义定义如下:Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.(当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其 类。)状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象 对应的

2016-12-29 22:51:30 269

原创 设计模式-访问者模式

一、定义访问者模式(Visitor Pattern)是一个相对简单的模式,其定义如下:Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the ele

2016-12-29 18:22:18 310

原创 设计模式-备忘录模式

一、定义备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程 序的世界中真实可行,其定义如下:Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state l

2016-12-29 07:56:56 406

原创 设计模式-门面模式

一、定义门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如 下:Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interface that makes the subsystem easier to use.(要求一

2016-12-29 07:39:41 436

【免费】Apache-tomcat-8.5.15

Tomcat免费下载

2017-08-29

企业应用架构模式【英文原版】

企业应用架构模式英文版,程序员提升必备书籍,多看看这些经典书籍总是好的。

2017-10-18

写给大忙人看的Java SE 8

快速了解Java 8的书籍,里面的内容丰富,包含了Java 8 的所有特性,Java程序员值得一看。

2017-10-18

空空如也

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

TA关注的人

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