- 博客(18)
- 收藏
- 关注
原创 Redis 序列化
RedisTemplate可以接收任意Object作为值写入Redis ,只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化。这种保存到redis,会多一个@class字段,也会多一些内存占用。只不过存储的对象key和value如下。也可以使用fastjson序列化。
2023-07-27 15:19:30
215
原创 MYSQL索引实战
一种高效获取数据的数据结构,如书的目录快速找到对应数据位置。explain + sql语句包含的字段(1)id: select查询的序列号,包含一组数字,表示查询中执行select字句或操作的顺序。id有三种值:id相同,执行顺序由上至下。id不同,如果是子查询,id的序号会递增,id越大优先级越高,先被执行。id相同不同,如1,1,2,id相同可以认为是一组,从上往下顺序执行。在所有组中,id越大,优先级越高,越先被执行。
2023-06-04 20:45:02
237
原创 函数式编程-Stream流简单讲解
Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。Optional就好像是包装类,可以把我们的具体数据封装Optional对象内部。然后我们去使用Optional中封装好的方法操作封装进去的数据就可以非常优雅的避免空指针异常。我们一般使用Optional的静态方法ofNullable来把数据封装成一个Optional对象。
2023-05-01 22:18:08
270
原创 设计模式---代理模式
代理模式是常见的设计模式之一,其中要分清楚代理类(房屋中介)和委托类(房东想要出租房子,委托给中介出租),两者存在关联关系,都实现相同接口,简单来说,我们租房子是通过中介去看房(通过代理对象访问),不直接接触房东,这种存在一种间接性,也是这种间接性可以附加多种功能(中介吹嘘,房屋干净,租房打折等在租房基础上的新功能)。
2023-04-30 16:49:48
117
原创 JSON.parseObject()几种用法!!!
概括近日准备学习json数据的解析,发现不怎么会用json数据的处理,今天就系统学习一点json处理转换格式的学习。1.0 直接参数方式参数传递到后端直接进行解析parseObject()可以转换为各种数据格式!!!同时也能转换为对应pojo类,第二个参数是通过反射进行创建。代码实现如下:转化为User对象,通过反射。
2023-04-23 21:11:30
3778
原创 RabbitMQ 常见使用场景
概念RabbitMQ 消息队列。消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是的,而且,没有业务逻辑的侵入,这样就实现了生产者和消费者的。
2023-04-23 16:27:53
829
原创 线程池实战篇
线程池使用场景在执行异步任务或者并发任务的时候,我们往往用方法来创建新的线程,这样弊端较多,如频繁的创建销毁线程占用大量系统资源,线程上线不可控,资源耗尽的风险,这时候可以引入线程池就比较合理,使用线程池的优势有哪些:使用线程池优点:1. 降低系统系统资源消耗,重用已有的线程,减小创建销毁线程的资源消耗。2. 提高系统响应速度,任务达到就有线程执行,无需等待新线程的创建。
2023-04-19 14:31:29
371
原创 redis缓存击穿、缓存穿透、缓存雪崩、缓存一致性解决方案的代码实现
判断是否为热点数据-->是热点数据申请锁-->申请成功进行加分布式锁-->去数据库查该热点数据-->将数据设置为永不过期-->释放锁-->申请失败则进行自旋去申请锁。在这里我缓存的是id,所以我延时双删,删除的是缓存的id,通常key为id,value为商品信息,这里不多改变,理解意思即可。一些redis的key过期,同时大量数据请求过期的key或者redis不存在的key,导致大量请求打到数据库,导致数据库瘫痪!缓存层出现错误,不能正确运行,导致所有请求打到存储层,造成存储层挂掉的情况。
2023-04-15 14:46:02
411
原创 SpringSecurity安全框架实践
我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。
2023-04-13 21:12:41
139
原创 springboot集成日志知识的梳理
日志就是记录一些程序运行轨迹,方便查询定位。就像我们开发过程中使用的debug测试每一步,找到对应节点的信息等等,由于平常生产环境没有控制台,所以我们不能将日志打印到控制台上面,所以我们要写入指定位置文件中,在固定时间进行清理。日志级别TRACEDEBUGINFOWARNERRORFATAL。着重说一下 DEBUG、INFODEBUGdebug级别用来记录详细的信息,方便定位问题进行调试,在生产环境我们一般不开启DEBUGINFO。
2023-04-08 17:48:58
185
原创 全局异常处理
首先在做拦截器的时候发现,出现异常或者token格式不正确的时候,后台抛出异常处理,前台页面不显示错误信息,导致前台不知道后台发生了什么,全局异常就是自定义异常处理,出现问题进行抛出,返回给前端具体异常信息。定义了自定义异常后,需要对异常进行处理,所以再添加异常处理类。之后声明自定义异常,要继承RuntimeException。之后拦截器中的代码有问题,可以直接抛出具体自定义异常枚举。
2023-04-07 15:43:12
167
原创 SpringBoot集成redis实现的用户登录和相关拦截器的实现
写controller、service、mapper,mapper.xml层代码根据username和password查询。原因是拦截器的加载在springcontext之前,所以自动注入redis工具类是null。但是在WebMvcConfigurer可以注入成功,然后通过构造器进行注入。实现拦截器的时候写的redis工具类一直报null,出现空指针异常如下。增加拦截器构造方法,将redis工具类当作属性注入。下一次写,异常处理,返回给前端的异常进行封装。拦截器注册器中注入,通过构造方法。
2023-04-06 23:19:51
635
原创 ajax和springBoot完整的交互过程
下一篇写拦截器相关的,尝试去自己走一遍代码,写一下看看能不能写出来,之前完全没有自己写过拦截器都是跟着视频,这次自己写一下,然后记录一下博客写的过程。然后更改配置点击 File -> Project Structure->module->点击+号->选择web 将webapp放到main目录下即可。点击 File -> Project Structure->module->点击+号->选择web-> 选择create Artifact。项目基本已经搭建完成,开始测试ajax和后台交互!
2023-04-03 20:56:06
1376
1
原创 关于面试问题复盘
前几天面了一次java实习的面试,感觉回答的不是很好,周一面试官了解了一下基本情况,问我会不会前端,我说我主要学后端,但是我感觉也不能说前端不会,所以我就说前端会一点就像ajax,js等都能基本会用,其实基本没咋用过。但是周二就开始技术面了,问的其它的都回答的不错,但是有好几个问题,抓着ajax问个不停,基本把我问懵了,因为我没有准备,基本不会....今天就把前两天的面试复盘一下,三天过去了,hr没有后序,基本凉了!!!
2023-04-02 22:00:25
67
原创 关于Ajax的几种请求格式
参数名=参数值&参数名=参数值 安全性较差有长度限制,post的请求格式/action 请求参数在body中没有长度限制。get发送将header和data一起发送,成功返回200,post则是先发送header成功返回100之后才会发送data给服务器。因为响应数据要是json格式,使用的json转化工具,这里要不采用fastjson,这里使用jackjson。json 表示 json。
2023-04-02 21:31:51
2079
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人