- 博客(33)
- 收藏
- 关注
原创 token是用来鉴权的,那session是用来干什么的?
在这个场景中,JWT用于无状态的用户认证,提供便捷和扩展性;Session作为辅助,提供额外的安全性和状态管理。通过这种结合,可以充分利用两者的优点,确保系统既具备高扩展性,又能提供细致的安全控制。
2024-09-19 22:54:09 336
原创 升级 JDK17 一个不可拒绝的理由!
随着ZGC的出现, 使得这一痛点彻底解决, ZGC 最初在 JDK 11 中作为实验性功能引入,并在 JDK 15 中宣布为生产就绪, 由于 JDK17 才是比较正式提供给大众实用的LTS支持版本,而且一部分公司已经在使用,所以本文力推 JDK17。垃圾回收器的暂停问题对实时响应要求较高的服务来说,一直是个痛点, CMS和G1等主流垃圾回收器的数十毫秒乃至上百毫秒的暂停时间相当致命。这么短的GC, 可以保证,应用因为JVM层面的卡顿都保持在 1ms 以内, 这也是为啥说这点才是不能拒绝的理由。
2024-09-16 17:55:22 816 1
原创 SpringBoot 集成支付宝支付!!!
使用的Post接口,因为官方建议处理付款成功后的操作在异步调用方法中,异步调用为post请求,异步回调方法必须为公网IP,因为支付宝是基于公网访问,访问不了localhost,需要代理,设置公网IP有两种方案,1、内网穿透,2、将项目部署到服务器,我们项目使用的是内网穿透,使用的是natapp,配置一条免费的隧道,在idea中配置notifyurl接口。RabbitMQ可以针对Queue和Message设置 x-message-tt,来控制消息的生存时间,如果超时,则消息变为dead letter。
2023-12-20 14:08:50 102 1
原创 SpringBoot最常用的注解!!!
作用:用于自动生成JavaBean的getters、setters、toString、hashCode和equals方法。作用:用于将一个方法返回的对象注册到Spring容器中。作用:用于标识一个类是Spring容器中的服务组件。作用:用于将方法的返回值转换为HTTP响应的主体。作用:用于自动装配Spring容器中的Bean。作用:用于标识一个类是Spring容器中的组件。作用:用于标识一个类是Spring的配置类。作用:用于在方法执行前后执行通知。作用:用于缓存方法的返回值。作用:用于更新缓存中的数据。
2023-09-06 13:29:15 119
原创 Spring Boot 如何做好性能优化!!!
如果你的项目并发量比较高,想要修改最大线程数、最大连接数等配置信息,可以通过自定义 Web 容器的方式,代码如下所示。注意上面的代码:我们设置了它的协议为org.apache.coyote.http11.Http11Nio2Protocol,意思就是开启了 Nio2。这个参数在T omcat8.0 之后才有,开启之后会增加一部分性能。对比如下:lastName=lastName=lastName=lastName=
2023-09-01 16:17:22 331
原创 Spring Boot 快速实现 IP 地址解析!!!
本篇带大家实践在spring boot 项目中获取请求的ip与详细地址,我们的很多网站app 中都已经新增了ip 地址显示,大家也可以用在自己的开发中,显得更高级。
2023-08-16 16:50:25 134 1
原创 Spring Boot 实现通用 Auth 认证的 4 种方式!!!
最近一直被无尽的业务需求淹没,没时间喘息,终于接到一个能让我突破代码舒适区的活儿,解决它的过程非常曲折,一度让我怀疑人生,不过收获也很大,代码方面不明显,但感觉自己抹掉了 java、Tomcat、Spring 一直挡在我眼前的一层纱。对它们的理解上了一个新的层次。好久没输出了,于是挑一个方面总结一下,希望在梳理过程中再了解一些其他的东西。由于 Java 繁荣的生态,下面每一个模块都有大量的文章专门讲述。所以我选了另外一个角度,从实际问题出发,将这些分散的知识串联起来,各位可以作为一个综述来看。
2023-08-13 14:10:42 364 1
原创 这才是 SpringBoot 统一登录鉴权、异常处理、数据格式 的正确姿势!!!
本篇将要学习 Spring Boot 统一功能处理模块,这也是 AOP 的实战环节。
2023-08-06 18:19:42 353
原创 SpringBoot后端接口规范
因为HTTP协议是无状态的,Token的设计方案是用户在客户端使用用户名和密码登录后,服务器会给客户端返回一个Token,并将Token以键值对的形式存放在缓存(一般是Redis)中,后续客户端对需要授权模块的所有操作都要带上这个Token,服务器端接收到请求后进行Token验证,如果Token存在,说明是授权的请求。如果在缓存中的签名失效的情况下,有人使用同一个URL再次访问,则会被时间戳超时机制拦截,这就是为什么要求sign的超时时间要设定为跟时间戳的超时时间一致。
2023-07-10 13:32:47 232 1
原创 SpringBoot2.0集成MQTT消息推送功能实现
如果不指定,则使用默认配置的主题。这几天在弄后端管理系统向指定的Android客户端推送消息的功能模块,查阅了网上很多博客介绍的许多方式,最终选择基于MQTT协议来实现,MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。最后,写个接口类测试下功能,用Postman调用sendMqtt.do接口,往hello主题发送消息,用MQTTLens订阅hello主题,从下面截图,可以看出可以正常往MQTT服务发送消息了,而且可以订阅到。第三,配置MQTT消息推送配置类,
2023-06-17 13:49:06 920
原创 Mysql优化之Explain
id 字段是 select查询的序列号,是一组数字,表示的是查询中执行select子句或者是操作表的顺序,id值越大表示优先级越高,也就是该语句先执行,Id值相同从上往下依次执行。eq_ref:此类型出现在多表的连接查询,表示一张表的每一条记录只能匹配另一张表的每一条记录,查询的比较操作通常是”=”,它查询效率较高。All:表示全表扫描,它的性能也是最低的,在数据量很大的前提下就是一场灾难,我们要尽量避免这种类型,通常的做法是加上索引。Book_info表中的每一条记录只对应student中的每一条记录。
2023-06-02 16:22:33 73
原创 Redis锁完美解决高并发秒杀问题
场景:一家网上商城做商品限量秒杀。1 单机环境下的锁将商品的数量存到Redis中。每个用户抢购前都需要到Redis中查询商品数量(代替mysql数据库。不考虑事务),如果商品数量大于0,则证明商品有库存。然后我们在进行库存扣减和接下来的操作。因为多线程并发问题,我们不得不在get()方法内部使用同步代码块。这样可以保证查询库存和减库存操作的原子性。package springbootdemo.demo.controller;/* * @auther * @date 2020-09-12 11:
2021-09-13 11:24:57 933
原创 16 条 yyds 的代码规范
如何更规范化编写Java 代码Many of the happiest people are those who own the least. But are we really so happy with our IPhones, our big houses, our fancy cars?忘川如斯,拥有一切的人才更怕失去。背景:如何更规范化编写Java 代码的重要性想必毋需多言,其中最重要的几点当属提高代码性能、使代码远离Bug、令代码更优雅。一、MyBatis 不要为了多个查询条件而写 1
2021-09-08 09:17:52 102
原创 MySQL的语句执行顺序
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序:sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。一、sql执行顺序fromjoinonwheregroup by(开始使用select中的别名,后面的语句中都可以使用)avg,sum…havingselectdistinctorder by
2021-09-06 16:16:29 113
原创 字符串拼接,会走StringBuilder 吗?
大家好,我是磊哥。最近在突然想到了String字符串拼接问题,于是做了一个demo测试了一下,到底String类型的字符串在拼接的时候,哪种情况下会走会走StringBulider进行字符串拼接,而哪种情况编译器会对代码进行优化?话不多说,先看demo一.问题案例1...
2021-09-03 10:55:04 103
原创 40 个 Spring Boot 常用注解
一、Spring Web MVC 与 Spring Bean 注解Spring Web MVC 注解@RequestMapping@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。@RequestMapping注解对请求处理类中的请求处理方法进
2021-09-01 13:44:51 257
原创 Nginx 如何限流?
流量限制(rate-limiting),是Nginx中一个非常实用,却经常被错误理解和错误配置的功能。我们可以用来限制用户在给定时间内HTTP请求的数量。请求,可以是一个简单网站首页的GET请求,也可以是登录表单的POST请求。流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率。通过将传入请求的速率限制为真实用户的典型值,并标识目标URL地址(通过日志),还可以用来抵御DDOS攻击。更常见的情况,该功能被用来保护上游应用服务器不被同时太多用户请求所压垮。本篇文章将会介绍Nginx的 流量限制 的基
2021-09-01 10:34:58 377
原创 SpringBoot 实现 MySQL 读写分离
前言首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库。主库的职能是负责写,从库主要是负责读,可以建立读库集群,通过读写职能在数据源上的隔离达到减少读写冲突、 释压数据库负载、保护数据库的目的。在实际的使用中,凡是涉及到写的部分直接切换到主库,读的部分直接切换到读库,这就是典型的读写分离技术。本篇博文将聚焦读写分离,探讨如何实现它。目录一: 主从数据源的
2021-08-31 10:06:44 404
原创 Spring 框架中使用的设计模式
简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理:bean容器的启动阶段:读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。然后通过BeanDefinitionRegistry将这些bea.
2021-08-31 09:58:11 124
原创 【MySQL】数据库事务深入分析
一、前言只有InnoDB引擎支持事务,下边的内容均以InnoDB引擎为默认条件二、常见的并发问题1、脏读一个事务读取了另一个事务未提交的数据2、不可重复读一个事务对同一数据的读取结果前后不一致。两次读取中间被其他事务修改了3、幻读幻读是指事务读取某个范围的数据时,因为其他事务的操作导致前后两次读取的结果不一致。幻读和不可重复读的区别在于,不可重复读是针对确定的某一行数据而言,而幻读是针对不确定的多行数据。因而幻读通常出现在带有查询条件的范围查询中三、事务隔离级别1、读未提交(READ U
2021-08-26 10:40:39 153
原创 Spring 注解大全与详解
注解 解释@Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。@Service 组合注解(组合了@Component注解),应用在service层(业务逻辑层)@Reponsitory 组合注解(组合了@Component注解),应用在dao层(数据访问层)@Component 表示一个带注释的类是一个“组件”,成为Spring管
2021-08-26 10:10:26 562
原创 多线程的总结
多线程的总结一、多线程是什么?为什么要用多线程?介绍多线程之前要介绍线程,介绍线程则离不开进程。首先 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。 多线程:一个进程中不只有一个线程。为什么要用多线程:①、为了更好的利用cpu的资源,如果只有一个线程,则第二个任务必须等到第一个任务结束后才能进行,如果使用多线程则在主线程执行任务的同时可以执行其
2021-08-26 09:51:41 93
原创 java基础知识点整理
java基础知识点整理1.&和&&的区别?&:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true。&&:短路与,如果第一个表达式为false时,第二个表达式就不会计算了。2.在java中如何跳出当前的多重循环?在循环语句外前面定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出循环。...
2020-04-21 13:40:13 291
原创 tomcat面试题
一、Tomcat的缺省是多少,怎么修改Tomcat的缺省端口号是8080.修改Tomcat端口号:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3.打开server.xml文件4.在server.xml文件里面找到下列信息maxThreads=”150″ minSpareThreads=”25″ maxSpareThre...
2020-04-21 13:37:29 343
原创 springboot整合redis实践消息发布订阅特性!!!
springboot框架整合redis实现发布订阅消息模式,将消息发布到redis一个主题topic,当有订阅到这个topic会接收到这个消息并进行消费。1、首先实现MessageListener接口,这个接口是spring-data-redis整合包。2、实现onMessage方法,当有订阅到topic消息,会接收到Message消息。3、代码方法可以对消息进行消费处理。
2024-09-21 18:31:14 165
原创 SpringCloud 常见10个调优场景!!!
Bean// 使用加权响应时间规则在进行Spring Cloud调优时,重要的是理解每个组件的工作原理以及如何配置它们以适应你的具体需求。这些示例只是入门,实际应用中可能需要根据具体场景进行更深入的分析和调整。此外,使用监控工具(如Spring Boot Actuator、Micrometer)可以帮助你更好地了解服务的运行状态并做出相应的优化决策。
2024-09-20 22:45:06 521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人