自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql相关

1:innodbInnodb和myisam区别完整支持ACID事务,实现了事务的四种隔离级别,默认是REPEATABLE,同时使用next-key-lock避免泛读产生;支持外建:主键保证了数据的唯一性,外键保证了数据的完整性。当一个外键列没有显示的加上索引,则innodb引擎会自动对其加一个索引,避免全局扫描,加表锁。行锁设计。提供一致性非锁定读:通过mvcc方式读取当前执行...

2019-11-21 11:34:08 313

原创 java基本

1:反射在运行时动态的获取信息以及动态调用对象的方法的功能称为Java 的反射机制。Class类对象和类的对象区别:类对象应该指类Class对象,字节码对象可以通Class.forName()/getclass()/.class来获取,当jvm加载一个类时就会为这个类创建一个Class对象。类的对象,通常就是指我们通过new这个类或者反射得到Class对象再调newInstance()...

2019-11-21 11:23:02 470

原创 并发相关

1:volatile与synchronized,lock与finalVolatile:通过四种内存屏障实现Volatile的写之前插入StoreStore屏障,写之后插入StoreLoad屏障Volatile的读之后插入LoadLoad屏障,读之后插入LoadStore屏障当写一个变量的时候,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。实质是该线程向接下里要读取这个v...

2019-11-21 11:09:20 232

原创 jvm相关

1:内存结构JVM的内存主要包括直接内存和虚拟机运行时的数据区直接内存:直接内存并不是虚拟机运行时数据区的一部分,也不是Java 虚拟机规范中定义的内存区域。在JDK1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用native 函数库直接分配堆外内存,然后通过一个存储在Java堆中的D...

2019-11-21 11:03:37 167

原创 操作系统

1:进程和线程进程之间的通信方式管道:是一种半双工,即同一时间数据只能是单向流动的;只能承载无格式字节流无名管道:只允许具有血缘关系的进程通信,常用于父子进程之间有名管道:可以实现任意进程间的通信共享存储:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低...

2019-11-21 10:57:28 803

原创 Mybatis常见知识点

我在个人简历上面没有写持久层框架,所以这方面在面试的过程问的也比较少,自己总结的也比较粗糙。问的最多的是第二点和第十点一:工作流程通过数据源创建一个数据库连接,将创建的数据库连接统一放到连接池进行管理,减少每次创建和断开数据库连接的开销。通过Sqlsession去操作数据库连接。二:#{…} 和${…} 的区别sql 注入只对 sql 语句的编译过程有破坏作用,而 ...

2019-10-28 12:29:40 434

转载 Sleuth 与 Zipkin

随着业务发展,系统拆分导致系统调用链路愈发复杂,一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药。于是就有了分布式系统调用跟踪的诞生。服务追踪的追踪单元是从客户发起请求(request)抵达被追踪系统的边界开始,到被追踪系统向客户返回响应(response)为止的过程...

2019-10-28 11:12:25 2177

原创 Ribbon

一:常见的负载均衡方式1:服务端负载均衡:独立进程单元,通过负载均衡策略,将请求转发到不同的执行的单元,比如Ngnix2:客户端负载均衡:将负载均衡逻辑以代码的形式封装到服务消费者的客户端上,服务消费者客户端维护一个服务提供者的信息列表,有了信息列表通过负载均衡策略将请求分摊到多个服务提供者,从而实现负载均衡。比如Ribbon。二:Ribbon有两种使用方式,一是和RestTempla...

2019-10-28 11:11:38 143

转载 Zuul

一:路由功能(自身包含了hystrix和ribbon模块依赖)传统路由配置:(path和url的映射)不依赖于服务发现。在配置文件中指定每一个路由表达式和服务实例之间的映射关系来实现对外部请求的路由。服务路由配置:(path和serviceId的映射)由于Spring Cloud Zuul在整合了Eureka之后,具备默认的服务路由功能,即:当我们这里构建的ap...

2019-10-28 11:08:43 176

转载 Spring Cloud Config

一:定义用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密 / 解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。...

2019-10-25 12:29:12 110

原创 Feign

