- 博客(21)
- 收藏
- 关注
原创 反射、动态代理、SPI机制在RPC框架中应用
SPl(Service Provider Interface)服务提供接口是Java 的重要机制,主要用于实现模块化开发和插件化扩展。SPI机制允许服务提供者通过特定的配置文件将自己的实现注册到系统中,然后系统通过反射机制动态加载这些实现,而不需要修改原始框架的代码,从而实现了系统的解耦、提高了可扩展性。一个典型的 SPI!应用场景是JDBC(ava数据库连接库),不同的数据库驱动程序开发者可以使用 JDBC 库,然后定制自己的数据库驱动程序。
2024-10-26 19:16:25
893
2
原创 Mysql主从集群搭建+分库分表+ShardingSphere(实战)
什么是 ShardingSphere介绍Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。它站在数据库的上层视角,关注它们之间的协作多于数据库自身。主要功能一、数据库增强与分布式能力。
2024-10-16 15:03:19
1453
原创 高并发领取优惠卷加锁的坑!(事务边界问题/事务失效问题)
在事务和锁并行存在时,一定要考虑事务和锁的边界问题。由于事务的隔离级别问题,可能会导致不同事务之间数据不可见,往往会产生一些不可预期的现象。
2024-10-05 16:18:02
1222
原创 Fork/Join 框架详解
Java 的框架是 JDK 7 中引入的一种并行处理框架,基于分而治之的思想,专为在多核处理器上执行任务的并行分治而设计。它通过递归分解任务、并发执行这些子任务并最终合并结果来提高性能。这个框架非常适合执行那些可以递归拆分成多个小任务的计算密集型操作。核心类是和。
2024-09-09 15:57:08
935
1
原创 Synchronized详解(看这篇就够了)
在 Java 中,synchronized 关键字用于实现线程同步,主要有三种用法:修饰实例方法、静态方法和代码块。修饰实例方法时,加锁对象是当前实例;修饰静态方法时,加锁对象是类的 Class 对象;修饰代码块时,可以指定任意对象作为锁。synchronized 具有可重入性和通过内存屏障确保的可见性,但由于其依赖操作系统线程调度器,存在非公平性。JDK1.6 引入偏向锁和轻量级锁以提升性能。
2024-09-05 15:24:58
1140
原创 什么?你还不会CompletableFuture异步编排!
本文介绍了异步编程及其在实际业务中的应用。异步编程允许任务并发执行,不阻塞主线程,显著提升程序效率。CompletableFuture 是 Java 提供的强大工具,支持异步计算、任务组合和异常处理。通过实际案例,展示了如何使用 CompletableFuture 优化数据查询过程,缩短响应时间。典型应用场景包括微服务调用、批量任务处理、请求聚合和复杂工作流管理。通过有效的异步编排,可以显著提升系统的性能和响应能力。
2024-07-24 18:22:34
961
原创 设计模式|观察者模式
观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有观察者都会收到通知并更新。观察者模式常用于实现事件处理系统、发布-订阅模式等。
2024-07-22 16:01:29
495
原创 SQL中使用1=1探究
使用 1=1 的技巧在动态 SQL 查询构建中是非常实用的。它简化了条件拼接的逻辑,提高了代码的可读性和可维护性。在实际开发中,尤其是在条件众多的情况下,这种方法能够有效地减少出错的概率。使用 1=1 作为动态 SQL 查询的基座有其优点,但也存在一些潜在问题。在实际开发中,可以根据具体情况选择合适的方法来构建动态 SQL 查询,既要确保代码简洁可维护,又要避免性能和逻辑上的问题。
2024-07-08 10:30:48
1629
原创 常见java OOM异常分析排查思路分析
VM 发生 OutOfMemoryError(OOM)异常时,表示内存资源不足,常见原因有堆空间不足、线程栈空间不足、方法区溢出、本机内存不足和 GC 造成的内存不足。解决方案包括调整 JVM 参数(如 -Xmx、-Xss)、优化代码、减少内存消耗、检查并修复内存泄漏。使用工具(如 JProfiler)可以帮助分析和定位问题。常见的 OOM 异常有 Java heap space、unable to create new native thread、Metaspace、Direct buffer memor
2024-07-07 17:57:43
4410
1
原创 装饰者模式
装饰者模式是一种结构型设计模式,用于动态地给对象添加额外的行为或责任,而无需修改其原始类。这种模式允许你将对象包装在一个装饰者类中,并在运行时动态地添加新的行为,同时保持接口的一致性。下面我将通过一个简单的咖啡店订单系统的例子来说明装饰者模式。
2024-04-24 14:58:28
462
2
原创 Java注解详解
看了https://pdai.tech/md/java/basic/java-basic-x-annotation.html#%E6%B3%A8%E8%A7%A3%E7%9A%84%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF关于注解机制的详解收获很多,转载加补充。
2024-04-18 13:37:09
1840
1
原创 Pojo、entity、vo、dto的定义和使用场景
使用场景:DTO 主要用于在服务之间传递数据,例如在前端页面与后端服务之间、微服务之间传递数据,以及在不同层次之间传递数据。VO 类可以包含与界面展示相关的属性,但通常不包含与业务逻辑相关的方法。,通常用于在系统的不同层之间传递数据。使用场景:VO 主要用于前端页面展示数据,通常用于将业务数据以特定的格式传输给前端页面进行展示。使用场景:Entity 主要用于数据持久化和数据操作,通常用于与数据库进行交互、映射和持久化。Entity 类通常包含与数据库表中的字段对应的属性,以及一些方法用于对数据进行操作。
2024-04-11 16:57:44
447
原创 乐观锁定义、使用、适用场景
乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。
2024-04-11 16:54:12
1085
原创 PostgreSQL
PostgreSQL与MySQL的比较以及PostgreSQL相对于MySQL的优势;熟悉了PG库SQL编写,包括创建表、插入数据、查询数据、更新数据、删除数据、条件查询、创建索引和删除表;了解了联表查询的左联接、右联接和内联接;对SQL优化思路进行了概述,包括索引优化、查询优化、表设计优化、统计信息维护、连接优化、资源优化和应用层优化;了解了外键机制的物理外键和逻辑外键,以及如何选择使用外键;了解了主键策略,包括自增主键、GUID/UUID主键、序列主键、组合主键和自然主键。
2024-04-11 16:47:46
930
原创 Spring事务
了解事务的使用场景及 Spring 管理事务的方式,包括编程式事务和声明式事务。Spring 事务中的事务传播行为包括常用的 PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED 和 PROPAGATION_MANDATORY。同时,了解事务失效的原因及相应的应对措施,如方法修饰符、非事务方法调用事务方法、异常被捕获、事务异常类型、事务传播行为不正确以及未被 Spring 管理等。
2024-04-11 16:43:08
1891
原创 java八股文面试(一)
2.检查该位置是否为空(有没有键值对存在),如果为空,在该位置创建一个新的Entry对象存储键值对。将要添加的键值对作为该Entry的键和值,并保存在数组的对应位置。3、如果该位置已经存在其他键值对,检查该位置的第一个键值对的哈希码和键是否和要添加的键值对相同,如果相同表示找到了相同的键,直接将新的值替换旧的值,完成更新操作。此外,HashMap是非线程安全的,如果在多线程环境下使用,需要采取额外的同步措施或使用线程安全的ConcurrentHashMap。1.根据要添加的键的哈希码计算在数组中的位置。
2024-03-06 21:01:55
174
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人