自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张花生的博客

间歇性凌云壮志,持续性混吃等死

原创 汇总目录

闭关自学8个月(本人为Java开发),现在重新回来更新CSDN,会将我这段时间以来的学习总结笔记汇总出来,本篇博客做成一个目录方便大家查看。内容为自己学习过程对知识点的总结,或许比不上某些深入讲解某个知识点的文章,但是绝对适合你了解整个知识体系,并较为无死角地掌握Java后端技术。致关注我的大家~,我的文章更新形式为在本页面持续更新,可能你看不到我发布了新博客,但是我平时的更新都会体现在这篇文...

2020-06-07 10:35:38 3294 64

原创 TCP与UDP的区别及相关问题

TCP与UDP的区别 TCP(Transmission Control Protocol)的概念 TCP是一种面向连接的,提供可靠交付服务和全双工通信的,基于字节流的端到端的传输层通信协议。 TCP在传输数据之前必须先建立连接,数据传输结束后要释放连接。 每一条TCP连接只能有2个端点,故TCP不提供广播或多播服务。 TCP提供可靠交付,通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序到达。 TCP是面向字节流的。虽然应用进程和TCP的.

2020-06-20 18:45:28 207

原创 三次握手与四次挥手及常见问题

TCP的三次握手过程?为什么会采用三次握手,二次握手可以吗? 答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。 (1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。 (2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺

2020-06-08 19:25:16 144

转载 一条sql语句执行得很慢的原因有哪些?(面试题)

目录1、偶尔很慢1.1、数据库在刷新脏页(flush)1.2、拿不到锁2、一直这么慢2.1、没用到索引2.2、数据库选错了索引一条SQL语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论。1、大多数情况是正常的,只是偶尔会出现很慢的情况。2、在数据量不变的情况下,这条SQL语句一直以...

2019-07-16 10:38:58 608 1

原创 Paxos算法讲解

Paxos算法解决的问题是在一个消息可能会发生延迟、丢失、重复的分布式系统中 如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏值的一致性。基于一大堆完全不可靠的网络条件下,可靠确定地实现共识一致性的算法 Paxos算法是这样解决这个问题: 1、每个人都可以提出建议、同意建议、接受建议 2、少数服从多数。只要建议被多数人同意即可确定该建议。...

2019-06-02 08:59:32 350

转载 Cookie 和 Session 关系详解

目录什么是 Cookie 和 Session ?Cookie和Session的区别为什么需要 Cookie 和 Session,他们有什么关联?如果浏览器中禁止了 Cookie,如何保障整个机制的正常运转。如何考虑分布式 Session 问题?如何解决Cookie跨域请求?Jsonp 跨域的原理是什么?什么是 Cookie 和 Session ?什么是 Coo...

2019-05-17 23:43:35 768

转载 Mysql数据库中的各种锁

在介绍InnoDB与MyIsam的区别时,提到了:InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁本文便着重对Mysql数据库中的锁进行介绍概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。MySQL大致可归纳为以下3种锁:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最...

2019-04-26 16:46:32 13620

转载 分布式事务、二阶段提交协议、三阶段提交协议

分布式事务分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)在分布式系统中,各个节点之间在物理上相互独立,通过网络进行沟通和协调。由于存在事务机制,可以保证每个独立节点上的...

2019-04-25 09:57:08 160

原创 分布式事务解决方案——柔性事务TCC(Base原则)

柔性事务所谓柔性事务,相比较与数据库事务中的ACID这种刚性事务来说,柔性事务保证的是“基本可用,最终一致。”这其实就是基于BASE理论,保证数据的最终一致性。虽然柔性事务并不像刚性事务那样完全遵循ACID,但是,也是部分遵循ACID的,简单看一下关于ACID四个属性,柔性事务的支撑程度:原子性:严格遵循一致性:事务完成后的一致性严格遵循;事务中的一致性可适当放宽隔离性:并行事...

2019-04-25 09:52:58 958

原创 分布式系统的BASE理论

BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。基本可用(...

2019-03-25 23:30:25 208

原创 分布式一致性Consistency

分布式领域CAP理论:任何一个分布式系统都无法同时满足Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性) 这三个基本需求。最多只能满足其中两项。但是,一个分布式系统无论在CAP三者之间如何权衡,都无法彻底放弃(强)一致性(Consistency),如果真的放弃一致性,那么就说明这个系统中的数据根本不可信,数据也就没有意义...

2019-03-25 23:28:38 265

转载 分布式系统的CAP理论

CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。一致性可用性可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。通常我们描述一个系统的可用性时,我们说淘宝的系统可用性可以达...

2019-03-25 23:26:16 227

原创 集中式、分布式、集群、高并发等概念

集中式、分布式、集群互联网架构最大的特点:高并发:单位时间收到的请求数量海量数据:海量数据存储与分析集中式系统集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。拿一个电子商城举例,一个集中式系统的电子商城,通过一个应用实现,该应用部署在一起主机上,对外提供服务。用户的所有操作均...

2019-03-11 08:44:28 658

原创 Lucene相关

Lucene简介全Java实现、开源、高性能、功能完整、易拓展,功能完整体现在对分词的支持、各种查询方式(前缀、模糊、正则等)、打分高亮、列式存储(DocValues)等等。 基于Lucene的Solr和ElasticSearch分布式检索分析系统也发展的如火如荼 简单地说:Lucene是基于倒排表、FST数据结构字典、正向文件、列式存储DocValues其中,数据结构...

2018-12-11 10:03:03 80

原创 Spring相关

目录为什么学习spring(优缺点):优点缺点SpringMVC流程:实际加载流程简述SpringMVC中MVC分别指什么,他们怎么工作的SpringMVC拦截器与过滤器的区别IOC的优点是什么?什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)SpringAOP原理SpringBoot和Spr...

