Spring Spring Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。 一般说 Spring 框架指的都是 Spring Framework,是很多模块的集合,使用这些模块可以协助开发,比如说 Spring 支持 IoC(Inversion of Control:控制反转) 和 AOP(Aspect-Oriented Programming:面向切面编程)、可以很方便地对数据库进行访问、可以很方便地集成第三方组件(电子邮件,任务,调度,缓存等等)、对单元测试支持比较好、支持 RESTful Java 应用程序的开发。 ...
Redis 数据结构 Redis底层的数据结构 String 可以是字符串、整数或浮点数 对整个字符串或字符串的一部分进行操作; 对整数、浮点数进行自增或者自减操作。 List 一个链表,链表上的每个节点都包含一个字符串 对链表的两端进行push、pop,读取单个或者多个元素;根据值查找或者删除元素 Set 包含字符串的无序集合 包含基础的方法,增加获取删除、计算交并查集 Hash 包含键值对的无序散列表 包含添加、删除、获取单个元素 Zset有序集合 ...
MySQL SQL基础 什么是关系型数据库? 关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。 [MySQL 字段类型](https://javagu...
在 Spring 框架中,Bean 是一个核心概念,也是很多功能的基础。 1. 什么是 Spring 中的 Bean? Bean 可以简单理解为由 Spring 容器管理的对象。在 Spring 应用中,所有你想让 Spring 帮你管理的对象都可以被称为 Bean。这些对象通常是你的应用程序中各种服务、数据访问对象(DAO)、控制器等。 通俗理解: 作为一个工厂的老板,工厂负责生产各种产品。可以让工人们按照某个标准生产产品,而自己不需要亲自去创建每一个产品。Spring 容器 就像这个工厂,它负责根据定义的标准...
摘要: 在 Redis 中,有多种数据结构可以用来存储不同类型的数据,如 String、List、Set、Hash、Zset等。每种数据结构都有其特定的用途和常用场景,比如 String 适合缓存对象和常规计数,List 适合消息队列,Set 适合聚合计算,Zset 适合排行榜等。此外,Redis 还实现了消息队列、分布式锁等功能,通过批量操作、布隆过滤器等技术来优化性能和解决缓存雪崩、击穿、穿透等问题。同时,Redis 提供了多种持久化方式来保证数据不丢失,如 RDB、AOF、混合持久化等。在集群运行时,可以通过主从同步、哨兵模式、Redis Cluster 等方式来保证高可用性和容错性。
Redis 数据结构 Redis底层的数据结构 String 可以是字符串、整数或浮点数 对整个字符串或字符串的一部分进行操作; 对整数、浮点数进行自增或者自减操作。 List 一个链表,链表上的每个节点都包含一个字符串 对链表的两端进行push、pop,读取单个或者多个元素;根据值查找或者删除元素 Set 包含字符串的无序集合 包含基础的方法,增加获取删除、计算交并查集 Hash 包含键值对的无序散列表 包含添加、删除、获取单个元素 Zset有序集合 和散列一样,用于存...
摘要: MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库系统中的一种并发控制机制,通过为每个事务提供数据的不同版本,允许多个事务并发地读取和写入数据库,而不会互相阻塞。MVCC的核心思想是为每个事务提供数据的不同版本,事务在读取数据时可以选择读取到某个特定的版本,而不是直接读取当前最新的数据版本。MVCC通过保存数据的多个版本来管理并发,使用Undo Log和事务版本控制实现。事务在读取数据时可以选择快照读或当前读,写入时生成新版本并保存旧版本到Undo Log。MVCC的优势包括高并发、读取历史版本、减少锁竞争,但也存在版本管理开销、空间消耗、清理旧版本的成本等不足之处。总体而言,MVCC通过管理多个数据版本来处理并发问题,提升了系统并发性能和数据隔离性。
MVCC(Multi-Version Concurrency Control,多版本并发控制) 是数据库系统中的一种并发控制机制,用来处理多个事务同时操作数据库时可能产生的冲突问题。通过 MVCC,数据库在处理并发事务时,可以在提供高并发性的同时保证事务的隔离性(特别是在 MySQL 的 InnoDB 存储引擎中,默认的隔离级别是 可重复读)。 MVCC 的核心思想 MVCC 的核心思想是:为每个事务提供数据的不同版本,允许多个事务并发地读取和写入数据库,而不会互相阻塞。当一个事务在读取数据时,它不会立即看到其他事务正在写入的数据,而是读取数据的历史版本,这样...
摘要: 在 Java 中,双亲委派模型是默认的类加载机制,但在特定场景下可以打破双亲委派模型。这种情况通常出现在应用服务器/容器、OSGi模块化系统、JDBC驱动加载、热部署和插件系统等场景中。打破双亲委派模型可以实现类隔离、处理类库冲突或实现热部署的需求。
在 Java 中,双亲委派模型是默认的类加载机制,旨在保证类加载的安全性和一致性。 打破双亲委派模型,指允许自定义类加载器直接加载类,而不再优先委托给父类加载器。 打破双亲委派模型的主要场景通常出现在特殊框架(如应用服务器、插件系统)中,或者是为了实现热部署、模块隔离等高级功能。 1. 应用服务器或 Web 容器(如 Tomcat) 背景: Java 的应用服务器(如 Tomcat、Jetty)或 Java EE 容器通常需要运行多个 Web 应用(每个应用有自己独立的类库)。这些类库可能会包含和 Java 核心...
Java集合 Java集合框架 说明 Collection 是所有集合类的顶层接口。 List(对付顺序的好帮手): 存储的元素是有序的、可重复的。List 接口下的常用实现有 ArrayList 和 LinkedList。 Set(注重独一无二的性质): 存储的元素不可重复的。接口下有 HashSet、TreeSet...
摘要: Java 基础包括了很多重要的概念和特性,如平台无关性、面向对象、内存管理、泛型、注解、异常处理、IO 等。Java 中常用的流有字节流和字符流,字节流适用于处理原始的字节数据,字符流适用于处理文本数据。此外,Java 中还有序列化和反序列化机制,用于对象的持久化和传输。另外,Java 还支持注解和 SPI 机制,用于实现插件机制和服务提供者接口。Java 中还存在一些语法糖,如泛型、自动拆装箱、内部类、lambda 表达式等,可以简化代码书写。
Java 基础 概念 Java 的特点 平台无关性 编写一次,运行无处不在。编译器将源码编译成字节码文件,可以在任何安装了 jvm 的系统上运行 面向对象 OOP,封装、多态、继承,以及类、抽象、对象等 封装:将对象的状态和行为封装到一起,隐藏对象内部的实现细节,外部代码通过暴露的公共方法进行访问对象的状态。 继承:子类继承父类的属性、方法,从而实现代码的重用,子类可以扩展或者重写父类的方法,is-a 关系 ...
LeetCode 141. 环形链表 快慢指针,能相遇则说明有环 public class Solution { public ListNode detectCycle(ListNode head) { ListNode fast = head; ListNode slow = head; while (fast != null && fast.next != null) ...