自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 联合索引

联合索引比单列索引优先字段a的单列索引, (a,b)的联合索引查询时使用联合索引联合索引本质当创建(a,b,c)联合索引时,相当于创建了(a)单列索引,(a,b)联合索引以及(a,b,c)联合索引想要索引生效的话,只能使用 a和a,b和a,b,c三种组合;当然,我们上面测试过,a,c组合也可以,但实际上只用到了a的索引,c并没有用到!...

2019-02-28 18:46:02 383

原创 tomcat

tomcat结构模块组成结构Tomcat的核心组件就Connector和Container,一个Connector+一个Container(Engine)构成一个Service,Service就是对外提供服务的组件,有了Service组件Tomcat就能对外提供服务了,但是光有服务还不行,还需要有环境让你提供服务才行,所以最外层的Server就是为Service提供了生存的土壤。Conne...

2019-02-27 00:58:50 91

原创 synchronized实现

synchronized的三种应用方式修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。synchronized底层语义原理同步(Synchronization)基于进入和退出管程(Monitor)对象实现, 无论是显式同步(...

2019-02-26 23:04:17 542

原创 ActiveMQ

什么是activemqactiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。activemq的作用以及原理Activemq 的作用就是系统之间进行通信。 当然可以使用其他方式进行系统间通信, 如果使用 Activemq 的话可以对系统之间的调用进行解耦, 实现系统间的异步通信。 原理就是生产者生产消息...

2019-02-26 22:24:07 167

原创 多线程

java乐观锁与悲观锁synchronized关键字的实现是悲观锁。存在以下问题:        1. 在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。      2. 一个线程持有锁会导致其它所有需要此锁的线程挂起。      3. 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。乐观锁:CAS实现的,乐观锁是一种思想...

2019-02-26 14:01:16 122

原创 java8新特性

一、Lambda表达式Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。二、接口的默认方法与静态方法我们可以在接口中定义默认方法,使用default关键字,并提供默认的实现。所有实现这个接口的类都会接受默认方法的实现,除非子类提供的自己的实现。例如:public interface DefaultF...

2019-02-25 21:45:04 95

转载 单点登录

以Cookie作为凭证媒介最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。不难发现以上方式把信任存储在客户端的Cookie中,这种方式很容易令人质疑:Cookie不安全不能跨域实现免登对于第一个问题,通过加...

2019-02-25 16:28:12 154

原创 集合

数组和链表数据结构描述,各自的时间复杂度1、存取方式上,数组可以顺序存取或者随机存取,而链表只能顺序存取;2、存储位置上,数组逻辑上相邻的元素在物理存储位置上也相邻,而链表不一定;3、存储空间上,链表由于带有指针域,存储密度不如数组大;4、按序号查找时,数组可以随机访问,时间复杂度为O(1),而链表不支持随机访问,平均需要O(n);5、按值查找时,若数组无序,数组和链表时间复杂度均为O(...

2019-02-25 15:22:15 144

原创 nio与bio

nio与bio阻塞io(bio)使用线程池问题1.线程的创建和销毁成本很高,在Linux这样的操作系统中,线程本质上就是一个进程。创建和销毁都是重量级的系统函数。2.线程本身占用较大内存,像Java的线程栈,一般至少分配512K~1M的空间,如果系统中的线程数过千,恐怕整个JVM的内存都会被吃掉一半。3.线程的切换成本是很高的。操作系统发生线程切换的时候,需要保留线程的上下文,然后执行系统...

2019-02-25 01:42:51 247

原创 uml

1.Uml介绍1.1.依赖dependency虚线箭头表示。单向,“use a”关系。A依赖B, B是A的局部变量, 方法参数1.2.关联Association实线箭头表示单向或双向, “has a”关系。A关联B, B是A的成员变量。1.2.1.聚合Aggregation空心菱形实线箭头单向,是关联的一种A聚合B,生命周期不同,A是整体, B是局部, 整体不存...

2019-02-25 01:01:30 130 1

原创 java基础

JAVA中的几种基本数据类型是什么,各自占用多少字节。基本数据类型各占多少个字节:数据类型 字节 默认值byte 1 0short 2  0int 4 0long 8 0float 4 0.0fdouble 8 0.0dchar 2 ‘\u0000’boolean 4 false关于boolean占几个字节,众说纷纭,虽然boolean表现出非0即1的“位”特性,但是存储空...

2019-02-25 00:36:37 175

转载 ConcurrentHashMap1.8

初始容量默认是16扩容,容量增倍图解1.71.8ConcurrentHashMap在1.8版本摒弃了Segment(锁段)的概念,而是启用了一种全新的CAS算法的方式实现,Node + CAS + Synchronized。数据结构沿用了与它同时期的HashMap版本的思想,底层依然由数组+链表+红黑树的方式思想。ConcurrentHashMap的Key和Value不允许null...

2019-02-24 23:59:57 422

原创 分布式锁

分布式锁setnx和get,getset三个方法setnx成功,加锁成功setnx失败,get锁的过期时间与当前时间比较,如果锁过期了,getset设置锁的新的过期时间,返回旧的过期时间。如果两个过期时间相等,加锁成功如果失败,150毫秒后重试,最多10秒还失败,就加锁失败del释放锁while (timeout >= 0) { String expir...

2019-02-24 20:38:04 85

原创 redis主从复制

分类全量同步Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:从服务器连接主服务器,发送SYNC命令;主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;从服务器收到快...

2019-02-24 20:29:41 87

原创 redis集群

架构细节(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.127.0.0.1:6380> pingPONG(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.集群都是奇数个(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可(4)redis-cluste...

2019-02-24 20:16:20 278

原创 MySQL锁

引擎相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如:MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁( row-level locking),也支持表级锁,但默认情况下是采用行级锁。行锁 和 表锁1.主要是针对锁粒度划分的,一般分为:行锁、表锁、库锁(1)...

2019-02-24 01:03:13 76

原创 范式与反范式

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换时间。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,...

2019-02-24 00:01:53 735

转载 为什么选用自增量作为主键索引

MyISAM存储引擎MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只...

2019-02-23 23:24:59 1782

原创 http原理

HTTP的长连接和短连接?HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议.短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。长连接:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一...

2019-02-23 19:41:52 204

转载 网络原理

1.TCP/UDP区别以及TCP如何保证传输可靠性TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数...

2019-02-23 03:46:23 158

原创 tcp协议和三次握手

TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)...

2019-02-23 02:59:24 242

转载 SpringBoot 实现热部署有哪几种方式

主要有两种方式:Spring LoadedSpring-boot-devtools引用devtools依赖org.springframework.bootspring-boot-devtoolstrue这样,当修改一个java类时就会热更新。自定义配置热部署以下配置用于自定义配置热部署,可以不设置。# 热部署开关,false即不启用热部署spring.devt...

2019-02-23 02:20:42 7494

转载 springboot原理

1、什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。更多 Spring Boot 详细介绍请看这篇文章《什么是Spring Boot?》。2、为什么要用 Spring Boot?Spring Boot 优点非常多,...

2019-02-23 00:03:36 145

原创 ascii码和unicode

ASCII码表Unicode(UTF-8, UTF-16)我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样.其他啥文字图片之类的其他东东计算机不认识.那为了在计算机上表示这些信息就必须转换成一些数字.你肯定不能想怎么转换就怎么转,必须得有定些规则.于是...

2019-02-22 22:13:27 899

转载 HashMap、Hashtable、ConcurrentHashMap的原理与区别

总结hashmap的key,value都可以是nullhashtable和concurrenthashmap的key,value都不能是null三个的加载因子默认都是0.75计算索引:都是key的hash值,对数组长度取模hashcode方法计算索引用,equals方法比较链表的每个元素,得到要找的元素HashTable底层数组+链表实现,无论key还是value都不能为null,...

2019-02-22 17:26:31 141

原创 python爬虫

urllib2请求beautifulsoup解析器

2019-02-21 00:44:23 74

原创 mysql原理

为什么MyISAM会比Innodb的查询速度快INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:1)数据块,INNODB要缓存,MYISAM只缓存索引块, 这中间还有换进换出的减少;2)innodb寻址要映射到块,再到行,MYISAM记录的直接是文件的OFFSET,定位比INNODB要快3)INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和...

2019-02-20 22:53:56 206

原创 一致性hash

一致性hash算法先构造一个长度为2^32的整数环(这个环被称为一致性Hash环),根据节点名称的Hash值(其分布为[0, 232-1])将服务器节点放置在这个Hash环上,然后根据数据的Key值计算得到其Hash值(其分布也为[0, 232-1]),接着在Hash环上顺时针查找距离这个Key值的Hash值最近的服务器节点,完成Key到服务器的映射查找。这种算法解决了普通余数Hash算法伸缩...

2019-02-20 22:36:21 366

原创 redis原理

道森股份

2019-02-20 21:31:39 231

原创 mongodb原理

数据结构数据库-mysql的数据库集合-表文档-一行数据MongoDB的文件单个大小不超过4M,但是新版本后可提升到16M键值对-字段key大小写有区别,Age不同于age存储json和对象格式的数据bson格式适合存储文档查询也用json格式要注意的问题1 因为MongoDB是全索引的,所以它直接把索引放在内存中,因此最多支持2.5G的数据。如果是64位的会更多。2 因为...

2019-02-20 00:37:27 914

原创 spring原理

1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。目的是解决企业应用开发的复杂性,使用基本的JavaBean来完成以前只可能由EJB完成的事情,并提供了更多的企业应用功能,Spring的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。2、Spring 的优点?(1)spring属于低侵入式设计,代...

2019-02-20 00:19:25 137

原创 springmvc原理

原理图具体流程步骤如下:1、首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;2、DispatcherServlet——>HandlerMapping, HandlerMapping 将会把请求映射为HandlerExecutionChain 对象(包含一个Handl...

2019-02-19 23:54:18 107

原创 jvm

垃圾回收算法年轻代:复制算法老年代:标记清除算法和标记整理算法垃圾回收器3.1.串并行分类3.1.1.串行收集器单线程处理所有gc, 会暂停程序Serial年轻代, 复制算法Serial Old老年代, 单线程, 标记-整理算法3.1.2.并行收集器多线程处理. 也会暂停程序ParNew年轻代, Serial的多线程版本. 复制算法.Parallel Scavenge年轻代...

2019-02-19 21:34:39 249

原创 kafka原理

kafka 保证消息不丢失原因如下有:1)生产者如果异步发送,会造成消息丢失,发送的过程中kafka会先把消息缓存起来。然后批量发送。 若批量发送之前client宕机会造成消息丢失。生产者不丢失消息需要同步发送2)kafka服务器默认异步刷盘,先刷到系统页缓存,然后再刷新到日志文件。页缓存的数据可能会丢失。解决可以同步的方式刷盘,但是这样效率很低,比rabbitmq低。对于我说的第二点有点...

2019-02-19 21:29:04 322

原创 java集合

HashTable与HashMap(1)HashTable和HashMap都实现了Map接口,但是HashTable的实现是基于Dictionary抽象类。(2)在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,既可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由...

2019-02-19 21:27:48 162

原创 zookeeper原理

分布式的、开源的程序协调服务功能有配置维护、域名服务、分布式同步、组服务等。solr,hbase, elasticsearch集群都使用zookeeperdubbo用zookeeper做注册中心1.Paxos算法& Zookeeper使用协议Paxos算法是分布式选举算法,Zookeeper使用的 ZAB协议(Zookeeper原子广播),二者有相同的地方,比如都有一个Leade...

2019-02-19 05:14:47 75

原创 elasticsearch原理

1.ElasticSearch vs Solr 总结(1)es基本是开箱即用,非常简单。Solr安装略微复杂一丢丢,可关注(solr6.6教程-基础环境搭建(一))  (2)Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。  (3)Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持...

2019-02-19 04:57:01 179

转载 mybatis原理

mybatis是不完全的orm框架,封装来jdbc利用反射将输入参数、输出结果与java bean相互转换面试题1、#{}和${}的区别是什么?注:这道题是面试官面试我同事的。答:是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如{}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如是Pro...

2019-02-19 04:11:54 322

原创 索引失效

like后面,以%开头索引列使用函数使用!= ,<>,or字符串列不加引号聚合索引使用不是第一个字段is null, is not null

2019-02-19 00:55:15 97

原创 sql优化

设计字段不用默认值null,用默认值0数字值的字段用数字类型存储,查询比字符串快索引在where后条件字段和表关联字段添加索引,聚合索引比单个索引性能更好表达式禁用select *关联表数量不超过3个尽量单表查询, 在java中处理逻辑不要对条件字段进行函数操作不用无意义表达式1=1...

2019-02-19 00:48:53 75

空空如也

空空如也

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

TA关注的人

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