自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AQS详解

AQS的一些理解

2024-09-18 11:25:29 561

原创 MailUtil

发送邮件的工具类

2024-08-08 19:14:08 245

原创 Restful

Restful

2024-08-08 19:08:40 170

原创 Linux安装anaconda

安装Anaconda完成后,如果安装过程中没有选择自动添加环境变量,你需要手动添加。打开你的shell配置文件,通常是。这将显示当前的PATH环境变量,你应该能够看到Anaconda的路径包含在其中。来检查是否安装成功,如果能够显示conda的版本信息,那么表示安装和配置成功。应该替换为你的Anaconda安装路径。例如,如果你的Anaconda安装在。请注意,如果你使用的是其他shell,如zsh,你可能需要编辑。,使用文本编辑器打开,例如使用。完成以上步骤后,你可以使用。

2024-08-07 14:22:42 342

原创 11.Redis消息队列

使用Redis的几种 数据结构实现消息队列

2024-08-06 19:29:58 773

原创 10.秒杀优化

秒杀优化,将用户请求和具体的事务处理分离开,简单的请求响应使用redis完成,具体的操作单开线程执行

2024-08-06 19:24:36 899

原创 9.分布式锁

线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生,如果脚本中的key、value不想写死,可以作为参数传递。

2024-08-05 21:30:31 958

原创 9.分布式锁-redission

分布式锁-redission

2024-08-05 15:20:30 840

原创 8.优惠卷秒杀

优惠卷秒杀8.1 -全局唯一ID每个店铺都可以发布优惠券:当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题:id的规律性太明显受单表数据量的限制场景分析:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。场景分析二:随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们

2024-08-04 14:35:30 1025

原创 正则表达式工具类

正则表达式工具类

2024-08-02 13:38:07 284

原创 Redis缓存常见问题

redis缓存常见问题

2024-08-01 17:06:59 753

原创 7.封装Redis工具类

redis缓存穿透问题,雪崩问题,击穿问题封装工具类

2024-08-01 17:02:08 264

原创 6.缓存击穿问题及解决思路

假设线程1去查询缓存,然后从value中判断出来当前的数据已经过期了,此时线程1去获得互斥锁,那么其他线程会进行阻塞,获得了锁的线程他会开启一个 线程去进行 以前的重构数据的逻辑,直到新开的线程完成这个逻辑后,才释放锁, 而线程1直接进行返回,假设现在线程3过来访问,由于线程线程2持有着锁,所以线程3无法获得锁,线程3也直接返回数据,只有等到新开的线程2把重建数据构建完后,其他线程才能走返回正确的数据。这种方案巧妙在于,异步的构建缓存,缺点在于在构建完缓存之前,返回的都是脏数据。解决方案二、逻辑过期方案。

2024-08-01 14:35:09 856

原创 5.缓存雪崩问题及解决思路

缓存雪崩问题及解决思路

2024-07-31 20:14:01 403

原创 4.缓存穿透问题的解决思路

缓存穿透产生的原因是什么?

2024-07-31 20:02:27 240

原创 3.商户信息查询缓存

商户查询缓存

2024-07-31 16:03:47 744

原创 windows下redis设置后台启动

windows下redis置后台启动

2024-07-31 14:45:03 776

原创 2.Redis代替session实现验证码登录

Redis代替session实现验证码登录

2024-07-31 10:46:41 586

原创 1.基于Session实现验证码登录

基于Session实现登录流程

2024-07-30 19:53:22 978

原创 Java项目实现邮件发送

Java 邮件发送

2024-07-29 14:52:46 260

原创 5.Resolving views

5.Resolving views

2024-07-28 19:59:09 420

原创 4.Handler mappings

Handler mappings

2024-07-28 19:44:47 399

原创 SpringMVC异步处理的 5 种方式

SpringMVC异步处理的 5 种方式

2024-07-28 19:19:58 415

