自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不瘦十斤不换名字

记录一下吧

原创 数据结构与算法

三步精通一个领域

2020-05-30 15:53:15 51 0

原创 极客大学算法课-01

数据结构和算法是一个程序员的基本功,但在这方面一直是弱项,发毒誓学了几百遍但一直不得要领,所以报名了极客时间的算法大课,跟着谭超再从头到尾刷一遍,希望这次能有质的提升。 极客时间的这个课程,老师规定了每周的学习任务和作业任务,然后老师和助教会进行review,每周都要按时提交,对于加班狗来说却是有...

2020-05-21 00:47:02 103 0

原创 SpringCloud核心组件总结

前几篇写了spring cloud的几个核心组件的原理和一些代码实现,这篇通篇总结一下。 首先将了微服务和微服务架构的区别,然后明确了微服务架构中面临的主要挑战,紧接着引出了基于spring cloud的分布式微服务开发框架,及其中的核心组件及作用,包括eureka注册中心、ribbon&...

2019-12-28 16:01:02 67 0

原创 SpringCloud总结:Zuul

zuul是spring cloud提供的一个通用api网关组件,主要提供了服务理由、过滤器和负载均衡等功能,同时它也提供了比hystrix fallback factory粒度更粗的服务降级机制,下面就具体来看一下zuul的使用和原理。 使用zuul其实很简单,只需要一个@EnableZuulPr...

2019-12-27 16:04:39 61 0

原创 SpringCloud总结:Hystrix

Spring Cloud Hystrix也是spring团队对netflix的Hystrix的封装,主要提供了服务熔断和降级,同时还兼顾了限流的功能. Hystrix的最核心功能是服务熔断,那么为什么需要服务熔断呢? 在微服务架构下,往往一个前端的请求对应了后端的多个服务,而且有时服务的调用链会很...

2019-12-27 11:09:25 33 0

原创 SpringCloud总结:Feign&Ribbon

基于SpringCloud的分布式微服务系统中各个服务之间的调用时通过http协议来完成的,提到http协议,最先想到的就是ip+端口+资源路径的调用方式,但是这种调用方式并不符合微服务架构下的服务治理的要求,微服务架构中的服务治理是以注册中心为中心的,这种调用方式明显脱离了注册中心,此时Ribb...

2019-12-25 16:17:24 73 0

原创 SpringCloud总结:Eureka

文章目录Eureka的使用Eureka 架构相关配置自我保护机制Eureka源码 Eureka是Netfix开源的服务注册中心框架,Spring Cloud将其集成进Spring全家桶,实现了Spring Cloud的注册中心功能。 Eureka的使用 Eureka的使用非常简单,只要加入相关依赖...

2019-11-30 15:48:33 80 0

原创 基于docker搭建hadoop集群

目前线上环境都是传统的虚机,所以docker在日常开发中大部分是用来在本地搭建开发用的一些中间件比如redis、kafka啥的,不得不说,docker这个东西到目前没有感觉还是挺好的,最主要的是它比vm ware轻太多了,一般如果用vm ware的话,开四五台已经是上限了,但是如果用docker,...

2019-11-30 00:49:18 56 0

原创 Zookeeper 总结

文章目录简介paxos算法zab协议leader选举zookeeper与cap关系zookeeper中的节点zookeeper的java客户端zookeeper的使用场景 简介 Zookeeper最初是由雅虎开发,后来捐献给了apache。zookeeper是一个分布式协调服务,在很多分布式服务和...

2019-11-25 20:12:43 70 0

原创 阶段性总结第一篇

知识点总结 这段时间,对日常开发中用到的技术做了体系化的总结,包括Java基础、并发、JVM、集合,常用的开发框架Spring、Spring MVC、Mybatis、Dubbo、MySql、ElasticSearch、Kafka、Redis、Netty,也大概梳理了一些Spring Cloud,但...

2019-11-25 16:05:25 33 0

原创 ES 总结

文章目录搜索面临的问题ES的使用场景ES的基础原理概念说明一些rest api 搜索面临的问题 几乎每一个网站都会有全文检索功能,全文检索与传达的sql查询有很大的区别,sql查询一般是从结构化数据中查询指定的数据,而全文检索是从海量的非结构化数据中查询出匹配的数据,而且对查询速度的要求非常高,同...

2019-11-21 21:16:14 38 0

原创 Springboot整合第三方中间件

整合redis <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data...

2019-11-20 19:56:18 93 0

原创 一个轻量级的单点登录解决方案

会话状态管理是每个IT系统必不可少的一个组成部分,在集群架构或分布式架构下的会话管理是一个比较头疼的问题,一般采用的方案有session 同步,IP粘连和分布式session等,session同步指的是在每个服务器之间进行session数据的同步,这种方案在少量用户下没啥问题,但是一旦同时在线的用...

2019-11-19 18:50:11 34 0

原创 Kafka 总结

文章目录 kafka

2019-11-16 17:50:01 108 0

原创 Redis 总结

