自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从头开始学习->java数据结构(五):线性表的推广

前言前面两篇文章,关于线性表的,基本上都已经讲述完了,但是这只是对狭义线性表,这种狭义的线性表,主要就体现在对应的线性表数据结构中的元素存在一对一的相互关系,但是我们前面几篇文章讲的都是有着非常明显直白的一对一相互关系的,但是在实际的划分中,我们对线性表有着更为广泛的划分。而本篇文章,主要的就是讲述如果在广泛的意义上去了解线性表,那么还有哪些数据结构,可以算的上线性表。正文数据结构,本身来说,是没有所谓精准的含义去描述分类的,但是我们为什么总是会去将这些数据结构分类呢?其目的很简单,将这些性质更为.

2021-04-06 09:02:14 337

原创 从头开始学习->java数据结构(四):受限线性表

前言在上一篇文章中,我们讲述了线性表结构中的一般线性表,线性表结构有两种存储结构,一种是顺序存储结构,一种是链式存储结构,这两种结构主要表现形式就是数组和链表。我们对数组和链表进行了一定程度的分析。当然这种分析并不深入,也不是很详细,但是我们起码知道了在线性结构中的一般线性表的大概。但是除了一般线性表结构以外,线性表结构还有其他的结构,比如受限线性表和推广线性表,这两种结构,也是我们在编程中比较常遇到的两种结构,因此我们也要对这些结构进行一定的分析。正文本文要分析的结构是受限线性表。那么,什么.

2021-03-22 13:38:25 364

原创 从头开始学习->java数据结构(三):一般线性表

前言虽然这个系列文章叫《java数据结构》,但是实际上讲的是数据结构,只是因为我主要用的语言是java,所以在讲述数据结构的时候,如果有涉及到需要用代码的地方,我都会通过java代码来展示,这才是我这样取名的原因。也因此,我并不是在讲述java这门语言中的数据结构,应该说,我讲的不仅仅是java数据结构,而是包含java数据结构在内的对整个数据结构的分析和了解。当然,这也没有什么,写这些文章的目的主要也是梳理自己的知识体系,如果顺便能给大家一点帮助,那当然是意外之喜了。正文一般来说,线性结构可以.

2021-02-28 14:25:29 258

原创 从头开始学习->java数据结构(二):数据的逻辑结构

前言上一篇文章,我们了解了在物理上的存储结构。一般来说,物理上的存储方法就两种,一种是顺序存储结构,一种是链表存储结构。这两种存储结构组成了在物理上的数据存储的一个基础,基本上我们所谓的大部分数据结构,在物理层面的实现,都是基于这两种方案。在后续的文章讲述数据结构的时候,如果有需要的话,还是会偶尔时不时的讲述物理上的存储方式。今天这篇文章,主要是大概简述一下逻辑上的数据存储结构——这也就是我们常常理解的数据结构。正文如果说,物理上的存储结构,表达的是数据存储的具体位置,那么我们现在要讨论的逻辑.

2021-02-22 14:29:47 224

原创 从头开始学习->java数据结构(一):物理上的存储结构

前言我们都知道,所谓的数据结构,都是我们在为了更好的对数据的增删改查而创造出来的对数据的结构设计,但是我们要知道的是,这些数据结构都是抽象的逻辑结构,并不是真实的物理上的存储结构,大部分时候,我们对数据结构的讨论,也都是讨论的是逻辑上的数据结构,并不是对真实的存储在硬盘中的数据的存储结构的讨论。真实的物理上的数据,存储到我们的硬盘上的或者是在内存上的时候,都是有着确切的存储结构的,而不是我们想象中的类似b树,二叉树这种抽象的逻辑结构。那么,在我们的硬盘上,数据是如何存储的呢?这个问题,是我们去研究逻辑

2021-02-04 14:47:00 240

原创 从头开始学习->JVM(十一):垃圾收集(下)

