自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池有了解么? 说一下线程池的启动策略(执行流程)?使用线程池的好处?

线程池线程池其实就是一个容纳多个线程的容器,其中的线程可以反复利用,省去了频繁创建线程对象的操作,无需反复创建线程而造成的过多的资源消耗。启动策略线程池刚创建时,里面一个线程。任务队列是作为参数传递进来的。不过就算里面有任务,线程池也不会马上执行他们。当调用execute() 方法添加一个任务时,线程池会做如下判断:如果线程池中正在运行的核心线程数量小于核心线程大小,那么线程池会创建一个核心线程去处理提交任务如果线程池核心线程数已满,即线程数等于核心线程数时,新提交的任务会放在任务队列中排

2020-10-16 15:47:44 490

转载 MySQL的MVCC(多版本并发控制)

InnoDB的MVCC,通过在每行纪录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间,一个保存了行的过期时间(存储的并不是实际的时间值,而是系统版本号)。每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行纪录的版本号进行比较,使用之后RR(可重复读)隔离级别下是不会出现幻读的现象。在REPEATABLE READ隔离级别下,MVCC具体的操作如下:简单来说就是其实就是在每一行记录的后面增加两个隐藏列,记录创建版本号和删除版本号,而

2020-11-23 15:21:15 84

原创 锁(面试题)

非公平锁和公平锁在ReentrantLock中的实现如果一个锁是公平的,那么这个锁的获取顺序就应该符合请求的绝对时间顺序,FIFO。对于非公平锁,只要CAS设置同步状态成功,则表示当前线程获取了锁,而公平锁还需要判断当前节点是否有前驱节点,如果有,则表示有线程比当前线程更早请求获取锁,因此还需要等待前驱线程获取释放锁之后才能继续获取锁。讲一下sycn 可重入如何实现每一个锁关联一个线程持有者和一个计数器 。当计数器为0时表示该锁没有被任何线程持有,那么任何线程 都可能获得该锁并调用相应的方法。当一

2020-10-28 12:52:55 1194

原创 Mybatis缓存机制详解(一级缓存+二级缓存)

什么是一级缓存MyBatis 包含了一个非常强大的 查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。mybatis 默认情况下只会开启一级缓存,也就是局部的 session 会话缓存。首先我们要知道什么是查询缓存?查询缓存又有什么作用?功能:mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。如下图,每一个 session 会话都会有各自的缓存,这缓存是局部的,也就是所谓的一级缓存:什么情况下会命中一级

2020-10-25 15:16:01 1079 4

原创 请说出你所知道的线程同步方法

线程同步同步方法同步代码块使用特殊域变量(volatile)实现线程同步不走缓存,可见性。该修饰词是对域变量的访问提供了以这种防锁机制,相当于告诉虚拟机,该域的变量可能被更改。因此每次使用该域都要重新计算,而不是从寄存器中取出数据。从而实现线程的同步。该修饰词不能修改final类型变量使用重入锁实现线程同步使用局部变量实现线程同步控制一个变量,当变量符合条件时候,执行代码块其中多线程实现过程中需注意 重写 run() 方法,而对于同步的实现方法中 使用较为常见的是 利用s

2020-10-16 17:44:57 368

原创 如何创建线程池? 线程池七大参数?

怎么创建线程池?Java通过Executors提供公司中线程池,分别为:CachThreadPool 创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。FixedThreadPool 创建一个定长线程池,可控制最大线程并发数,超出的线程会在队列中等待ScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行SingleThreadExecutor 创建一个单线程化的线程池,他只会用唯一的工作线程来执行任务,保证所有的任务按照

2020-10-16 16:31:09 635

原创 Redis实现分布式锁的缺点

缺点缓存和数据库双写一致性问题缓存雪崩问题缓存击穿问题缓存的并发竞争Key的问题缓存和数据库 双写一致性解决方案:首先采取合适的更新策略,先更新数据库 ,再删除缓存 。其次可能因为存在删除缓存失败的问题,提供一个补偿措施:例如 使用 消息队列缓存 雪崩即缓存同一时间大面积失效 ,这时候又来了一拨请求 ,结果都落到了数据库上 ,导致数据库连接异常解决方案:给缓存加上 随机的失效时间,防止集体失效使用 互斥锁,但是该方法吞吐量明显下降双缓存,缓存A过期时间为20分钟,缓

2020-10-15 16:28:41 2455 2

原创 Redis如何实现分布式锁

