自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 谈谈微服务限流算法的几种实现

保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。为什么需要限流按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事)因为某个热点事件(微博热搜)竞争对象爬虫恶意的刷单这些情况都是无法预知的,不知道什么时候会有10倍甚至20倍的流量打进来,如果真碰上这种情况,扩容是根本来不及的

2020-08-05 17:09:45 964

转载 Java虚拟机中垃圾回收器

以hotpot为例Serial收集器Serial收集器是最基本、发展最悠久的收集器。它是一个单线程的收集器,这不仅仅意味着它只使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停所有其他的工作线程,直到它收集结束。目前它依然是虚拟机运行在Client模式下默认的新生代收集器。它的优势在于相比其它单线程收集器而言它更简单高效,因为对比限定单个CPU的环境来说,它由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集下效率。而在用户的桌面应用场景中,分配给虚拟

2020-06-22 12:35:01 230

原创 CMS垃圾回收器工作过程

常见垃圾回收器从分代算法到不分代Serial 支持几十兆内存Parallel算法支持几个GCMS支持几十GG1支持上百G(Garbage First) 逻辑上先分区,物理上不分区,然后优先清理垃圾比较多的地方ZGC Shanandoah —4T 逻辑和物理上都不分代查询系统中使用的垃圾回收器命令:java -XX:+PrintCommandLineFlags -version默认parallelGC=PS+PO一般用于老年代的垃圾回收初始标记——>并发标记——》重新标记——》

2020-06-19 17:05:30 908

原创 Java对象的创建过程

1.类加载检查:虚拟机遇到一条new指令时,首先先去检查这个指令的参数是否能够在常量池中定位到这个符号的引用,并且检查这个符号引用的代表类是否被加载过、解析过和初始化过。如果没有,那必须先执行相应的类加载过程。2.分配内存:在类加载检查通过后,接下来虚拟将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来。分配方式...

2020-06-19 08:48:49 209 1

原创 使用线程池好处?什么情况下应该使用多线程

 池化技术现在已经屡见不鲜了,线程池,数据库连接池,http连接池都是对池化技术的应用,池化技术的思想主要是为了减少每次获取资源的消耗,提高资源的利用率。 这里借用《JAVA并发编程的艺术》中提到的线程的好处来说下降低资源消耗:通过重复利用已经创建的线程,降低创建线程和销毁线程的损耗。提高响应速度:当任务到达时,不需要等待线程的创建就可以直接执行任务。提高线程的可管理性:线程是稀缺资源,...

2020-04-03 11:32:04 940

原创 ThreadLocal内存泄露问题?为什么会发生内存泄露

ThreadLocal上的变量,实际上市存放在ThreadLocalMap上,ThreadLocalMap类似于Map的数据结构ThreadLocalMap中的key是ThreadLocal对象,是弱引用,但是value是强引用,如果ThreadLocal没有被外部强引用的话,在垃圾回收的时候key就会被垃圾回收清理掉,而value就不会被清理掉,这样一来,ThreadLocalMap里面就会出...

2020-04-03 10:59:20 289

转载 探究HashMap线性不安全(二)——链表成环的详细过程

探究HashMap线性不安全(二)——链表成环的详细过程

2020-04-02 16:57:05 143

原创 ConcurrentHashMap 和 Hashtable 的区别

ConcurrentHashMap 和 Hashtable 的区别 主要体现在实现线程安全的方式上不同。1.底层数据结构:JDK1.7的ConcurrentHashMap 底层采用的是分段的数组和链表实现,JDK1.8之后数据 +链表/红黑二叉数。Hashtable 底层采用的是数据+链表,数组是HashMap的主体,链表则是为了解决哈希冲突而存在的;2.实现线程的安全方式:在JDK1....

2020-04-02 16:53:30 1807

原创 ArrayList 和 Vector 的区别?为什么要用Arraylist代替Vector?

Vector 类中所有的方法都是同步的,可以由两个线程安全的访问同一个Vector对象,但是一个线程访问Vector 的话就会在同步操作上耗费大量的时间。ArrayList 不是同步的,所有在不需要保证线程安全时建议使用ArrayList 。...

