笔记
文章平均质量分 78
amm.
这个作者很懒,什么都没留下…
展开
-
Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案
Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案一、前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫原创 2021-11-09 09:16:22 · 173 阅读 · 0 评论 -
Spring bean的生命周期,作用域
谈谈Spring bean的生命周期,作用域 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bean相互间的依赖关系将通过配置元数据来描述。Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来原创 2021-11-09 09:14:23 · 275 阅读 · 0 评论 -
Spring IOC和Spring AOP的实现原理
Spring IOC和Spring AOP的实现原理Spring IOC一、容器初始化容器的初始化首先是在对应的构造器中进行,在applicationContext的实现类构造器中,首先对参数路径中的${}进行了处理,用系统变量替换(setConfigLocations方法)然后调用refresh方法(这个就是最核心的容器初始化方法)。1、Resource定位:在refresh方法中调用obtainFreshBeanFactory方法告诉子类刷新beanfactory(其中是调用refreshB原创 2021-11-08 17:58:48 · 257 阅读 · 0 评论 -
Mybatis中Dao接口的工作原理
Mybatis中Dao接口的工作原理答:Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,举例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到names原创 2021-11-08 17:57:17 · 258 阅读 · 0 评论 -
Spring的并发问题
Spring的并发问题——有状态Bean和无状态Bean一、有状态和无状态有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。简单来说,有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。无状态会话bean :bean一旦实例化就被加进会话池中,各个用户都可以共用。即使原创 2021-11-08 17:54:57 · 732 阅读 · 0 评论 -
Redis操作笔记
//添加事务回滚:@Transactional(rollbackOn = Exception.class) //指定缓存失效时间:redisTemplate.expire(key,time,TimeUnit.SECONDS);//根据key获取过期时间:redisTemplate.getExpire(key,TimeUnit.SECONDS);//判断key是否存在:redisTemplate.hasKey(key);//删除缓存: if(key!=null&&k原创 2021-11-08 10:08:27 · 693 阅读 · 0 评论 -
算法相关笔记
1.什么是算法在计算机领域里,算法是一系列程序指令,用于处理特定的运算和逻辑问题。衡量算法优劣的主要标准是时间复杂度和空间复杂度。2.什么是数据结构数据结构是数据的组织、管理和存储格式,其使用目的是为了高效地访问和修改数据。数据结构包含数组、链表这样的线性数据结构,也包含树、图这样的复杂数据结构。3.什么是时间复杂度时间复杂度是对一个算法运行时间长短的量度,用大O表示,记作T(n)=O(f(n))。常见的时间复杂度按照从低到高的顺序,包括O(1)、O(logn)、O(n)、O(nlogn)原创 2021-11-08 09:41:45 · 418 阅读 · 0 评论 -
NIO、Selector、netty(三)
nio-selector - 处理可写事件public class WriteServer{ public static void main(String[] args) throws IOException { ServerSocketChannel ssc = ServerSocketChannel.open(); //设置为非阻塞模式 ssc.configureBlocking(false); //需要一个选择器(避免无畏的轮询) Selector selector = Sel原创 2021-10-28 17:52:12 · 77 阅读 · 0 评论 -
NIO、Selector、netty(二)
nio-selector-处理消息边界-容量超出-附件与扩容- 服务端@Slf4jpublic class Server{private static void split(ByteBuffer source){ source.flip(); for(int i=0; i<source.limit(); i++){ //找到一条完整消息 if(source.get(i) == '\n'){ int length = i + 1 - source.postion();原创 2021-10-28 17:51:41 · 88 阅读 · 0 评论 -
NIO、Selector、netty(一)Netty
NIO基础non-blicking io 非阻塞IO1.三大组件1.1 Channel & BufferChannel类似于stream ,读写数据的双向通道,Buffer为暂存的缓冲区。常见的Channel有FileChannelDatagramChannelSocketChannelServerSocketChannel常见bufferByteBuffer(最常用)MappedByteBufferDirectByteBufferHeapByteBufferS原创 2021-10-28 16:03:10 · 154 阅读 · 0 评论 -
Netty简介
什么是Netty?Netty 是一个高性能、异步事件驱动的 NIO框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。1.Netty和Tomcat有什么区别?最大的区别在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器。但是Netty原创 2021-10-28 16:19:57 · 205 阅读 · 0 评论 -
JDK1.8超详细
idea 快捷键:iter:for循环itco:遍历集合的for循环Lambda语法:左边参数,右边Lambda体(功能)左右遇一括号省——若Lambda体中只有一条语句,return和大括号{}都可以省略不写。左侧推断类型省能省则省四大函数式接口Consumer:消费型接口。有去无回。有一个输入参数,没有返回值。Consumer<T> void accept(T t);Supplier:供给型接口。没有输入参数,只有返回值。Supplier<T>转载 2021-09-02 18:27:15 · 563 阅读 · 0 评论