Loading

摘要: 缓存穿透 用户访问一些不存在的数据,redis没有,于是去mysql查询也没有,这样就发生了两次无效的查询。 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,缓存永远不会生效。这样,每次针对此 key 的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户 id 阅读全文
posted @ 2024-08-17 22:59 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 为什么有了hashmap还要有treemap HASHMAP的特性和适用场景 HashMap是基于哈希表的Map接口实现。这使得它在插入和查询键值对时能够保持平均常数时间的性能。由于这个特性,它特别适用于需要快速存取键值对的场景。 HashMap的特性: 操作性能:HashMap提供了O(1)时间性 阅读全文
posted @ 2024-08-16 22:14 Duancf 阅读(31) 评论(0) 推荐(0) 编辑
摘要: synchronized底层语义原理 Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现。 在 Java 语言中,同步用的最多的地方可能是被 synchronized 修饰的同步方法。同步方法 并不是由 monitorenter 和 monitor 阅读全文
posted @ 2024-08-15 23:18 Duancf 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 简单介绍一下 Spring?有啥缺点? Spring 是重量级企业开发框架 Enterprise JavaBean(EJB) 的替代品,Spring 为企业级 Java 开发提供了一种相对简单的方法,通过 依赖注入 和 面向切面编程 ,用简单的 Java 对象(Plain Old Java Obje 阅读全文
posted @ 2024-08-15 20:22 Duancf 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 银行家算法 阅读全文
posted @ 2024-08-15 16:08 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
摘要: Collection 和 Collections 有什么区别 Collection接口 是Java集合框架的核心接口,它提供了一组标准的方法来操作各种类型的集合元素。它被一些集合类实现,比如ArrayList、LinkedList和HashSet等。这些实现提供了集合的基本操作,例如添加、删除、清空 阅读全文
posted @ 2024-08-14 23:04 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 参考资料 阅读全文
posted @ 2024-08-14 22:46 Duancf 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 在SQL中,是否需要将子查询设置为AS temp或其他别名,取决于子查询的具体用途和上下文。以下是一些常见的场景,帮助你判断何时需要使用别名,何时不需要: 1. 作为表的子查询(需要别名): 需要别名的情况:当子查询直接用于FROM子句中,作为一个虚拟表使用时,必须为子查询设置一个别名。这是因为SQ 阅读全文
posted @ 2024-08-13 00:21 Duancf 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 如果扣减库存的操作在一台机器上 使用本地锁 JVM 锁 不和数据库交互,模拟库存扣减。并发测试 100 个线程,访问50次。 private void jvmLock() { lock.lock(); try { goods.setInventory(goods.getInventory()-1); 阅读全文
posted @ 2024-08-12 23:18 Duancf 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 生命周期的概要流程 Bean 的生命周期概括起来就是 4 个阶段: 实例化(Instantiation) 属性赋值(Populate) 初始化(Initialization) 销毁(Destruction) 实例化:第 1 步,实例化一个 bean 对象; 属性赋值:第 2 步,为 bean 设置相 阅读全文
posted @ 2024-08-12 21:17 Duancf 阅读(66) 评论(0) 推荐(0) 编辑
摘要: AOP原理 阅读全文
posted @ 2024-08-12 20:54 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在本文中,我们将深入研究 Spring 框架 DI背后的故事,包括 Spring Inversion of Control(控制反转)、 DI 和 ApplicationContext 接口。 基于这些基本概念,我们将研究如何使用基于 java 和基于 XML 的配置来 创建Spring 应用程序。 阅读全文
posted @ 2024-08-11 20:58 Duancf 阅读(20) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal缺点及解决方案 每个Thread上都有一个threadLocals属性,它是一个ThreadLocalMap,里面存放着一个Entry数组,key是ThreadLocal类型的弱引用,value是对值的引用。所有的操作都是基于这个ThreadLocalMap操作的。 但是它有一 阅读全文
posted @ 2024-08-09 20:55 Duancf 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 小伙伴们,有没有遇到过程序突然崩溃,然后抛出一个OutOfMemoryError的异常?这就是我们俗称的OOM,也就是内存溢出。简单来说,就是你的Java应用想要的内存超过了JVM愿意给的极限,就会抛出这个错误。 那么为什么会出现OOM呢?一般都是由这些问题引起: 分配过少:JVM 初始化内存小,业 阅读全文
posted @ 2024-08-09 20:25 Duancf 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 简单工厂 // 计算类的基类 @Setter @Getter public abstract class Operation { private double value1 = 0; private double value2 = 0; protected abstract double getRe 阅读全文
posted @ 2024-08-09 19:42 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 单例模式 懒汉式,线程不安全 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance 阅读全文
posted @ 2024-08-09 17:15 Duancf 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 抽象构件 public abstract class FastFood { public String desc; public int price; public abstract String getDesc(); public abstract int getPrice(); } 具体构件 米 阅读全文
posted @ 2024-08-09 16:57 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 大家都知道索引分聚集索引和非聚集索引,性别字段因为可重复肯定只能建立非聚集索引,然而因为非聚集索引叶子节点存储的是索引值和聚集索引值,需要回表。所以在性别这种辨别度较低的字段上建立索引,索引树可能只有两个节点,跟线性查找没有太大区别,并且因为回表的存在导致在聚集索引树和非聚集索引树来回切换反而导致查 阅读全文
posted @ 2024-08-07 19:26 Duancf 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 在 Java 中,内存泄漏(Memory Leak)和内存溢出(Memory Overflow)是两种不同的内存管理问题。 内存泄漏(Memory Leak): 内存泄漏指的是程序在运行过程中,因为某些原因导致不再使用的对象仍然被保留在内存中,无法被垃圾回收器回收。这些对象会占用内存空间,导致系统的 阅读全文
posted @ 2024-08-07 18:33 Duancf 阅读(56) 评论(0) 推荐(0) 编辑
摘要: Interface Interface 的设计初衷是面向抽象,提高扩展性。这也留有一点遗憾,Interface 修改的时候,实现它的类也必须跟着改。 为了解决接口的修改与现有的实现不兼容的问题。新 interface 的方法可以用 default 或 static 修饰,这样就可以有方法体,实现类也 阅读全文
posted @ 2024-08-07 16:19 Duancf 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 为什么需要包装类 Java中的包装类是为了解决基本数据类型(如int、char、boolean等)和对象之间的转换问题而引入的。基本数据类型是Java语言中的基础类型,它们不是对象,不能直接参与面向对象编程的特性,如方法调用、继承和多态等。然而,在某些情况下,我们需要将基本数据类型作为对象来处理,这 阅读全文
posted @ 2024-08-07 15:02 Duancf 阅读(11) 评论(0) 推荐(0) 编辑
摘要: redis中的大key和unlink操作 Redis中的BigKey通常指的是那些包含大量元素的复合数据类型,如一个列表包含数百万个元素,或一个字符串的大小超过512MB。这些BigKey会在执行操作时消耗大量的CPU和内存资源,影响Redis的响应时间。 BigKey的产生原因 不合理的数据设计 阅读全文
posted @ 2024-08-06 20:30 Duancf 阅读(65) 评论(0) 推荐(0) 编辑
摘要: Java对象的序列化和反序列化 Java 对象的序列化和反序列化是一种将对象转换成字节流并存储在硬盘或网络中,以及从字节流中重新加载对象的操作。Java 的序列化和反序列化提供了一种方便的方式,使得可以将对象在不同的应用程序之间进行交互。 一、什么是 Java 序列化和反序列化? Java 对象的序 阅读全文
posted @ 2024-08-06 18:29 Duancf 阅读(17) 评论(0) 推荐(0) 编辑
摘要: CHAR与VARCHAR CHAR(M)为固定长度字符串,在定义时指定字符串列长。 VARCHAR(M)是长度可变的字符串,M表示最大列长度,占用的空间为字符串的实际长度加1。 当检索到CHAR值时,尾部的空格将被删除。VARCHAR在值保存和检索时尾部的空格仍保留。 TEXT与BLOB 保存较大文 阅读全文
posted @ 2024-08-06 17:05 Duancf 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 有备无患--主从同步 很多企业都没有使用 Redis 的集群,但是至少都做了主从。有了主从,当主节点(Master)挂掉的时候,运维让从节点(Slave)过来接管,服务就可以继续,否则主节点需要经过数据恢复和重启的过程,这就可能会拖延很长的时间,从而影响线上业务的持续服务。在了解 Redis 的主从 阅读全文
posted @ 2024-08-06 14:42 Duancf 阅读(34) 评论(0) 推荐(0) 编辑
摘要: scope Spring 中 Bean 的作用域通常有下面几种: singleton : IoC 容器中只有唯一的 bean 实例。Spring 中的 bean 默认都是单例的,是对单例设计模式的应用。 prototype : 每次获取都会创建一个新的 bean 实例。也就是说,连续 getBean 阅读全文
posted @ 2024-08-05 11:19 Duancf 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 死信队列是什么 死信,在官网中对应的单词为“Dead Letter”,可以看出翻译确实非常的简单粗暴。那么死信是个什么东西呢? “死信”是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况: 消息被否定确认,使用 channel.basicNack 或 channel. 阅读全文
posted @ 2024-08-03 22:06 Duancf 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Mybatis 作用 数据库连接管理:MyBatis可以自动管理数据库连接,避免了手动创建和关闭数据库连接的繁琐过程。 SQL语句生成:MyBatis可以根据Java对象和数据库表结构自动生成SQL语句,避免手写SQL语句的麻烦和错误。 参数映射:MyBatis可以将Java对象中的属性值自动映射到 阅读全文
posted @ 2024-08-03 21:04 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 拉取与提交 git clone 从远程仓库克隆到本地 git fetch 拉取服务端的最新提交到本地,不会本地合并,也就是不改变master,head指针位置 git pull 拉取服务端的最新提交到本地,进行本地合并,改变master,head指针位置 pull = fetch + merge g 阅读全文
posted @ 2024-08-03 20:39 Duancf 阅读(12) 评论(0) 推荐(0) 编辑
摘要: spring是如何解决循环依赖的? 循环依赖指的是两个类中的属性相互依赖对方:例如 A 类中有 B 属性,B 类中有 A属性,从而形成了一个依赖闭环。 循环依赖问题在Spring中主要有三种情况: 第一种:通过构造方法进行依赖注入时产生的循环依赖问题。 第二种:通过setter方法进行依赖注入且是在 阅读全文
posted @ 2024-08-03 20:38 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: SpringBoot自定义注解实现 在学习SpringBoot过程中,学习了一些SpringBoot特有的注解,大多是为了使用方便将多个注解进行了整合。既然学习到了注解,就来重新认识一下Spring的自定义注解实现过程,在之后学习新注解的实现原理时会更加游刃有余。 SpringBoot实现自定义注解 阅读全文
posted @ 2024-08-03 20:37 Duancf 阅读(64) 评论(0) 推荐(0) 编辑
摘要: HTTP 与 HTTPS 有哪些区别? HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。(Transport Layer Security,TLS) 阅读全文
posted @ 2024-08-03 20:07 Duancf 阅读(19) 评论(0) 推荐(0) 编辑
摘要: PWD pwd 显示工作路径 shutdown shutdown -h now 关闭系统 /halt 关闭系统 shutdown -r now 重启 / reboot 重启 防火墙 systemctl stop firewalld 关闭防火墙 IP地址 ip addr 查看ip地址 cd cd命令: 阅读全文
posted @ 2024-08-03 19:16 Duancf 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 说一下你对 Spring 的理解 Spring框架核心特性包括: IoC容器:Spring通过控制反转实现了对象的创建和对象间的依赖关系管理。开发者只需要定义好Bean及其依赖关系,Spring容器负责创建和组装这些对象。 AOP:面向切面编程,允许开发者定义横切关注点,例如事务管理、安全控制等,独 阅读全文
posted @ 2024-08-02 19:22 Duancf 阅读(10) 评论(0) 推荐(0) 编辑
摘要: SpringMVC 工作原理 Spring MVC 的核心组件有哪些? 记住了下面这些组件,也就记住了 SpringMVC 的工作原理。 DispatcherServlet:核心的中央处理器,负责接收请求、分发,并给予客户端响应。 HandlerMapping:处理器映射器,根据 URL 去匹配查找 阅读全文
posted @ 2024-08-02 17:41 Duancf 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 参考资料 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文
posted @ 2024-08-02 17:03 Duancf 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 分布式系统设计中的并发访问解决方案 | 得物技术 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。 为了解决这一系列问题,系统架构也在不断演进。传统的集中式系统已经 阅读全文
posted @ 2024-08-02 16:15 Duancf 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 如何设计一个秒杀系统? 设计秒杀系统之前,我们首先需要对秒杀系统有一个清晰的认识。 秒杀系统主要为商品(往往是爆款商品)秒杀活动提供支持,这个秒杀活动会限制商品的个数以及秒杀持续时间。 为什么秒杀系统的设计是一个难点呢? 是因为它的业务复杂么? 当然不是! 秒杀系统的业务逻辑非常简单,一般就是下订单 阅读全文
posted @ 2024-08-02 15:59 Duancf 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 在Java中,Integer 类会对一些数值进行缓存,这样可以节省内存并提高性能。当你使用 Integer.valueOf(int) 方法来创建 Integer 对象时,对于数值在 -128 到 127 之间的整数,Java 会返回缓存中的对象实例。因此,对于这些范围内的整数,用 Integer.v 阅读全文
posted @ 2024-08-01 23:35 Duancf 阅读(36) 评论(0) 推荐(0) 编辑
摘要: count COUNT()函数 COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。 COUNT()函数有两种使用方式: 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。 使用COUNT(column)对特定列中具有值的 阅读全文
posted @ 2024-08-01 23:19 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示