2020-04-02 09:40:15 1478

原创 hashCode 和 equals区别和联系

面试官可能会问你”你重写过hashcode 和 equals 么?为什么重写 equals 的时候必须重写hashCode方法 ?以“HashSet 如何检查重复”为例子来说明为什么要有 hashCode:当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的 ha...

2020-04-01 20:11:38 295

原创 String StringBuffer和 StringBuilder 的区别?String 为什么是不可变的

1.可变性String类中使用final关键字修饰字符数组来保护字符串,所以是String对象是不可变的。StringBuffer 和 StringBuilder 没有使用final修饰,所以是可变的。2.线程安全性String 对象是不可变的,可以理解为常量,所以是线程安全的StringBuffer 对方法加了同步锁,或对调用的方法加了同步锁,所以是线程安全的。StringBui...

2020-04-01 16:55:38 244

原创 Java和C++的区别

1.都是面向对象的语言,都支持封装,继承和多态。2.Java不提供指针来访问内存,程序内存更安全。3.Java的类是单继承的,C++支持多重继承;但Java接口可用多继承。4.Java有自动内存管理机制,不需要程序员手动是释放内存。...

2020-04-01 15:32:47 130

原创 数据库设计原则

数据库设计:1.需求分析明确用户需求,到底要做什么?2、概念模型设计对用户需求进行综合,抽象和归纳,最终通过E-R模型表示。E-R模型基本元素:A、实体 学生B、属性 姓名C、键码 身份证号D、关系 多个实体之间的关系,一对多,多对多,多对一。3、逻辑模式设计4、数据库实施5、数据库运行和维护。...

2020-03-11 16:36:34 93

原创 Mysql中时间格式转换

DATE_FORMA T(date, format) 根据格式串format 格式化日期或日期和时间值date,返回结果串。可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:%S, %s 两位数字形式的秒( 00,01, . . ., 59)%i 两位数字形式的分( 00,01, . . ., 59)%...

2019-12-26 12:24:13 264

原创 bug问题

int类型和Integer类型不能用=来判断 是否相等

2019-11-20 11:33:02 114

原创 Adobel photoshop7的序列号

1045-1380-6674-5614-0950-9671

2019-10-31 11:54:18 520

原创 Dubbo 的 spi 是怎么实现的?

spi是什么?  简单来说spi就是service provider interface,比如你有三个接口,现在这个接口有三个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这个时候就需要spi了,主要根据指定的配置或默认配置,去找对应的实现类加载进来,然后用这个实现类的对象。举个例子  有一个接口A,A1/A2/A3分别是三个实现类,通过配置,接口A=A2,那么在系统运行的时候...

2019-08-23 20:53:38 169

原创 Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

Dubbo知识点Dubbo工作原理:服务注册,注册中心,消费者代理通讯,负载均衡;网络通信、序列化:Dubbo协议,长连接、NIO、hessian序列化协议;负载均衡策略、集群容错策略、动态代理策略:Dubbo跑起来的时候一些功能是如何运转的?怎么做负载均衡?怎么做容错?怎么动态代理?Dubbo SPI机制:如何基于SPI机制对Dubbo扩展。Dubbo负载均衡策略:random...

2019-08-19 20:00:06 315

原创 Dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?

序列化,就是把数据结构或者是一些对象,转换为二进制串的过程,而反序列化是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。dubbo 支持不同的通信协议dubbo 协议默认就是dubbo协议,单一长连接,底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC。使用的场景是:传输数据量小(每次请求在100kb),但是并发量很高。为...

2019-08-17 00:17:36 270

原创 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?

dubbo 工作原理第一层:service 层, 接口层,给服务的提供者和消费者提供实现。第二层:config 层, 配置层,主要是对Dubbo进行配置的。第三层:proxy 层, 服务代理层,无论是consumer还是provider,dubbo都会给你生成代理,代理之间进行网络通信。第四层:registry 层, 服务注册层,负责服务的注册和发现。第五层:cluster 层...