原创 @InitBinder 注解

@InitBinder 注解

2024-07-27 16:47:12 586

原创 @SessionAttributes和HttpSession

`@SessionAttributes`和`HttpSession`

2024-07-26 13:52:07 202

原创 @ModelAttribute与 Servlet 上下文的区别

@ModelAttribute` 与 Servlet 上下文的区别

2024-07-25 16:33:48 547

原创 @RestController和@Controller

@RestController和@Controller

2024-07-25 15:24:40 759

原创 可消费的媒体类型和可生成的媒体类型

可消费的媒体类型和可生成的媒体类型

2024-07-25 11:40:48 736

原创 反射文件下载(RFD)

反射文件下载(RFD)

2024-07-25 11:03:54 1131

原创 3.Implementing Controllers

Implementing Controllers

2024-07-19 16:35:38 1169

原创 2.The DispatcherServlet

The DispatcherServlet

2024-07-11 17:25:09 1312 1

原创 1.Introduction to Spring Web MVC framework

简介

2024-07-11 15:35:05 1009

原创 Spring MVC

找到对应的控制器,也就是com.blue.controller.HelloController,然后在对应的控制器类中处理,返回模型,然后根据模型中的跳转,赋值等,在springmvc-servlet.xml中配置的前缀和后缀,跳转到对应的页面。当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。

2024-07-10 17:15:38 1092

原创 Spring(二)

事务:把一组业务当成一个业务来做,要么都成功,要么都失败!事务在项目开发中十分的重要,涉及到数据的一致性问题,不能马虎!确保完整性和一致性。

2024-06-28 22:16:23 958

原创 Spring(一)

spring的IOC和动态代理

2024-06-27 09:34:30 364

原创 MyBatis(二)

只读的缓存会给所有调用者返回缓存对象的相同实例。而可读写的缓存会(通过序列化)返回缓存对象的拷贝。这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的,因此对它们进行修改可能会在不同线程中的调用者产生冲突。flushInterval(刷新间隔)属性可以被设置为任意的正整数,设置的值应该是一个以毫秒为单位的合理时间量。size(引用数目)属性可以被设置为任意正整数,要注意欲缓存对象的大小和运行环境中可用的内存资源。

2024-06-25 10:46:55 629

原创 MyBatis(一)

官网:https://mybatis.org/mybatis-3/zh_CN/index.html什么是MyBatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2024-06-24 15:03:50 542

原创 小结(一)

在JavaWeb项目中都是通过Servlet实现前后端的转接;自己编写Servlet方法后继承类库中的HttpServlet抽象类,其中的Service方法最为重要,它将前端的请求方式通过字符串匹配的形式来执行对应的后端方法。两个重要的参数:;request//获取cookies//该方法返回请求头中指定名字的值,大小写不敏感//此方法返回请求的HTTP方法,例如,GET, POST, HEAD, PUT, DELETE等。//该方法返回此请求的URL的部分,该部分表示请求的上下文路径。

2024-06-21 00:27:50 836

原创 Http请求中的Get和Post

然而,这绝对不是一个必须的做法,二者在大部分的情况下是分别处理POST和GET请求的。如果你的POST请求与GET请求需要执行相同的逻辑,那么可以这样做以减少代码重复;但如果他们需要执行的逻辑不同,那么你应该在doPost()和doGet()中分别写不同的逻辑代码。在Java的Servlet编程中,我们可以根据需要处理不同的请求类型,在doPost()方法中调用doGet()方法也是可以的。以上代码的意思是,当这个Servlet接收到POST请求时,它会直接调用doGet()方法进行处理。

2024-06-20 20:39:17 250

原创 Servlet中实现doGet方法的复用

在JavaWeb中,为了避免Servlet泛滥可以在前端使用隐藏域的形式来实现servlet的复用

2024-06-20 19:38:25 231

空空如也

空空如也

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

TA关注的人

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