- 博客(70)
- 资源 (12)
- 收藏
- 关注
转载 设计模式之工厂模式(factory pattern)
工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。1. 简单工厂模式该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象,其UML类图如下:下面我们使用手机生产来讲解该模式:Phone类:手机标准规范
2020-09-27 16:23:50
187
原创 JAVA中的static关键字(静态变量和成员变量)
static的特点: 1.static是一个修饰符,用于修饰成员; 2.static修饰的成员被所有的对象所共享; 3.static优先于对象存在,因为static的成员随着类的加载就已经存在了; 4.static修饰的成员多了一种调用方式,就可以直接被类名所调用。(类名.静态成员) 5.static修饰的数据是共享数据,对象中存储的是特有数据;举例:教室里有一台饮水机和50名学生,每个学生都有自带水杯。 这台饮水机就可以用static修饰,优先于水杯这个
2020-05-14 16:12:56
1117
转载 数据结构:堆(Heap)
堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。堆的常用方法:构建优先队列 支持堆排序 快速找出一个集合中的最小值(或者最大值) 在朋友面前装逼堆属性堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是...
2019-10-24 21:18:41
224
转载 你的系统如何支撑高并发?
高并发系统各不相同。比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统。他们在应对高并发的时候,因为系统各自特点的不同,所以应对架构都是不一样的。另外,比如电商平台中的订单系统、商品系统、库存系统,在高并发场景下的架构设计也是不同的,因为背后的业务场景什么的都不一样。最简单的系统架构假设刚刚开始你的系统就部署在一台机器上,背后就连接了一台数据库,...
2019-10-22 20:05:10
234
转载 面试常问:什么是红黑树?
什么是红黑树?————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,...
2019-10-22 16:42:41
160
转载 数据库索引B树、B+树、Hash索引
程序员小灰 - 漫画:什么是B-树?(注意查询、插入删除的图解)程序员小灰 - 蛮会:什么是B+树?MYSQL中的几种索引MYSQL索引实现原理(重要)B树与B+树MYSQL索引原理详解联合索引(复合索引)在B+树上的结构联合索引在B+树上的结构(重要)什么是全文索引?数据库索引为啥要用树结构做存储?树的查询效率高,还可以做有序。B+树...
2019-10-22 15:59:04
391
转载 数据库索引(B树,B+树,哈希)
一. 什么是索引? 索引的目的就是便于快速查找。一本书的索引就是目录,可以让我们快速定位到要查找的内容;数据库的数据是以记录的方式存在的,所以索引的目的就是便于查找某一些记录。索引类型(常见的数据库书籍中的关于索引类别的一些称呼): ①唯一索引:不允许其中任何两行具有相同值的索引 使用主键和候选键建立的索引就是唯一索引,因为主键和候选键都可以确定唯一一个元组,即一张表...
2019-10-22 15:58:21
503
转载 为什么MySQL数据库要用B 树存储索引?
话说两个多月前,小史通过了A厂的一面,两个多月后的今天,小史终于等到了A厂的二面。简单的自我介绍后,面试官看了看小史的简历,开始发问了。小史:没问题,这个项目前端用的react+webpack,后端用的nginx+SpringBoot+Redis+MySql,前后端分离的,最后用docker进行容器化部署。主要模块有师生系统、课程系统、成绩系统、选课系统等。...
2019-10-22 15:15:48
161
转载 浅析MySQL InnoDB中的B 树索引
首先列举下在面试过程中对于B+树索引常见的两个问题,希望通过本文简要解决这些问题:B+树索引是什么? 为什么说B+树比B树更适合数据库索引?B+树索引介绍B+tree众所周知,一颗传统的M阶B+树需要满足以下几个要求:从根节点到叶节点的所有路径都具有相同的长度 所有数据信息都存储在叶子节点,非叶子节点仅作为叶节点的索引存在 根节点至少拥有两个子树 每个树节点最多拥有M...
2019-10-22 14:59:08
155
转载 微服务架构中分布式事务实现方案如何取舍
提起微服务架构,不可避免的两个话题就是服务治理和分布式事务。数据库和业务模块的垂直拆分为我们带来了系统性能、稳定性和开发效率的提升的同时也引入了一些更复杂的问题,例如在数据一致性问题上,我们不再能够依赖数据库的本地事务,对于一系列的跨库写入操作,如何保证其原子性,是微服务架构下不得不面对的问题。1 分布式事务解决方案针对分布式系统的特点,基于不同的一致性需求产生了不同的分布式事务解决...
2019-10-22 14:19:08
254
转载 b 树图文详解
转载自:伯乐专栏作者/玻璃猫,微信公众号 - 梦见漫画:什么是b+树这一次我们来介绍 B+ 树。一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。...
2019-10-21 16:36:21
245
转载 B树,B-树和B+树的区别
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,...
2019-10-21 16:34:55
1483
转载 查漏补缺:JVM常见面试题解析
前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出。思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案:栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈...
2019-10-20 16:13:03
204
转载 阿里技术手册:为什么覆盖 equals() 一定要覆盖 hashCode()
在每个覆盖了 equals 方法的类中,都必须覆盖 hashCode 方法。如果不这样做的话,就会违反 hashCode 的通用约定,从而导致该类无法结合所有的给予散列的集合一起正常运作。这类集合包括 HashSet、HashMap,下面是Object 的通用规范: 在应用程序的执行期间,只要对象的 equals 方法的比较操作所用到的信息没有被修改,那么同一个对象的多次调用,hashCod...
2019-10-17 09:22:13
137
转载 一文了解InnoDB存储引擎
从Mysql5.5版本开始,InnoDB是默认的表存储引擎。其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读、同时被设计用来最有效的利用以及使用内存和CPU。本文主要内容:InnoDB体系架构 CheckPoint技术 InnoDB关键特性一、InnoDB体系架构下图简单描述了InnoDB存储引擎的体系结构:InnoDB存储引擎有多个内存块,这些内存块组...
2019-10-16 17:14:22
364
原创 一张图让你看懂InnoDB
熟悉MySQL的人,都知道InnoDB存储引擎,如大家所知,Redo Log是innodb的核心事务日志之一,innodb写入Redo Log后就会提交事务,而非写入到Datafile。之后innodb再异步地将新事务的数据异步地写入Datafile,真正存储起来。那么innodb引擎有了redo log和buffer pool以后,为什么能够在提升性能的同时,还能保证不丢数据呢? Buffe...
2019-10-16 16:00:00
121
转载 面试官,不要再问我三次握手和四次挥手
文章目录1. 三次握手1.1 为什么需要三次握手,两次不行吗?1.2 什么是半连接队列?1.3 ISN(Initial Sequence Number)是固定的吗?1.4 三次握手过程中可以携带数据吗?1.5 SYN攻击是什么?2. 四次挥手2.1 挥手为什么需要四次?2.2 2MSL等待状态2.3 四次挥手释放连接时,等待2MSL的意义?两个理由:2.4 为什么TIME_...
2019-10-16 14:46:55
107
原创 图解 MySQL 索引:B-树、B+树
一、索引的分类 二、索引的底层实现 三、问题 看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问!本文中有关存储引擎请查看MySQL存储引擎-InnoDB和MyISAM索引是什么?索引...
2019-10-16 10:33:11
126
原创 JAVA多线程笔试题-获取支付方式
一、题目内容二、我的答案 利用了线程池、考虑了超时处理、不知道这样写是否还有其他问题,或者更好更优的解决方案?import java.util.*;import java.util.concurrent.*; public class MoreThread { public static void main(String[] args) { L...
2019-10-11 00:00:09
395
转载 数据结构-实现两个有序链表合并为一个有序链表(java实现)
节点类public class Node { private Node next; private Integer number; Node(Integer number) { this.number=number; next=null; } Node() { } public Node getNext() { return next; } pub...
2019-10-10 11:17:32
228
原创 spring单例在高并发下可能出现的错误
spring单例在高并发下可能出现的错误spring单例在高并发下可能出现的错误: 首先,只有当注入的对象是无状态的幂等的才可以保证执行前后不被修改,否则执行一次之后单例对象就会发生改变,在下次执行有肯能造成结果不一样,当在高并发的情况下就会出现,这个线程刚使用单例对象进行属性设置,还未使用的情况下,另一个进程已经将单利对象的数据进行修改属性完成,则远来线程获取到的单例就是一个脏对象不可使用。...
2019-10-10 09:59:47
581
转载 为什么spring单例模式可以支持多线程并发访问
为什么spring单例模式可以支持多线程并发访问?1、spring单例模式是指,在内存中只实例化一个类的对象2、类的变量有线程安全的问题,就是有get和set方法的类成员属性。执行单例对象的方法不会有线程安全的问题因为方法是磁盘上的一段代码,每个线程在执行这段代码的时候,会自己去内存申请临时变量为什么局部变量不会受多线程影响?1、对于那些会以多线程运行的单例类,例如Web应用中的Ser...
2019-10-10 09:59:16
372
原创 java中求两个数组(集合)的交集,并集,差集
import java.util.ArrayList;import java.util.Collections;public class test1 { public static void main(String[] args) { ArrayList<Integer> tmplist=new ArrayList<Integer>(); i...
2019-10-09 23:24:23
1481
原创 二叉树遍历-JAVA实现
二叉树遍历分为前序、中序、后序递归和非递归遍历、还有层序遍历。//二叉树节点public class BinaryTreeNode { private int data; private BinaryTreeNode left; private BinaryTreeNode right; public BinaryTreeNode() {} ...
2019-10-09 23:00:20
73
转载 hashmap原理以及扩容
hashmap扩容......................................................................................................................11. equals和hashcode........................................................
2019-10-09 10:44:06
122
转载 sql优化的几种方式
一、为什么要对SQL进行优化我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。二、SQL优化的一些方法1.对查询进行优化,应尽量避免全表扫描...
2019-10-09 10:28:34
102
原创 面试官问:你讲讲分布式事务问题的几种方案?
面试题1、分布式事务了解吗?2、你们是如何解决分布式事务问题的?面试官心理分析只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧。先不说你搞过没有,...
2019-10-09 10:25:27
114
转载 分布式事务实践(三)--Spring的全局事务JTA 李理可
01.Spring的本地事务Spring本身提供了一套Spring容器中进行事务管理的接口:不同的数据源厂商对Spring提供的事务管理接口都有相应的实现.0.jpg而在Spring的容器内,调用者实际上是通过调用Spring的事务接口来实现事务的管理.1.png02. 容器内存在多个数据源时如果一个应用容器中存在多个不同的数据源,通常我们会创...
2019-10-09 10:23:33
198
原创 java实现人民币数字转大写
0希望转换出来的结果为:零元零角零分1234希望转换出来的结果为:壹仟贰佰叁拾肆元零角零分9999希望转换出来的结果为:玖仟玖佰玖拾玖元零角零分1234.5希望转换出来的结果为:壹仟贰佰叁拾肆元伍角零分1234.9希望转换出来的结果为:壹仟贰佰叁拾肆元玖角零分1234.56希望转换出来的结果为:壹仟贰佰叁拾肆元伍角陆分1234...
2019-10-09 10:07:34
361
原创 软件架构图
在写需求说明书需要画系统架构图,给客户汇报PPT的时候也需要画系统架构图,系统架构图并不全是领导会去画的,很多时候,连刚进公司的需求分析师都会被要求去画系统架构图。先看看别的公司如何画系统架构图的吧~一、按功能模块把每个功能模块,以及功能模块的菜单罗列清楚。这种是最基础的架构图,比较适合IT看,好处是把系统边界确认清楚,不好的是看不出业务是如何管理的。二、按层级层级...
2019-10-08 20:18:46
3011
转载 快速排序(java实现)
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放...
2019-10-08 16:48:04
112
原创 Java实现冒泡排序
原理:每次比较两个相邻的元素,将较大的元素交换至右端。思路:每次冒泡排序操作都会将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序,一次冒泡至少让一个元素移动到它应该排列的位置,重复N次,就完成了冒泡排序。通过一个图来简单理解一下一次冒泡的过程【注意:图中每一竖列是一次比较交换】:图中可以看出,经过一次冒泡,6这个当前数组中最大的元素飘到了最...
2019-10-08 16:39:43
128
原创 java经典问题——生兔子
java经典问题——生兔子题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....从第三个月起,后面的兔子总数都等于前面两个月的兔子总数之和,即为斐波那契数列。源代码如下:递归方式:package rabb...
2019-10-08 16:09:39
319
原创 Redis 经典 必问21问,BAT面试都会问
1.什么是redis?Redis 是一个基于内存的高性能key-value数据库。2.Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Val...
2019-10-08 15:20:24
115
转载 Spring事务:事务属性之7种传播行为
事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自...
2019-10-08 15:10:10
151
原创 事务的四种隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工...
2019-10-08 11:18:39
107
原创 Zookeeper常见问题(二)
Zookeeper是一个分布式协调框架,有不错的性能,也经过许多公司的验证,所以在很多场景都有使用。大家一般用Zookeeper来实现服务发现(类似DNS),配置管理,分布式锁,leader选举等。在这些场景中,Zookeeper成为了一个被依赖的核心组件,Zookeeper的稳定性是需要特别关注的。 去哪儿网也在很多场景依赖Zookeeper,所以我们也一直在摸索怎么更好的运维稳定的Zook...
2019-10-07 15:17:13
477
1
原创 Zookeeper常见问题一
ZK选举过程当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。Zk的选举算法使用ZAB协议:选举线程由当前Server发起选举的线程担任,其主要功能是对投票结果进行统计,并选出推荐的Server; 选举线程首先向所有Server发起一次询问(包括自己); 选举线...
2019-10-07 15:16:18
1073
原创 Zookeeper的问题整理
Zookeeper典型应用场景有哪些?ZooKeeper是一个高可用的分布式数据管理与协调框架。基于对ZAB算法的实现,使该框架保证了分布式环境中数据的一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。典型场景:数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动...
2019-10-07 12:05:14
192
原创 Redis 数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。String(字符串)string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数...
2019-10-06 14:37:53
79
独立进程JVM设置.doc
2019-08-08
基于Hadoop建立云计算系统
2017-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人