自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 一种基于Redis实现的分布式锁的思路

一种基于Redis实现的分布式锁的思路特性列表阻塞锁,当获取不到锁时,会阻塞当前线程,让出CPU执行权,当其他线程释放锁时,唤醒该线程继续参与锁竞争。自旋锁,当获取不到锁时,会自旋一定次数后,再将线程阻塞。获取到锁后设置有过期时间,防止应用宕机后无法释放锁。锁快过期时,会自动续租。TODO 释放锁时,检查锁是否被当前线程持有,避免将其他线程的锁释放。接口定义该接口是一个锁的通用定义,定义如下:public interface DistLock { void lock();

2021-09-24 21:30:55 424

原创 MySQL中的聚簇索引和非聚簇索引、回表和索引覆盖

首先需要知道的是MySQL中都是是用B+树来实现底层数据结构的。首先需要介绍一下B+树。B+树介绍如图所示就是一颗B+树,这里简单介绍一下B+树的结构和特点。图中浅蓝色的块称之为一个磁盘块,其中每个磁盘块中包含几个数据项(深蓝色块,也叫关键字)和指针(黄色块),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。真实的数据存在于叶子节点即3、5、9、10、13、15、28、29、36、60、75、79、90、9

2020-10-03 11:06:11 879 1

原创 python与java面向对象的比较

python与java面向对象的比较这篇文章主要是通过将python中面向对象的一些概念跟我比较熟悉的java进行类比,从而帮助自己更好的学习和理解python。所以以下内容主要以介绍python面向对象特性为主。关于类的定义关于类文件命名在java中规定类文件的名称必须跟文件中唯一的一个public类的类名一样,而在python中没有这个要求,保存python类的文件名与类名没有关系。...

2019-10-20 09:24:48 3219 1

原创 Java静态代理与JDK动态代理

Java静态代理与JDK动态代理代理模式分为静态代理和动态代理。所谓静态代理是指由程序员手动编写代理类或者由工具自动生成代理类,所以代理类的字节码是在编译期间生成的,并且可以看到对应的.class文件。而动态代理的代理类的字节码是在程序运行期间自动生成的,然后直接由classloader加载,也不会生成.class文件。定义接口如下:package cn.com.yeexun.proxy;...

2019-10-06 10:52:43 194

原创 6.使用zuul实现网关

前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个微服务框架已经完成了。我们还是少考虑了一个问题,外部的应用如何来访问内部各种各样的微服务呢?在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。...

2019-05-22 21:54:53 198

原创 5.配置中心

项目中一般都会有一些配置文件,例如数据库连接配置、redis连接信息等。在传统的项目中,通常将配置文件与源码放在一起打包部署到服务器上。但是在微服务架构中,,采用这种方式就会存在一些问题。为了保证服务的高可用,通常针对每一个服务都会启动多个实例,提供服务,通过负载均衡机制来将请求转发到多个实例中的一个上。如果需要修改配置文件,就需要将这个服务的所有的实例的配置文件都进行修改,一般每个实例都会部署在...

2019-05-22 21:28:31 126

原创 4.使用Hystrix实现熔断器功能并配置熔断器监控

熔断器Hystrix在Spring Cloud中使用了Hystrix 来实现断路器的功能。Hystrix是Netflix开源的微服务框架套件之一,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。没有加熔断器时,如果service-provid...

2019-05-04 12:33:08 204

原创 3.使用RestTemplate进行服务调用并实现负载均衡

之前我们已经通过Eureka实现了一个服务注册中心,并且在服务注册中心注册了一个服务。现在我们就来学习一下如何去调用注册中心中的服务。其实,在springcloud中,各个服务之间的互相调用就是远程调用,而远程调用有很多实现方法,比如:webservice调用、直接通过java的http类库(如HttpClient)进行http调用或者是远程方法调用。这里就介绍两种比较常见的调用方式:在代...

2019-05-04 12:21:37 1461

原创 2.创建服务的提供方

一般一个微服务系统,除了服务注册中心之外,还会有一些具体的服务,这些服务都会在注册中心注册。这些服务可以分为服务提供方和服务的消费方。服务的提供方和消费方并没有严格的界限,同一个服务既可以是提供方也可以是消费方。下面就介绍一下如何在springcloud中创建一个服务,并将其作为提供方向外提供服务。首先创建一个springboot web项目,在pom文件中添加以下依赖:<depend...

2019-05-04 12:10:14 216

原创 1.服务注册中心 Eureka

1.服务注册中心 EurekaEureka 是Netflix公司开源的一个产品,它提供了服务注册和服务发现的功能。是springcloud系统中的核心组件之一。这里需要说明一点,在基于springcloud的微服务系统中并不是只能使用Eureka作为注册中心。spring所做的工作是先制定一套统一的接口,我们都是基于这一套接口来进行编程。至于Eureka,spring对开源的Eureka进行了进...

2019-05-03 21:30:39 219

原创 Java多线程之CountDownLatch简介

Java多线程之CountDownLatch简介CountDownLatch类是java.util.concurrent包下的一个并发工具类。先了解一下这个类名的字面意思,countdown的意思是倒计时、倒数,latch意思是门闩、插销。在Java doc中对这个类的解释:A synchronization aid that allows one or more threads to w...

2019-04-21 08:35:44 160

原创 计算机网络之ip、子网掩码、网络号、主机号等概念解析

在工作中谈论到计算机网络时,有几个经常出现的术语,比如:ip、子网掩码、网段等等。之前对这些概念的理解都比较模糊,只知其大概意思,随着工作中遇到的网络问题越来越多,有必要详细理解一下计算机网络的基础知识了。这篇文章就先介绍几个计算机网络领域的专业术语。IP地址ip这个词是计算机网络中出现频率最高的了,甚至只要使用过电脑的人都知道这个词。IP地址全程是互联网协议地址(英文:Internet Pr...

2019-04-07 10:28:50 18250 3

原创 Oracle中用户(user)、模式(schema)、表空间(tablespace)的概念

Oracle中用户(user)、模式(schema)、表空间(tablespace)的概念Oracle数据库是开发中最常用的数据库之一,在使用过程中有几个常见概念,记录如下。用户(user)user在Oracle中的主要是用于身份验证,权限分配的一个标识。在连接数据库和操作数据库对象时就是通过用户进行身份和权限的验证。模式(schema)Oracle中的schema是若干个数据库...

2019-03-30 09:53:40 3634 2

原创 Java Lambda表达式简介

Lambda本文简单认识JDK8的重要新特性之一——Lambda表达式。 在JDK8之前,Java是不支持函数式编程的,所谓的函数编程,即可理解是将一个函数(也称为“行为”)作为一个参数进行传递。通常我们提及得更多的是面向对象编程,面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将行为作为一个参数进行传递)。在JavaScript中这是很常见的一个语法特性,但在...

2019-03-25 18:17:28 311

空空如也

空空如也

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

TA关注的人

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