Spring IoC 依赖注入

Read more   2023/04/06 posted in  Spring IoC

Spring IoC 依赖查找

Read more   2023/04/06 posted in  Spring IoC

Spring IoC

Read more   2023/04/06 posted in  Spring IoC

构造器注入和Setter 注入

构造器注入:Spring 团队推荐使用构造器注入方式,对象是不变的对象,依赖不能为空;保证完整化的初始化状态;会导致参数过多
Setter 注入:可选择注入;能够让对象变得更可配

Read more   2023/03/30 posted in  Spring IoC

依赖注入和依赖查找

Read more   2023/03/30 posted in  Spring IoC

传统IoC 实现

Java Beans 最为IoC 容器

Read more   2023/03/29 posted in  Spring IoC

基于规则优化

Read more   2022/05/11 posted in  其他

连接

连接的本质就是把各个连接表中的记录都取出来依次匹配的组合加入结果集并返回给用户

Read more   2022/04/20 posted in  其他

MySQL-单表访问方法

MySQL Server有一个称为查询优化器的模块,一条查询语句进行语法解析之后就会被交给查询优化器来进行优化,优化的结果就是生成一个所谓的执行计划,这个执行计划表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户

Read more   2022/04/20 posted in  其他

MySQL-锁

2022/04/19 posted in 

MySQL事务隔离级别和MVCC

Read more   2022/04/18 posted in  事务

动静分离

“快”抽象起来讲,就只有两点,一点是提高单次请求的效率,一点是减少没必要的请求

Read more   2021/04/01 posted in  秒杀系统

秒杀系统架构原则

秒杀本质是一个满足大并发、高性能、高可用的分布式系统

Read more   2021/04/01 posted in  秒杀系统

MySQL 高性能索引策略

高效的选择和使用索引是实现高性能查询的基础,使用哪个索引,以及如何评估选择不同的索引是需要不断学习的

Read more   2021/03/14 posted in  索引

Kubernetes 本质

Kubernetes 项目在Borg体系下,体现出一种独有的 “独有性” 和 “完备性”

Read more   2021/02/28 posted in  Kubernetes

Redis 数据倾斜

切片集群中,数据会按照一定的规则分散到不同的实例上,这样就会导致数据倾斜;

  • 数据量倾斜 :实例上的数据分布不均衡,部分实例上的数据特别多
  • 数据访问倾斜 : 某个实例上的数据就是热点数据,被频繁的访问
Read more   2021/02/27 posted in  实践

Codis VS Redis Cluster

Redis 切片集群使用多个实例保存数据,能够很好地应对大数据使用场景。而Codis 也是一种提供切片集群的解决方案

Read more   2021/02/24 posted in  实践

Redis ACID

Redis 事务包含 MULTI 和 EXEC两个命令 完成三个步骤;

  1. 受用MULTI 显示表示一个事务开始
  2. 客户端要把执行的命令发送到服务端,Redis 把命令保存在队列中并不会立即执行
  3. 客户端向服务端发送事务提交命令EXEC,然后执行队列中的命令


Read more   2021/02/23 posted in  基础

缓存异常

使用Redis为缓存是会存在一些异常问题,缓存中的数据和数据库不一致、缓存雪崩、缓存穿透、缓存击穿

Read more   2021/02/19 posted in  缓存

Redis 缓存替换策略

保证合适的性价比,缓存大小一定是小于后端数据库的数据总量,通过缓存数据淘汰策略,即通过根据一定策略筛选出“不重要”的数据,然后删除这些数据,为新空间腾出空间的策略

Read more   2021/02/04 posted in  缓存

Redis 旁路缓存

Redis 提供了高性能的数据存取功能,广泛应用于缓存场景中,可以有效的提升业务应用的响应速度,避免把高并发大大压力的请求发送给数据库。因此对于缓存的特征,Redis适用于缓存的优势,以及缓存的具体工作机制需要做到了解。

Read more   2021/02/04 posted in  缓存

Redis 缓冲区

缓冲区用一块内存空间来暂时存放命令,以免出现因为数据和命令处理速度慢于发送速度而导致数据的丢失和性能问题。Redis 客户端和服务端之间进行通信,暂存客户端命令或者服务端返回给客户端的数据结果,还有一个就是主从节点之间的数据同步,用来暂存主节点接受的写命令和数据

Read more   2021/01/29 posted in  性能

Redis 延迟响应

Redis 延迟响应会影响其他服务,带来一系列的连锁反应。因此,从问题认定,系统排查和应对方案这三个方面可分析延迟响应的问题

Read more   2021/01/28 posted in  性能

CPU 对 Redis 性能的影响

CPU架构对程序运行的影响

  1. L1、L2缓存中的指令和数据访问速度快,充分利用L1、L2缓存,可以有效缩短应用程序执行时间
  2. 在NUMA架构下,如果应用程序从一个socket上调用另一个socket上,很可能会出现远端内存访问情况,这回增加程序执行时间

Read more   2021/01/27 posted in  性能

