自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring Cloud学习(2)-----Eureka

思维导图:引言 Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能. 服务治理是微服务架构中最为核心和基础的模块,他主要实现微服务实例的注册与发现.为什么我们需要服务治理来管理微服务实例呢?当微服务实例较少时,我们可以通过某些静态配置...

2020-02-13 09:11:10 237

原创 Spring Cloud学习(1)-----基础知识

思维导图:引言: Spring Cloud学习系列是我对<<Spring Cloud微服务始实战>>一书的读书笔记.本片文章则是第一章:基础知识的归纳总结. 本文主要是通过对比单体服务和微服务的优缺点来说明微服务相关基础知识.最后会介绍微服务的普遍性的实现Spring Cloud.一.系统架构 此处的系统架构指的是整个系统的服务架构...

2020-02-03 22:18:49 237

原创 深入理解计算机系统(1)-----计算机系统漫游

思维导图:引言: 深入理解计算机系统系列是我看<<深入理解设计系统>>的读书总结.本章既为开篇的第一章-计算机系统漫游.其主要内容是从整体上介绍什么是计算机系统.例如:计算机系统由那些部分构成 计算机系统是如何管理硬件的 计算机系统是如何执行程序代码的一.计算机系统的组成 计算机系统是由硬件和系统软件组成的,他们共同工作来运行引用...

2019-11-06 08:31:15 954

原创 并发编程学习(18)-----第四部分-高级主题

引言: 本文主要是对14,15,16,17篇文章进行总结。总结: 高级主题这个部分各个章节的关联性不打,所以没能画出具有逻辑关系的思维导图来,接下来我们对着个部分的四个章节进行概要的简单回顾。 《显式锁》这章介绍了除synchronized之外的加锁方式,即显式锁。但是显式锁在java中的定位不是用于替代synchronized,而是作为其功能的补充。显示锁Loc...

2019-10-06 20:14:35 170

原创 并发编程学习(17)-----Java内存模型

思维导图:引言: 在前面的文章中,我们刻意的避免了对java内存模型JMM的介绍。实际上,正是java内存模型决定了对java代码的重排序。重排序实际就是多个线程对变量改动的不可见的原因,因为在代码逻辑上A线程成的操作在B线程的操作之前进行,但是进过JVM进行重排序后,可能B线程的操作就会在A线程之前进行。通过了解java内存模型,我们可以知道,满足什么样的条件,JVM就不会进行...

2019-10-06 19:20:38 172

原创 并发编程学习(16)-----非阻塞同步机制

思维导图:引言: 在此之前,所有对并发竞争的处理都是使用锁来处理的。使用锁固然可以保证修改的正确性,但是,所也有它固有的缺点。锁的缺点如下:高开销:使用锁必然意味着在多个线程竞争时大部分线程都会陷入沉睡然后唤醒的循环,会有极大的开销。 长等待:等待中的线程是什么也不能做的,只能等待,这是一种资源的浪费。 优先级反转:当低优先级的线程获取到锁后,如果此时高优先级的线程也需要...

2019-10-04 16:44:32 187

原创 并发编程学习(15)-----自定义同步工具

思维导图:引言: 当原生的同步工具类,比如CountDownLauch,Semaphore,ReentrantLock等不能提供我们所需要的功能时,我们就需要自定义一个新的同步工具类了。 本文将会先介绍如何对状态依赖性进行管理,然后介绍自定义同步类的工具体系。原理部分:如何对具有状态依赖性的同步工具进行管理 体系部分:介绍java提供的底层的同步体系一.状态依赖...

2019-09-27 08:30:05 196

原创 并发编程学习(14)-----显式锁

思维导图:引言: 本文的主要内容是介绍两种显式锁的使用。一种是Lock,一种是ReadWriteLock。所以,本文可以归类为使用部分:使用部分:介绍Lock,其实现类是ReentrantLock,功能则是补充synchronized的不足。也会介绍ReadWriteLock,用于读多写少的并发程序。一.Lock 显式锁Lock可以作为synchronized在功...

2019-09-23 07:21:37 154

原创 并发编程学习(13)-----第三部分-活跃性,性能和测试

