自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis锁结合使用场景

Redis锁结合使用场景,需要注意什么?超时问题如何解决;1、redis分布式锁的基本实现redis加锁命令:SETNX resource_name my_random_value PX 30000 这个命令的作用是在只有这个key不存在的时候才会设置这个key的值(NX选项的作用),超时时间设为30000毫秒(PX选项的作用) 这个key的值设为“my_random_value”。这个值必须在所有获取锁请求的客户端里保持唯一。SETNX 值保持唯一的是为了确保安全的释放锁,避免误删其他客户端得

2021-11-09 09:22:40 603

原创 Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案

Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案一、前言​ 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫

2021-11-09 09:16:22 160

原创 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 264

原创 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 247

原创 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 240

原创 Spring的并发问题

Spring的并发问题——有状态Bean和无状态Bean一、有状态和无状态有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。简单来说,有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。无状态会话bean :bean一旦实例化就被加进会话池中,各个用户都可以共用。即使

2021-11-08 17:54:57 720

原创 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 683

原创 算法相关笔记

1.什么是算法在计算机领域里,算法是一系列程序指令,用于处理特定的运算和逻辑问题。衡量算法优劣的主要标准是时间复杂度和空间复杂度。2.什么是数据结构数据结构是数据的组织、管理和存储格式,其使用目的是为了高效地访问和修改数据。数据结构包含数组、链表这样的线性数据结构,也包含树、图这样的复杂数据结构。3.什么是时间复杂度时间复杂度是对一个算法运行时间长短的量度,用大O表示,记作T(n)=O(f(n))。常见的时间复杂度按照从低到高的顺序,包括O(1)、O(logn)、O(n)、O(nlogn)

2021-11-08 09:41:45 404

原创 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 73

原创 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 84

原创 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 202

原创 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 145

转载 StringRedisTemplate

1.Redis String 操作字符串 //新增元素 stringRedisTemplate.opsForValue().set("key", "value"); //获取元素 stringRedisTemplate.opsForValue().get("key"); //删除元素 stringRedisTemplate.delete("key");2.Redis List 操作List //将数据添加到key对应的现有数据的左边 stringRedisTemplate.o

2021-09-10 15:52:07 1771

转载 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 550

原创 插入字符串含 ‘ 单引号 :don‘t

解决插入字符串含 ’ 单引号问题public String checkString(String str){ String returnStr = ""; if(str.indexOf("'") != -1){//判断字符串是否含有单引号 returnStr = str.replace("'", "''"); str = returnStr; } return str; }...

2021-09-01 09:30:51 113

转载 curl 的用法指南

简介:curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。《Curl Cookbook》不带有任何参数时,curl 就是发出 GET 请求。$ curl https://www.example.com上面命令向www.example.com发出 GET 请求,服务器返回的内容会在命令行输出。-AA参数指定客户端的用户代理标

2021-07-16 10:39:11 382

转载 创建定时任务

创建定时任务在SpringBoot中创建定时任务,实现每过5秒输出一下当前时间。在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置@SpringBootApplication@EnableSchedulingpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, ar

2021-07-15 15:27:41 211

原创 23种设计模式知识要点

23种设计模式知识要点1.单例模式(Singleton Pattern)定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实 例。)通用代码:(是线程安全的) public class Singleton { private static final Singleton singleton = new Sin

2021-07-15 10:07:11 200

空空如也

空空如也

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

TA关注的人

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