Redis 阻塞式操作

Redis的网络IO和键值对的读写都是由主线程完成的,如果主线程操作消耗时间太长,就会引起主线程阻塞。

Read more   2021/01/27 posted in  性能

Redis 实现消息队列

消息队列要能支持组件通信消息的快速读写;消息队列的的存取需求:消息保序、处理重复消息、保证消息可靠;Redis 的 List 和 Streams 都能满足需求。

Read more   2021/01/26 posted in  实践

MongoDB

Read more   2021/01/26 posted in  工作问题

Redis 保存时间序列的数据

时间序列数据的写入特点就是插入数据块,读操作特点就是既有单条的记录查询,也有范围查询,还有聚合查询;针对写特点 Redis 的高性能保证写操作,针对读特点,Redis 提供了保存数据的两种方案,基于Hash 和 Sorted Set 实现,以及RedisTimeSeries 模块的实现

Read more   2021/01/26 posted in  实践

如何自定义数据类型

我们需要一个数据类型符合自己的查询但是Redis本身不支持,此时,我们之前学习的这些数据类型就无法满足需求了。那么,自定义的数据类型是一个很好的解决方法

Read more   2021/01/25 posted in  实践

GEO 实现

基于位置信息服务的LBS应用访问数据是和人或者是物的一组经纬度信息,而且要能查询相邻的经纬度范围,GEO 就适合应用这样的场景

Read more   2021/01/25 posted in  实践

Redis 集合统计模式

Redis 集合特点就是一个键对应一系列的值,适合存储一个 key 对应一个数据集合,但是集合的统计则需求不同。集合类型常见的 4 种统计模式,聚合统计、排序统计、二值状态统计和基数统计。

Read more   2021/01/23 posted in  实践

String 应用场景

String 提供了 “键 - 单值” 的存储模式,可以使用与很多场景。而且可以保存二进制字节流。但是 String 存在保存的数据内存消耗比较多的问题。

Read more   2021/01/22 posted in  实践

分片集群

启动多个Redis实例组成一个集群,按照一定的规则,把收到的数据划分成多份。每一份用一个实例保存

Read more   2021/01/20 posted in  基础

哨兵集群

哨兵集群能保证及时有哨兵实例宕机,其他哨兵也能协作完成判断主库下线,选择新主库以及通知从库和客户端

 ** 哨兵集群部署命令
 sentinel monitor <master-name> <ip> <redis-port> <quorum> 
 
Read more   2021/01/19 posted in  基础

Redis 哨兵机制

在 Redis 主从集群中,哨兵机制事项主从自动切换的关键机制,他解决了主从复制中的;判断主库是否宕机,如何选择从库,新从库如何通知从库和客户端

Read more   2021/01/19 posted in  基础

Redis 数据同步

Redis 的高可靠性通过减少数据的丢失,以及减少服务的中断实现,为保证减少数据的丢失通过AOF和RDB 保证,而减少服务中断通过增加副本冗余保证;Redis 提供了主从模式,保证数据副本的一致,主从库之间使用读写分离;对于读操作,主从都可接受,而写操作则首先主库执行然后同步到从库

Read more   2021/01/19 posted in  基础

Redis 持久化

Redis 来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的。目前,Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB 快照;AOF 避免数据在宕机的情况下不丢失,RDB 保证在宕机后能够快速的恢复数据

Read more   2021/01/14 posted in  基础

Redis 单线程

Redis 的单线程主要是指网路I/O和键值对的读写都是由一个线程完成的,这也是 Redis 对外提供 键值存储服务的主要流程

Read more   2021/01/14 posted in  基础

Redis 应用场景

Redis的应用场景,以及Redis数据类型的各种可能的应用方式

Read more   2021/01/14 posted in  实践

Redis 总览

Redis 是一个开源的基于内存的数据存储结构,可以用作DataBase,Cache,Message Broker;Redis 提供数据结构有 string, hash, list, set, zset, bitmaps, hyperloglogs, geospatial indexe, streams ; Redis 具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性;可以在数据结构上进行部分原子操作,如追加字符串,hash中递增值,set进行交集,并集,差集计算,在zset获取最高值;Redis 支持异步复制,快速的非阻塞同步,自动连接,在网络拆分中进行部分重新同步;以及事务、发布/订阅、Lua脚本、生存时间有限的键、LRU收回Key、自动故障转移。

Read more   2021/01/12 posted in  Redis

SynchronousQueue

SynchronousQueue是比较独特的队列,其本身没有容量大小,插入操作返回必须等另一个线程取操作执行成功后才能返回,反之亦然;队列由两种数据结构组成,后入先出的栈和先入先出的队列,堆栈是非公平的,队列是公平的了;

Read more   2021/01/12 posted in  队列

LinkedBlockingQueue

基于链表的阻塞队列,其底层数据结构是链表;列表维护先入先出; 链表的大小在初始化时可以设置,默认是Integer的最大值; 可以使用Collection 和 Iterator两个接口所有的操作


