自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 乐观锁 CAS

悲观锁与乐观锁的区别悲观锁会把整个对象加锁占为已有后才去做操作,Java中的Synchronized属于悲观锁。悲观锁有一个明显的缺点就是:它不管数据存不存在竞争都加锁,随着并发量增加,且如果锁的时间比较长,其性能开销将会变得很大。乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据,这种方式下,已经没有所谓的锁概念了,每条线程都直接先去执行操作,计算完成后检测是否与其他线程存在共享...

2020-05-06 10:28:46 224

原创 Linux常用命令

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 U...

2020-04-28 21:44:59 217

原创 SQL连接查询

内连接内连接将A表中的每一行和B表中的每一行进行比较,并找出满足连接谓词的组合。 当连接谓词被满足,A和B中匹配的行会按列组合成结果集中的一行。连接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接)–将A中的每一行和B中的每一行组合,然后返回满足连接谓词的记录。实际上,SQL产品会尽可能用其他方式去实现连接,笛卡儿积运算时非常没有效率的。SQL 定义了两种不同语法方式去表示“连接”:...

2020-04-28 21:43:31 133

原创 SpringMVC的工作流程与主要注解

SpringMvc处理流程具体步骤:第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找)第三步:处理器映射器HandlerMapping向前端控制器返回Handler第四步:前端控制器调用处理器适配器去执行Handler第五步:处理器适配器HandlerAdapte...

2020-04-28 21:42:42 123

原创 redis的缓存过期策略与内存淘汰机制

定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大...

2020-04-26 21:10:25 116

原创 redis的持久化方案

持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。RDBRDB持久化是通过快照方式来完成的。当达到触发条件时,Redis会自动将内存中所有数据以二进制方式生成一份副本并存储在硬盘上。RDB是Redis默认采用的持久化方式,在redis.conf配...

2020-04-26 21:09:52 158

原创 布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。优点相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外,Hash函数相互之间没有关系...

2020-04-26 09:32:23 102

原创 分布式锁

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统 中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。分布式锁的由来在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进...

2020-04-26 09:31:49 121

原创 redis简介

Redis是以键值对存储数据的NoSQL数据库。一、redis的数据类型,以及每种数据类型的使用场景String这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。hash这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为...

2020-04-26 09:31:09 100

原创 jdk1.7与jdk1.8中HashMap区别

一、区别最重要的一点是底层结构不一样,1.7是数组+链表,1.8则是数组+链表+红黑树结构;jdk1.7中当哈希表为空时,会先调用inflateTable()初始化一个数组;而1.8则是直接调用resize()扩容;插入键值对的put方法的区别,1.8中会将节点插入到链表尾部,而1.7中是采用头插;jdk1.7中的hash函数对哈希值的计算直接使用key的hashCode值...

2020-04-24 21:01:40 225

原创 HashMap数据结构

2.1.1 HashMap介绍先看看HashMap类头部的源码:public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, SerializableHashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值...

2020-04-24 20:59:17 367

原创 CAP理论与BASE理论

分布式CAP理论与BASE理论介绍CAP理论与BASE理论,此两种理论在分布式开发中不可不知.CAP理论是分布式最基本的理论基础C: Consistency 强一致性A: Availability 可用性P: Partition Tolerance 分区容错性什么是C,强一致性tips:同一时刻,所有人看到的数据是一样的.重要在"强"字强一致性是指分布式的两个节点的数据是实时同步...

2020-04-24 20:58:28 153

原创 分布式事务

1.分布式事务解决方案之2PC(两阶段提交)前面已经学习了分布式事务的基础理论,以理论为基础,针对C、TCC、可靠消息最终一致性、最大努力通知这几种。1.1.什么是2PC2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commitphase),2是指两个阶段,P是指准备阶段,C是指提交阶段。举例:张三和李四好久不见,老友约起聚餐,饭...

2020-04-24 20:57:45 118

原创 什么是分布式事务,什么是本地事务