1.设置合理的过期时间 防止忘记释放锁和服务器宕机导致锁未释放的问题2. 获取锁 和 设置过期时间 都是原子性的操作3. value值随机设置 删除时 比对value是否相同 解决当前A线程释放掉了B线程的锁4.通过lua脚本解决 比对value的值在进行删除 非原子性操作的问题...

2020-10-15 16:00:39 97

原创 22届IT实习抱团

兄弟们 终于轮到咱们了qq群 : 965208322分享些信息,对各种信息获取利用也好能高效些。????22届现在找实习太难了。一起加油哦!!!

2020-10-13 20:56:49 101

转载 JVM_01 简介

JVM的位置一些JVMSUN ClassicExact VMHotSpot VM :HotSpot指热点代码探测技术BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一IBM J9Taobao JVM: 目前已经在淘宝、天猫上线,替换了Oracle官方JVM;Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster Anywhere.最可能替代HotSpot的产品Android虚拟机 DVM谷歌

2020-10-13 16:17:49 72

转载 HashMap底层实现原理及面试问题

①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。当两个不同的键对象的hashcode相同时

2020-06-21 17:02:50 99

转载 值传递和引用传递的区别

1:按值传递是什么指的是在方法调用时,传递的参数是按值的拷贝传递。示例如下:[java] view plaincopypublic class TempTest {private void test1(int a){//做点事情}public static void main(String[] args) {TempTest t = new TempTest();int a = 3;t.test1(a);//这里传递的参数a就是按值传递}}按值传递重要特点:传递的是值的拷贝,也就是

2020-06-17 19:16:24 940 1

原创 说一下 map 的分类和常见的情况

说一下 map 的分类和常见的情况Java为数据结构中的映射定义了一个接口 java.util.Map ;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和 TreeMap.Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap是一个最常用的Map它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键

2020-06-17 18:33:14 175

转载 Java中重载与重写的区别

Java中重载与重写的区别重载(Overloading)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态...

2020-03-04 21:31:35 85

转载 JDK8 新特性

JDK8 新特性标题概述以下列出两点重要特性:Lambda 表达式(匿名函数)Stream 多线程并行数据处理(重要)新特性接口的默认方法只需要使用 default 关键字即可,这个特征又叫做 扩展方法Lambda 表达式Functional 接口 函数式接口 是指仅仅只包含一个抽象方法的接口,每一个该类型的 Lambda 表达式都会被匹配到这个抽象方法。你只需要给...

2020-02-26 23:42:43 71

转载 SpringCloud 第二篇: 服务消费者(rest+ribbon)(Finchley版本)

在上一篇文章,讲了服务的注册和发现。在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。在这一篇文章首先讲解下基于ribbon+rest。一、ribbon简介ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Fe...

2019-12-29 18:51:17 84

原创 SpringCloud 第一篇: 服务的注册与发现

马上2020年了,一晃我大二上半年过去了????,要抓紧分布式的学习了~~~加油!此篇献给马上要进入的SpringCloud章节~能否拿到offer靠你了!!!冲冲冲SpringCloud一 . 简介:Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。 Spring Cloud对微服务基础框架Netfli...

2019-12-28 21:48:49 278 1

原创 初次使用服务器配置数据库之(中文乱码问题)及解决方案

昨天下午拿着自己好久之前在云服务器上配置好的docker拉了个数据库的镜像之后用Navicat来连接数据库之后存入中文时,出现了如下乱码(简单测试一下)之后琢磨半天也在idea的配置文件里都改为了utf-8还是没有什么用。。。。也尝试了在idea配置文件后面加了一些语句(百度搜的)。。。结果不知名的错误。。。。。后来查看了docker里面的文件发现了一些蹊跷????。。。。发现在 mysql的...

2019-12-28 18:50:34 456 2

原创 Post与Get的区别 深挖

一. 最直观的区别:就是GET把参数包含在URL中,POST通过request body传递参数。在面试中被问到这个问题,你的内心充满了自信和喜悦。轻轻松松的给出了一个“标准答案”:GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。...

2019-12-28 18:49:46 63

原创 Docker的使用

docker有关总结使用服务器经常用到docker部署,在这里简单总结一下我所接触到的docker,当然也为了方便自己以后复习什么的什么是docker?Docker的优势更快速的交付和部署Docker在整个开发周期都可以完美的辅助你实现快速交付。Docker允许开发者在装有应用和服务本地容器做开发。可以直接集成到可持续开发流程中。高效的部署和扩容Docker 容器几乎可以在任...

2019-12-28 18:48:05 132

空空如也

空空如也

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

TA关注的人

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