引言: 本文主要是对10,11,12篇文章进行总结。总结: 《避免活跃性危险》的主要内容是介绍如何可能出现的活性性危险有什么。比如死锁,活锁,饥饿。遇到不同的活跃性危险又该如何避免。例如,死锁可能出现的情况有顺序死锁,动态顺序死锁,多对象调用,资源死锁等情况,根据不同的情况,我们可以采用固定加锁顺序,开放调用,合理利用资源等手段避免死锁的发生。 《性能》的主要内容...

2019-09-17 07:35:46 160

原创 并发编程学习(12)-----并发性能的测试

思维导图:引言: 本文的主要内容是介绍如何测试并发程序。因为全是都只是对并发程序的测试的简要描述,所以基本上都归属于理论部分。理论部分:包括正确性测试,性能测试,和其他测试一.正确性测试 对于并发程序来说,我们应该首先保证其正确性,即能够正确运行并获得正确的结果。那么,如何保证并发程序的正确性呢?我们可以从需要检查的不变性条件和后验条件入手,并从以下几个方面进行分...

2019-09-16 07:59:07 563

原创 并发编程学习(11)-----性能

思维导图:引言: 使用多线程最主要的目的就是提升程序的运行性能,本章的主要内容就是介绍如何分析多线程程序的性能以及如何提高性能。全文大体分为以下两个部分:理论部分:性能分析,包括如何分析多线程程序的执行性和可伸缩性 使用部分:性能提升,包括使用锁分段,减小锁粒度,减小锁范围等一系列手段以提升程序的性能。一.性能分析 这个小节会对两部分性能进行分析。执行性:指...

2019-09-06 21:42:52 161

原创 并发编程学习(10)-----避免活跃性危险

思维导图:引言: 本文的主要内容是介绍一些导致程序发生活跃性故障的原因,以及如何避免他们的方法。理论部分:介绍死锁,活锁,饥饿这些活跃性故障发生的原因及避免方法。一.死锁 有个经典的哲学家问题,有五个哲学家,每两个哲学家之间有一根筷子,当哲学家拥有两根筷子时就可以吃饭。这其中就有发生死锁的情况,即每个哲学家都占有一根筷子并等待其他人放下筷子,结果就是所有的哲学家都...

2019-09-04 08:04:03 126

原创 并发编程学习(9)-----第二部分-结构化并发应用程序

思维导图:引言: 本文的主要内容是对第六,七,八篇文章进行总结。总结: 《任务执行》的主要内容其实就是说执行一个多线程任务最好的方式就是使用线程池。在此基础之上,介绍了4中线程池的性质和其生命周期的管理。 《任务的取消》的主要内容则是介绍如何取消一个正在执行的任务。其本质就是说最好利用JAVA本身携带的协作中断机制。对于单个任务来说使用Futrue是...

2019-09-02 07:23:10 152

原创 并发编程学习(8)-----线程池的使用

思维导图:引言: 本章主要介绍如何选择,配置和扩展线程池。所以,本文的所有部分都归属于使用部分。使用部分:介绍如何选择合适的线程池,配置合适的线程池参数,并扩展线程池的功能一.选择线程池 在前文中提到过,Executors可以产生不同类型的线程池,每种线程池的特性和功能不同。当我们需要执行一个或者多个任务的时候,需要选择恰当的线程池提交并执行任务,如果选择了不恰当...

2019-08-31 22:23:16 179

原创 并发编程学习(7)-----任务的取消和关闭

思维导图:引言: 本文的主要内容是给出各种实现取消和中断的机制,以及如何编写任务和服务,使得他们能对取消请求作出响应。相应的,本文大体上分为理论部分和使用部分。理论部分:介绍任务的中断机制及处理手段。 使用部分:介绍如何编写处理单个任务的中断和服务中断以及JVM关闭的的方法。一.中断 本节的主要内容是介绍Java中断的机制。 我们把将还未执行完成的任务...

2019-08-21 22:11:53 302

原创 并发编程学习(6)-----任务执行

思维导图:引言: 本章的核心内容是描述如何使用多线程来执行任务,会遇到什么问题,又该如何解决。按照惯例,本章内容分为两个部分理论部分:介绍了如何使用多线程,以及如何管理多线程 使用部分:以网页渲染为例使用多线程,并分析任务的并行性处理一.在线程中执行任务 本节分为两部分,即使用单线程执行任务和使用多线程执行任务。1.1 串行执行任务 执行任务最简单...

