自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(236)
  • 资源 (1)
  • 收藏
  • 关注

转载 设计模式在美团外卖营销业务中的实践

设计模式在美团外卖营销业务中的实践[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kw3bEFU6-1585027831030)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)...

2020-03-24 13:32:06 1818

原创 spring cloud config配置中心源码分析之注解@EnableConfigServer

spring cloud config配置中心源码分析之注解@EnableConfigServer基于spring-cloud-config-server-2.0.2.RELEASE代码spring cloud config的主函数是ConfigServerApplication,其定义如下:package com.liuwen;import org.springframework....

2020-02-23 11:41:38 3622 1

转载 Java动态追踪技术探究

引子在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“Debug一下吧。”“线上机器,没开Debug端口。”“看日志,看看请求值和返回值分别是什么?”“那段代码没打印日志。”“改代码,加日志,重新发布一次。”“怀疑是线程池的问题,重启会破坏现场。”长达几十秒的沉默之后:“据说,排查问题的最高境界,就是只通...

2019-12-08 19:16:34 1542

原创 Spring cloud zuul 路由原理

配置我们知道在SpringBoot中,第三方库在META-INF/spring.factories文件中指定自动配置文件。于是我们从spring-cloud-netflix-zuul-2.0.0.RC1.jar的spring.factories文件入手:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.sp...

2019-12-08 14:43:59 793

原创 Spring-cloud-Zuul架构解析

Zuul源码解析基于 Spring-cloud-netflix 2.0.4.RELEASE进行分析的。Zuul 架构图在zuul中, 整个请求的过程是这样的,首先将请求给zuulservlet处理,zuulservlet中有一个zuulRunner对象,该对象中初始化了RequestContext:作为存储整个请求的一些数据,并被所有的zuulfilter共享。zuulRunner中还有...

2019-12-07 20:05:56 202

转载 Spring Cloud —— Zuul 动态路由

前言Zuul 是Netflix 提供的一个开源组件,致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。也有很多公司使用它来作为网关的重要组成部分,碰巧今年公司的架构组决定自研一个网关产品,集动态路由,动态权限,限流配额等功能为一体,为其他部门的项目提供统一的外网调用管理,最终形成产品(这方面阿里其实已经有成熟的网关产品了,但是不太适用于个性化的配置,也没有集成权限和限流降级)。不...

2019-12-02 19:51:46 131

原创 Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not

1.版本不正确在检查mysql-connector-java.jar包版本时我发现自己引入的是8.0.11版本的,网上都是5.x的,瞬间感觉不妙了,因为版本问题真的让人头大。果不其然就是版本问题。有两种解决方法:1.退回到5.x版本,其他配置不变在这里插入图片描述2.修改jdbc.properties文件jdbc.driver=com.mysql.cj.jdbc.Driverjdb...

2019-12-02 16:29:57 603

翻译 使用飞行记录器监控Java Applications

1.Java 监控工具Java 不仅仅是一种编程语言,而是一个非常丰富的生态系统,它有很多工具。JDK 包含的程序,允许我们编译自己的程序,以及监视其状态和 Java 虚拟机在程序执行的完整生命周期内的状态。JDK 提供的的 bin 文件夹包含可用于分析和监视的以下程序:Java VisualVM (jvisualvm.exe)JConsole (jconsole.exe)Java M...

2019-11-28 14:22:51 1620 1

翻译 详解JMX

一、JMX的定义JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。这是官方文档上的定义,我看过很多次也无法很好的理解。我个人的理解是JMX让程序有被管理的功能,例如你开发一个WEB网站,它是在24小时不间断运行,那么你肯定会对网站进行监控,如每天的UV...

2019-11-28 14:19:49 135

翻译 GC运行超出内存限制

OutOfMemoryError: GC Overhead Limit Exceeded1.概述简而言之,当不再使用对象时,JVM 会负责释放内存;此过程称为垃圾回收 (Garbage Collection)(GC)。The GC Overhead Limit Exceeded ERROR是来自 java.lang.OutOfMemoryError 系列错误中的一种,表示资源(内存)耗尽。...

2019-11-28 14:15:26 1239

翻译 Java的内存泄露(Memory Leaks)

1.简介Java 的核心优势之一是在内置垃圾回收器(简称 GC)的帮助下实现自动内存管理。GC 隐式处理分配和释放内存,因此能够处理大多数内存泄漏问题。虽然 GC 有效地处理了大量内存,但它不能保证内存泄漏的万无一失。GC 相当聪明,但并非完美无瑕。即使有经验的开发人员写的程序,有时也会发生内存泄露。可能仍然存在应用程序生成大量多余对象的情况,从而消耗关键内存资源,有时会导致整个应用程序出现...