前言在前两篇文章中,我对垃圾收集的思想和垃圾收集的行为都有了一定的分析,但是我们要知道的是,垃圾收集这种操作,是实实在在的存在于一个垃圾收集器中的。不同的垃圾收集器,可能会使用不同的垃圾收集思想,不同的垃圾收集算法,不同的垃圾收集行为。也因此,如果要真正的理解我们的垃圾收集,我们需要深入到每一个的垃圾收集器中,才能了解到这些思想,这些算法,这些行为,错乱组成的各个垃圾收集器,会有哪些优势和劣势,这样我们才能更深入的明白关于JVM的垃圾收集。正文垃圾收集器的发展历史已经非常久远了,远的有出名的单线程.

2021-02-02 09:23:23 114

原创 从头开始学习->JVM(十):垃圾收集(中)

前言关于垃圾收集的一些理论基础,我在上一篇文章《从头开始学习JVM(九):垃圾收集(上)》中已经讲述完了,本文讲的是具体的如何实现的问题。但是要注意的是,本文所讲的东西,都是基于上一篇文章的理论基础上的,所以再看本篇文章之前,笔者非常建议您先去看上一篇文章,然后再来看本文,这样才能对垃圾收集有一个整体的,闭环的印象。当然,如果您觉得您对垃圾收集的理论部分,有着自己独特的见解,不需要我的讲解的话,那您也可以直接看本文。正文垃圾收集器,非常的复杂,网络上的博客对这些东西的讲述,也是千奇百怪,如果对这.

2021-02-01 15:49:09 96

原创 从头开始学习->JVM(九):垃圾收集(上)

前言垃圾收集,在JVM的世界中,是属于非常重要的一环。为了实现控制反转设计原则,java通过一种方式,依赖注入,将java对象的生成和销毁都交给了我们的java程序自己解决,也就是说,java程序不会控制自己对象的生命周期,那么如果我们的JVM没有管理对象的生成和销毁,那么就会导致我们的程序生成的java对象堆满了我们的JVM内存,导致内存不断的出现内存溢出的情况。于是,JVM有了垃圾收集这一环节,目的自然就是为了保证我们的JVM不出现内存溢出等问题。在JVM中,程序计数器、虚拟机栈、本地方法栈3.

2021-02-01 15:48:27 354

原创 从头开始学习->JVM(八):运行时数据区(下)