2019-08-16 23:38:07 421

原创 java有自己的内存回收机制,但为什么还存在内存泄漏的问题?

1.既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢?这个问题,我们需要知道 GC 在什么时候回收内存对象,什么样的内存对象会被 GC 认为是“不再使用”的。Java中对内存对象的访问,使用的是引用的方式。在 Java 代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间。在 Java 程序中,这个引用变量本身既...

2019-08-13 20:57:54 2596

转载 服务注册与发现服务:Eureka与ZooKeeper的区别

著名的CAP理论指出,一个分布式系统不可能同时满足C(consistence 一致性),A(applicability 可用性),P(Partition分区容错性),由于分区容错性在分布式系统中是必须要考虑的,因此我们只能造C和A之前进行权衡。在此,zookeeper保证的是CP,eureka保证的是AP。Zookeeper保证CP    当注册中心查询服务列表时,我们可以容忍注册中心返回的...

2019-08-13 20:19:50 293

转载 比较spring cloud和dubbo,各自的优缺点是什么

一.两者的模块组成:1、Dubbo主要分为服务注册中心,服务提供者,服务消费者,还有管控中心;2、相比起Dubbo简单的四个模块,SpringCloud则是一个完整的分布式一站式框架,他有着一样的服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,以及服务追踪等;二.在性能上来说由于Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以H...

2019-08-13 15:42:04 310

原创 谈谈你对SpringBoot和SpringCloud的理解?

SpringCloud是Spring为微服务架构思想做的一个一站式实现。  从某种程度可以理解为,微服务是一个概念、一个项目开发的架构思想。SpringCloud是微服务架构的一种java实现。SpringCloud是基于SpringBoot的一套实现微服务的框架。  为微服务体系开发中的架构问题,提供了一整套的解决方案,它提供了微服务开发所需要的配置管理、服务发现、断路器、智能路由、微代理...

2019-08-12 17:19:30 5850

转载 微服务的优缺点

最近一段时间以来,社区中围绕着微服务产生了很多争论,也充斥着大量的宣传。过去的 10 年间,我们已经实现了很多笨重的 SOA 解决方案,微服务是业界期待已久的解决方案么?或者说微服务要比整体解决方案更加简单?在讨论这些话题之前,我们最好先对微服务下个定义。在题为微服务的文章中,作者 James Lewis 与 Martin Fowler 是这样定义微服务架构风格的:开发单个应用作为一系列小型...

2019-08-12 16:46:53 159

转载 微服务技术栈有哪些

2019-08-12 16:01:43 1159

转载 微服务之间是如何独立通信的?

微服务通信机制  系统之间各个服务是可以独立部署,是松耦合的。每个服务仅关注于完成一个任务并很好的完成该任务。围绕业务能力组织服务,自动化部署,智能端点,对语言和数据的去中心话控制。将组建定义为可被独立替换和升级的软件单元。以业务能力为出发点组织服务的策略。倡导谁开发谁运营的开发运维一体化方法。RestFul Http协议是微服务架构中最常用的通讯机制。每个微服务可以考虑采用最佳微...

2019-08-12 15:58:37 12435 1

原创 分库分表

单表数据量太大,SQL查询慢怎么办?1.从sql入手2.从数据库入手加索引(不是越多越好)尽量多考虑使用数值型尽量多考虑使用定长而非变长分库分表为什么要分库分表?常用的切分方案根据其切分规格的类型,可以分为三种切分模式:A:垂直切分(纵向切分)按照不同的表(或Schema)来切分到不同的数据库(主机)之上。B:水平切分(横向切分)根据表中不同的数据逻辑关系,将同一表...

2019-08-12 12:46:52 117

原创 Spring Boot学习

程序入口:main方法Spring Boot中通用的约定:1.注解扫描的包目录basePackage为启动类main函数入库所在的包路径2.配置文件约定是classPath目录下的application.yml或者application.properties3.web开发的静态文件放在classPath,访问的顺序依次是:/META-INF/resources–>resources...

