- 博客(46)
- 收藏
- 关注
原创 数据结构面试题整理
1.你熟悉什么数据结构?数组 链表栈 队列 哈希二叉树 二叉查找树 二叉堆b树 b+树2.快排?快排的实现过程?复杂度如何?方式~双边 单边复杂度~nlogn单边过程~1-先找到一个基准元素,起始下标2-遍历,如果元素比基准元素小,下边+1此元素与下标对应元素交换位置3-当遍历完后,基准元素与当前下标元素交换位置,此时基准元素就分成了两组数据4-两边的数据在递...
2020-04-25 14:02:36 4526
转载 dubbo
【dubbo基础教程】https://www.extlight.com/2018/02/22/Dubbo-%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/【springboot整合dubbo】https://juejin.im/post/5b21d6696fb9a01e4e5e6e63
2020-04-21 19:14:26 216
原创 zookeeper核心
分布式协调器。可以实现分布式锁、服务注册和发现、共享配置。一 数据模型类似于树,也很像文件系统的目录,而树是由节点Znode组成。例如:/动物/猫/植物/松树1 znode存储内容data: znode存储的数据信息acl: 记录znode的访问权限,即哪些ip或哪些人可以访问这个节点stat: znode的各种元数据,比如:事务ID、版本号、时间戳等child:当前zno...
2020-04-20 15:19:48 496
原创 redis cluster
1 分区虚拟槽分区:Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整 数槽内,计算公式:slot=CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。集群限制:1)不支持多数据库空间,单机的16个数据库,只能使用第一个数据库db02)复制结构只支持一层,从节点直接复制主节点,不支持嵌套树状复制结构2 搭建集群...
2020-04-14 19:02:39 587
原创 stateless4j
一 简介stateless4j 为状态机,可以根据不同触发事件决定下一个状态,适用于当状态字段有许多枚举值,避免状态回退,可以用状态机设置状态的流转,统一管理状态机制。二 搭建过程只需要引入依赖即可,如下:<dependency> <groupId>com.github.oxo42</groupId> <artifactId>...
2020-03-25 18:32:45 1373
原创 java大厂面试题汇总
一 java基础序列化的底层实现?int的范围?HashMap底层工作原理,数据结构,什么时候扩容ArrayList 和 Vector 的区别说说 ArrayList,Vector, LinkedList 的存储性能和特性快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?List、Map、Set 三个接口,存取元素时,各有什么特点?Set 里的元素...
2020-03-19 10:08:45 332
原创 mysql explain
id:id是一组数字,表示查询中执行select子句或操作表的顺序,id相同,加载表的顺序是从上到下id不相同,id值越大优先级最高,最先被执行;select_type:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个。primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询...
2020-03-19 10:05:05 114
原创 通俗易懂讲解springcloud
https://mp.weixin.qq.com/s/fN3uHogoj7p3-ZNISxeKpw 通俗易懂讲解springcloud##
2020-03-19 10:04:14 258
转载 springboot整合JWT
1 介绍在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。2 请求流程用户使用账号和面发出post请求;服务器使用私钥创建一个jwt;服务器返回这个jwt给浏览器;浏览器将...
2020-03-09 11:51:55 162
原创 java锁
1 锁升级无锁 - 偏向锁 -轻量级锁(自旋锁)-重量级锁无锁 - 对象刚创建的时候是无锁状态偏向锁 - 使用锁的线程只有一个,偏向锁的目标是,减少无竞争且只有一个线程使用锁的情况下,使用轻量级锁产生的性能消耗。轻量级锁每次申请、释放锁都至少需要一次CAS,但偏向锁只有初始化时需要一次CAS。有多线程争用锁, 锁升级为轻量级锁 - 每个线程有自己的LockRecord在自己的线程栈上,...
2020-03-07 19:45:57 149
原创 java虚拟机全家桶
一 内存划分1 finanlize() 方法工作原理一个对象被回收要经过2次标记。如果对象没有执行过finalize方法且覆盖了finalize方法,则会进行第一次标记存放到F-Queue队列中;第二次标记是执行finalize()方法时,如果在方法中对象重新与类引用或者方法引用关联上,则可以逃离这次回收。2 jdk1.8内存分代改进永久代用元空间来替代3 java内存划分程序计数器...
2019-12-23 11:05:54 247
原创 java虚拟机类加载机制
一 类加载机制虚拟机把Class文件加载到内存中,并对数据进行验证、准备、解析、初始化,最终形成可以被虚拟机使用的java类型,这就是类加载机制。二 类加载过程5个阶段: 加载 验证 准备 解析 初始化1 加载加载后的产物:生成类的二进制字节流2 验证1)目的检查class文件字节流包含的信息是否符合虚拟机的要求,避免有危害虚拟机的信息2)验证过程文件格式验证:验证字节...
2019-12-17 19:41:44 135
原创 java垃圾收集器和回收策略
垃圾收集器1 serial收集器特点:单线程串行收集,gc收集的时候会暂停用户线程 stop the world, 简单高效缺点:gc收集暂停的时间长适用:新生代默认的垃圾收集器算法:复制算法2 parnew收集器特点:除了多线程外,其余和serial收集器一样; 只有他可以和cms收集器配合工作适用:新生代算法:复制算法3 parallel scavenge收集器特点:多线...
2019-12-12 11:31:18 132
转载 限流算法
应用高并发的手段有缓存、异步消息队列、集群、限流。 而限流又分为nginx层限流、业务代码层的限流,本文着重说下业务代码层面的限流手段。限流算法计数器算法、漏桶、令牌桶1 计数器算法最简单粗暴的方式通过控制时间频率能够允许的并发请求数量,例如: 1秒允许某接口接收1000条请求,超过100条会丢弃请求, 下1秒又重新计数。缺点:对于短时间的并发激增无法解决,例如: 1分钟允许100条...
2019-12-09 14:54:12 138
原创 spring cloud hystrix原理
使用场景为服务调用方避免出现调用某个服务出现服务雪崩,影响到其他业务流程, 熔断器加载服务调用方, 出现服务提供方宕机或者网络问题,服务调用方熔断、降级。实现原理1 船舱模型(资源隔离):为每个服务提供方分配一个线程池,固定线程池的线程数量, 避免一个服务提供方调用出现问题影响整个系统,当单个服务提供方对应线程池满了,在进行访问, 则降级访问回滚函数fallback2 断路器: 当线程池...
2019-12-06 09:48:21 187
转载 springboot和rabbitmq整合
参考: https://blog.csdn.net/u013871100/article/details/829822351 起步依赖pom.xml中 引入rabbitmq依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b...
2019-12-03 14:44:55 174
原创 springboot和mybatis整合
一 springboot 和 mybatis整合1 pom引入<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
2019-12-02 18:50:05 166
转载 分布式ID生成器
参考:https://blog.csdn.net/xlgen157387/article/details/80053021一 前言单机数据库时,关于id的生成我们通用的做法是让数据库autoincrement 自增,保持连续, 这样通过索引查询的时候性能较高。随着业务的扩大,需要对数据库进行分库分表,单机数据库生成id的策略就不行了,引入分布式ID生成器。二 分布式ID生成器1 UUID...
2019-11-29 17:07:36 143
转载 springboot面试大全
https://blog.csdn.net/Kevin_Gu6/article/details/885474241 Spring Boot 有哪些优点?起步依赖 自动配置 应用监控2 springboot的核心配置文件,以及加载顺序?bootstrap (.properties/ .yml) 用来加载系统相关的配置application (.properties/ .yml) 用来...
2019-11-28 20:11:28 224
原创 springboot Actuator
通过Actuator可以深入的了解springboot应用程序的内部, 可以进行监控和度量一些配置信息。这些特性可以通过rest端点、远程shell和jmx获得。本文主要探讨rest端点的使用。1 查看配置明细1)/beans 上下文bean的情况查看spring上下文中bean的情况, /beans会返回一个json文档,描述上下文里每个Bean的情况,类型、依赖注入2)/au...
2019-11-26 18:53:50 205
转载 springboot全家桶
一 启动配置只使用了一个@SpringBootApplication注解来启动应用, 这个注解有两个作用: 配置和启动引导,相当于3个注解组成:@Configuration : 标明spring基于java的配置@ComponentScan: 启动组件扫描,把相关@Component @Controller @Service @Repository等注解的Bean扫描到并实例化到上下文容器...
2019-11-25 19:16:09 625
转载 spring全家桶
1 Spring 框架有哪些主要模块?Spring核心容器:Spring bean的创建、配置和管理AOP模块: 提供了面向切面的编程数据访问与集成:提供了ORM框架,封装了JDBC大量重复的代码web模块: MVC框架,使web层实现了松耦合Instrumentation: 为JVM 添加了代理功能2 什么是控制反转(IOC)?什么是依赖注入?通过容器来管理对象之间的依赖, 把...
2019-11-21 16:49:18 357
原创 spring核心技术
一 容器容器是spring中最核心的部分,他管理着spring中bean的创建、配置和管理。容器创建完bean后,通过DI依赖注入来实现不同bean之间的关系。1容器的两种实现方式:BeanFactory 最基础的ApplicationContext 基于BeanFactory实现,并实现应用框架级服务, 一般使用这种方式来进行加载容器2 ApplicationContext的几种...
2019-11-18 20:08:47 757
原创 mysql锁
一 简介myisam和memory存储引擎只支持表级锁;innodb既支持表级锁,也支持行级锁,默认情况下使用行级锁。两种锁的特性归纳如下:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率较高,并发度较低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率较低,并发度也较高。二 表级锁1 表级锁的两种模式表共享读锁: Table Read Lock...
2019-11-18 09:30:30 108
转载 mysql事务
一 事务简介1 事务的4个特性A 原子性: 转账的过程要不转成功,要不转失败,不存在转一半的情况C 隔离性: 分两次转账,两次转账之间不能干扰对方I 一致性: 用户账户中余额=收入 - 支出,等式成立D 持久性: 数据修改保存后,不会进行回滚2 事务的语法1)开启事务start transaction; 默认使用的是读写模式2)提交事务commit;3)回滚事务rol...
2019-11-15 16:43:43 143
原创 mysql buffer poll
一 buffer poll 简介客户端访问数据时,mysql每次会从磁盘中加载数据页到内存中, mysql启动的时候会在内存中开辟一块buffer Poll 区域专门用来存储从磁盘中加到内存的数据页。buffer poll默认设置大小128M,可以修改配置调节。buffer poll结构: 由控制块和缓冲页组成, 每个控制块关联一个缓冲页,如下图:二 几种链表结构1 free 链m...
2019-11-15 15:58:20 508
原创 mysql连接原理
一 3种连接1 内连接语法:SELECT * FROM t1 JOIN t2 ON t1.m1 = t2.m2;等价语法: SELECT * FROM t1, t2 where t1.m1 = t2.m2;内连接会把关联的两个表的结果集是他们的交集,两个表都可以作为驱动表。2 左连接语法:SELECT * FROM t1 LEFT JOIN t2 ON t1.m1 ...
2019-11-14 09:28:08 666
原创 mysql单表访问方法
单表访问方法单表访问时,根据索引列的匹配情况有如下几种访问方法。1 const根据主键或者唯一索引列直接与一个常数比较, 称为const 访问。唯一索引列中的值不重复,和主键一样,所以使用二分法查询的时候几乎一样快。例如:SELECT * FROM single_demo WHERE key1 = 'abc'其中key1是主键SELECT * FROM single_demo W...
2019-11-13 19:39:30 305
原创 innodb索引使用
1 索引的适用场景1)全值查询where中使用 = 进行查询时,对条件列使用索引2)匹配最左边的列联合索引在b+树的结构是先按照最左边列从小到大排序, 最左边列相同在按照第二个列字段从小到大排序,使用最左边列可以走b+树索引3)范围查询索引列的值都是按照从小到大顺序排列的,非常适合范围查询例如:a > 1 and a < 10between a and b查询出的...
2019-11-12 17:17:39 163
原创 innodb索引
1 innodb的索引可以把索引理解成一本书的目录,通过目录可以快速找到数据的页, 之后在页中查询到具体的数据,速度远远比从一本书的开始到结尾一页一页查询更快。innodb索引分为2种:聚簇索引: 所有记录都是通过主键大小排序的双向数据页, 底层数据页存储的是真实的数据记录, 通过主键查询的话, 只需要通过此聚簇索引就可以找到真实的数据记录;二级索引: 通过索引列大小排序组成的双向数据...
2019-11-12 15:08:53 303
原创 innodb数据页和行记录
一 数据页1.1 简介修改数据库表中记录时,并不是实时与磁盘中数据库同步,而是以页为单位, 定期同步内存中页数据到磁盘中,从而提高mysql的性能。1.2 结构File Header: 表示页的一些通用信息Page Header: 数据也专有的一些信息Infimum+supremum: 最小和最大记录User Records: 用户记录, 用户存储的记录都存储在这里Free Sp...
2019-11-11 18:47:42 270
原创 mysql字符集
1 字符集和比较规则介绍字符集: 字符的编码规则比较规则:字符集中字符比较大小的规则,一般是对字符串列进行排序,也叫排序规则两者关系:一个字符集可以有许多比较规则,会有一个默认的比较规则;而一个比较规则一定会对应一个字符集。使用说明:1)字符集和比较规则有4个级别,分别为:服务器、数据库、表、字符串字段;2)每个级别如果没有设置字符集或者比较规则,则会用上一级别的字符集和比较规则;...
2019-11-07 20:12:21 315
原创 mysql字符集和比较规则
1 字符集和比较规则介绍字符集: 字符的编码规则比较规则:字符集中字符比较大小的规则,一般是对字符串列进行排序,也叫排序规则两者关系:一个字符集可以有许多比较规则,会有一个默认的比较规则;而一个比较规则一定会对应一个字符集。字符集和比较规则的使用说明:1)字符集和比较规则有4个级别,分别为:服务器、数据库、表、字符串字段;2)每个级别如果没有设置字符集或者比较规则,则会用上一级别的...
2019-11-07 20:06:19 506
原创 mysql启动项和系统变量
一 命令行使用选项在mysqld启动命令执行的时候可以携带启动选项,例如:# 启动时设置默认新增表的存储引擎为MYISAMmysqld --default-store-engine=MYISAM1 启动选项的写法要求选项前需要带 - -选项名称如果由多个单词组成,需要用短划线 - 组装选项名 = 选项值,三者之间不能有空格2 选项的长形式和短形式mysql为了我们使用的便捷...
2019-11-06 20:19:25 192
原创 mysql架构和存储引擎
1.1 架构mysql架构分成3层,第一层是连接管理层, 第二层是解析优化层,第三层是存储引擎层。1 连接管理层连接管理负责与客户端的连接池,客户端与mysql服务端连接后,需要先进行用户、密码的认证。2 解析优化层1)查询缓存mysql会把最近查询的语句和结果缓存到缓冲区中,下次在有相同的语句请求时就会从缓冲区中读取。缓存失效: 当在缓冲区的语句对应的表,如果发生了delete ...
2019-11-06 16:48:03 177
原创 redis小功能
redis提供了一些常用的小功能,提高了redis使用的灵活性。例如: 慢查询、pipeline、事务、bitmaps、hyperLoglog,下面将具体介绍。5.1 慢查询通过慢查询找到执行较慢的命令进行优化, 提高处理速度。1 慢查询统计的时间慢查询只统计在redis服务端执行命令的时间,如下图执行步骤3:2 慢查询的2个参数slowlog-log-slower-than 慢查...
2019-11-05 19:44:59 127
原创 redis内存
一 内存消耗1 内存消耗统计使用命令info memory获取内存指标:used_memory 当前内存使用量used_memory_peak 内存使用的最大值2 最大消耗对象内存是消耗内存最大的地方,它存储着用户所有的数据。 通过合理的管理存储数据的键值,优化内存,来缩小内存空间。二 内存管理内存管理从控制内存上限和回收策略来实现。1 内存上限通过maxmemory参数来设...
2019-11-02 23:27:14 201
原创 reids缓存设计
11.1 缓存更新策略分别从使用场景、一致性、开发维护成本三个角度分析三种缓存更新策略。1 LRU/LFU/FIFO 淘汰策略使用场景:当缓存的大小超过了设置的内存最大值时,需要根据淘汰策略对多出的数据进行清除;一致性: 一致性较差, 清除的数据是由淘汰策略算法决定;开发成本:开发成本较低,只需要设置maxmemory-policy和淘汰策略算法即可,不需要额外的开发工作。2 超时剔除...
2019-10-31 17:04:26 197
原创 redis哨兵
在主从复制模式下, 一旦主节点宕机, 需要人工干预进行故障转移, 给应用方和运维带来了使用的不便。 引入哨兵, 主节点故障后,重新选举新的主节点, 实现了风险转移。9.1 基本概念redis数据节点: 主节点和从节点sentinel节点: 用来监控redis数据节点sentinel节点集合:若干 sentinel 节点组成的抽象组合1 sentinel的架构sentinel架构和主从复...
2019-10-28 20:21:02 550
原创 4 redis复制
4.1 背景为了解决redis单点数据问题,通常会把数据复制多个副本部署到其他机器上,满足了故障恢复和负载均衡等需求。参与复制的redis实例分为主节点(master)和从节点(slave), 默认情况下redis都是主节点,主节点可以有多个从节点, 从节点只能有一个主节点,且数据的复制流向是从主节点到从节点单向流动。4.2 配置4.2.1 建立复制复制的方式有3种:1 配置文件:在...
2019-10-27 19:10:00 179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人