前言在上一篇文章中,我们了解到了JVM的运行时数据区,基本被划分了5个区域。程序计数器(pc寄存器)java虚拟机栈本地方法栈java堆方法区(永久代,元空间)。而上一篇文章中,我们详细的讲解了关于线程私有的3个区域,程序计数器,java虚拟机栈,本地方法栈。而本文则讲解的是线程共享的两个区域,java堆和方法区(元数据)。java堆Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。由于Java堆是垃圾收集器管理的内存区域,因此一些资料中它也被称作“GC堆”(Garba.

2021-02-01 15:47:45 108

原创 从头开始学习->JVM(七):运行时数据区(上)

前言在上一篇文章中,我们提到了关于线程和JVM之间的关系,线程不是由JVM直接控制的,而是由我们的操作系统来控制。我们java程序对线程的调用,最后也是通过调用操作系统的关于线程的操作来调用。当然,我们知道,线程的调用和我们JVM的运行时数据区也有一定的关联。在JVM内存划分区域的过程中,有些区域是随着线程的诞生和销毁而存在的,而有些区域则是一直存在于JVM中,和线程没有关系。接下来,我们来了解一下JVM的运行时数据区。正文在我们正式进入JVM运行时数据区之前,我们先从看一张图。从图中我们可.

2021-02-01 15:46:40 190

原创 从头开始学习->JVM(六):线程和JVM的关系

前言在前面关于类加载器的文章中,我们可以看到,类加载器通过java类的字节码文件,创建出了Class对象,并且通过加载-验证-准备-解析-初始化等一系列流程,将java类加载到JVM中,直到这个时候,JVM才会将主导权移交给java应用程序。这个时候,我们的java程序就可以跑动起来了。当java程序开始跑动起来的时候,线程和对象也纷纷产生,随着程序的跑完,也纷纷消亡。对象的产生和消亡,无疑是和JVM中的运行时数据区相关的,但是今天我们先不去深究这方面,我们先对线程来进行深一层次的了解和解析。正文.

2021-02-01 15:45:53 563

原创 从头开始学习->JVM(五):类加载器(下)【源码分析】

前言上一篇文章,《从头开始学习JVM(四):类加载器(中)》,我们知道了类加载器的基本原理,但是知道了这些原理之后,我们对类加载器的底层的逻辑,算不上有多清楚明白。我们仅仅是意识到,类加载器的种类有多少,类加载器的加载机制双亲委派模型以及如何打破双亲委派模型等等等相关的一些原理。但是在这些原理的背后,是什么在支撑着呢?想一想吧,所谓的JVM,本身就是一直概念上的产物,并不是物理上的东西,那么作为JVM一部分的类加载器,以及我们的类加载流程,也只是我们在概念上的划分。而支持着这些概念上划分的,就是我.

2021-02-01 15:45:03 86

原创 从头开始学习->JVM(四):类加载器(中)

前言上一篇文章,我们了解到类的加载流程,是由加载,验证,准备,解析,初始化这5个阶段组成的。我们也对这5个阶段进行了较为详细的解读,在这个解读的过程中,我们发现,类加载器主要是在加载阶段起到了作用。当然,我们当时没有对类加载器有进一步的了解,而今天的这篇文章,就主要集中在了类加载器身上。在文章开始之前,我们要先明白一件事情,即便我们对类加载器有了深刻的了解,也不代表着我们对类加载的整个流程有了多大的认知,这只能说是我们在JVM这个浩瀚的海洋中,捞取了小小的一瓢水而已,微不足道,且无足挂齿。所有我们要抱.

2021-02-01 15:44:17 105

原创 从头开始学习->JVM(三):类加载器(上)

前言我们现在都知道了,JVM是java这门语言的基础,是java这门语言得以发扬光大的基础,是java程序运行的平台,是实现java特性的一个必要前提。但是,JVM是具体做了什么工作呢?对于这个问题,我们依然还不清楚。因此,我们需要要深入的去了解一下JVM。这,也是我的一系列文章的主要目的。我们先来看一张图:这张图,显示的是JVM的主要组成部分。我们发现,我们的java程序编译后形成的class字节码文件,是通过JVM中的类加载器加载到我们的JVM中的,那么,类加载器的加载过程,是怎么样的呢?.

2021-02-01 15:43:31 87

原创 从头开始学习->JVM(二):为什么java需要JVM(Java虚拟机)?

前言在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块。我们意识到,java所谓的“Write Once,Run Anywhere”的特性,就是基于JVM才能够实现的。那么我们就会好奇,为什么JVM会有这样的功效呢?而且在探索的过程中,我们发现,JVM不仅是涉及到了“Write Once,Run Anywhere”的特性,而且还涉及到了java程序的性能问题,于是我们发现,我们必须要去深入的了解一下JVM。正文对JVM的研究,千头万绪,如果直接进入JVM的世界,我们可能还.

2021-02-01 15:42:14 413 1

原创 从头开始学习->JVM(一):java内存模型(JMM)不是java虚拟机内存模型(JVM)哦!

前言在进入jvm的世界之前,我要先给大家整理一个概念上的细节,java内存模型和jvm内存模型,是两回事哦。在网上很多朋友的博客上,都会无意识的将java内存模型和jvm内存模型混为一谈,这让一部分不明白真相的看客都会以为是这样,但是实际上java内存模型和jvm内存模型,在概念上来讲是两回事,当然,不能否认的是这两者有着极大的关联性,甚至某种意义上来讲,JVM是JMM的实现方式,JMM是为JVM服务的,但是不能因为这样,就把两者混为一谈哦。(主要就是因为JMM是为多线程服务的,而JVM中也有为多线程.

2021-02-01 15:40:42 182

原创 都2020啦,还不去深入了解一下redis ?

一. 前言其实本人我也不是很了解redis,通过写文章的过程中,我也学习一下redis。以下是redis的部分相关资料,大家可以了解一下。redis的创始者:Salvatore Sanfilippo,大佬的网名:antirez大佬的博客:antirez.com大佬的github地址:http://github.com/antirezredis官网:https://redis.io/最后送上大佬的照片一张:居然还有点帅,真的是不让人活了。二. 为什么要使用redis(缓存)?1. 高性

2020-11-02 15:11:34 201 2

原创 手把手搭建springCloud框架(四)——使用zuul网关服务实现权限验证和登录验证

前言在springCloud的世界中,zuul网关服务是一个不得不提的服务。在实际的开发中,当前端要调用后台的服务的时候,可以直接通过ip+端口+接口名的形式调用,但是这样调用有不好的地方,这样会暴露我们的Api,别人可以轻而易举的知道我们的实体ip的地址,以及知道我们的端口,和我们的服务名,还有我们的接口名。而且当我们在服务中做登录校验和权限校验的时候,如果没有zuul或者gateway网关等服务,那么我们就需要在每一个实际的业务服务中编写我们的权限校验和登录校验的代码,也就是说,这些和业务无关,但

2020-11-02 15:07:59 1351 2

原创 手把手搭建springCloud框架(三)——Ribbon,Feign和Hystrix

前言大家好啊,明天就是国庆节了,今天再发一篇博客。其实本篇博客,是连接上一篇博客来的。手把手搭建springCloud框架(二)——eureka客户端+swagger+mybatisPlus:https://juejin.im/post/5d8e07615188252cdb5e302c因此,本篇博文,是从上一篇博文创建的项目发展而来,请先搭建上一篇博文所有的项目后,再来搭建本项目。内...

2019-09-30 16:37:40 230

原创 手把手搭建springCloud框架(二)——eureka客户端+swagger+mybatisPlus

来开始搭建springCloud的客户端client服务。首先,也是从在线生成了springboot项目。在线网址:https://start.spring.io/下载下来的是一个压缩包,解压之后,用编译器IDEA打开这个服务。因为,我是一次性搭建了spingCloud+eureka+swagger+mybatisPlus,所以这次的话,我就一次性给大家展示一下。也由于这次的话,不...

2019-09-30 16:36:28 490

原创 手把手搭建springCloud框架(一)——eureka的服务端(server)的搭建

今天开始,我来记录一下如何手把手的搭建一个springCloud框架。搭建eureka服务第一步首先创建一个springboot服务。我因为太懒,不想自己创建,因此在线生成了springboot项目。在线网址: https://start.spring.io/下载下来的是一个压缩包,解压之后,用编译器IDEA打开这个服务。图中,是我显示的三个需要修改的配置文件。第一个,pom....

2019-09-30 16:34:36 355

原创 springCloud的了解(四)—分布式事务问题

前言昨天,我们又学习了springCloud的剩余的大部分组件,config配置中心,Feign声明式服务调用,Turbin集群监控,Bus消息总线。关于SpringCloud的组件内容,我们暂时先告一段落,当然在后续的文章中,我会陆续的深入到组件的源代码分析和组件的具体作用中去。今天我们要开始学习在springCloud中的分布式事务问题。著名架构师Chris Richardson所...

2019-08-16 20:47:47 344

原创 springCloud的了解(三)——组件分析

前言昨天我们学习了springCloud的四个组件,Netflix Eureka——服务发现,Netflix Ribbon——客服端负载均衡,Netflix Zuul——服务网关,Netflix Hystrix——断路器。从学习这四个组件中,我们可以观察到,实际上springCloud并没有大包大揽的将所有的活都自己来干,它只是把市面上的一些成熟的东西拿过来,然后补上一些没有的但又是确确实...

2019-08-16 20:46:01 161

原创 springCloud的了解(二)——Netflix相关组件

前言今天的话,我们将继续来学习springCloud。springCloud的组件是极其多的,而其中最为出色的厂家则是NetFlix,可以说这个厂家几乎包揽了springCloud中最为重要的一些服务,例如:服务发现——Netflix Eureka,客服端负载均衡——Netflix Ribbon,断路器——Netflix Hystrix,服务网关——Netflix Zuul。因此也是这个...

2019-08-16 20:44:25 375

原创 springCloud的了解(一)——初解析

前言springCloud走到了现在,已经初步在国内有了一定的市场,当然,2018年出了新闻,springCloud的配套技术,Hystrix和Eureka已经停止更新了,理由是说现有的技术已经足够支持当前的开发需求,所以不再继续更新,只进行维护。这实在是让我感觉有点伤,感觉SpringCloud都没有学好,太多的组件都不是很了解,突然之间关键的好几个组件都不更新了是什么鬼。但是,虽然...

2019-08-16 20:30:37 381

空空如也

空空如也

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

TA关注的人

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