自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 资源 (10)
  • 收藏
  • 关注

转载 两个栈实现一个队列以及两个队列实现一个栈(Java)

两个栈实现一个队列import java.util.Stack;public class Demo07 { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void pus...

2018-04-19 10:53:51 1720

转载 Java8新特性5--流式API

流式处理流是一系列数据项,一次只生成一项。程序可以从输 入流中一个一个读取数据项,然后以同样的方式将数据项写入输出流。一个程序的输出流很可能是另一个程序的输入流。流的特点元素序列——就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。集合讲的是数据,流讲的是计算。源——流会使用一个提供数据的源,如集合、数组或输入/输出资源。 请注意,从有序集 合生成流时会保留原有的顺序。

2018-01-04 11:07:36 3670

转载 java8新特性3--lambda表达式

开发中,经常需要给一个方法传递一个接口类型的参数,为了传递不同的行为,我们需要创建不同的实现类,而通常这些类没什么重用价值,只使用一次就没用了。考虑一个从一堆苹果中筛选符合条件的苹果的场景。为了更好的应对需求变更,一个比较好的解决办法是将过滤的标准抽象出来,我们先定义一个接口作为抽象的选择标准.public interface ApplePredicate{ boolean tes

2018-01-04 11:04:06 545

转载 java8新特性2--注解变化

Java 8在两个方面对注解机制进行了改进,分别为:你现在可以定义重复注解你可以为任何目标添加注解Java中的注解是一种对程序元素进行配置,提供附加信息的机制。重复注解之前版本的Java禁止对同样的注解类型声明多次。由于这个原因,下面的第二句代码是无效的。@interface Author { String name();}@Author(name="Raoul") @Aut

2018-01-04 11:03:33 444

转载 java8新特性1--接口的变化

接口的变化在Java8之前,Java中,实现接口的类必须为接口中定义的每个方法提供一个实现,或者从父类中继承它的实现。但是,一旦类库的设计者需要更新接口,向其中加入新的方法,这种方式就会出现问题。现实情况是,现存的实体类往往不在接口设计者的控制范围之内,这些实体类为了适配新的接口约定也需要进行修改。由于Java 8的API在现存的接口上引入了非常多的新方法,这种变化带来的问题也愈加严重。

2018-01-04 11:02:56 475

转载 Java8新特性10--其他类库的变化

Map public static void main(String[] arg) { Map map=new HashMap(); //如果key不存在返回默认值 System.out.println(map.getOrDefault("a",123)); map.put("a",123); //将lambd

2018-01-04 11:02:12 342

转载 Java8新特性4--方法引用

方法引用lambda方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下, 比起使用Lambda表达式,它们更易读,感觉也更自然。方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。它的基本思想是,如果一个Lambda代表的只是“直接调用这个方法”,那最好还是用名称来调用它,而不是去描述如何调用它。事实上,方法引用就是让你根据已有的方

2018-01-04 11:00:43 252

转载 Java8新特性6--使用集合流API

使用集合的流式API直接上代码了,常用api都有了,要点都在注释中苹果类:package java8.stream;/** * @author qiang.xie * @date 2017/5/4 */public class Apple { private int weight; private String color; private Stri

2018-01-04 10:58:38 244

转载 Java8新特性8--使用CompletableFuture构建异步应用

使用CompletableFuture构建异步应用Future 接口的局限性future接口可以构建异步应用,但依然有其局限性。它很难直接表述多个Future 结果之间的依赖性。实际开发中,我们经常需要达成以下目的:将两个异步计算合并为一个——这两个异步计算之间相互独立,同时第二个又依赖于第一个的结果。等待 Future 集合中的所有任务都完成。仅等待 Future 集合中最快结束

2018-01-04 10:57:14 469

转载 Java8新特性9--新的日期和时间API

新的日期时间处理API从Java8开始,原生的Java API中已经能提供高质量的日期和时间支持,java.time包中整合了很多Joda-Time的特性。LocalDate和LocalTime开始使用新的日期和时间API时,你最先碰到的可能是LocalDate类。该类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息。另外,它也不附带任何与时区相关的信息。你可以通过静态工

2018-01-04 10:55:55 1298

转载 java RMI原理详解

RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一

2017-12-28 10:11:18 231

转载 LongAdder

前言  最近在看到不少框架里面使用到了LongAdder这个类,而并非AtomicLong,很是困惑,于是专门看了LongAdder的源码,总结一下这两个的区别。AtomicLong原理  就像我们所知道的那样,AtomicLong的原理是依靠底层的cas来保障原子性的更新数据,在要添加或者减少的时候,会使用死循环不断地cas到特定的值,从而达到更新数据的目的。那么Long

2017-12-27 16:52:54 5187 1

转载 非阻塞同步算法与CAS(Compare and Swap)无锁算法

锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用

2017-12-27 16:43:19 288

转载 ThreadLocalRandom类原理

2.2、 并发包中ThreadLocalRandom类原理剖析ThreadLocalRandom类是JDK7在JUC包下新增的随机数生成器,它解决了Random类在多线程下多个线程竞争内部唯一的原子性种子变量而导致大量线程自旋重试的不足。本节首先讲解下Random类的实现原理已经它在多线程下使用的局限性,然后引入ThreadLocalRandom类,通过讲解ThreadLocalRandom的实

2017-12-26 16:17:16 10831 4

转载 Java8新特性7--使用Optional解决空指针问题

身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等已经将对在核心API中解决了这个问题。在我的前一篇文章中,介绍了Scala是如何解决了这个问题。

2017-12-14 11:13:32 981

转载 Java 字符串拼接效率分析及最佳实践

java连接字符串有多种方式,比如+操作符,StringBuilder.append方法,这些方法各有什么优劣(可以适当说明各种方式的实现细节)?按照高效的原则,那么java中字符串连接的最佳实践是什么?有关字符串处理,都有哪些其他的最佳实践?废话不多说,直接开始, 环境如下:JDK版本: 1.8.0_65CPU: i7 4790内存: 16G

2017-12-14 10:35:20 328

转载 lombok @EqualsAndHashCode 注解的影响

官方文档:@EqualsAndHashCode原文中提到的大致有以下几点: 1. 此注解会生成equals(Object other) 和 hashCode()方法。 2. 它默认使用非静态,非瞬态的属性 3. 可通过参数exclude排除一些属性 4. 可通过参数of指定仅使用哪些属性 5. 它默认仅使用该类中定义的属性且不调用父类的方法 6. 可通过callSu

2017-12-12 15:33:55 910

转载 RPC服务和HTTP服务对比

很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看

2017-11-28 10:03:55 243312 65

转载 spring相关注解

@Order 利用@Order控制配置类的加载顺序

2017-11-07 11:22:37 230

转载 cookie setSecure详解

在cas中或其他web开发中,会碰到安全cookie的概念,因为CAS中TGT是存放在安全cookie中的。下面是安全cookie 的理解:    Set-Cookie 的 secure 属性就是处理这方面的情况用的,它表示创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以绝对不会被窃听到。     在s

2017-11-06 16:35:24 5629 1

转载 Elasticsearch segments merge

这两周主要看了下 Elasticsearch(其实是Lucene)的 segments 的 merge 流程。事情起因是,线上的ES有些大索引,其中的segments 个数几十个,每个大小100M+,小 segments 若干,而遇到问题就是这些大的 segments 不再做 merge 了,除非强制进行forceMerge 操作,由于我们第一次ES上线,其实也不清楚这究竟是个问题还是本来 Luc

2017-11-06 11:01:07 2606

转载 深入理解spring中的各种注解

Spring中的注解大概可以分为两大类:1)spring的bean容器相关的注解,或者说bean工厂相关的注解;2)springmvc相关的注解。spring的bean容器相关的注解,先后有:@Required, @Autowired, @PostConstruct, @PreDestory,还有Spring3.0开始支持的JSR-330标准javax.inject.*中的

2017-11-06 10:04:32 216

转载 RPC与RMI的区别

1. RPC 不支持对象, 采用http协议2. RMI支持传输对象。采用tcp/ip 协议3. RMI只限于JAVA语言,RPC跨语言RPC和RMI的简单比较  在RMI和RPC之间最主要的区别在于方法是如何别调用的。在RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行, 但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就

2017-11-03 15:29:02 573 1

转载 Lombok使用

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法lombok 注解:    lombok 提供的注解不多,可以参考官方视频的讲解和官方文档。    Lombok 注解在线帮助文档:http://projectlombok.org/features/index.    下面介绍

2017-11-03 10:47:34 167

转载 Dubbo服务启动依赖检查

项目中存在服务之间存在循环依赖,启动时总是报错,通过修改启动检查check=false解决,下面是dubbo官网提供的启动检查文档。启动时检查Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭chec

2017-10-24 17:28:29 482

转载 dubbo线程池优化

dubbo默认提供了三种线程池,分别是 fixed 固定大小线程池,启动时建立线程,不关闭,一直持有。 cached 缓存线程池,空闲一分钟自动删除,需要时重建。 limited 可伸缩线程池,但池中的线程数只会增长不会收缩。(为避免收缩时突然来了大流量引起的性能问题)。

2017-10-23 14:38:11 5544 1

转载 分布式事务之说说TCC事务

在当前如火如荼的互联网浪潮下,如何应对海量数据、高并发成为大家面临的普遍难题。广大IT公司从以往的集中式网站架构,纷纷转向分布式的网站架构,随之而来的就是进行数据库拆分和应用拆分,如何在跨数据库、跨应用保证数据操作和业务操作的一致性、原子性,又成为需要解决的新的问题。从分布式事务的需求来源来看:1、跨数据库数据库拆分(水平、垂直)带来的分布式事务->保证跨库操作的原子性基于单个JVM

2017-10-22 22:38:25 184

转载 mysql的引擎myisam和innodb的区别

a)构造上的区别     MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义;.MYD (MYData)为数据文件;.MYI (MYIndex)为索引文件。     而innodb是由.frm文件、表空间(分为独立表空间或者共享表空间)和日志文件(redo log)组成。    b)事务上的区别      myisam不支持事务;而innodb支持事务。    c)