1、什么是分布式事务分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务;指一次大的操作由不同的小操作组成的,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。从本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务产生的原因2.1、数据库分库分表在单库单表场景下,当业务数据量达到单库单表的极限时,就需要考虑分库...

2020-04-24 09:27:10 424

原创 锁分类

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。一、按锁的粒度分表锁表锁就是一锁锁一整张表,在表被锁定期间,其他事务不能对该表进行操作,必须等当前表的锁被释放后才能进行操作。表锁响应的是非索引字段,即全表扫描,全表扫描时锁定整张表,sql语句可以通过执行计划...

2020-04-24 09:26:27 117

原创 结构的优化

1、选择合适的数据类型数据类型的选择,重点在于“合适”二字,如何确定选择的数据类型是否合适了?1、使用可以存下你的数据的最小的数据类型。(时间类型数据:可以使用varchar类型,可以使用int类型,也可以使用时间戳类型)2、使用简单的数据类型,int要比varchar类型在mysql处理上简单。(int类型存储时间是最好的选择)3、尽可能的使用not null定义字段。(innodb的特...

2020-04-22 20:59:37 719

原创 如何选择合适的列创建索引?

在where 从句,group by 从句,order by 从句,on 从句中出现的列;索引字段越小越好;离散度大的列放到联合索引的前面;比如:select * from payment where staff_id = 2 and customer_id = 236;针对上面的查询是 index(sftaff_id, customer_id) 好?还是index(cust...

2020-04-21 21:46:41 252

原创 创建索引需要注意SQL语句的写法?

1、避免在where子句中使用 is null 或 not null2、避免在where子句中使用!=或<>操作符3、避免在where子句中使用or4、少用 in 或not in5、like通配符的使用 不要“%11%” 要“11%” 例如LIKE“%name”或者LIKE“%name%”,这种查询会导致索引失效而进行全表扫描。但是可以使用LIKE “nam...

2020-04-21 21:45:42 506

原创 什么是索引?

一、索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。创建索引时,你需要确保该索引是应用...

2020-04-21 21:44:24 449

原创 Tomcat类加载器

Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。对于JVM来说:因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会优先加载CLASSPATH...

2020-04-21 18:40:34 143

原创 小程序登录流程

小程序端执行wx.login后在回调函数中就能拿到下图的code,然后把这个code传给我们后端程序,后端拿到这个这个code后,可以请求code2Session接口拿到用的openid和session_key,openid是用户在微信中唯一标识,我们就可以把这个两个值(val)存起来,然后返回一个键(key)给小程序端,下次小程序请求我们后端的时候,带上这个key,我们就能找到这个val,就可以...

2020-04-17 15:05:16 522

原创 spring IOC和AOP的理解

1.IOC许多应用都是通过彼此间的相互合作来实现业务逻辑的,如类A要调用类B的方法,以前我们都是在类A中,通过自身new一个类B,然后在调用类B的方法,现在我们把new类B的事情交给spring来做,在我们调用的时候,容器会为我们实例化。IOC容器的初始化过程资源定位,即定义bean的xml-------》载入--------》IOC容器注册,注册beanDefinitionIOC容器...

2020-04-14 22:35:07 214

原创 什么是垃圾回收

程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了。1、C/C++语言的垃圾回收在C/C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete 关键字释放内存资源。如果,程序员在某些位置没有写delete进行释放,那么申请的对象将一直占用内存资源,最终可能会导致内存溢出。2、Jav...

2020-04-13 12:28:23 208

原创 GC垃圾收集器

G1垃圾收集器是在jdk1.7中正式使用的全新的垃圾收集器,oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。G1的设计原则就是简化JVM性能调优,开发人员只需要简单的三步即可完成调优:1.第一步,开启G1垃圾收集器2.第二步,设置堆的最大内存3.第三步,设置最大的停顿时间G1中提供了三种模式垃圾回收模式,YoungGC、MixedGC和FullGC,在不同的条件...

2020-04-13 12:26:29 125

空空如也

空空如也

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

TA关注的人

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