自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java使用easypoi进行word内容替换

引入依赖<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.1.0</version> <exclusions> <exclusion>

2021-03-05 10:55:41 1652 5

原创 java枚举实现线程池及参数详解

public enum MyThreadPoolEnum { INSTANCE; private final Logger logger = LoggerFactory.getLogger(MyThreadPoolEnum.class); private volatile ExecutorService executorService; MyThreadPoolEnum() { //记录异常 ThreadFactory namedThread

2021-03-01 17:32:37 298

原创 HashMap一些知识

HashMap底层数据结构JDK1.7及以前是数组+链表,1.8及以后是数组加链表或红黑树static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 默认的初始容量static final float DEFAULT_LOAD_FACTOR = 0.75f; //加载因子static final int TREEIFY_THRESHOLD = 8; //链表长度的阈值,当超过8时,会进行树化(不绝对)static fin

2020-11-19 09:38:36 119

转载 Spring Bean生命周期

Spring Bean的生命周期是Spring面试热点问题。这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。只有四个!是的,Spring Bean的生命周期只有这四个阶段。把这四个阶段和每个阶段对应的扩展点糅合在一起虽然没有问题,但是这样非常凌乱,难以记忆。要彻底搞清楚Spring的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter方法的注入,初始化和销

2020-11-06 15:52:19 112

转载 Java Io和NIO的对比

首先说一下核心区别:NIO是以块的方式处理数据,但是IO是以最基础的字节流的形式去写入和读出的。所以在效率上的话,肯定是NIO效率比IO效率会高出很多。NIO不在是和IO一样用OutputStream和InputStream 输入流的形式来进行处理数据的,但是又是基于这种流的形式,而是采用了通道和缓冲区的形式来进行处理数据的。还有一点就是NIO的通道是可以双向的,但是IO中的流只能是单向的。还有就是NIO的缓冲区(其实也就是一个字节数组)还可以进行分片,可以建立只读缓冲区、直接缓冲区和间接缓冲区,只

2020-11-06 14:44:28 147

转载 Spring线程安全问题与ThreadLocal

Spring与线程安全Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码。Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例如,一个scope为singleton的bean,在第一次被注入时,会创建为一个单例对象,该对象会一直被复用到应用结束。singleton:默认的scope,每个scope为singleton的bean都会被定

2020-11-05 10:41:19 447

转载 TPS和QPS概念

TPSTransactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可以一个接口、多个接口、一个业务流程等等。一个事务是指事务内第一个请求发送到接收到最后一个请求的响应的过程,以此来计算使用的时间和完成的事务个数。以单接口定义为事务为例,每个事务包括了如下3个过程:a.向服务器发请求b.服务器自己的内部处理(包含应用服务器、数据库服务器等)c.服务器返回结果给客户端如果每秒能够完成N次这三个过程,tps就是N;如果多个接口定义为一个事务,那么,会重复执行abc,

2020-11-05 09:37:35 1667

原创 个人对volatile的一些理解

volatile关键字的作用volatile用于修饰变量保证变量的内存可见性不保证原子性禁止指令重排序JMM模型Java内存模型(Java Memory Model)是一种抽象的,本身不存在的,用来一组规范,来定制程序中各个变量的访问方式.JMM关于同步的规定线程解锁前,必须把共享变量的值写回主内存.线程加锁前,必须读取主内存中变量的最新值到自己工作内存.加锁与解锁必须使用同一把锁.由于JVM运行程序的载体是线程,而JVM创建每个线程时都会为该线程分配一块私有的工作内存(也称为栈

2020-11-04 15:31:52 207 1

原创 MySQL的一些知识点

数据库的三范式第一范式: 列不可再分第二范式: 行可以唯一区分,主键约束第三范式: 表的非主属性不能依赖于其他表的非主属性,外键约束三大范式是一级一级以来的,第三范式建立在第二范式上,第二范式建立在第一范式上MySQL数据库引擎简介MyISAM: 只支持表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,没有事务要求,以新增,查询为主的应用可以使用此引擎.Innodb: 支持表锁和行锁,提供了具有提交,回滚和崩溃恢复能力的事务安全,支持自动增长列,支持外键约束,

2020-11-02 12:20:08 93

原创 Redis分布式锁的理解

Redis原生事务Redis事务功能是通过MULTI,EXEC,DISCARD,WATCH四个原语实现的,Redis会将一个事务中所有命令序列化,然后顺序执行.1.MULTI命令用来开启一个事物.MULTI命令执行后,客户端可以继续向服务器发送多条指令,这些指令不会被立即执行,而是被放到一个队列中,当EXEC命令执行后,所有队列中的指令才会被执行.2.EXEC执行所有事物块中的指令.返回事物块中的所有命令,将指令按照先后顺序执行,如果操作被打断会返回空值nil.3.DISCRED命令被调用后,客户端

2020-10-28 14:00:19 202 1

原创 Redis性能的一些问题

Redis为什么是单线程1.Redis是基于内存的操作,cpu不是速度的瓶颈.Redis的瓶颈最可能是服务器内存或网络带宽,且单线程易实现.关于Redis的性能,官网指出,普通笔记本电脑每秒可以处理几十万的请求.2.单线程避免了不必要的上下文切换和竞争条件,不需要承受各种加锁同步操作带来的消耗.3.可以通过在单机开启多个Redis示例的方式来充分利用多核cpu资源.3.Redis采用IO多路复用技术来保证在多连接的情况下系统的高吞吐量.多路指多个socket连接,复用指复用一个线程.采用多路IO复用

2020-10-28 09:28:28 168 1

原创 Redis的过期策略及内存淘汰机制

过期策略定时删除定时删除是在设置key过期时间的同时,会创建一个定时器,定时器在key过期时间到达时,立即删除key.这种策略保证过期key被删除和内存释放的及时性,但是在过期key比较多的情况下,定时器会占用相应高的cpu资源,将cpu资源用在删除过期key上,会对服务器的响应时间和吞吐量造成影响.如: 有大量的请求正在等待服务器处理,并且服务器内存足够的情况下,服务器应当优先将cpu资源用于处理请求.创建一个定时器需要用到Redis服务器中的时间事件,而当前时间事件是用无序链表来实现的,查找一

2020-10-27 17:48:16 77

原创 Redis缓存常见问题及解决方案

缓存雪崩可以简单的理解为: 系统刚刚部署完毕,所有缓存数据还未准备完毕或者由于原有缓存有效期集体到达例如: 系统中所有缓存都设置的一致的过期时间,在同一时刻出现大面积的缓存过期,所以原本应该查询缓存的请求都去查询数据库了,造成数据库压力骤增,甚至宕机.解决办法使用加锁或者队列的方式保证不会有大量线程对数据库进行一次性读写,设置热点数据永不过期,同时将缓存的过期时间设置分散.设置系统上线后就对需要缓存的数据进行缓存,而不是在第一次查询后才把数据加入缓存,这样做到了事先对缓存数据进行预热.解决思路

2020-10-27 14:13:50 580

原创 Redis的持久化机制

Redis的持久化机制Redis的持久化机制有什么作用Redis的持久化方式有哪些RDB功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Redis的持久化机制有什么作用Redis在运行时是把数据存在运行内存中的,一旦服务器宕机,

2020-10-27 12:24:12 177

空空如也

空空如也

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

TA关注的人

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