文章目录核心数据结构持久化策略集群架构常见问题一些使用上的主要事项 核心数据结构 持久化策略 集群架构 常见问题 一些使用上的主要事项

2019-11-13 17:03:02 25 0

原创 Jvm 总结

文章目录类加载器运行时数据区自动垃圾收集机制对象的分配策略JVM 调优 Java 虚拟机主要分为三个部分:类加载器、运行时数据区和执行引擎,其中类类加载器负责将类的字节码文件加载到内存中,运行时数据区存储jvm运行时产生的数据,执行引擎负责浮动程度的执行。 类加载器 类加载器就是我们经常说的Cla...

2019-11-10 17:05:07 38 0

原创 HashMap 总结

核心数据结构 在jdk 1.7中,核心数据结构是哈希表+链表,在jdk1.8中是哈希表+链表+红黑树,链表和红黑树主要是为了解决哈希冲突的问题,红黑树主要解决在哈希冲突比较严重的情况下链表的查询效率问题。 哈希表的初始容量为16,加载因子默认为0.76=5。 初始容量 在哈希表初始化时,有这样一段...

2019-11-09 23:12:31 20 0

原创 Java并发 总结

Java线程基础

2019-11-05 22:52:43 47 0

原创 深入浅出TCP三次握手四次挥手

每每想起TCP三次握手这个问题,就会陷入如下的困惑: var forget = ? while(forget) { 百度/Google } 而重点在于forget永远等于true,无情的消耗着我这颗只有一核的cpu,好像只有把脑子转爆才能跳出这个该死的循环。 但屋漏偏逢连夜雨,后台又...

2019-11-05 10:13:16 20 0

原创 Spring 总结

文章目录????简介????BeanFactory????Spring源码-初始化BeanDefinition????Spring源码-对象初始化&依赖注入????Spring源码-AOP&事务????Spring应用????SpringMVC源码分析????SpringMVC应用...

2019-11-01 22:38:23 33 0

原创 系统架构 总结

最近一直在回顾和总结以往开发过程中用到的一些技术,例如redis、dubbo、kafka、zookeeper、spring、mybatis等等,发现以往对这些技术的理解仅限于使用方式和技术实现细节上,在脑海中一直无法完整的把这些技术串联起来,也不能很好的在实际场景中,根据不同的业务需求来做出技术选...

2019-10-31 20:14:48 28 0

原创 Netty总结

a

2019-10-27 14:53:26 58 0

原创 Apache Dubbo总结

文章目录????简介????架构演进????理解RPC与SOA????dubbo架构简介 ????简介 目前的工作主要是做一些业务功能的开发,涉及到的系统架构以all-in-one的单体架构为主,也少量涉及分布式系统,对于涉及到的分布式系统,几乎都是以dubbo为基础构建的,日常也主要是对其进行维...

2019-10-21 21:30:12 289 0

原创 MySql总结

文章目录sql的类型mysql锁事务隔离界别索引mysql逻辑架构物理存储结构慢查询sql设计优化sqm语句优化分库分表读写分离 sql的类型 mysql锁 事务隔离界别 索引 mysql逻辑架构 物理存储结构 慢查询 sql设计优化 sqm语句优化 分库分表 读写分离 ...

2019-09-10 23:18:40 46 0

原创 面试整理-Dubbo

文章目录消费端直连服务端配置注册中心管控平台关闭服务检查多版本与服务分组多协议支持负载均衡容错策略服务降级超时与重试声明式缓存服务延迟暴露源码配置解析服务暴露服务引用SPI原理 消费端直连服务端 服务消费端配置 <dubbo:application name="consumer&q...

2019-09-10 22:59:23 36 0

原创 Java并发-再探JMM

Java内存模型 个人理解,Java内存模型应该是Java并发编程中最难理解的一个概念之一。由于最近准备换工作,所以,按照惯例有复习了一下Java并发相关的知识(《Java并发编程的艺术》以及极客时间王宝令老师的《Java并发编程实战》),在复习的过程中,我发现《Java并发编程的艺术》中介绍JM...

2019-08-21 23:11:28 68 0

原创 数据结构与算法-AVL树

AVL树实际上是为了解决二分搜索树在极端情况下退化成链表的问题。AVL树通过自动调节左右子树的高度可以保证查找时间复杂度在O(logN)。 在AVL树中,新增节点的默认高度是1,新增节点的父节点默认高度是2,以此类推。左子节点的高度与右子节点的高度差成为平衡因子。在AVL树中,要求所有节点的平衡因...

2019-08-21 18:24:35 35 0

原创 数据结构与算法-二叉搜索树

描述 二叉搜索树的主要目标是优化链表的搜索效率。在链表中查找一个元素的时间复杂度为O(N),在二叉搜索树中查找一个元素的时间复杂度则为O(logN)。 在二叉搜索树中 左子节点的值小于根节点的值 右子节点的值大于根节点的值 我个人理解时,把二分搜索树理解为二分查找。 对于二叉搜索树的操作主要包...