一:概念它整合了Ribbon和Hystrix,从而让我们不再需要显式地使用这两个组件。默认情况下Feign会将所有Feign客户端的方法都封装到Hystrix命令中进行保护。使用@FeignClient创建Feign客户端的时候,会同时根据该注解的name属性或者value属性指定的服务名自动创建一个同名的Ribbon客户端。Feign 还提供了HTTP请求的模板,通过编写简单的接...

2019-10-25 12:26:28 142

转载 Hystrix

一:服务器雪崩故障发生的原因1:服务提供者不可用:硬件故障,程序bug,缓存击穿,大量请求2:重试加大流量:用户重试,代码逻辑重试3:服务调用者不可用:同步等待造成资源耗尽雪崩的解决方式:流量控制,改进缓存模式,服务自动扩容,服务调用者降级服务二:使用 Hystrix 预防服务雪崩(针对的是服务调用者Service Consume)通过对依赖服务实现线程池隔离,让我们的应用...

2019-10-25 12:24:02 152

转载 Eureka

一:Eureka实现服务注册和发现Eureka和zookeeper的区别:1.ZooKeeper保证的是CP,Eureka保证的是AP2.ZooKeeper有Leader和Follower角色,Eureka各个节点平等3.ZooKeeper采用过半数存活原则,Eureka采用自我保护机制解决分区问题。因此在zookeeper进行选举和故障转移的过程中服务是不可用的,但是保证了数据的...

2019-10-25 12:20:41 233

转载 Spring Cloud总述

Spring Cloud Netflix 是 Spring Cloud 中的一套框架,由 Netflix 开发后来又并入 Spring Cloud 大家庭,它主要提供的模块包括:服务发现、断路器和监控、智能路由、客户端负载均衡等。自己只是粗略的总结的一下知识点。想系统学习Spring Cloud相关知识,请查看https://windmt.com/2018/04/14/spring-cloud...

2019-10-25 12:18:30 124

原创 应用层

一:域名解析协议实现解析的方式:递归解析和迭代解析。主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所...

2019-10-25 12:07:11 245

原创 传输层

链路层定义了主机的身份,即MAC地址, 而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。因此传输层引入了tcp/udp来解决这个问题,为了给每个应用程序...

2019-10-25 11:14:48 134

原创 网络层

一:ip数据报格式具体来说首部(一共20字节)包含以下几个字段版本:指明是Ipv4还是ipv6。Ipv6是为了缓解ipv4地址不足引入总长度:16位,因此一个ip数据包的最大长度是65535字节。标识:数据在整个网络体系的传输流程是应用层的data到传输层的段,到网络层的IP数据包,到链路层的帧,以及传输介质上的比特流。所以最终的数据都是要通过物理层进行传输,不同媒介的M...

2019-10-25 11:05:58 375

原创 计算机网络概述

