自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker使用指南

一:虚拟化1.什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。在实际的生产环境...

2019-05-26 23:05:02 973

原创 MyBatis源码解析

一:运行原理1.SqlSessionFactory的创建及配置文件的解析首先通过配置文件的文件流创建SqlSessionFactoryBuilder对象调用build方法,传入文件流之后通过解析器解析xml配置文件通过XPathParse解析configuration节点,获取根节点,之后再parseConfiguration()方法中根据根节点解析根节点中的每...

2019-05-26 15:03:06 304

原创 Hystrix实现微服务高可用架构

一:什么是Hystrix在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很正常的。Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。Hystrix 通过将依赖服务进行资源隔离,进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用中进行蔓延;同时Hystrix 还提供故障时...

2019-05-24 17:20:46 713

原创 高频数据库分库分表面试题解析

一.为啥要分库分表?假如我们现在是一个小创业公司(或者是一个 BAT 公司刚兴起的一个新部门),现在注册用户就 20 万,每天活跃用户就 1 万,每天单表数据量就 1000,然后高峰期每秒钟并发请求最多就 10。天,就这种系统,随便找一个有几年工作经验的,然后带几个刚培训出来的,随便干干都可以。结果没想到我们运气居然这么好,碰上个 CEO 带着我们走上了康庄大道,业务发展迅猛,过了几个月,...

2019-05-23 17:29:38 2424

原创 高频分布式面试题解析

一:为啥进行系统拆分?如何进行系统拆分?为啥要使用dubbo?1.为啥进行系统拆分要是不拆分,一个大系统几十万行代码,20 个人维护一份代码,简直是悲剧啊。代码经常改着改着就冲突了,各种代码冲突和合并要处理,非常耗费时间;经常我改动了我的代码,你调用了我的,导致你的代码也得重新测试,麻烦的要死;然后每次发布都是几十万行代码的系统一起发布,大家得一起提心吊胆准备上线,几十万行代码的上线,可能...

2019-05-23 10:39:07 960

原创 高频缓存面试题解析(二)

八:如何应对缓存雪崩及缓存穿透?1.缓存雪崩缓存雪崩现象:缓存服务器宕机导致大量请求直接到数据库,数据库无法抗住这么大的并发量,导致数据库宕机,从而导致整个程序宕机。之后可能就无法启动数据库,起一次,死一次。解决办法:事前:尽量保证整个 Redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。 事中:本地 Ehcache 缓存 + Hystrix 限流&am...

2019-05-22 11:35:38 814 1

原创 高频缓存面试题解析(一)

一:项目中缓存如何使用?缓存使用不当会造成什么后果?1.项目中如何使用:结合自己的项目总体概括一下即可2.为啥在项目里要用缓存呢:高性能:假设这么个场景,你有个操作,一个请求过来,各种乱七八糟操作mysql,半天查出来一个结果,耗时600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?使用缓存,折腾600ms查出来的结果,扔缓存里,一...

2019-05-21 21:02:17 1173

原创 高频分布式搜索引擎面试题解析

一:ES分布式架构的基本原理(ES如何实现分布式)?ElasticSearch 设计的理念就是分布式搜索引擎,底层其实还是基于 lucene 的。核心思想就是在多台机器上启动多个 es 进程实例,组成了一个 es 集群。es 中存储数据的基本单位是索引,比如说你现在要在 es 中存储一些订单数据,你就应该在 es 中创建一个索引order_idx,所有的订单数据就都写到这个索引里面去,一个索...

2019-05-20 22:29:08 539

原创 高频消息中间件面试题解析

一:消息队列的主要作用是什么?1.消息队列的特性:业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。FIFO,先投递先到达的保证是一个消息队列和一个buffer的本质区别。容灾,对于普适的消息队列组件来说,节点的动态增删和消息的持久化,都是支持其容灾能力的重要基本特性。性能,这个不必多说了...

2019-05-20 09:25:13 2464

原创 设计模式详解(三)

十六:解释器模式(interpreter)1.介绍:用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的 编译器和解释器设计。当我们需要开发一种新的语言时,可以考虑使用解释器模式。尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用 Jruby,Groovy、java的js引擎来替代解释器的作用,弥补java语言的不足。2.使用场景:EL表达式式的处理 正...

2019-05-17 16:13:31 180

原创 设计模式详解(二)

七:桥接模式(bridge)1.问题引出:商城系统中很多商品分类,以电脑为例:台式机,笔记本,平板电脑等,我们可以通过下图描述其关系通过上面的图会发现很多问题:如果要增加一个新的电脑类型需要再增加各个品牌对应的类 如果要增加一个新的品牌,也要增加各个电脑类型的类 违反单一职责原则:一个类即表示品牌又表示是那种类型的电脑2.场景分析商城系统中常见的商品分类,以电脑为类,如何...

2019-05-17 11:38:07 207

原创 设计模式详解(一)

一:单例模式1.作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。2.常用应用场景:Windows的Task Manager(任务管理器)就是很典型的单例模式 windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。 项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,每次n...

2019-05-16 15:17:38 179

原创 消息中间件之ActiveMQ

一:JMSJMS的全称是Java Message Service,即Java消息服务。用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有两种...

2019-05-15 16:02:59 354

原创 Dubbo使用及原理简介

一:RPCRPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。 RPC两个核心模块:通讯,序列化,这两个模块决定RPC的性能好坏...

2019-05-13 22:34:05 1189

原创 JDK1.7&1.8中ConcurrentHashMap解析

一.总体概述HashMap在开发中很常用,但HashMap存在一个弊端就是线程不安全,解决办法就是使用Hashtable代替或使用Collections.synchronizedMap(m);将HashMap转换为线程安全的,但这两种方法虽说实现了线程安全,但是并发性能比较差,因为是全表加锁,那么并发界的大牛Doug Lea就为我们提供了ConcurrentHashMap解决这个问题,不仅实现...

2019-05-12 15:22:29 923

原创 JDK1.8中HashMap解析

一:概述JDK 1.8对HashMap进行了比较大的优化,底层实现由之前的“数组+链表”改为“数组+链表+红黑树”相对于JDK7中的HashMap,JDK8中HashMap的实现主要有一下几点不同:在JDK8中new HashMap()的时候,底层没有创建一个默认长度为16的Entry[]数组 在JDK8中Entry[]数组变为Node[]数组 在JDK8中首次调用put()方...

2019-05-10 15:38:50 516

原创 JVM面试题总结

1.JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots?什么垃圾:内存中不在被使用到的空间就是垃圾判断对象时垃圾的方法:引用计数法:一个对象被引用其引用值就+1,取消引用就-1,很难解决循环引用的问题 可达性分析法:根搜索算法的基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chai...

2019-05-09 14:07:12 5248

原创 Redis持久化,事务,主从复制

一:Redis配置文件介绍1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid3. 指定Redis监听端口,默认端口为6379,为...

2019-05-04 14:50:47 213

原创 MySql高级(二)

四:MySql锁机制1.mysql锁定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。2.锁的分类从对...

2019-05-03 12:28:05 1344

原创 MySql高级(一)

一:MySql的架构介绍1.mysql的逻辑架构和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。1)连接层最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端...

2019-05-02 13:05:04 192

空空如也

空空如也

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

TA关注的人

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