- 博客(12)
- 收藏
- 关注

原创 业务场景系列:更新Redis中设置过期时间Key的值
1.需求分析在编写一个插入数据的接口,这个接口是对接前端的的,前端的功能大致就是用户浏览和留言,因为这个页面是无登录的,只要是使用者都可以提交这个数据,这个接口是公开的,为了避免有恶意的数据提交请求导致大量的脏数据保存,造成程序卡顿甚至宕机,对这个接口进行优化改造。2.初级构思在用户发送请求时,传过来的同时有HttpServletRequest,从这个里面可以获取用户的IP地址,利用Redis可以设置过期Key的方式,以ration加上用户IP为key,插入的value为可以提交数据的次数,然后设置过
2022-04-25 22:01:29
2008
原创 前后端分离:SpringBoot治好了我的时间内耗
SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。这样的配置在前后端分离的项目中能够达到敏捷高效开发,本文围绕SpringBoot+VUe搭建前后端分离Demo项目展开,正在学习SpringBoot,Vue,前后端分离的小伙伴不要错过。
2022-10-17 23:15:31
910
原创 云舍综合内容分享平台
1.做这个开源项目的初衷学习java已经很久了,一直是跟着视频教程或者文档来学的,没有自己从头开始搭建一个技术栈丰富,又有内容的项目,所以就产生了这个想法,在一个技术群和一个大佬一拍即合,我打下手,以他为主,不过项目目前还属于构思阶段,开发过程遇到的问题和不错的思路会用优快云记录下来2.技术栈废话不多说,先上初步构想的技术栈。前端: NodeJS Vue3+Element-UI Plus后端: 视图层:SpringMVC 快速启动:SpringBoot 数据层:Mybatis-Plus
2022-05-16 23:31:36
292
转载 一问三不知之Redis常见问题
1)Redis为什么使用单进程单线程方式也这么快Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。Redis快的主要原因是:完全基于内存数据结构简单,对数据操作也简单使用多路 I/O 复用模型多路 I/O 复用模型是利用select、poll、epoll可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多
2022-02-17 17:11:21
162
原创 一问三不知之log4j2漏洞简析
1.log4j2漏洞介绍1.1简介Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。是目前最优秀的Java日志框架之一。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apa
2021-12-11 12:36:29
47997
10
原创 一问三不知之初识JVM
JVM1. JVM是什么1.1 JVM概述JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机。jvm是运行在操作系统之上的,与硬件没有任何关系。JVM全称为 Java virtual machine ,即Java虚拟机。1.2 JVM跨平台及原理Java语言的一次编译,处处运行 ,即java的平台无关性是因为java虚拟机的平台有关性,不同的操作系统或平台,java虚拟机是不一样的,就比如腾讯开源的、免费的、基于 OpenJDK 的发行版本,并且受腾讯长期支
2021-11-12 10:42:21
880
原创 Redis缓存数据常见的三种问题及解决方法
1.缓存穿透1.1 问题描述缓存穿透是在客户端/浏览器端请求一个不存在的key,这个key在redis中不存在,在数据库中也不存在数据源,每次对此key的请求从缓存获取不到,就会请求数据源。如使用一个不存在的用户id去访问用户信息,redis和数据库中都没有,多次进行请求可能会压垮数据源1.2 解决方法一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写入的,缓存不存在,出于容错考虑,查询不到的数据是不会缓存在redis当中,这将导致每次请求不存在的数据都会请求数据库,失去了缓存的意义。
2021-09-07 20:48:22
2046
原创 一问三不知之HashMap的put方法
一、获取hashHashMap在put方法中,它使用hashCode()和equals()方法。当我们通过传递key-value对调用put方法的时候,HashMap使用Key hashCode()和哈希算法来找出存储key-value对的索引。二、索引下标位置元素为空如果索引下标位置元素为空,则将key和value封装为对象,jdk1.7封装成entry对象,jdk1.8封装成node对象,插入到当前位置三、索引下标位置元素不为空1、jdk1.7版本时jdk1.7的hashmap的数据结构为数
2021-08-28 15:57:57
179
原创 一问三不知之数据库引擎Innodb是如何实现事务处理的
一问三不知之数据库引擎Innodb是如何实现事务处理的Innodb实现事务处理主要用到 Buffer Pool(缓冲器池),Log Buffer,Redo Buffer(用于事务执行),Undo Buffer(用于事务回滚)以一个update事务为例1:Innodb接收到事务处理请求后,根据条件找到该数据所在的页2:创建一个Buffer Pool,并将该页数据缓存到Buffer Pool当中3:执行sql语句,修改在Buffer Pool中的数据4:针对Update语句创建一个Redo Log对
2021-08-26 22:23:25
293
原创 Mybatis-Plus入门(一)
Mybatis-Plus入门(一)提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Mybatis-Plus入门(一)前言一、Mybatis-Plus是什么?二、环境搭建1.新建一个简单的springboot项目2.建立数据库3.修改配置文件二.简单增删改查操作1.建立user实体类和Mapper层2.插入数据操作3.修改数据4.查询数据4.1按id查询
2021-06-12 18:06:02
227
原创 Java数据结构之稀疏数组
普通二维数组与稀疏二维数组相互转换引题:一个11*11的棋盘保存棋盘里的数据,0表示没有棋子,1表示白子,2表示黑子,如何存储棋盘数据引题:一个11*11的棋盘保存棋盘里的数据,0表示没有棋子,1表示白子,2表示黑子,如何存储棋盘数据一般情况下我们会用一个普通的二维数组,这个数组的大小就变成了11*11占用的内存较大,在棋盘中没有棋子的位置占大多数,这样的位置都为默认0,其他的有棋子的位置分为白棋和黑棋也就是1或2如下:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2020-10-31 17:51:04
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人