计算机网络常考面试题:1:TCP的三次握手和四次挥手的具体过程及对应的状态变化2:为什么是三次握手(不是二次和四次),为什么是四次挥手(不是三次或者2次),为什么需要等待2MSL3:udp和tcp的区别,那么udp可不可以做成可靠传输,怎么做4:tcp采用了哪些手段保证可靠性5:https的具体过程,http1.0,http1.1,http2的区别6:DNS的解析过程(键入...

2019-10-25 10:54:12 144

原创 迭代模式

一:迭代模式的定义:提供一种方法访问一个容器对象的各个元素,而又不需要暴露该对象的内部细节。迭代器是为容器服务的,主要目的就是为了遍历集合元素。二:迭代模式的实现:抽象迭代器接口public interface Iterator { boolean hasNext(); Object next();}抽象容器接口public interface Container { ...

2019-10-25 10:37:54 450

原创 策略模式

一:策略模式定义(compator接口比较):定义一组算法,将每一个算法封装起来,并且它们之间可以互换二:策略模式特点:缺点是调用者需要知道所有的策略,才能准确的调用。优点是一旦知道了具体的策略之后,可以自由的切换。主要由抽象策略角色,具体策略角色,策略上下文角色和测试类四部分组成。策略上下文将抽象策略角色通过构造函数的形式注入,这样在测试的时候就可以接收指定的任何具体策略角色。三...

2019-10-24 10:57:05 99

原创 观察者模式

一:观察者模式定义(发布订阅的区别):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。二:观察者模式特点:与发布订阅不同的是这个更新是由具体目标调用具体观察者的方法进行更新。两者之间存在一定的依赖关系。但是发布订阅模式则是将其统一交给调度中心进行处理,两者之间没有任何依赖。该模式有抽象主题接口,具体主题实现类,抽象观察...

2019-10-24 10:55:50 90

原创 原型模式

一:原型模式定义(bean的prototype):用原型实例指定创建对象的实例,并且通过拷贝这些原型创建新的对象二:原型模式特点:运用到的主要是克隆。原理是从内存中以二进制流的方式进行拷贝,重新分配一个内存块,构造函数不会被执行,且类成员变量上不可以被final修饰,否则报错。对于基本类型(包括String)克隆后的对象修改不会影响到克隆前对象,而对于数组或者引用类型,克隆后对象的修改...

2019-10-24 10:50:59 94

原创 装饰者模式

一:装饰者模式定义(mybatis的Executor。I/O流):动态的给一个对象添加一些额外的职责,就增加功能而言,装饰模式相比生成子类更为灵活二:装饰者模式特点:一般由5部分组成。第一个是抽象的component组件类,第二个是具体的concreteComponete,也就是需要被装饰的类,第三个是抽象的装饰者类,该类也需要继承抽象的component组件类,同时将抽象组件类通过构...

2019-10-24 10:49:33 102

原创 动态代理模式

一:动态代理定义(Spring的AOP底层实现):为其他对象提供一种代理以控制对这个对象的访问二:动态代理特点:代理模式的核心作用就是通过代理,控制对对象的访问。它的设计思路是:定义一个抽象角色,让代理角色和真实角色分别去实现它。真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。它只关注真正的业务逻辑,比如歌星唱歌。代理角色:实现抽象角色,是真实角色的代理...

2019-10-24 10:48:26 126

原创 模板模式

一:模板模式定义(AQS的设计):定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类在不改变一个算法的结构即可以重新定义该算法的某些特定步骤。二:模板模式特点:模板模式主要由抽象的模板类,具体的模板类以及测试类三部分组成。其中在抽象的模板类中可以定义基本方法(第一部分是由protected修饰的方法让子类继承,实现自己的逻辑,从而将一部分方法的实现延迟到子类上;第二部分是由...

2019-10-24 10:46:09 116

原创 责任链模式

一:责任链模式定义(tomcat的启动加载过程,拦截器)使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止二:责任链模式的特点纯责任链模式:一个request必须被且只能被一个handle处理。不允许request不被处理,或者被多次处理。不纯:request可以不被处理,也可以被多次处理。...

2019-10-24 10:42:17 81

原创 责任链模式

一:责任链模式定义(tomcat的启动加载过程,拦截器)使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止二:责任链模式的特点纯责任链模式:一个request必须被且只能被一个handle处理。不允许request不被处理,或者被多次处理。不纯:request可以不被处理,也可以被多次处理。...

2019-10-24 10:34:58 77

原创 工厂模式(简单工厂,工厂方法,抽象工厂)

一:简单工厂1:简单工厂模式的定义:把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类2:简单工厂模式的特点:违背开闭原则,不属于设计模式的一种。3:简单工厂模式的实现:Product:抽象产品类,将具体产品类公共的代码进行抽象和提取...

2019-10-24 10:30:59 91

原创 设计模式总述

设计模式常见的面试题:1:设计模式的6个原则(开闭原则最好说明含义)2:单例模式的手撕(双重检验的写法是重点)3:代理模式(AOP的底层实现),代理模式中的jdk和cglib优缺点和适用场景4:在实际的开发中具体用到了什么模式,什么样的业务场景用到设计模式一:设计模式的概念:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验...

2019-10-23 14:17:27 99

原创 Tomcat原理剖析

一、Tomcat顶层架构俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以游刃而解,了解了Tomcat的整体架构对以后深入了解Tomcat来说至关重要!先上一张Tomcat的顶层结构图(图A),如下:Tomcat中...

2019-10-23 13:56:11 170

原创 网络层高频面试知识点(个人总结)

1:ip数据报格式具体来说首部(一共20字节)包含以下几个字段版本:指明是Ipv4还是ipv6。Ipv6是为了缓解ipv4地址不足引入(ipv6具体细节不清楚)。总长度:16位,因此一个ip数据包的最大长度是65535字节。标识:数据在整个网络体系的传输流程是应用层的Data到传输层的段,到网络层的IP数据包,到链路层的帧,以及传输介质上的比特流。所以最终的数据都是要通过物理层...

2019-03-09 23:52:37 486

原创 Spring MVC高频面试知识点(个人总结)

1:整体流程1、用户发送请求到前端控制器(DispatcherServlet)。2、前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler)。3、找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)。4、前端控制器(DispatcherServlet)调用处理器适配器(Han...

2019-03-09 23:47:49 178

原创 Spring中Bean的装配方式

Bean的装配可以理解为DI,也就是Bean依赖注入的方式。下面对常见的三种方式进行总结。基于XML的装配设置注入(Setter Injection)要满足两个要求:一是Bean类必须提供一个默认的无参构造函数,二是Bean类必须为需要注入的属性提供相应的setter方法。使用的是<bean>元素的子元素<property>为属性注入值。构造注入(Const...

2019-02-27 17:17:13 285

原创 Redis的跳跃表底层实现

跳跃表是一种有序的数据结构,主要用在zset(有序集合)和集群节点的内部数据结构。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。注意mysql的底层采用的是B+树实现。跳跃表的实现  Redis的跳跃表由redis.h/zskiplistNode和redis.h/zskiplist两个结构定义,其中zski...

2019-01-04 11:07:47 490

原创 Redis的字典结构底层设计

相比前两种sds和list结构而言,字典的结构相对来说要复杂,主要涉及的都是和哈希相关的问题,包括但不限于哈希冲突的解决。哈希的扩容策略,哈希算法等。其主要用在redis的底层数据库底层实现,哈希键的底层实现。ht属性是一个包含两个项的数组,数组中的每个项都是一个dictht哈希表,一般情况下,字典只使用ht[0]哈希表,ht[1]哈希表只会在对ht[0]哈希表进行rehash时使用。...

2019-01-02 10:44:19 153

原创 Redis的链表底层结构

主要构成:list结构+listNode结构,Redis链表的特性也是和这两个结构及其各个的属相字段相关的。listNode结构list结构虽然多个listNode节点就可以连成链表,但是引入list结构后,操作活更加的方便,所有redis的链表一般是如下图所示:从上面的链表结构图,我们可以轻易的总结出链表的特点1:双端。listNode节点之间是一个双向链表,即每...

2018-12-12 09:41:04 221

原创 Redis的SDS与C字符串的比较

C的字符串底层实现是一个字符数组,并以空格作为结束标志。而redis的sds(简单动态字符串)是自己定义的。其实质是一个自定义的结构体,但是在结构体的buf[]数组中传承了C字符串以空格结束的规范,这样做的好处是便于直接使用C语言字符串函数库的部分函数,而不必再自定重新定义。对于自定义结构体来说,其字符串的长度=len。保存空字符的1字节空间不计算在 SDS 的len属性里面, ...

2018-12-11 13:29:24 548

转载 IntelliJ IDEA(2018)安装和破解

IntelliJ IDEA(2017)安装和破解 IDEA 全称 IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(Git、svn、github等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains...

2018-10-15 10:14:13 295

原创 单例模式

一、单例模式定义:(Spring 的bean默认类型,数据库连接池,线程池)单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计...

2018-09-05 13:10:58 241

原创 SSM整合(Maven管理)

SSM的整合实质是就是配置文件的配置。我就做了一个连接本地mysql数据库进行按id查询的小Demo。麻雀虽小五脏俱全。希望你能有所帮助,这里采用的是Maven进行管理。这个项目一共抽了5个配置文件,当然在实际的项目开发者,会分的更细。至于如何在eclipse下创建maven管理的ssm整合项目,网上的资源非常的多数据库常量配置文件:db.properties这里的内容就不用细说。就是...

2018-08-23 16:21:13 621

空空如也

空空如也

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

TA关注的人

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