2019-08-02 08:33:44 216

原创 并发编程学习(5)-----第一部分-基础知识的总结

思维导图:引言: 本文的作用就是归纳以前四篇文章的作用以及他们之间的联系。总结: 第一篇的内容是线程安全性,这是整个基础部分知识提纲挈领性的纲要。这篇文章中,通过对原子性的分析,我们分别介绍了类在无状态,有唯一状态和多个状态时应该如何保证线程安全性。 特别注意,当类有一个状态时,就有可能发生竞态条件的异常了。但是,在什么样的情况下会发生静态条件在本篇...

2019-07-31 08:09:14 118

原创 并发编程学习(4)-----基础构建模块

思维导图:引言: 这篇文章的主要内容是简要的介绍Java类库中可用的并发构建模块。它同前三篇文章一起构成了多线程技术的基础理论部分。这篇文章只有一个部分,即基础构建模块的体系部分:体系部分:主要内容是Java类库中当前可以使用的线程安全类的体系,比如并发容器,同步容器,同步工具等内容。一.同步容器类 同步容器类实现的方式是将其内部的状态封装起来,并对每个公有方法都...

2019-07-30 07:57:32 194

原创 并发编程学习(3)-----对象的组合

思维导图:引言: 在前两篇文章中,我们介绍了如何判断一个类是否是线程安全的,也介绍了如何判断一个变量是否可以被其他线程使用,即可见性。以上两篇文章是构造线程安全类的基础。在此基础之上,我们将这在这篇文章中,初步地介绍如何从无到有或者利用已有的线程安全类的资源构造我们自己的线程安全的类。按照惯例,文章大体分成两部分:理论部分:我称之为同步要素分析,即分析当前组合类所拥有的的对象...

2019-07-23 07:36:39 241

原创 并发编程学习(2)-----对象的共享

思维导图:引言: 本文主要介绍类的域变量被多个线程共享时所导致的可见性问题。我所理解的可见性是指类的域变量在某一线程中变化时能够及时准确的被其他线程所看见。文章还是分成两个部分进行描述:理论部分:包括如何判断域变量是否可见,会导致什么样的问题,又该如何解决。 使用部分:通过 不发布对象>>发布但不可修改>>安全发布对象的次序逐渐深入的探讨如何构建一个...

2019-07-18 21:52:37 105

原创 并发编程学习(1)-----线程安全性

