- 博客(98)
- 收藏
- 关注
原创 Java知识点补充
场景:我们希望将三万张图片均匀的分布在三台服务器上,此时我们可以对N进行取模运算,也就是三万%3得到的结果为0,1,2,但当我们的请求增多后,我们想要新设立一个服务器,此时服务器的数量为4个,因此除数变为4,此时我们的缓存在一定时间内是失效的,这是普通hash算法的一个缺陷。负载均衡:减少单个服务器之间的压力,将流量重定向到多个服务器中常见的负载均衡算法有:轮询法(按照请求时间一个一个来),权重轮询(会进行访问数的统计),IP哈希(根据请求者的ip的hash值进行请求分发),url哈希。
2024-04-25 16:37:22 611
原创 Redis分布式锁
作为分布式锁实现过程中的共享存储系统,Redis 可以使用键值对来保存锁变量,在接收和处理不同客户端发送的加锁和释放锁的操作请求。
2024-02-29 20:59:11 359
原创 IO零拷贝
write:把数据从磁盘读取到内核缓冲区,再拷贝到用户缓冲区read:先把数据写入到socket缓冲区,最后写入网卡设备DMA:完全由硬件进行信息传输控制的方法,
2024-02-29 16:19:08 487
原创 Redis进阶篇
redis是基于内存运行的高性能k-v数据库,6.x之前是单线程, 对外提供的键值存储服务的主要流程 是单线程,也就是网络 IO 和数据读写是由单个线程来完成,6.x之后引入多线程而键值对读写命 令仍然是单线程处理的,所以 Redis 依然是并发安全的。
2024-02-23 15:15:29 1011
原创 设计模式七(策略模式)
可以将同一种功能的不同实现细节抽取到一个抽象接口中,把不同的实现让子类实现,最终我们只需选择不同的子类即可策略类 Strategy : 定义所有⽀持的算法的公共接⼝。具体策略类 ConcreteStrategy : 实现了策略接⼝,提供具体的算法实现。上下⽂类 Context : 包含⼀个策略实例,并在需要时调⽤策略对象的⽅法。
2024-01-30 20:58:03 659
原创 Mysql进阶篇
连接层: 处理客户端连接请求,对用户进行认证服务层: 可以接收sql,调用存储过程,优化sql,缓存数据....引擎层: 负责实际与文件层进行交互操作的,可以有不同的引擎选择.物理文件层: 存储表数据 以及 各种日志文件.
2024-01-30 20:49:44 1047
原创 设计模式六(模板方法模式)
模板⽅法模式将算法的不变部分被封装在模板⽅法中,⽽可变部分算法由⼦类继承实现,这样做可以很好的提⾼代 码的复⽤性,但是当算法的框架发⽣变化时,可能需要修改模板类,这也会影响到所有的⼦类。有些步骤是固定的可以抽取父类,在父类中实现各个步骤,并且在父类中定义一个流程控制方法,将某个容易发生变化的步骤定义为抽象方法,针对不同的子类实现不同的方法,最终子类调用父类的流程控制方法即可。是一种行为型的设计模式,
2024-01-28 11:16:44 917
原创 设计模式五(代理模式)
代理模式就是给对象提供一个代理,并由代理对象来控制原对象的引用,使得客户不能与真正的目标对象通信,代理对象是目标对象的代表, 其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。
2024-01-28 11:00:44 754
原创 设计模式四(适配器模式)
是一种结构性设计模式,将一个类的接口转化为客户希望的另一个接口,充当两个不同接口之间的桥梁,使得原来接口不兼容的类可以一起工作。将客户端代码和具体的类解耦,客户端不需要直到被适配者的细节。
2024-01-24 19:31:38 693
原创 设计模式三(原型模式)
在开发过程中,创建多个数据相同的对象,每次new都开销比较大,在这里可以使用对象克隆,以先创建的原型对象为模板进行对象的复制。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
2024-01-24 19:15:59 829
原创 设计模式二(工厂模式)
本质:实例化对象不用new,用工厂代替,实现了创建者和调用者分离满足:开闭原则:对拓展开放,对修改关闭依赖倒置原则:要针对接口编程迪米特原则:最少了解原则,只与自己直接相关的类有关系。
2024-01-22 20:44:14 620
原创 springboot集成easypoi
主打的功能就是容易,通过简单的配置,就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出。
2024-01-21 20:32:11 477
原创 JUC并发编程知识点总结
JUC是java.util.concurrent包的简称,在Java5.0添加,目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题!
2024-01-20 20:35:26 933
原创 JVM知识总结
JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,作用是为了支持跨平台特性。功能:装载字节码,解释/编译为机器码管理数据存储和垃圾回收优化热点代码提升效率。
2024-01-17 19:51:53 1608
原创 Spring Security入门
Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。
2024-01-13 21:01:13 917
原创 Elasticsearch简介
Elasticsearch 为各种数据类型提供接近实时的搜索和分析。不论你有结构化或非结构化的文本、数字数据,还是地理空间数据,Elasticsearch 能以支持快速搜索的方式高效地存储和索引它。
2024-01-13 20:47:18 1014
原创 【Leetcode】买卖股票系列
dp含义:dp[i][j]中 i表示第i天,j为 [0 - 4] 五个状态,dp[i][j]表示第i天状态j所剩最大现金。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。在持有股票阶段分为三种情况,第一次持有,在冻结后的第一天买入,在冻结后的几天后再买入。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。dp[i][1]代表第i天不持有股票的最大收益。dp[i][0]代表第i天持有股票的最大收益。
2023-10-06 16:45:27 157
原创 SpringWeb解析
1. 前端控制器:DispatcherServlet(不需要程序员开发),由框架提供,在 web.xml 中配置。作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求.2. 处理器映射器:HandlerMapping(不需要程序员开发),由框架提供。作用:根据请求的 url 查找 Handler(处理器/Controller) 处理器适配器:3. HandlerAdapter(不需要程序员开发),由框架提供。
2023-09-12 11:26:07 221 1
原创 Spring_JDBC的使用
Spring 是个一站式框架:Spring 自身也提供了控制层的 SpringMVC和持久层的 Spring JdbcTemplate。
2023-09-02 18:30:52 790 12
原创 Spring使用注解开发
XML与注解比较XML可以适用任何场景 ,结构清晰,维护方便注解不是自己提供的类使用不了,开发简单方便xml与注解整合开发:推荐最佳实践xml管理Bean注解完成属性注入使用过程中, 可以不用扫描,扫描是为了类上的注解扫描的作用:进行注解驱动注册,从而使注解生效用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册如果不扫描包,就需要手动配置bean如果不加注解驱动,则注入的值为null!
2023-09-01 22:55:52 269 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人