自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CAS乐观锁

Java语言是靠synchronized关键字保证同步的,这会导致有锁,锁机制存在以下问题:在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题一个线程持有锁会导致其他所有需要此锁的线程挂起如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险volatile是不错的机制,但是volatile不能保证原子性。因此对于同步最终还是要回到锁...

2020-05-06 10:25:50 165

原创 SQL基本常识

现有两张表,左边表A,右边表B,其中有两条记录name是相同的什么是cross joinCROSS JOIN运算符可以把一个数据集中和另外一个数据集中的数据组合在一起。在两个数据集之间使用CROSS JOIN运算符产生的结果也被称为笛卡尔积。语法:SELECT * FROM A CROSS JOIN B结果:应该是A表数据数量*B表数据数量,就是求表A和表B的所有可能的组合。注意:不用加...

2020-04-28 21:49:40 143

原创 Linux常用命令

简单总结了一些Linux常用的命令:who am i :查看当前使用的终端who 或 w : 查看所有终端uname -m :显示机器的处理器架构(如x86_64)cat /procersion :查看linux版本信息uname -r :显示正在使用的内核版本lsb_release -a :查看系统发行版本(如CentOS7)(没这个命令先安装yum install -y redha...

2020-04-28 21:23:51 123

原创 SpringMVC运行原理

SpringMVC的工作流程tomcat启动时,先加载web.xml,找到spring mvc的前端总控制器DispatcherServlet,并且通过DispatcherServlet来加载相关的配置文件信息。当浏览器发出一个请求之后,首先找到DispatcherServlet,通过这个控制器和代码中的requestMapping注解找到对应的controller中的方法,参数直接通过方...

2020-04-28 21:17:58 110

原创 Nginx介绍

什么是nginxNginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。Nginx的应用场景http服务器Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器虚拟主机虚拟主...

2020-04-27 18:54:12 318

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

提起redis,毫无疑问,缓存是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效。但是,redis不是万金油,它也有自身的弊端,我们在使用redis缓存功能是也会出现一些问题,比如说:缓存穿透:也就是说查询数据库中一定没用的数据,redis当中肯定也没有,这样的话,每次请求都会发送到数据库中,增加数据库的负担。解决方案:将每次查不出来的数据当成null存入redis中,这样...

2020-04-26 22:06:28 180

原创 布隆过滤器

什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现原理布隆过滤器数据结构布隆过滤器是一个 bit 向量...

2020-04-26 10:18:07 87

原创 分布式锁的实现方式:setnx命令

为什么需要使用分布式锁为了保证同一个方法在高并非情况下的同一时间只能被一个线程执行,在传统单体应用单机部署的情况下,可以使用java并发处理的api(如Reentrantlock和synchronized)进行互斥控制,但是,随着业务发展的需要,原单体单机的系统被演化成分布式系统后,由于分布式系统多线程、多进程部署在不同的机器上,这将使原单机部署情况下的并发控制锁策略失效,为了解决这个问题就需要...

2020-04-26 10:12:14 973

原创 详细剖析Redis数据库

简介:Redis是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集...

2020-04-26 10:01:47 358

原创 Hashmap321

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

2020-04-24 22:39:04 104

原创 分布式事务续篇

上篇我们只是点到了分布式事务以及本地事务的定义,今天来说说分布式事务具体的解决方案。提到分布式事务,就不得不提一下现在很火的微服务架构所设计的系统:分布式系统。分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency)、可用性(Availablility)和分区容错(Partition Tolerance)三个特性是一件不可能的事情。CAP理论告诉架构师不要...

2020-04-24 22:18:39 135

原创 事务的特性以及延伸的议题

在讲事务之前,我想先说一说Mysql数据库锁的一些相关概念,如下图:MySQL按锁的粒度划分可归纳为以下3种锁:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。MySQ...

2020-04-23 21:05:20 276

原创 MySQL性能优化之数据库结构优化篇

一般对MySQL进行性能优化时,我们通常会对数据库结构进行优化,数据库结构的优化主要从以下四种途径进行优化:选择合适的数据类型数据类型选择数据类型的选择,重点在于“合适”二字,如何确定选择的数据类型是否合适了?1、使用可以存下你的数据的最小的数据类型。(时间类型数据:可以使用varchar类型,可以使用int类型,也可以使用时间戳类型)2、使用简单的数据类型,int要比varchar...

2020-04-22 22:00:00 128

原创 数据库优化篇

数据库优化相信很多人都不陌生,这也是面试的一个高频问题。那么,我们为什么要对数据库进行优化呢,那当然是因为当前数据库满足不了我们的需求了,所以才要进行优化。很多数据库问题都是由于低效的查询引起的,那么为了解决这个问题,我们对数据库进行优化,以避免网站页面出现访问错误、增加数据库的稳定性以及优化用户体验。下面主要讲解下Mysql的数据库优化:通常我们会采用SQL及索引优化,根据需求写出良好的SQ...

2020-04-21 18:49:12 116

原创 JVM类加载机制

JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。1.加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对 象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个 Class 文件获取,这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取),也可以在运行时计算生成...

2020-04-21 18:09:23 75

原创 微信小程序登录321

近年来,随着移动设备的普及,各种APP应用层出不穷,微信小程序就是其中的佼佼者。微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。...

2020-04-17 11:39:57 261

原创 Spring两大特性:IOC和AOP

Spring拥有两大特性:IOC(控制反转),AOP(面向切面编程)。Spring注解Spring为我们提供了多个方便的注解,例如:@Controller:标明为控制层组件@Service:服务层组件@Repository:DAO层@Compoent:标明是受Spring本身所管理的一个组件@Bean:注解的方法会产生一个Bean对象,该对象由Spring管理并放到IoC容器中@A...

2020-04-14 20:16:33 657

原创 JVM优化

为什么要对JVM进行优化?一般情况下,是不需要对其进行优化的,但是在一些特定的环境下,需要对其进行优化比如: 运行的应用“卡住了”,日志不输出,程序没有反应; 服务器的CPU负载突然升高; 在多线程应用下,如何分配线程的数量等等.....JVM运行参数JVM运行参数分为三种: 标准参数:jvm的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变,可以使用java -help...

2020-04-12 20:22:52 74

原创 关于SpringCloud五大组件的一些认知

PS:最近面试了一家公司,其中问到SpringCloud的几大大组件,当时脑子一懵,什么玩意?面试结束之后,才回过神来,真想给自己一大嘴巴子。于是痛定思痛,狠补了之前拉下的。哎,人总是在前行的过程中遗忘掉某些东西,有些东西忘了也就忘了,而有些是我们舍本逐末导致的。。。springcloudspringcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,...

2020-04-10 21:38:15 982

空空如也

空空如也

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

TA关注的人

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