Java
未读
模板方法模式(行为)
这是一篇关于模板方法模式(Template Method Pattern)的文章。模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将部分步骤延迟到子类中实现。通过这种方式,子类可以在不改变算法结构的前提下重定义特定步骤。文章介绍了模板方法模式的结构,包括抽象类中的模板方法和基本方法,并讨论了其优缺点。优点包括提高代码复用性、符合开闭原则和易于维护,而缺点则是可能不适用于所有子类,且会增加类的数量。使用场景包括算法步骤固定但部分变动时,以及多个子类有共同行为时。文章还通过代码示例展示了如何实现模板方法模式,并介绍了钩子方法的应用,允许子类在特定点进行定制,如VIP用户可以跳过排队流程。
Java
未读
JUnit
这是一篇关于JUnit框架的文章。JUnit 是一种测试框架,允许开发人员编写、运行、分析和报告测试用例。它通过注解、参数化和测试套件三个方面进行使用。JUnit 提供了易用性、支持多类测试、断言功能和可扩展性,支持 JUnit3、JUnit4 和 JUnit5 等版本。常见的注解包括 @Test、@BeforeAll、@AfterEach 等,用于控制测试方法的执行。参数化测试允许传递不同的测试数据,支持单参数、多参数、CSV文件和方法传参。JUnit 还提供了 @TestMethodOrder 注解用于控制测试顺序,以及 @Suite 用于运行多个测试类的测试套件。
Java
未读
Java 并发编程模式、技术
这是一篇关于并发编程模式和技术的文章。在并发编程中,使用多种模式和技术来提高应用程序的效率和线程安全性。并发集合类如 ConcurrentHashMap 和 ConcurrentLinkedQueue 提供线程安全的数据结构,避免手动加锁。Executor框架简化了线程管理和任务调度,常见的实现包括 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor。线程池通过复用线程来减少开销,提高性能。Callable 和 Future 用于异步执行带有返回值的任务。并行计算通过 Fork/Join 框架和 Work-Stealing 算法优化多核处理器的性能。信号量和倒计数器用于线程同步和通信,控制线程访问共享资源或等待任务完成。
Java
未读
Spring Cloud中RESTful API设计和开发
这是一篇关于RESTful API的文章。RESTful API是一种基于HTTP协议的Web服务设计风格,强调资源的访问与操作,并遵循无状态的设计原则。设计RESTful API时,首先需要定义资源并设计URI,URI使用名词表示资源,支持复数形式和层级结构。通过HTTP方法(如GET、POST、PUT、DELETE)对资源进行操作,并根据请求和响应处理业务逻辑。错误处理和安全性(如身份验证、授权、数据加密)是设计中的重要部分。遵循RESTful原则可使API更具可读性、可维护性与可伸缩性。
Java
未读
Java 并发编程基础
这是一篇关于并发编程的文章。并发编程是指同时执行多个独立任务,能够提高系统性能、资源利用率和响应能力。它主要通过进程和线程的方式实现,进程是独立的执行单元,而线程是进程内的执行流,共享资源。并发编程包括并发、同步和异步三种执行方式,分别对应任务同时执行、任务按顺序执行和任务独立执行。并发编程面临的挑战包括竞态条件、死锁、线程安全性和上下文切换开销,需要通过适当的同步机制和工具如锁、线程池等来解决。
数据库
未读
MongoDB 简介
这是一篇关于MongoDB的文章。MongoDB是一种开源的高性能非关系型数据库,主要应对高并发、高性能和高可用的需求。它采用文档数据库模型,使用BSON格式存储数据,支持灵活的模式和高效查询。MongoDB支持ACID事务、二进制存储、数据压缩、丰富的索引类型、failover自动故障恢复和分片集群等特性,适合大数据量、高可伸缩性、变化频繁的数据模型和半结构化数据存储。它广泛应用于大数据、高负载、快速迭代、地理空间数据、实时分析、社交媒体和云原生应用等场景。
Java
未读
Spring Cloud中缓存的使用、缓存一致性
这是一篇关于Spring Cloud缓存使用及一致性问题的文章。文章首先介绍了Spring Cloud如何通过集成Spring框架的缓存抽象,帮助开发人员简化缓存功能的实现,包括添加依赖、配置缓存管理器和使用缓存注解(如@Cacheable、@CachePut、@CacheEvict)。接着,文章讨论了缓存一致性问题,如缓存穿透、缓存击穿、缓存雪崩、缓存更新及缓存降级,并提出了解决方案,如使用布隆过滤器、分布式锁、随机化过期时间和缓存更新等策略。
数据库
未读
MyCat 原理、使用
这是一篇关于MyCat数据库中间件的文章。MyCat是一个开源的数据库中间件,提供了分库分表和读写分离功能,能够将数据库请求分发到多个数据库实例,从而实现数据的水平切分和负载均衡。文章介绍了MyCat的工作原理,包括客户端连接、SQL解析与路由、分库分表、读写分离和数据聚合等。接着,讨论了MyCat的优势(如分库分表、读写分离、高可用性)和劣势(如学习成本、单点故障、一致性问题)。最后,提供了MyCat的实战配置示例和如何在Spring Boot中集成MyCat的步骤,涉及MyCat的安装、配置以及Spring Boot的连接设置。
数据库
未读
MySQL 死锁和解除锁
这是一篇解除死锁状态的文章,介绍了两种方法来解决MySQL中的死锁问题。第一种方法是通过查询锁表和进程列表,找到并杀死死锁进程。第二种方法是查看锁定的事务,找到相关的进程ID并杀死它。文章还提供了终极方法,通过查询执行时间较长的用户线程并终止进程来解决问题。除此之外,还介绍了其他命令,如查看当前事务、锁定事务和等待锁的事务,以帮助进一步诊断和解决死锁问题。