- 博客(44)
- 收藏
- 关注
原创 如何防止黑客恶意的刷端口
(时间戳为1秒钟)假如说:我们设置的不是1秒钟是10次吗,要是他这个key一秒钟访问累加超过10次就确认是恶意刷端口,当这个时间戳过了之后就没有用了,所以为了不浪费资源我们会在这个时间戳初次进来写的时候。1秒钟超过多少次就算攻击(比如1秒钟十次),当一秒钟刷新超过十次我们就认为是在刷新我们的接口,这个时候我们可以对key进行一个设置,可以给当前的一个端口。,(Redis是kv结构的,v具有类型结构)我们可以。(比如ttl=2),到时间就让他过期我们就不用他了。我们可以在把这个端口作为Redis的一个。
2024-04-26 17:58:11
313
1
原创 MQ的延迟队列
定时发布文章秒杀之后,给30分钟时间进行支付,如果30分钟后,没有支付,订单取消。预约餐厅,提前半个小时发短信通知用户。A -> 13:0016:30 延迟时间: 7*30 * 60 * 1000B -> 11:0017:30 延迟时间: 13*30 * 60 * 1000C -> 8:0013:30 延迟时间: 11*30 * 60 * 1000。
2024-04-09 21:36:58
1012
原创 MQ死信队列:面试题
在RabitMQ中充当主角的就是消息,在不同场景下,消息会有不同地表现。死信就是在特定的场景下的一种表现形式,这些场景包括:1. 消息被拒绝访问,即 RabbitMQ返回 basicNack 的信号时 或者拒绝basicReject2. 消费者发生异常,超过重试次数。其实spring框架调用的就是basicNack3. 消息的Expiration过期时长或队列TTL过期时间。4. 消息队列达到最大容量上述场景经常产生死信,即消息在这些场景中时,被称为死信。
2024-04-09 21:24:41
563
原创 交换机与队列的简介
首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。
2024-04-07 22:03:12
735
原创 MQ简介和面试题
MQ全称是Mwessage Queue(消息队列),是在消息传输过程中保存消息的容器,多用于分布式系统之间进行通信,解耦和低耦合性。
2024-04-07 21:27:55
580
原创 Spring Boot 使用 Redis
为什么要自定话应该序列化工具,因为他自己提供的不是很好,所以我们要自己定义一个,这样的话可以把java对象转化成json和字节码存入Redis 里,反序列化就是把json和字节码转化为java对象,泛型指定为。),这样在序列化时,即使目标类没有显式地声明类型信息,也能根据实际运行时类型推断并在JSON中包含类型信息,这对于处理多态类型的场景非常有用。实例,这样在整个Spring Boot应用中,当需要使用RedisTemplate进行操作时,将自动使用这个经过JSON序列化配置的模板。
2024-03-30 18:59:50
3007
原创 Redis 面试题
1,内存数据库,快 ,很快2,工作单线程woeker (Redis 6.0之前是单线程的),串行化,原子操作,(IO线程是多线程的 )可以避免上下文切换3,IO模型,(epoll ),支持高并发4,kv模型,v具有类型结构5,具有本地方法,计算向数据移动,(a,b)=> 交集6,二进制安全,Value 最大就是512M答:工作线程是单线程的,IO线程是多线程的,多线程请求,单线程工作(在6.0之前是单线程的,之后是工作线程是单线程的,IO线程是多线程的)
2024-03-30 17:05:33
931
原创 Redis
Redis 即远程字典服务,是一个开源的,使用c语言编写,支持网络,可基于内存亦可以持久化的日志型,key-value 的数据库,并提供多种语言的API。
2024-03-29 08:53:00
1018
原创 Docker
Docker是一款开源的应用容器引擎,由Docker Inc.公司开发,自推出以来迅速成为云计算领域中的关键技术之一。Docker利用Linux的内核特性如cgroups(Control Groups)和namespaces实现了资源隔离与限制,可以在同一主机系统上轻松地创建和管理多个容器实例,每个容器都像是一个轻量级的、独立运行的虚拟环境。
2024-03-22 17:20:02
2348
原创 SpringBoot自动配置原理
Spring Boot 项目创建完成后,即使不进行任何的配置,也能够顺利地运行,这都要归功于 Spring Boot 的自动化配置。Spring Boot 默认使用 application.properties 或 application.yml 作为其全局配置文件,我们可以在该配置文件中对各种自动配置属性(server.port、logging.level.* 等等)进行修改,并使之生效,那么您有没有想过这些属性是否有据可依呢?答案是肯定的。可以查找Spring Boot 官方文档:常见应用属性。
2024-03-08 22:10:52
353
原创 SpringMVC执行流程
2.使用处理器映射器(HandlerMapping )反射了一个Handler(Handler里包含了所有的方法),可以获取到所有的方法,并返回一个处理器执行链HandlerInterceptor (其中包含了Handler和多个拦截器,其实我们也可以将其看成是返回的是一共反射的Handler方法)3我们反射回来的方法不可以直接用,因为你不知道这个方法是注解的还是配置的,所以我们的前端控制器要调用处理器适配器(处理器适配器的作用就是无论你传来的Handler 方法是配置的还是注解的都可以适配上去正常使用)
2024-01-16 20:41:36
426
原创 Servlet入门
一,Servlet介绍1.1,什么是ServletServlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。1.2,Servlet的使用方法Servlet技术的核心是Servlet接口,定义了Servlet与Servlet容器之间的契
2023-12-28 16:25:42
400
原创 javaweb
比如我们手机上的app QQ软件 飞秋特点:必须下载特定的客户端程序。服务端升级之后,客户端也需要随着升级。B/S(Broswer-Server).比如京东网站,腾讯qq官方网站特点:只需要安装浏览器就可以访问。如果服务器端升级了,浏览器端不需要随之升级。JavaWeb开发,开发的软件是基于B/S的软件架构。
2023-12-28 15:59:23
882
原创 MyBatis的动态SQL
MyBatis的映射文件中支持在基础SQL上添加一些逻辑操作,并动态拼接成完整的SQL之后再执行,以达到SQL复用、简化编程的效果。
2023-12-25 21:13:03
363
原创 MyBatis的关联查询
实体间的关系(拥有 has、属于 belong)OneToOne:一对一关系(account ←→ user)OneToMany:一对多关系(user ←→ account)ManyToMany:多对多关系(user ←→ role)什么是关联查询当访问关系的一方时,如果需要查看与之关联的另一方数据,则必须使用表链接查询,将查询到的另一方数据,保存在本方的属性中关联查询的语法指定“一方”关系时(对象),使用指定“多方”关系时(集合),使用。
2023-12-25 20:34:06
1433
原创 MyBatis运行原理
6.创建一个ProxyFactory代理工厂类其中有着MappedStatement, conn(MappedStatement存储着Configuration( Map<namespace(nameespace指的是namespace:唯一,接口全类名)+id(指的是要实现功能的id名), MappedStatement(映射)(sql(sql语句), resultType(返回值))>)mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
2023-12-21 10:52:00
834
原创 MyBatis框架
框架全名叫(framework)(Framework)是一个框子————指其一个约束性,也是一个架子——指其支撑性,即已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。
2023-12-20 21:28:03
852
1
原创 低耦合和高内聚
低耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素是功能,对象,系统,子系统,模块。高内聚就是另一个评判软件设置质量的标准。内聚更为专业的叫法叫做功能内聚,是对系统中的元素的相关性和集中度的量度,如果元素有高度的相关职责,除了这些职责在没有其他的工作,那么该元素就有高内聚。
2023-11-17 16:49:35
113
原创 SpringBoot随堂笔记
SpringBoot是为了简化Spring 应用的搭建和开发过程SpringBoot 可以自动扫描到要加载的信息并启动相应的默认程序。
2023-11-10 14:42:34
75
1
原创 反射和设计模式
/static:1.保证getClassA方法可以获取返回 2. 静态属性可以确保内存中只有一份。//static:1.保证getClassA方法可以获取返回 2. 静态属性可以确保内存中只有一份。//static:1.保证getClassA方法可以获取返回 2. 静态属性可以确保内存中只有一份。//static:1.保证getClassA方法可以获取返回 2. 静态属性可以确保内存中只有一份。//只有第一次获取时需要实例化,其后直接将之前实例化的结果返回即可。
2023-09-09 17:37:23
45
1
原创 IO流(字节流)
类必须实现Serializable接口,意味着允许被序列化序列化:IO流拆解对象信息读取的过程反序列化:IO流组装对象信息构建对象的过程可以通过transient修饰符设定某个属性不参与序列化访问修饰符 transient 数据类型 属性名;//防止年龄参与序列化//省略getter、setter、构造、toString。
2023-09-09 14:56:55
101
1
原创 Chp17-异常
运行时:继承RuntimeException,提供无参有参构造(调用父类有参构造给Throwable中的详细信息属性赋值即可)/*** 运行时异常*/非运行时异常:继承Exception,提供有参无参构造/*** 非运行时异常*/。
2023-09-05 11:29:11
68
原创 Chp-14 -List 集合
void addAll(下标,集合):将参数集合的所有元素添加至当前集合指定下标位置。下标 lastIndexOf(元素):获取指定元素最后一次出现的下标,不存在返回-1。下标 indexOf(元素):获取指定元素第一次出现的下标,不存在返回-1。boolean contains(元素):判断集合中是否存在指定元素。while(it.hasNext()){//有下一元素,继续执行。void add(下标,元素):向集合指定下标位置添加一个元素。旧元素 set(下标,新元素):将指定位置的元素替换新元素值。
2023-08-29 16:53:14
92
1
原创 Chp13-常用类
Object1.是所有的类的总父类,只要是类就一定直接或者间接继承自Object(Object 包含所有类)2.内部存放着所有对象都需要拥有的方法3.可以根据需求对其中的部分方法提供重写。
2023-08-25 21:16:06
80
1
原创 Chp12-内部类
概念在类的内部再次定义类作用打破封装,又不破坏封装分类 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类位置:外部类内部,与外部类属性,方法平级class 外部类类名 {class 内部类类名{}}使用1,无法定义静态内容,但是可以访问外部类静态内容2,当外部类属性,内部类属性,内部类局部变量重名时; 局部变量,之间访问 内部类属性:this.属性名
2023-08-24 20:15:12
59
1
原创 chp11 - 接口
3,调用 java.util.Arrays.sort(被排序的数组名,Comparator接口的实现类对象)* 在测试类中定义函数,传入Work类型的数组,要求找出所有的老师对象并放入Teacher数组中返回。System.out.println("ts数组的长度为:"+ts.length);* 定义一个函数,要求传出参数,可以执行“红灯泡发红光”、“绿灯泡发绿光”、“蓝灯泡发蓝光”System.out.println("老师的数量为:" + sum);
2023-08-24 19:33:40
126
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人