思维导图:引言: 并发编程学习系列是我对《Java 并发编程实战》这本书的学习总结。 所谓的线程安全性就是指在多个线程访问某个类时,这个类都能表现出正确的行为,那么称这个类是线程安全的。本文主要分两个部分来介绍线程安全性:原理部分:主要介绍原子性和原子操作 使用部分:主要介绍如何用锁来保证线程安全性及并发性能的提高一.原子性 此小节会通过类的状态(域对...

2019-07-16 22:21:41 298

原创 Kafka学习(3)-----消费者

思维导图:引言 这篇文章的主要内容是介绍Kafka消费者的一般的使用流程以及比较特殊的操作,所以本文共分为以下两个部分:基本流程 : 主要包括创建实例,消息订阅,消息消费,位移提交,消费控制等内容。 其他处理 : 主要是一些其他的处理,例如指定位移消费,消费者拦截器等操作。一.基本流程 Kafka消费者的基本流程一般来说都是必要的。也代表着消费者的基本使用逻辑。...

2019-05-30 08:18:39 1361

原创 Kafka学习(2)-----生产者

思维导图:引言 本文的主要内容是对Kafka生产者的介绍,包括以下三个部分:Kafka生产者的使用流程:包括如何创建实例,构建消息并发送 Kafka生产者的前处理:包括拦截器,序列化和分区器 Kafka生产者的原理:包括整体的架构,元数据等一.Kafka生产者的使用流程 Kafka生产者的基本使用其实和上一节中没什么太大的差别,只是对其中的配置信息进行了...

2019-05-27 08:07:16 184

原创 Kafka学习(1)-----Kafka初步

思维导图:引言 本文主要会在整体上对Kafka进行基础性介绍。所以,总体分为以下三个部分:基本概念 配置安装 使用JAVA客户端一.基本概念 Kafka是一个多分区,多副本且基于Zookeeper协调的分布式消息系统。1.1 Kafka工作体系 Kafka的工作体系主要由三大成员构成:生产者 Producer:负责创建消息并投递到Kafka服...

2019-05-21 22:06:00 260

原创 Zookeeper学习(5)-----高级配置

思维导图:引言 本文总结了一些Zookeeper的配置参数信息,分为三部分:服务器配置 集群配置 重配置一.服务器配置 介绍了服务器中一般的常用配置信息1.1基本配置 在一般情况下,基本配置是必须要有的,不能不配置。//基本配置clientPort -客户端监听端口号dataDir -数据树路径dataLogD...

2019-05-15 08:03:46 315

原创 Zookeeper学习(4)-----内部原理

思维导图:引言 本文对Zookeeper服务器的内部原理进行了简单介绍,主要分为以下三个方面:服务器的分类及作用 服务器的会话管理 服务器的本地存储一.服务器分类及工作流程 在Zookeeper服务系统中,按照独立模式与仲裁模式的区别及仲裁模式中角色的区别可以将服务器分为 独立服务器,群首服务器,追随者服务器以及观察者服务器。1.1 独立服务器...

2019-05-13 08:36:10 165

原创 Zookeeper学习(3)-----基本使用

思维导图:引言 本文主要介绍了如何使用ZkClient(zookeeper原生API的封装引用)去构建Zookeeper的主从节点数模型。所以,主要内容分为两个部分。Zkclient 的API的简单使用 以主节点选举为例介绍如何构建Zookeeper的主从节点模型 以下是本文的maven引用:<dependency> <grou...

2019-05-08 08:33:44 151

原创 Zookeeper学习(2)-----环境搭建及工作流程

思维导图:引言 本文主要介绍了Zookeeper的基本使用方法。包括如何搭建独裁模式,即只有一个服务器的环境。在此基础之上,介绍了如何搭建仲裁模式环境,即有多个Zookeeper服务器进行服务且拥有一个主节点。最后以主从模式为例介绍了Zookeeper的工作流程。独裁模式搭建:只有一个Zookeeper服务器提供服务 仲裁模式搭建:多个Zookeeper服务器提供服务...

2019-04-30 08:19:46 224

原创 Zookeper学习(1)-----基础概念

思维导图:引言 本文是Zookper学习总结系列的开篇,所以,第一章的主要内容是以下三部分:什么是Zookeper Zookeper的结构体系 Zookeper的服务体系 一.什么是Zookeper Zookeper是为了分布式系统应用提供服务的,所以了解Zookeper之前,我们必须了解什么是分布式系统。 我们可以这样定义分布式系统...

2019-04-25 08:41:30 886

原创 Redis学习(4)-----集群

思维导图:引言 本文是对Redis集群机制的简单介绍。主要内容有主从节点的原理,Cluster集群的构建及原理,最后,简单介绍了Redis的哨兵机制。一.主从节点 在对Cluster集群进行介绍之前,需要先了解Redis的主从节点机制,其本质思想是冗余设计,即当主节点异常时使用从节点代替主节点以使系统可以继续进行服务。1.1 CAP原理 因为...

2019-04-23 07:34:21 215

原创 Redis学习(3)-----基本原理

思维导图:引言 本文是对于Redis原理的初步介绍,涉及到 5个方面,分别是线程IO模型,通信协议,事务,管道和持久化。一.线程IO模型 Rdies是个单线程程序,这是Reids速度快的一个原因,因为没有线程切换的开销,缺点则是当执行时间复杂度较高的操作或者指令时,可能会导致Reids的卡顿。与此同时,Redis还善于处理多并发客户端连接,而这得益于Redis的I...

2019-04-17 08:32:25 422

原创 Redis学习(2)-----基础数据结构

思维导图:引言 本文分为五个部分,分别介绍了利用Jedis使用Redis的五种基础数据结构:String,List,Set,Zset,Hash。而在List,Set,Zset,Hash这四种基本数据结构具有共同的特性:若不存在,则创建 若没有元素,则删除一.字符串 String String就是类似Map<String,String>那样的映...

2019-04-13 08:13:15 157

原创 Redis学习(1)-----安装及连接

思维导图:一.引言 本文主要分为以下三个部分如何在linux中安装Redis 使用Java连接所需要修改的配置 如何使用Jedis连接二.Redis的安装从官网上获取最新的安装包:wget http://download.redis.io/releases/redis-5.0.4.tar.gz 压缩包解压:tar -zxvf redis-5.0.4.tar.gz...

2019-04-12 06:54:25 117

原创 Spring Boot学习(1)-----Spring Boot 基础

思维导图:一.引言 我对Spring Boot的理解就是利用约定大于配置的原则以达到简化开发的目的。最后的结果就是当我们通过Spring Boot框架使用Spring的时候,可以很简单的向Spring中添加例如Mybatis,Spring MVC等等其他所需要的组件。 本文主要分为三个大的部分:如何创建一个Spring Boot项目 Spring Boot约定...

2019-04-02 08:53:27 140

原创 Spring框架学习(6)-----集成Mybatis

思维导图:一.引言 这片文章建立在上篇文章的基础之上。在Spring集成了Spring MVC之后,我们需要利用Spring集成Mybates。这就是这片文章的功能。主要分为两个小节:Spring如何添加Mybatis配置 如何简单使用Mytatis二.Spring集成Mybatis 在上一篇文章中我们介绍到,DispatherServlet的配置中有两个...

2019-03-24 11:03:35 152

原创 Spring框架学习(5)-----集成Spring MVC

思维导图:一.引言 Spring MVC 的功能是帮助我们实现视图V和数据模型M的解耦,而这靠的就是中间的重定向层Controller C.本文主要分为三个部分进行介绍.第一部分讲解Spring MVC的工作原理,第二部分简单的搭建了一个Spring MVC的例子,第三部分则引入数据模型M,对M进行相关的处理.二.Spring MVC的工作原理 Spring ...

2019-03-15 21:15:47 164

原创 Spring框架学习(4)-----面向切向的Spring

思维导图:一.引言 在我们所编写的业务代码中,我们总是不得已的在业务逻辑中添加一些其他的功能代码,比如打印日志,事务处理等等.我们将这些散布于应用中多处的功能称之为横切关注点.在业务代码中掺杂这些关注点的功能会让代码显得不纯粹和复杂.所以,这就是面向切面编程AOP出现的原因:将横切关注点和业务逻辑相分离.横切关注点也可以被模块化为特殊的类:切面. 在本文中,第一部分介绍...

2019-03-12 06:56:33 188

原创 Spring框架学习(3)-----依赖注入的高级装配

思维导图:一.引言 在上一节中,主要介绍了spring对于实体类的基础装配方法.依照循序渐进的方式,这一节中,将会介绍一些装配的高级功能,比如环境切换,条件化创建bean,spring的表达式语言等功能.二.环境切换 因为在实际的开发需求中,大概都有开发环境,测试环境,生产环境的区别,比如数据库.当在开发环境开发完成后,就需要修改大量配置然后才能上测试环境.而spr...

2019-03-05 23:09:52 146

原创 Spring框架学习(2)-----依赖注入的基础使用

思维导图:一.引言 这篇文章的主要内容是介绍Spring 中依赖注入(dependency injection) DI 的简单使用,全文共分为三个部分,每个部分都是一种装配模式,其中有自动装配,这是最推荐使用的模式,代码量最少,维护成本也低.紧跟着会简单介绍java装配和xml装配,我认为只有不得不使用比如引用了他人的jar包时才推荐使用这两个装配模式,因为这样装配的代码量...

2019-03-04 08:30:41 196

原创 Spring框架学习(1)-----什么是Spring

思维导图: 一.引言 新的一年,我要更加努力,所以我计划开始进行Spring的系统性总结,以前学习spring的知识都比较零散,所以这次买了一本&lt;Spring实战&gt;的第四版进行学习,所以,sping系列本质上都是我读这本书的读书总结吧. Spring是相当庞大的生态圈,拥有许多的功能模块,但是,...

2019-02-19 23:11:13 214

空空如也

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

TA关注的人

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