Read more   2021/01/11 posted in  并发容器

CopyOnWriteArrayList

JDK 提供一种线程安全的List,多线程环境下可以直接使用,通过锁 + 数组拷贝 + volatile 保证线程的安全,所有的操作都是线程安全的,每次数组操作都是拷贝一分出来,在新数组上进行操作,之后再赋值回去;迭代过程不会影响原来的数组

Read more   2021/01/11 posted in  并发容器

CompletionService - 批量执行异步任务

CompletionService 的实现原理也是内部维护了一个阻塞队列,当任务执行结束就把任务的执行结果加入到阻塞队列中,不同的是 CompletionService 是把任务执行结果的 Future 对象加入到阻塞队列中

Read more   2021/01/08 posted in  并发工具

CompletableFuture 异步编程

异步化是并发实施的的基础吗,,利用多线程优化性能这个核心方案得以实施的基础,Java 在 1.8 版本提供了 CompletableFuture 来支持异步编程,CompletableFuture 有可能是你见过的最复杂的工具类

Read more   2021/01/08 posted in  并发工具

Executor

目前线程池的使用模式是生产者-消费者模式,线程池的使用方是生产者,线程池本身是消费者

Read more   2021/01/08 posted in  并发工具

无锁工具类

对于简单的原子性问题,JDK包装了一系列的实现原子类,相对于互斥方案,无锁类性能高,解决了互斥问题,没有加锁和解锁的操作,以及对线程切换的性能损耗

Read more   2021/01/08 posted in  并发工具

ConcurrentHashMap

线程不安全的情况下使用Map,可以使用ConcurrentHashMap,内部封装了锁和各种数据结构来保证访问Map是线程安全的

Read more   2021/01/07 posted in  并发容器

并发容器

Read more   2021/01/06 posted in  并发工具

CountDownLatch 和 CyclicBarrier

CountDownLatch允许一个或多个线程等待其他线程完成操作。CyclicBarrier它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行

Read more   2021/01/06 posted in  并发工具

StampedLock

读多写少的场景中,还有没有更快的技术方案,Java 在 1.8 这个版本里,提供了一种叫 StampedLock 的锁,它的性能就比读写锁还要好。

Read more   2021/01/05 posted in  并发工具

ReadWriteLock - 读写锁

针对读多写少,JDK提供了ReadWriteLock,容易使用且性能较好;读写锁允许多个线程读共享变量,只允许一个线程写共享变量,如果一个线程写共享变量时,禁止读线程读共享变量

Read more   2021/01/05 posted in  并发工具

Semaphore

用来控制同时访问特定资源的线程数量,它通过协调线程,合理的使用公共资源

Read more   2021/01/04 posted in  并发工具

队列同步器

队列同步器AbstractQueuedSynchronizer,用来构建锁或其他同步组件的基础框架,使用int变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作

Read more   2020/12/31 posted in  并发工具

Lock & Condition

Java 通过Lock和Condition 两个接口实现管程,Lock解决互斥问题,Condition解决同步问题

Read more   2020/12/31 posted in  并发工具

Java线程

Java领域实现并发的主要手段就是多线程,而线程是有生命周期的,要学好他需要搞懂生命周期中各个节点的的转态转化机制。同时针对多线程如何配置合适的线程数,以及具体的使用场景

Read more   2020/12/30 posted in  并发基础

管程

管程就是一把解决并发问题的万能钥匙

Read more   2020/12/29 posted in  并发基础

安全性、活跃性和性能

并发编程的问题总结 -- 安全性、活跃性和性能

Read more   2020/12/29 posted in  并发基础

互斥锁

互斥锁 -- 解决并发的原子性问题

Read more   2020/12/29 posted in  并发基础

Java 内存模型

解决Java并发编程中的有关可见性和有序性问题 --- Java 内存模型

Read more   2020/12/29 posted in  并发基础

并发大纲

并发领域核心问题: 分工、同步、互斥,前两者强调性能,后者强调执行的正确性

Read more   2020/12/28 posted in  并发基础

可见性、原子性、有序性

并发的核心矛盾便是CPU、内存、I/O之间的速度差异。

Read more   2020/12/28 posted in  并发基础

单点登录

Read more   2020/11/27 posted in  工作问题

Spring AOP

Read more   2020/11/27 posted in  Spring

ACID+CAP+BASE

Read more   2020/11/27 posted in  分布式基础

MySQL分库分表

Read more   2020/11/27 posted in  MySQL

如何选择RabbitMQ和Kafka

Read more   2020/11/27 posted in  RabbitMQ

AMQ Model架构

Read more   2020/11/27 posted in  RabbitMQ

Nginx

Read more   2020/11/27 posted in  Nginx

MySQL索引

Read more   2020/11/27 posted in  索引

MySQL索引优化

Read more   2020/11/27 posted in  索引

Redis 数据结构

Read more   2020/11/27 posted in  基础

Tomcat 集群

Tomcat 单机集群搭建的基本方法

Read more   2020/11/26 posted in  Tomcat