摘要:
Semaphore 是 Java 并发包 (java.util.concurrent) 中的重要工具,主要用于控制多线程对共享资源的并发访问量。它可以设置“许可证”(permit)的数量,并允许指定数量的线程同时访问某一资源,适合限流、资源池等场景。下面从源码设计、底层原理、应用场景、以及与其它 J 阅读全文
摘要:
CountDownLatch 是 Java 并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成。 一、设计理念 CountDownLatch 是基于 AQS(AbstractQueuedSynchronizer)实现的。其核心思想是维护一个倒计 阅读全文
摘要:
一,Spring Boot启动过程 1. 启动入口 Spring Boot 应用的启动入口通常是一个包含 @SpringBootApplication 注解的主类,并调用 SpringApplication.run() 方法。@SpringBootApplication 是一个复合注解,包含了 @C 阅读全文
摘要:
Spring Security 是一个强大且灵活的安全框架,提供了身份验证(认证)和授权(授权)功能。下面我们将详细介绍 Spring Security 的认证功能流程,并提供自定义实现登录接口的示例,包括自定义认证过滤器和登出功能。 一、Spring Security 认证流程的深入分析 Spri 阅读全文
摘要:
Spring IOC(Inversion of Control,控制反转)依赖注入是 Spring 框架的核心特性之一,旨在实现对象之间的松耦合,提升代码的可维护性、可测试性和可扩展性。下面我们将从以下几个方面深入探讨 Spring IOC 依赖注入的机制和实现原理。 一、基本概念 控制反转(Inv 阅读全文
摘要:
一、基本概念 Java NIO 是 Java 1.4 引入的,用于处理高速、高并发的 I/O 操作。与传统的阻塞 I/O 不同,NIO 支持非阻塞 I/O 和选择器,可以更高效地管理多个通道。 二、核心组件 通道(Channel) Channel 是 NIO 中用于读取和写入数据的主要接口,提供双向 阅读全文
摘要:
Java 的 IO(输入/输出)操作是处理数据流的关键部分,涉及到文件、网络等多种数据源。以下将深入探讨 Java IO 的不同类型、底层实现原理、使用场景以及性能优化策略。 1. Java IO 的分类 Java IO 包括两大主要包:java.io 和 java.nio。 1.1 java.io 阅读全文
摘要:
Spring Boot 的自动配置机制是它的重要特性之一,极大地简化了 Spring 应用的配置工作。自动配置的核心思想是基于类路径中的依赖、环境配置以及自定义代码进行智能化配置,避免了开发者手动编写大量的样板代码。 接下来,我将详细介绍 Spring Boot 自动配置的过程,核心原理以及涉及的关 阅读全文
摘要:
MySQL 的执行计划是数据库查询优化的重要工具,帮助开发者理解 SQL 查询的执行过程,从而进行性能调优。执行计划详细展示了 MySQL 如何解析、优化和执行 SQL 语句,直接影响查询的效率和性能。 1. 执行计划的基本概念 执行计划是 MySQL 对 SQL 查询进行分析后生成的一组指令,描述 阅读全文
摘要:
深度分页(Deep Pagination)在MySQL中指的是对大型数据集进行分页查询时,尤其是当需要获取较后页的数据时,性能可能会受到影响。传统的分页方法在数据量较大时,随着页数的增加,性能会迅速下降。本文将深入探讨深度分页的实现方式、问题及其解决方案。 1. 深度分页的基本概念 在MySQL中, 阅读全文
摘要:
MySQL 中的存储引擎是其数据库管理系统的核心模块,用于处理不同类型的数据存储和检索操作。每种存储引擎都有自己的特点,适用于不同类型的应用场景。MySQL 最常用的存储引擎包括 InnoDB、MyISAM、Memory、CSV、Archive、Merge、Federated、NDB 等。以下是对 阅读全文
摘要:
在企业级 Web 开发中,MySQL 优化是至关重要的,它直接影响系统的响应速度、可扩展性和整体性能。下面从不同角度,列出详细的 MySQL 优化技巧,涵盖查询优化、索引设计、表结构设计、配置调整等方面。 一、查询优化 1. 合理使用索引 单列索引:为查询频繁的字段(如 WHERE、ORDER BY 阅读全文
摘要:
Redis 提供了丰富的数据类型,每种数据类型都有其独特的存储结构和操作方法,可以满足不同的业务场景需求。下面详细介绍 Redis 支持的主要数据类型及其底层实现,并结合具体的应用场景说明其使用。 1. 字符串(String) 介绍: Redis 中最基本的键值对类型,键和值都可以是字符串,值的最大 阅读全文
摘要:
Redis 和 MySQL 一致性问题是企业级应用中常见的挑战之一,特别是在高并发、高可用的场景下。由于 Redis 是内存型数据库,具备极高的读写速度,而 MySQL 作为持久化数据库,通常用于数据的可靠存储,如何保证两者数据的一致性需要具体业务场景的设计与优化。 下面我们将结合几个典型的业务场景 阅读全文
摘要:
缓存雪崩、缓存击穿、缓存穿透是分布式系统中使用缓存时,常遇到的三类问题,都会对系统性能和稳定性产生严重影响。下面将详细介绍这三者的定义、产生原因、危害以及常见的解决方案。 1. 缓存雪崩 1.1 定义 缓存雪崩是指在某一时刻,大量缓存同时失效,导致大量请求直接打到数据库层,造成数据库压力骤增,甚至可 阅读全文
摘要:
布隆过滤器(Bloom Filter)是一种空间效率极高的数据结构,用于快速判断一个元素是否在集合中。它能够节省大量内存,但它有一个特点:可能存在误判,即可能会认为某个元素存在于集合中,但实际上不存在;而对于不存在的元素,它保证一定不会误判。布隆过滤器适合在对存储空间要求极为严格,同时能接受少量误判 阅读全文
摘要:
InnoDB 的 MVCC(Multi-Version Concurrency Control,多版本并发控制) 是 MySQL 实现高并发事务处理的一种机制。通过 MVCC,InnoDB 可以在高并发环境下支持 事务隔离,并提供 非阻塞的读操作,从而避免锁定所有读操作带来的性能瓶颈。MVCC 允许 阅读全文
摘要:
出现内存溢出的场景通常发生在应用程序中存在内存泄漏、对象生命周期过长、对象频繁创建但未能及时回收等问题。以下是几个真实的业务场景,结合内存溢出问题,并从多个角度提出优化方法,来提高内存使用效率。 场景 1:大量业务数据缓存导致堆内存溢出 场景描述: 一个企业级 Web 应用使用了大量内存缓存来存储业 阅读全文
摘要:
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,用于保障事务的 原子性 和 持久性。它们的作用是确保数据库在出现崩溃、断电、宕机等故障时,能够进行恢复操作,从而保障数据一致性和完整性。它们通常用于支持事务的 ACID 特性中的 原子性 和 持久性。下面将分别介绍 Undo 阅读全文
摘要:
MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导致所有事务都无法继续执行的现象。在 InnoDB 存储引擎中,死锁是通过锁机制产生的,特别是在并发较高、业务逻辑复杂的情况下,更容易发生死锁。 一、MySQL 死锁的成因 MySQL 的死锁一般发生在 行级锁 上。常见的死锁成因包括: 阅读全文
摘要:
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问题。幻读是一种事务并发问题,通常出现在Repeatable Read隔离级别下的范围查询操作中。幻读的现象是,事务在查询时多次执行相同的范围查询,但由于其他事务的插入或删除操作导致结果不一致,出现“幻觉”一样的记录。 阅读全文
摘要:
1,左右布局
- 左侧固定宽带,右侧自适应剩余的宽度。
- 中间一条分割线,可以拖拉,自适应调整左右侧的宽度。
- 左侧的高度超长自动出现横向滚动条,左侧宽度超长,自动出现竖向滚动条。
2,上中下布局
- 最上面的 搜索条件 div 固定占用 100 px 高度,下面的 查询条件 div 固定占用 30 px 高度,最下面的分页固定占用高度,页面剩下的高度自动分配给中间的表格内容。
- 表格内容高度超过后自动出现竖向滚动条,宽度超出后自动出现横向滚动条。
- 点击按钮,可以 隐藏/显示 搜索条件 div 里面的内容。
- 当隐藏 搜索条件 div 里面的内容时,中间表格的高度为:整个页面的高度—操作按钮div的高度—分页div的高度。
- 当搜索条件 div 里面的内容时,中间表格的高度为:整个页面的高度—搜索条件div的高度—操作按钮div的高度—分页div的高度。
3,分辨率自适应
- 加载即动态实时计算高度,宽度 阅读全文
摘要:
一,上固定,下自适应
二,下固定,上自适应
三,上下固定,中间自适应
四,左固定,右自适应
五,仿网站布局
六,仿xshell布局 阅读全文
摘要:
由浅深入理解java多线程,java并发,synchronized实现原理及线程锁机制 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程序中有多个顺序流在执行。 一,线程的生命周期 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建 阅读全文
摘要:
打开一个新窗口用来展示新页面,而且需要传参数,并且参数不能显示在地址栏里面,而且当我刷新页面的时候,传过来的参数不能丢失,要一直存在,除非我手动关闭这个新窗口 阅读全文
摘要:
vue(element)中使用monaco实现代码高亮 使用的是vue语言,用element的组件,要做一个在线编辑代码,要求输入代码内容,可以进行高亮展示,可以切换各不同语言,而且支持关键字补全,还要有一个各不同版本间的代码左右比较,这就是需求。 至于为什么选中monaco,请查看 vue(ele 阅读全文
摘要:
vue(element)中使用codemirror实现代码高亮,代码补全,版本差异对比 使用的是vue语言,用element的组件,要做一个在线编辑代码,要求输入代码内容,可以进行高亮展示,可以切换各不同语言,而且支持关键字补全,还要有一个各不同版本间的代码左右比较,这就是需求。 至于为什么选中co 阅读全文
摘要:
@[toc] 全面对比 从活跃方面来看 从功能方面来看 代码高亮是必须的,社区必须活跃,不然修复bug没有一点点参考,太费时间。自动补全缩进,快捷键操作,搜索和替换等功能不是必须的,如果有,能拿来装逼当然最好,不能也不影响使用。 故而挑出了以下几个,再具体分析,逐个调查,查看后续开发,部署的坑,坑少 阅读全文
摘要:
Error in v-on handler: "TypeError: Cannot read property 'value' of undefined"
$refs获取不到值
取不到el-dialog对话框中的子组件对象
返回的都是undefined 阅读全文
摘要:
三台服务器上离线安装redis哨兵集群,一主二从三哨兵 系统安装好gcc环境,(不然编译redis会报错)。依旧不知道怎么离线安装gcc环境的可查看 "CentOS下离线安装gcc环境,图文详细" 下载 点击官网地址下载Linux版的redis http://download.redis.io/re 阅读全文
摘要:
CentOS下离线安装gcc环境,图文详细,方法全面 下载 方式1:如果有网的虚拟机还没有安装,可以直接 方式2:如果有网的虚拟机已经安装过,可以 可以看到,gcc的依赖如下 gcc++的依赖如下 方式3:看到我给的依赖包,直接网上下载好,这里是地址,可以在里面找到 http://mirrors.1 阅读全文
摘要:
超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了。本文主要侧重实操,因为跟着百度前几页的搭建教程或多或少都有坑,前后配置逻辑矛盾的也有。终于,经过几个通宵的 阅读全文
摘要:
多图文,详细介绍mysql各个集群方案 集群的好处 高可用性:故障检测及迁移,多节点备份。 可伸缩性:新增数据库节点便利,方便扩容。 负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力。 集群要考虑的风险 网络分裂:群集还可能由于网络故障而拆分为多个部分,每部分内的节点相互连接,但各部分之间的 阅读全文
摘要:
超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好。敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲。且看且珍惜。 再认识redis集群前,若想先知道redis单机版的可查看, "springboot整合red 阅读全文
摘要:
今天提交代码报错,看了看提示的错误,百度了一下,发现操作都比较繁琐,所以自己重新给一个最简单有效的。 有的要下载sqlite3.exe,借助它清空本地.svn\wc.db数据库文件里面的operation,即表名是work_queue。这是目前最多的方法。 还有的要通过SVN的安装包,借助其命令执行 阅读全文
摘要:
Could not find a valid gem 'redis' (= 0) 报错详情如下; ERROR: Could not find a valid gem 'redis' ( = 0), here is why: Unable to download data from https://r 阅读全文
摘要:
Redis缓存 @[toc] 简介 redis是一个高性能的key value数据库 优势 性能强,适合高度的读写操作(读的速度是110000次/s,写的速度是81000次/s )。 支持较为丰富的数据类型(如二进制的Strings, Lists, Hashes, Sets ,Ordered Set 阅读全文
摘要:
Rabbit MQ消息队列 @[toc] 简介 优点 erlang开发,并发能力强。 社区活跃,使用的人多,稳定性较强。 延时低 缺点 erlang语言开发的,国内精通的不多,日后定制开发困难。 Rabbit MQ工作模式 1,"Hello World!"模式 简单模式是Rabbit MQ最简单入门 阅读全文
摘要:
Druid连接池 简介 由阿里巴巴开源的druid连接池是目前综合实力最突出的数据库连接池,而且还提供了监控日志功能,能够分析SQL执行情况。 引入druid连接池 pom.xml中加入 application.properties中加入 注:之前已经配置好了mysql,mybatis,这里没有重复 阅读全文
摘要:
MyBatis @[toc] 简介 优点 最大的优点是SQL语句灵活,适合调优情景,业务复杂情景 劣势 最大的劣势是不同数据库之间的迁移 引入mybatis组件 pom.xml中加入 application.properties中加入 需要说明的是,我引入的mysql驱动为 com.mysql.cj 阅读全文