2018-12-10 20:30:29 154

转载 MVC、MVP、MVVM

MVC(Model-View-Controller)视图(View):用户界面。 控制器(Controller):业务逻辑 模型(Model):数据保存View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈 不足之处:依赖太多View 依赖Controller和M...

2018-12-09 22:35:19 81

转载 服务限流算法

业务代码中的逻辑限流 按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事) 因为某个热点事件(微博热搜) 竞争对象爬虫 恶意的刷单 2、对内的RPC服务一个服务A的接口可能被BCDE多个服务进行调用,在B服务发生突发流量时,直接把A服务给调用挂了,导致A服...

2018-11-17 19:15:05 344

原创 负载均衡与双机热备

负载均衡原理与技术实现负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。(一)HTTP重定向实现负载均衡当用户向服务器发起请求时,请求首先被集群调度者截获;调度者根据某种分配策略,选择一台服务器,并将选中的服务器的IP地址封装在HTTP响应...

2018-11-17 19:11:40 1001

原创 秒杀、高并发架构

什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。 秒杀一般是访问请求数量远远大于库存数量,只有少部分...

2018-11-05 22:06:15 264

原创 消息中间件/队列:ActiveMQ、RabbitMQ、Kafka、RocketMQ、ZeroMq

https://blog.csdn.net/vtopqx/article/details/76382934 MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道。以管道的方式做消息传递。场景:1.其实我们在双11的时候,当我们凌晨大量的秒杀和抢购商品,然后去结算的时候,就会发现,界面会提醒我们,让我们稍等,以及一些友好的图片文字提醒。而不是像前几年的时代,...

2018-10-19 11:21:42 157

原创 RabbitMQ相关

RabbitMQ简介AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erl...

2018-10-19 11:19:51 88

原创 WebService相关

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。是一种可以接收从Internet或者Internet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。基于web的服务:服务端提供的服务接口让客户端访问 跨平台、跨语言的整合方案 什么时候要用WebService电商平台...

2018-10-16 10:00:50 152

原创 Dubbo(x)相关(分布式服务框架)

DubboDubbo是阿里的分布式服务框架,基于zookeeper实现,已于12年底停止维护升级Dubbox是当当团队基于dubbo升级的一个版本与zookeeper的关系:Dubbo将注册中心进行抽象,使得它可以外接不同的存储媒介给注册中心提供服务,有ZooKeeper,Memcached,Redis等。 Dubbo各种各样的RPC、支持自定义协议、统一管理、统一监控、资源整...

2018-10-15 18:54:30 113

原创 RPC 通信和 RMI 区别

RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。一个RPC框架包含的要素RMI (Remote Method Invocation) 远程方法调用。能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。是 Java 领域创建分布式应用的技术基石。后续的 EJB 技...

2018-10-14 19:23:34 1816

原创 BIO、NIO和AIO的区别

BIO:同步阻塞:排队等买小龙虾NIO:同步非阻塞:预定了小龙虾后去干其他事情,期间自己回来看小龙虾做好没AIO:异步非阻塞:预定了小龙虾后去干其实事情,小龙虾做好了通知我  NIO:同步非阻塞NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供...

2018-10-12 10:33:18 206

原创 微服务相关

组件化与模块化组件化和模块化的中心思想都是分而治之。目的都是将一个庞大的系统拆分成多个组件或者说是模块。组块化:组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,主要目的就是减少耦合。一个独立的组件可以是一个软件包、web服务、web资源或者是封装了一些函数的模块。这样,独立出来的组件可以单独维护和升级而不会影响到其他的组件。模块化:模块化的...

2018-10-11 22:03:33 88

原创 Redis相关

目录Redis基础命令String操作Hash操作List操作Set操作Sorted Set操作一致性Hash算法Redis五大数据类型应用场景Redis分布式锁Redis集群方案Redis Sharding集群:一致性hash算法redis-cluster:哈希槽、投票容错Redis的持久化方案Redis的持久化方案各自缺点Redis基...

2018-10-10 19:25:39 127

原创 Docker相关

通俗地解释:  Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。  docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集...

2018-10-08 19:58:19 115

