logo头像
Snippet 博客主题
单例模式-Spring单例实现原理分析

单例模式-Spring单例实现原理分析

在Spring中,被@Scope注解修饰Bean默认是单例模式的,即只有一个实例对象,多次获取Bean会拿到同一个对象. 单例注册表Spring采用单例注册表的特殊方式实现单例模式.首先自己写个单例注册表.我们可以通过Map缓存单例对象,实现单例注册表.值得注意的是,采用ConcurrentH...

线程切换导致ThreadLocal数据丢失分析

线程切换导致ThreadLocal数据丢失分析

最近在使用Spring Cloud过程中,经常会遇见线程隔离(切换).导致ThreadLocal数据丢失.例如调用其他服务获取不到Threadlocal没有数据,服务之间传递请求头传递失败.通过查阅相关文档才发现:用Hystrix实现断路器,Zuul中默认使用的是信号量,其他默认都是线程隔离....

使用Jenkins进行持续集成

使用Jenkins进行持续集成

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 安装Jenkins首先我们去Jenkins官方网站下载最新的部署包(.war):Jenkins.因为我是在Linux平台部署,需要注意的是...

浅谈匿名函数,Lambda和闭包(Closure)

浅谈匿名函数,Lambda和闭包(Closure)

几乎所有的主流编程语言都对函数式编程有支持,我所用过的比如Java8的Lambda表达式,JavaScript和Groovy语言的闭包(Closure)等,其他的类似于Object-C的block,python的Lambda和C++11,看到这些,我都有点眩晕想吐的感觉. 匿名函数,Lambd...

ES6新的数据类型-generator

ES6新的数据类型-generator

新的数据类型-generatorgenerator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次.ES6定义generator标准的哥们借鉴了Python的generator的概念和语法.我们先复习函数的概念。一个函数是一段完整的代码,调用一个...

箭头函数

箭头函数

箭头函数ES6标准新增了一种新的函数:Arrow Function(箭头函数)。为什么叫Arrow Function?因为它的定义用的就是一个箭头:12var fn = x => x * x;alert(fn(5)); //25 上面的箭头函数相当于:1234function (x) ...

闭包

闭包

函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个对Array的求和。通常情况下,求和的函数是这样定义的:123456function sum(arr) { return arr.reduce(function (x, y) &#123...

高阶函数

高阶函数

高阶函数概述高阶函数英文叫Higher-order function。那么什么是高阶函数?JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。一个最简单的高阶函数: 12345functi...

JS方法

JS方法

对象的方法在一个对象中绑定函数,称为这个对象的方法。在JavaScript中,对象的定义是这样的:1234var xiaoming = { name: '小明', birth: 1990}; 但是,如果我们给xiaoming绑定一个函数,就可...