2019-11-28 14:13:22 358

翻译 捕获 Java 堆转储的不同方法

1.简介在本文中,我们将展示在 Java 中捕获堆转储的不同方法。堆转储是 JVM 中特定时刻内存中的所有对象的快照。它们对于解决内存泄漏问题并优化 Java 应用程序中的内存使用情况非常有用。堆转储通常以二进制格式 hprof 文件存储。我们可以使用 jhat 或 JVisualVM 等工具打开和分析这些文件。此外,对于Eclipse用户来说,使用MAT是很常见的。在接下来的部分中,我们...

2019-11-28 14:12:21 1840

翻译 详尽的Java垃圾回收

1.总览这个教程我们将看看详尽的Java垃圾回收。接下来,我们将介绍几个不同的实例,我们将了解可用的不同配置选项。此外,我们还将重点介绍如何解释详细日志的输出。要了解有关垃圾回收 (GC) 和可用不同实现的更多信息,请查看我们有关 Java 垃圾回收器的文章。2.Verbose GC 简介在调试和分析许多问题(尤其是内存问题时),通常需要打开详细的垃圾回收日志记录。事实上,有些人会认为,为...

2019-11-28 14:09:27 165

转载 美团Leaf源码——美团点评分布式ID生成系统

在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。概括下来,那业务系统对ID号的要求有哪些呢?全局唯一性:不能出现重...

2019-11-26 16:15:27 350

原创 百度 - UidGenerator源码解析

百度 - UidGenerator源码解析简介UidGenerator是Java实现的,基于Snowflake算法的唯一ID生成器。UidGenerator以组件形式工作在应用项目中,支持自定义workerId位数和初始化策略,从而适用于Docker等虚拟化环境下实例自动重启、漂移等场景。 在实现上,UidGenerator通过采用RingBuffer来缓存已生成的UID,并行化UID的生产和...

2019-11-26 16:06:13 490

原创 docker问题系列汇总

# docker top zookeeperError response from daemon: Container b0213136594a842291cc7e222d5eb6176a185dd97eb9476141c7ca8feb93813e is not running解决之道:docker start b0213136594a8 # docker run --na...

2019-11-25 18:55:15 220

原创 Docker系列:docker安装zookeeper

3.docker安装单机版的zookeeper# docker search zookeeper[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gozg499h-1574679316564)(C:\Users\HASEE\AppData\Roaming\Typora\typora-user-images\image-20191124192325867.png...

2019-11-25 18:54:13 274

原创 CentOS7安装Docker

1 、安装说明Docker支持以下的CentOS版本:CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本前提条件:目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系...

2019-11-25 18:53:23 224

转载 Leaf——美团点评分布式ID生成系统

在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。概括下来,那业务系统对ID号的要求有哪些呢?全局唯一性:不能出现重...

2019-11-25 15:20:51 120

转载 美团Leaf源码——美团分布式ID生成服务开源

Leaf是美团基础研发平台推出的一个分布式ID生成服务,名字取自德国哲学家、数学家莱布尼茨的一句话:“There are no two identical leaves in the world.”Leaf具备高可靠、低延迟、全局唯一等特点。目前已经广泛应用于美团金融、美团外卖、美团酒旅等多个部门。具体的技术细节,可参考此前美团技术博客的一篇文章:《Leaf美团分布式ID生成服务》。近日,Leaf...

2019-11-25 15:14:10 263

转载 美团Leaf源码——号段模式源码解析

前言分布式ID生成策略基本要求就是全局不重复,最好还能递增,长度较短,性能高,可用性强。关于相关的实现方案有很多,本文着重使用美团开源的分布式ID生成解决方案——Leaf。关于Leaf,美团官方的介绍文档主要如下,强烈建议阅读文章大致了解Leaf的工作流程与原理,这对本文后续的源码解析有很大的帮助。Leaf:美团分布式ID生成服务开源Leaf——美团点评分布式ID生成系统本系列Lea...

2019-11-25 15:09:56 437

转载 美团Leaf源码——snowflake模式源码解析

前言上一篇文章介绍了如何使用Leaf的号段模式生成分布式全局唯一id,参照下图我们简单总结一下。当我们部署Leaf集群时(图中是3个),每个节点起初都包含一个双 buffer,也就是双号段。当有请求过来时,每个节点都会去数据库查询按照初始的DB中的step去更新最大id,从而获取到一个号段,然后每个节点当第一个号段用到超过10%的时候再异步准备第二个号段。所以按照图中的理解可以认为左中右三个节点...