原创 一些智力题

目录玻璃球与楼层烧香撞球小白鼠试毒水壶装水12枚硬币玻璃球与楼层 题目:有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层?? 答:https://blog.csdn.net/coolws123/article/details/22998879 ...

2018-09-27 15:20:02 402

转载 跳跃表(SkipList)

跳跃表在查询、添加、删除的时间复杂度上做到O(logN)跳跃表(SkipList)是一种基于有序链表的扩展,简称跳表 思考:如何才能更快找到一个有序链表的某一节点以上做法虽然增加了50%的额外空间,但是性能提高了一倍,此外还可以继续提取当大量的新节点通过逐层比较,最终插入到原链表之后,上层的索引节点会渐渐变得不够用,所以需要考虑如何从新节点当中选取一部分提取到上...

2018-09-27 15:11:42 167

转载 字典序算法

给定一个正整数,实现一个方法来求出离该整数最近的大于自身的换位数换位数:把一个整数各个数位的数字进行全排列,从而得到新的整数。例如53241和23541。例子:输入12345,返回12354       输入12354,返回12435       输入12435,返回12453 思路:给定整数12354,想找到最大换位数,需要尽量保持高位不变,低位在最小的范围内变换顺序。...

2018-09-27 15:06:59 957

原创 搜索引擎之正排与倒排索引

正排索引(正向索引)正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。正排表结构如图1所示,这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对应的索引信息...

2018-09-27 15:04:27 980

原创 大量数据去重:Bitmap位图算法和布隆过滤器(Bloom Filter)

Bitmap算法与其说是算法,不如说是一种紧凑的数据存储结构。是用内存中连续的二进制位(bit),用于对大量整型数据做去重和查询。其实如果并非如此大量的数据,有很多排重方案可以使用,典型的就是哈希表。实际上,哈希表为每一个可能出现的数字提供了一个一一映射的关系,每个元素都相当于有了自己的独享的一份空间,这个映射由散列函数来提供(这里我们先不考虑碰撞)。实际上哈希表甚至还能记录每个元素出现的...

2018-09-27 15:01:45 1517

转载 ​​​​​​​LRU算法(最近最久未使用/最近最少使用算法)

根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”1、最常见的实现是使用一个链表保存缓存数据1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当链表满的时候,将链表尾部的数据丢弃。 【命中率】当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命...

2018-09-26 15:48:20 366

原创 辗转相除法与更相减损术(求最大公约数)

辗转相除法:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和5的最大公约数。以上代码存在取模运算,大数据较大时,其效率较差 更相减损术:两个正整数a和b(a>b),它们的最大公约数等于a-b的差值c和较小数b的最大公约数。比如10和25,25减去10的差是...

2018-09-26 15:44:21 4676 2

原创 top K、重复、排序问题

①Top K问题:分治+Trie树/Hash_map+小顶堆。采用Hash(x)%M将原文件分割成小文件,如果小文件太大则继续Hash分割,直至可以放入内存。然后使用Trie树来Hash统计每个小数据集中的query词频,之后用小顶堆求出每个数据集中出现频率最高的前K个数,最后在所有top K中求出最终的top K。②重复问题:BitMap位图 或 Bloom Filter布隆过滤器 或 Ha...

2018-09-26 15:40:01 767 1

原创 前、中、后缀表达式

前缀表达式:所有的符号都是在要运算数字的前面出现 中缀表达式:平时用的标准四则运算表达式:9+(3-1)*3+10/2 后缀表达式:所有的符号都是在要运算数字的后面出现 中缀表达式转化为后缀表达式:9 3 1 - 3 * + 10 2 / + 规则:从左到右遍历中缀表达式每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶...

2018-09-25 10:11:18 554

原创 树(扩展)

目录红黑树B树、B+树Trie树(前缀树/字典树/单词查找树)AVL树:平衡二叉树、平衡二叉搜索树,最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树。  红黑树: 平衡二叉树,广泛用在C++的STL中。如map和set都是用红黑树实现的。B/B+树: 用在磁盘文件组织 数据索引和数据库索引。  Trie树(字典树): 用...

2018-09-25 10:04:29 246

原创 二叉树

目录 二叉树什么是二叉树?什么是二叉排序树?二叉树的数据结构定义二叉树的各种遍历从上到下不分行的层序遍历从底到上分行的层序遍历二叉树的最小深度判断是否为平衡二叉树按之字形打印二叉树二叉树的直径二叉树的镜像判断是否为对称二叉树二叉树什么是二叉树?在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子...

2018-09-24 11:23:11 408

原创 各种排序算法、十大排序算法

目录二分查找冒泡排序选择排序插入排序希尔排序归并排序快速排序堆排序计数排序桶排序基数排序外部排序与归并排序(强调一种思想)动态规划要点:二分查找//不使用递归实现:while循环,时间O(log2 N),空间O(1)public static int commonBinarySearch(int[] arr,int key){ ...

2018-09-24 10:57:14 361

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