2019-08-12 09:32:29 99

原创 join,left join区别及使用过程中遇到的问题

一、概念:把left join左边的表的记录全部找出来。系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录。最后形成你的结果。进行左连接时,就有涉及到主表、辅表,这时主表条件写在WHERE之后,辅表条件写在ON后面。二、图解INNER JOIN 关键字在表中存在至少一个匹配时返回行。LEFT JOIN 关键字从左表(table1)返回所有的行,即...

2019-08-09 15:01:42 1490 1

原创 容错机制及相关配置

常用容错模式:容错理念:图片来源:极客时间

2019-08-02 15:31:34 571

原创 Spring Cloud 及其相关组件的主要配置详解

Spring Cloud Eureka 服务器主要配置项Spring Cloud Eureka主要客户信息配置Spring Cloud Eureka 主要实例级别配置Spring Cloud Ribbon主要配置项图片来源:极客时间...

2019-08-01 17:38:02 257 1

转载 Mysql中使用group by遇到的问题

今天预发环境上报了一个错看了下日志,是下面的sql报了错SELECT p.* FROM out_warehouse_plan p WHERE p.is_delete = 0 AND p.plan_code LIKE 'FH%'GROUP BY p.plan_code ORDER BY p.id DESC;看了老半天,没看出sql有什么问题把sql放在Navicat中...

2019-07-30 19:12:38 1038

转载 Redis哨兵机制

Redis哨兵机制一. Sentinel介绍‘’  1.Sentinel,中文为哨兵,是Redis集群架构中一个非常重要的组件。  2.主要功能:    1.集群监控   负责监控主从服务器进程是否正常工作    2.故障转移(failover)  如果master宕机,会自动从slave中选举出新的master,进行主从自动切换。    3.配...

2019-07-29 21:12:25 181

原创 Redis主从架构

单机的Redis一般能够承受的QPS一般是上万到几万不等,对于缓存来说,一般都是用于支撑高并发的。因此架构做成主从架构(matser-slave),一主多从,主负责写,并且将数据复制到其他的slave节点,salve负责读。所以的毒请求都走从节点,这样就可以实现水平库哦哦让,实现高并发。redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑读高...

2019-07-26 21:53:32 100

原创 redis如何保证高并发

redis单机能承担多高并发?如果单机扛不住如何扩容抗更多并发?redis挂了之后如何保证redis的高可用?这些都是面试经常被问到的一些问题  redis实现高并发主要依靠主从架构,一主多从,一般来说很多项目就够了,单机主要用来写数据,单机的话几万QPS,多从主要用来查询数据,多个实例可以提供每秒十万左右的QPS。  如果实现高并发的同时,容纳大量数据,那么就要redis集群,使用redi...

2019-07-26 17:28:27 954

原创 redis的数据结构

redis 都有哪些数据类型?分别在哪些场景下使用比较合适?redis 主要有以下几种数据类型:stringhashlistsetsorted setstring这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。set name ccxget namehash这个是类似 map 的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象...

2019-07-25 21:57:30 83

原创 JAVA BigDecimal使用中遇到的问题

BigDecimal使用中遇到的问题,后来在网上找了解决方案,完美解决,记录下BigDecimal sumAmount = new BigDecimal(0); sumAmount.add(new BigDecimal(5000)); System.out.println(sumAmount);输出结果为0。查资料后才知道,要这样写才行: BigDecimal sumAmoun...

2019-07-23 20:29:42 1058

原创 Spring按类型自动装配注入数组、集合、Map

Spring按类型自动装配注入数组、集合、Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入。以下面这段代码为例:@Componentpublic class WmsProtocolFactory { @Autowired private Map<String, WmsRemoteProtocol> mediaPlay...

2019-07-22 18:54:51 875

原创 CAS的实现

CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。这样说或许有些抽象,我们来看一个例子:1.在内存地址V当中,存储着值为10的变量。2.此时线程1想要把变量的值增加1。对线程...

2019-07-19 21:56:50 1830

空空如也

空空如也

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

TA关注的人

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