2019-11-25 15:07:35 567

翻译 发布-订阅设计模式(PUBLISH-SUBSCRIBE (PUB-SUB) DESIGN PATTER)

什么是发布-订阅设计模式?Publishers:创建主题消息的实体Subscribers:订阅主题消息的实体在基于主题的发布-订阅模式中,发布者使用主题标记每条消息,而不是引用特定的订阅服务器。然后,消息系统将消息发送给要求接收该主题消息的所有订阅者。发布者只关心创建原始消息,而不关心将为订阅者提供服务的任务留给消息传递基础结构(这就是模式所在的地方)。[外链图片转存失败,源站可能有防盗...

2019-11-23 17:31:11 1282

翻译 Redisson分布式锁的N种实现(Distributed Java Locks With Redis)

Redisson分布式锁的N种实现(Distributed Java Locks With Redis)[ https://dzone.com/articles/distributed-java-locks-with-redis ]What Is Distributed Locking?在多线程的项目中,多个线程可能会对同一个资源进行访问。然而,让所有线程同时访问资源,会出现竞争,bugs和其...

2019-11-22 16:16:42 707

原创 Redis常用命令

IP:127.0.0.1环境:centos7一、全局命令1、查询键keys * 查询所有的键,会遍历所有的键值,复杂度O(n)2、键总数dbsize 查询键总数,直接获取redis内置的键总数变量,复杂度O(1)3、检查键是否存在exists key 存在返回1,不存在返回04、删除键O(k)del key [key…] 返回结果为成功删除键的个数5、键过期expire k...

2019-11-22 16:15:51 144

原创 CentOS7中编译安装redis5.0

1.环境介绍CentOS7 (未安装Development Tools)2. 下载Redis5.0-rc3wget -P /usr/downloand redis-5.0-rc3.tar.gz https://github.com/antirez/redis/archive/5.0-rc3.tar.gz3. 解压redistar -zxvf redis-5.0-rc3.tar.gz...

2019-11-22 16:14:11 163

原创 redis实现分布式锁系列之三:应用自动化配置

新建工程redis-distributed-lock-starter-demo具体配置如下:pom.xml的配置:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch...

2019-11-22 16:11:12 157

原创 redis实现分布式锁系列之二:基于注解实现的分布式锁

这个项目的特色实现了四种策略模式:集群模式、主从模式、哨兵模式、单机模式1.新建一个工程redis-distributed-lock-starter好多类和**系列(一)**类似,这里主要讲解几点额外的:2.四种策略模式的实现RedissonConfigStrategy接口定义了4种策略模式实现的方法,具体的实现:子类实现这个接口即可。package com.snowalker.l...

2019-11-22 16:00:15 160

原创 redis实现分布式锁系列之一:基于读取properties文件的分布式锁

这个文章分为3篇:一、实现一个redis的分布式锁;二、基于分布式锁实现一个spring-boot-starter系列;三、spring-boot-starter的例子1.新建工程redis-distributed-lock-core此工程是基于单机模式的分布式锁,主要是基于redis的setnx命令实现的。pom.xml文件如下:<?xml version="1.0" enc...

2019-11-22 15:02:22 184

转载 Java多线程系列之J.U.C并发包概述

J.U.C包简介J.U.C并发包,即java.util.concurrent包,是JDK的核心工具包,是JDK1.5之后,由 Doug Lea实现并引入。整个java.util.concurrent包,按照功能可以大致划分如下:juc-locks 锁框架juc-atomic 原子类框架juc-sync 同步器框架juc-collections 集合框架juc-executors 执...

2019-11-20 10:52:55 164

原创 java多线程之Active Object模式--java.util.concurrent包

一、java.util.concurrent包与Acitve Object模式将使用java.util.concurrent包来编写一个与示例程序(Active Object模式)几乎具有相同功能的示例程序。二、示例程序1.示例程序类和接口一览表类和接口名内容说明Main.java测试示例程序行为的类MakerClientThread.java委托Active...

2019-11-19 20:51:30 153

原创 java多线程之Active Object模式

一、Active Object模式-接收异步消息的主动对象Active是主动的意思,因此ActiveObject就是主动对象的意思。所谓主动一般指有自己特有的线程,举例来说,java.lang.Thread类的实例就是一种主动对象。不过,在Active Object模式中出厂的主动对象可不仅仅有自己特有的线程,它同时还具备可以从外部接收和处理异步消息并根据需要返回处理结果的特征。Active...

2019-11-19 20:41:33 510

原创 java多线程之Thread-Specific Storage模式

一、Thread-Specific Storage模式Specific是特定的意思,Storage模式是储存柜的意思,因为所谓Thread-Specific Storage就是“每个线程特有的储物柜”“为每个线程准备储存空间”的意思。Thread-Specific Storage模式是一种即使只有一个入口,也会在内部为每个线程分配特有的储存空间的模式。二、关于java.lang.Thread...

2019-11-19 20:31:36 283

原创 java多线程之Two-Phase Termination模式

一、Two-Phase Termination模式该模式的名字直译是“分两阶段终止”的意思,它是一种先执行完终止处理再终止线程的模式。我们称线程在进行正常处理时的状态为“操作中”,在要停止该线程时,会发出“终止请求”,这样,线程不会突然终止,而是会先开始进行“打扫工作”,称为“终止处理中”,是线程终止的第一阶段。在“终止处理中”状态下,线程不会在进行正常操作,它虽然仍在运行,但是只会进行终...

2019-11-19 20:07:50 347

原创 java多线程之Future模式

一、Future模式Future的意思是未来、期货,假设有一个方法需要花费很长时间才能获取运行结果,那么,与其一直等待结果,不如先拿一张“提货单”,获取提货单并不耗费时间,这里的“提货单”我们就成为Future角色。二、示例程序在Thread-Per-Meaasge模式中,我们知道在每次发出请求时都创建一个线程的示例程序,其中,程序中没有返回值。如:new Thread() { ...

2019-11-19 19:52:21 356 1

原创 java多线程之Worker Thread模式(Thread Pool模式)

一、Worker Thread模式Worker的意思是工作的人,在Worker Thread模式中,工人线程Worker thread会逐个取回工作并进行处理,当所有工作全部完成后,工人线程会等待新的工作到来。Worker Thread模式也被成为Background Thread(背景线程)模式,另外,如果从保存多个工人线程的场所这一点看,我们也可以称这种模式为Thread Pool模式。...

2019-11-19 19:12:21 893

原创 java多线程之Thread-Per-Meaasge模式

一、Thread-Per-Meaasge模式例如:上司把工作交给下属:“能帮我打印一下这个文件吗?”,想这样的将工作委托给其他人的情况很常见,这个人把工作拜托给其他人后,就可以返回继续做自己的工作了。Thread-Per-Meaasge直译过来就是“每个消息一个线程”的意思,Message可以理解为命令、请求的意思,为每个命令或请求分配一个线程,然后由这个线程来执行处理,这就是Thread-P...

2019-11-19 18:55:22 455

原创 java多线程之Read-Write Lock模式

一、Read-Write Lock模式学生们正在看老师黑板上的板书,这时老师想擦掉板书,写新的内容,这时学生们说:老师,我们还没有看完,请先不要擦掉,于是老师就会等待大家都看完。当线程读取实例的状态时,实例的状态不会发生变化,实例的状态仅在线程执行写入的操作时才会发生变化。从实例的状态变化这个观点来看,读取和写入有着本质的区别。在Read-Write Lock模式中,读取和写入操作时分开的,...

2019-11-19 17:43:59 435

原创 java多线程之Producer-Consumer模式

一、Producer-Consumer设计模式Producer是生产者的意思,指的是生产数据的线程,Consumer则是消费者的意思,指的是使用数据的线程。生产者安全的将数据交给消费者,虽然仅是这样看似简单的操作,但生产者和消费者以不同的线程运行时,二者之间的处理速度就会引起差异。例如:消费者想消费数据,可生产者还没有生产出数据,或者生产者生产出了数据,可消费者还无法接受数据。Produce...

2019-11-19 17:26:48 810

原创 java多线程之Balking模式

一、Balking模式如果现在不适合执行这个操作,或者没有必要执行这个操作,就停止处理,直接返回–这就是Balking模式。所谓Balk,就是停止并返回的意思。Balking模式与Guarded Suspension模式一样,也存在守护条件,在Balking模式中,如果守护条件不成立,则立即中断处理。这与Guarded Suspension模式不同,因为Guarded Suspension模式...

2019-11-19 16:06:52 179

java设计模式+内存分析

最近的设计模式,可以直接下载。很好看的,实际操作,可以帮你很好的了解设计模式,另外帮助你进行开源框架的快速分析

2019-04-25

空空如也

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

TA关注的人

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