
[笔记本]
[笔记本]
我能在河边钓一整天的鱼
欢迎来到我的酒馆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分布式锁的实现思路
目录秒杀案例分布式锁应具备的条件三种方案的分布式锁基于数据库实现分布式锁基于缓存实现分布式锁基于Zookeeper实现分布式锁三种方案比较秒杀案例我们来看一个秒杀小案例,每有一个用户下单库存就-1,在单环境部署情况下,我们添加了synchronized锁,锁住扣除库存代码块,这样不会出现多线程并发导致库存数量出现重复或负数问题。但分布式部署,synchronized就无法解决此问题了,多个项目就有多个synchronized锁,锁之间会覆盖冲...原创 2020-08-10 16:19:13 · 729 阅读 · 0 评论 -
MySQL优化之解决索引失效
索引失效场景一:带头大哥不能死,中间兄弟不能断下面的例子基于这个staffs职工表,我们只建立了一个复合索引INDEX idx_staffs_nameAgePos(name,age,pos);带头大哥不死索引就不会失效如图,查询时只要存在第一个索引字段 ,执行计划中就能看到进行了索引查询带头大哥死了索引查询就失效总结:对于复合索引查询,带...原创 2020-05-05 08:43:31 · 585 阅读 · 0 评论 -
Mysql中事务的概念
目录什么是事务?事务的特性事务控制语句Mysql中事务处理的两种方法什么是事务?MySQL 事务主要用于处理操作量大,复杂度高的数据。在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。事务的特性原子性: 一个事...原创 2020-04-12 11:45:26 · 408 阅读 · 0 评论 -
MySQL优化之SQL优化的层次和步骤
目录优化金字塔优化的四个层次优化金字塔在该金字塔中,优化的成本从下而上逐渐增高,优化的效果从上到下逐渐减低优化的四个层次A、SQL及索引优化根据需求写出良好的SQL,并创建有效的索引,实现某一种需求可以多种写法,这时我们就要选择效率最高的写法。B、数据库表结构优化根据数据库的范式,设计表的结构,表结构设计的好坏直...原创 2020-04-17 17:04:13 · 354 阅读 · 0 评论 -
Java中的Hashtable集合
什么是Hashtable集合java.util.Hashtable<K,V>集合继承了Map接口。Hashtable的底层也是一个哈希表,是一个线程安全的集合,是单线程的集合,速度慢,而HashMap是一个线程不安全的集合,是多线程集合,速度快。HashMap集合可以存储null键,null值。Hashtable和Vector集合一样,在jdk1.2版本之后...原创 2020-03-30 21:32:35 · 372 阅读 · 0 评论 -
SpringCloud之Eureka组件
什么是EurekaEureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现与故障转移。它提供的服务发现与注册功能,只需要使用服务的标识符就可以访问到服务,而不需要修改服务调用的配置文件,功能类似于Dubbo使用的ZookeeperEureka运行原理Eureka采用C-S架构,EurekaServer作为服务注册功能的服务器,即服务中心。各个微服务模块使用Eureka的客户端连接到EurekaServer并维持心跳连接。这样系统的维护人员就...原创 2020-05-19 19:46:22 · 312 阅读 · 0 评论 -
SpringMVC概念及原理
目录什么是MVC什么是SpringMVCSpringMVC的原理基本原理执行原理什么是MVCMVC是模型、视图、控制器的简写,是一种软件设计规范。最典型的MVC框架是JSP+Servlet+JavaBean什么是SpringMVCSpring MVC是Spring Framework的一部分,是基于Java实现MVC的...原创 2020-04-28 21:19:04 · 368 阅读 · 0 评论 -
分布式集群架构的“脑裂”问题
目录什么是假死?什么是脑裂造成脑裂问题的原因如何解决脑裂问题什么是假死?什么是脑裂在分布式集群中,我们都会采取某种机制检测主节点是否有故障,有故障的话会选举出新的主节点。假死:由于心跳超时(网络原因导致)任务leader已死,但其实leader还活着脑裂:由于假死发起了新一轮的选举,此时会出现2个leader共存。会出现有的客户端请求老leader,有的客户端请求新leader造成脑裂问题的原因1.网络的不可靠性。2.集群状态监测...原创 2020-08-23 11:43:22 · 989 阅读 · 0 评论 -
浏览器访问百度都经历了什么?
这是面试中常考的点。有很多种答法:可以侧重域名解析的过程也可以侧重于网络七层通信原理本篇从网络通信原理来说明浏览器访问百度都经历什么?阶段一:访问百度用户发请求给浏览器,通过域名解析解析到www.baidu.com后开始走网络传输。从传输层到网络层再到链路层。逐层添加请求头,最后在物理层转换为2进制比特流传输阶段二、百度响应请求百度响应给浏览器是从物理层开始,逐步拆解请求头,最后返回给应用层,再通过应用层的Http请求响应给浏览器...原创 2020-08-19 13:08:11 · 1001 阅读 · 0 评论 -
分布式架构的演进
目录什么是分布式架构演进的过程什么是RPC什么是分布式分布式系统是若干独立计算机的集合,这些计算机对于用户来说就想单个系统一样。分布式的提出是为了用更多的机器完成单个计算机无法完成的计算和存储任务,其目的是用更多的机器,处理更多的数据架构演进的过程早期的单一架构,项目集成在一起,单纯采用增加机器来抵抗访问压力。存在性能扩展比较难,会导致升级维护,协同开发等一系列问题垂直应用架构,将单一项目切分成多个业务模块,各模块独立部...原创 2020-05-13 20:30:26 · 215 阅读 · 0 评论 -
什么是微服务架构
微服务架构的概念所谓微服务架构,就是打破之前all in one的架构方式,把每个功能元素独立出来。独立出来的功能元素可以任意的动态组合。微服务架构的使用使用springboot构建一个个功能独立的微服务应用单元,帮助我们快速构建一个应用 大型分布式网络服务的调用,这部分交给spring cloud来完成,实现分布式 在分布式中间,进行流式...原创 2020-05-06 16:31:52 · 280 阅读 · 0 评论 -
谈谈Spring&SpringBoot
谈谈IOC IOC是Spring的两大核心概念之一,IOC通过Bean容器自动的帮助我们创建对象,不需要手动去创建。IOC有一个很强大的功能DI(依赖注入),我们可以通过xml或者Java代码的方式,把我们想注入的对象属性或方法注入到IOC容器中。 依赖注入体现了Spring强大的特性:解耦。举个例子,我们使用JdbcTmeplate或者Durid时,如果他俩强耦合在一起,会导致使用JDBCTemp必须使用Durid数据源,依赖注入可以保证使用JdbcTemp只需要依赖于数据源接口...原创 2020-08-17 08:18:06 · 217 阅读 · 0 评论 -
生产环境服务器慢如何诊断问题?
首先使用top命令找出cpu占比最高的进程 然后使用ps -ef或者jps进一步定位,得知是哪一个后台程序出了问题 使用命令定位到具体的线程或代码 ps -mp 进程 -o THREAD,tid,time ①-m:显示所有的线程 ②-p:pid进程使用CPU的时间 ③-o:该参数后是用户自定义格式 4.将需要的线程ID转换为16进制格式(英文小写格式)printf “%x\n” 有问题的线程ID...原创 2020-08-08 11:44:09 · 228 阅读 · 0 评论 -
☆JUC中安全的并发集合类
CopyOnWriteArrayListList集合在单线程时是安全的,但多线程的情况下是不安全的。public class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i <= 10; i++) { new Threa...原创 2020-05-31 20:12:58 · 362 阅读 · 0 评论 -
☆HashMap深层原理
什么是HashMapHashMap是JDK提供的双列集合类, 它继承于Map接口。HashMap的数据结构是哈希表,作为一种数据结构,哈希表由“桶+链表组成”,而“hashmap使用的哈希表”在JDK1.8之前由数组+单向链表组成,JDK1.8开始哈希表的数据结构由数组+单向链表/红黑树(链表长度超过8变成红黑树)组成HashMap集合的特点:1.存取无序2.可以存null值3.多线程下不安全HashMap的哈希表以3号为例,3下面的所有...原创 2020-07-18 15:15:10 · 311 阅读 · 1 评论 -
☆B树与B+树
前言关于索引的基本概念可参考这篇博客https://blog.youkuaiyun.com/Delicious_Life/article/details/105466368我们知道MySQL的索引结构使用了B+树,想必读者很想知道为什么百度B+树会搜出来个B树,B树和B+树到底有什么异同?要清楚这些内容,首先我们要了解平衡二叉树平衡二叉树我们知道程序运行时需要从本地磁盘加载到内存中。每次从磁盘加载到内存都可以看做是一次I/O操作,而这种I/O操作是很耗费时间和...原创 2020-07-14 09:34:52 · 401 阅读 · 1 评论