2019-08-21 14:03:02 70 0

原创 数据结构与算法-堆

堆的特点 堆是一棵完全二叉树 父节点大于子节点 堆的实现 package geektime.sort; import java.util.ArrayList; import java.util.List; // 大顶堆 public class MaxHeap<E extends C...

2019-08-20 23:16:41 40 0

原创 数据结构与算法-哈希表

文章目录数组和链表的特点哈希表哈希函数解决哈希冲突链地址法开放地址法 数组和链表的特点 数组支持随机存取; 分配数组需要连续的内存空间; 链表不支持随机存取; 链表不需要连续的内存空间; 哈希表 由于数组和链表具有各自的优缺点和适用场景,所以为了进一步提高数据的读写性能,哈希表就诞生了,即哈希表就...

2019-08-18 19:21:01 75 0

原创 Spring源码分析

文章目录为什么要看Spring源码如何看源码Spring中的IoC容器BeanFactoryBeanDefinitionSpring容器的初始化流程IoC容器的使用容器初始化入口解析&amp;注册BeanDefinitionBeanDefinitionReader继承结构总结一下Bean的...

2019-02-06 17:52:01 1099 1

原创 Scala-快学sala

第五章 /** * 类: * 类的构造方法和类定义混合在一起 * var字段在编译时默认生成getter/setter方法 * val字段在编译时默认生成getter方法 * 可以自定义getter/setter(名称符合规范即可) * private[this]定义对象私有域 ...

2018-07-24 22:35:01 172 0

原创 Java-JVM内存区域划分

个人理解记录 程序计数器:线程私有的内存区域,每个线程在执行时都有自己的程序计数器,主要作用是记录当前线程执行的字节码的行号,在cpu进行线程切换/恢复时,使程序能够恢复到正确的位置执行,它是内存区域中唯一一块不会抛出异常的。 虚拟机栈:线程私有的内存区域,是方法调用的抽象,每个方法调用对应一...

2018-07-22 09:22:18 112 0

原创 Java-JVM类加载过程

个人理解记录 jvm的类加载采用双亲委派模型,当需要加载一个类时,首先交由父类加载器去加载,只有当父类加载器无法加载时,子类加载器才去加载,这种机制可以有效避免重复加载,保证jvm的安全性。 类加载器主要分为三种,bootstrap类加载器,负责加载java核心类库,extclassloade...

2018-07-22 09:21:20 143 0

原创 Java-Lock/Condition原理

个人理解记录 在传统的synchronized中,可以通过wait/notify/notifyAll进行等待通知操作,但synchronized只提供了一个同步队列和一个等待/通知队列,Lock则提供了一个同步队列和多个等待/通知队列模型。 Condition对象是从Lock中获取,其返回的实...

2018-07-22 09:20:02 1061 0

原创 Java-读写锁原理

个人理解记录 J.U.C提供了一个ReentrantReadWriteLock读写锁,这个读写锁也是基于AQS实现的,在获取读锁时,如果写锁以及被获取,那么获取读锁的线程将被挂起,在获取写锁时,如果存在读锁或者写锁切当前线程不是获取写锁的线程,那么获取读锁的线程也会被挂起。 因为读写锁时基于A...

2018-07-22 09:18:52 105 0

原创 Java-Lock超时锁和可中断锁原理

个人理解记录 超时锁的基本原理与独占锁基本相同,不同之处在于“超时”,在调用doAcquireNanos时,首先记录下调用方法的时间,然后尝试获取锁,如过获取成功则直接返回,如果获取失败,判断超时时间是否为0,如果是,则时间超时,返回false,如果不是,则获取当前时间-进入方法的时间,然后在用...

2018-07-22 09:17:50 3329 0

原创 Java-Lock独占锁与共享锁原理

个人理解记录 ReentrantLock基于aqs实现,他的基本原理是aqs的status为0时表示锁被占用,为1时表示锁被释放。ReentrantLock在使用时需要显式的获取和释放锁,一般用try finally来实现,相对于synchronized,reentrantlock提供了功能更强...

2018-07-22 09:15:22 6638 3

原创 Java-AQS

个人理解记录 aqs是juc包的基础类,它向上层组件提供基础的同步服务。 aqs基于一个状态变量,一个同步队列和一组状态操作和一组同步方法组成。基本的原理是通过同步操作实现同步元语,如果获取状态失败,则将当前线程构造成一个node节点后利用cas加入到同步队列的尾部并挂起,每个节点包括当前线程...

2018-07-22 09:08:19 1353 0

原创 Java-volatile

个人理解记录 volatile可以理解为一个轻量级的synchronized,它主要用来修饰变量,用来保证在多线程环境下变量只对不用线程的可见性,基于jmm的抽象内存模型,volatile变量可以保证原子操作结果能够及时的从线程本地内存刷新到主内存,并对其他线程立即可见。 从原理角度看,被vo...

2018-07-22 09:07:10 74 0

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