2017-10-22 18:03:20 207

转载 redis分布式锁

业务场景所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确。一些可能的实现刚才提到过,实现秒杀的关键点是控制线程对资源的争抢,根据基本的线程知识,可以不加思索的想到下面的一些方法: 1、秒杀在技术

2017-10-21 22:32:04 179

转载 TCP协议如何保证可靠传输

1、应用数据被分割成TCP认为最适合发送的数据块。 2、超时重传:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 3、TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。 4、校验和:TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的

2017-10-21 21:59:25 569 1

转载 nginx容灾

nginx的upstream目前支持5种方式的分配 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如: upstream bakend { server 192.168.0.14 weight=10; 

2017-10-21 14:10:16 2196

转载 服务器常见错误代码

一:500错误1、500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。2、500出错的可能性:  a、编程语言语法错误,web脚本错误  b、并发高时,因为系统资源限制,而不能打开过多的文件3、一般解决思路:  a、查看nginx、php的错误日志文件,从而看出端倪

2017-10-21 13:39:25 11911 1

转载 TreeSet实现原理

前言       首先明白TreeSet属于集的范围,所以它只能存放引用类型,不能用于基本数据类型,实现了set接口,所以它本身不能有重复的元素,当存入自定义的引用类型的时候就必须考虑到元素不可重复的这个特性,换句话说就必须实现Comparable接口(Comparable与Compared接口的区别),在TreeSet内部会自动调用存储的引用类型对象的实现的Comparable接口中的c

2017-10-20 17:06:10 2076

转载 dubbo工作原理,集群容错,负载均衡

dubbo主要核心部件Remoting:网络通信框架,实现了sync-over-async和request-response消息机制。RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能。Registry:服务目录框架用于服务的注册和服务事件发布和订阅。(类似第一篇文章中的点菜宝)dubbo架构Provider: 暴露服务的提供方。Consumer:调用

2017-10-20 15:36:05 456

转载 Lock 框架详解

我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题。本文以synchronized与Lock的对比为切入点,对Java中的Lock框架的枝干

2017-10-20 15:11:01 223

转载 线程本地变量ThreadLocal

首先说明ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递,这样处理后,能够优雅的解决一些实际问题,比如Hibernate中的OpenSessionInView,就是使用ThreadLocal保存Session对象,还有我们经常用ThreadLocal存放Connection,代码如:[java] view pla

2017-10-20 14:55:27 143

转载 JAVA多线程实现的四种方式

多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。 1、继承Thread类创建线程Thread类本质上是实现了Runnab

2017-10-20 13:59:04 174

转载 Java 并发工具包 java.util.concurrent 用户指南

1. java.util.concurrent - Java 并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着如何

2017-10-17 22:53:21 148

转载 ElasticSearch 倒排索引、分词

es使用称为倒排索引的结构达到快速全文搜索的目的。 一个倒排索引包含一系列不同的单词,这些单词出现在任何一个文档,对于每个单词,对应着所有它出现的文档。 比如说,我们有2个文档,每个文档有一个conteng字段。内容如下:“ The quick brown fox jumped over the lazy dog”“ Quic

2017-10-15 22:43:42 1402

转载 倒排索引

常规的索引是文档到关键词的映射:文档——>关键词但是这样检索关键词的时候很费力,要一个文档一个文档的遍历一遍。(这事不能忍~)于是人们发明了倒排索引~倒排索引是关键词到文档的映射关键词——>文档这样,只要有关键词,立马就能找到她在那个文档里出现过,剩下的事就是把她揪出来了~~~可能是因为将正常的索引倒过来了吧,所以大家叫他倒排索引,可我依然喜欢叫他反向索引~

2017-10-15 18:07:49 197

Java编程思想第四版完整中文高清版

对象入门、一切都是对象、控制程序流程、初始化和清除、类再生、IO系统。第四版完整中文高清版.pdf

2014-01-23

HTML5+从入门到精通.

《HTML5从入门到精通》中文学习教程.pdf

2014-01-23

HTTP协议中文版

HTTP协议中文版.pdf,协议参数,http消息

2014-01-23

Jquery源码解析

构建Jquery对象,Jquery的设计理念,Jquery源码解析

2014-01-23

云计算与Azure平台实战

云计算与Azure平台实战

2013-05-24

XFire_Web_Service应用.pdf

XFire_Web_Service应用.pdf

2013-01-06

ivr开发资料

jar包里面包括(中国电信全网声讯业务IVR流程编译器和编写手册.rar、流程示例.rar、网关开发资料.rar、sleedbg.rar、SMC操作手册(sp).doc、suntek.rar、编译环境+测试话机.rar、116平台业务上线流程工单(模板).doc、116业务流程开发规范.doc、116平台通用工单.doc、炫音系统业务开发指南.pdf、炫音系统业务网关开发接口.pdf)

2012-12-25

Java设计模式及案例

设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式帮助你做出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个显式类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮 助设计者更快更好地完成系统设

2012-12-06

visualvm_135最新版本

VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 Java 应用程序的详细信息。在 VisualVM 的图形用户界面中,您可以方便、快捷地查看多个 Java 应用程序的相关信息。

2012-12-06

全文检索所用jar包3.6版本

IKAnalyzer3.2.8.jar lucene-analyzers-3.5.0.jar lucene-core-3.6.1.jar lucene-highlighter-3.5.0.jar lucene-memory-3.5.0.jar

2012-12-05

空空如也

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

TA关注的人

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