摘要:
HashMap 的底层原理,这是 Java 集合框架中最核心、最常用的知识点,理解它能帮你解决实际开发中的哈希冲突、扩容、线程安全等问题。我会从数据结构、核心流程、扩容机制、JDK 版本差异四个维度,由浅入深拆解 HashMap 的底层逻辑。 一、HashMap 核心定位与基础结构 1. 核心定位
阅读全文
posted @ 2026-03-06 10:23
七星6609
阅读(400)
推荐(0)
摘要:
今天天气不错,但是赶上恶意加班心情就不爽,怀着不爽的心情干活,总能创造出更多的问题,这不,今天就自己挖了一个坑,自己跳进去了,好在上来了 经过是这样的,开始调试canal采集binlog时,由于添加了一个上报数量大小,随手打印了一个日志 logger.info("batchData:{}", bat
阅读全文
posted @ 2021-03-13 17:01
七星6609
阅读(828)
推荐(0)
摘要:
今天产品问了一个问题,问懵了 产品:canal在开通mysql权限时需要哪些权限 我:SELECT, REPLICATION SLAVE, REPLICATION CLIENT 产品:那SELECT权限要开通到表级还是库级(我们使用canal同步数据时最终选择到表) 我:en..... 晚会给你答案
阅读全文
posted @ 2021-03-06 16:59
七星6609
阅读(959)
推荐(0)
摘要:
spring是在开发中使用比较广泛的开发套件,开箱即用,很是方便,比如在开发定时任务时,只需要使用@Schedule就可以轻松配置,简直不要很方便,但是如果开发了很多定时任务,而且有的定时任务执行时间比较长,如果没有设置线程池,可能会出现定时任务执行时间和实际指定的时间不一致的问题,下面是我们遇到的
阅读全文
posted @ 2021-01-29 15:41
七星6609
阅读(1499)
推荐(1)
摘要:
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 具体介绍这里不再赘述,官网和其他博客都很多:https://www.jianshu.com/p/f5f0d
阅读全文
posted @ 2021-01-24 22:54
七星6609
阅读(10296)
推荐(0)
摘要:
一、简述 Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。有如下特性: 高可靠性 去中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来
阅读全文
posted @ 2021-01-24 21:41
七星6609
阅读(2381)
推荐(0)
摘要:
使用VMware虚拟机由于电脑关机时,虚拟机没关闭,导致虚拟机被挂起,再打开电脑继续运行虚拟机时,时间就变为上次关闭电脑的时间,导致虚拟机时间不对,下面使用ntp来处理时间同步问题 1.安装ntp yum -y install ntp 2.设置开机自启并启动ntp服务 systemctl enabl
阅读全文
posted @ 2021-01-18 22:45
七星6609
阅读(5875)
推荐(1)
摘要:
1.错误描述 我在Windows 10 系统下打包dolphinscheduler,上传到centos7解压之后,执行脚本报如下错误: -bash: ./dolphinscheduler-daemon.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录 ^M是什么东东,为什么会有^M 通
阅读全文
posted @ 2021-01-16 21:54
七星6609
阅读(1337)
推荐(0)
摘要:
通过配置VIP,在进行主备切换时,出现的报错信息: 1.当主备节点当前binlog文件名称相同时,原主节点的position小于主备切换后的position,出现如下报错: 2020-07-02 15:08:09,332 INFO [destination = 1-236 , address = /
阅读全文
posted @ 2020-11-22 20:24
七星6609
阅读(2424)
推荐(0)
摘要:
对于spark前来围观的小伙伴应该都有所了解,也是现在比较流行的计算框架,基本上是有点规模的公司标配,所以如果有时间也可以补一下短板。 简单来说Spark作为准实时大数据计算引擎,Spark的运行需要依赖资源调度和任务管理,Spark自带了standalone模式资源调度和任务管理工具,运行在其他资
阅读全文
posted @ 2020-11-21 23:29
七星6609
阅读(4973)
推荐(0)
摘要:
无论是传统行业,还是互联网行业,数据可用性都是至关重要的,虽然现在已经步入大数据时代,nosql比较流行,但是作为数据持久化及事务性的关系型数据库依然是项目首选,比如mysql。 现在几乎所有的公司项目,不说可用性必须达到5个9,至少也要要求,数据库出现问题,不能丢失数据,能够快速响应异常处理,下面
阅读全文
posted @ 2020-07-05 22:49
七星6609
阅读(3064)
推荐(4)
摘要:
当我们在线上运行项目时,依赖很多jar包,有时候某个类的全限定名,在多个包中出现,而某个包中的类的方法没有,而且在类加载时,刚好加载了这个类,可能会报找不到方法,或者找不到类的异常,这种情况就可能是类冲突: 如: java.lang.NoSuchMethodError: com.google.com
阅读全文
posted @ 2020-03-20 23:35
七星6609
阅读(1201)
推荐(0)
摘要:
平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,但是如果是一批机器,几十或几百台,要是一台一台去安装环境,光是输入同一的命令,估计你自己都想吐,所有聪明的人会想一些偷懒的办法,确实可以找到一些省时省力的方法,比如写一个批量处理shell脚本,这几天在处理一批(八九十台)机器环境,找
阅读全文
posted @ 2020-03-01 23:07
七星6609
阅读(4522)
推荐(2)
摘要:
在进行数据交换时,如果主键不是整型,需要对字符串,或联合主键拼接为字符串,进行hash,再进行取模分片,使用的是String自带的hashCode()方法,本来是件很方便的事,但是有些字符串取hashCode竟然是负数,使得分片为负数,找不到对应的分片,我们先看一下String 生成hashCode
阅读全文
posted @ 2020-02-23 21:23
七星6609
阅读(5390)
推荐(0)
摘要:
在安装完hive之后(hadoop-2.10.0安装hive-2.3.6),已经迫不及待的想尝试一下hive的一些用法,我们最常用的就是直接输入hive回车,使用的是cli(Command Line Interface )模式,下面介绍一下hive的使用以及一些常用的命令 1.首先查看hive帮助,
阅读全文
posted @ 2020-02-09 22:47
七星6609
阅读(1292)
推荐(0)
摘要:
公司建立数仓,hive是必不可少的,hive是建立在hadoop基础上的数据库,前面已经搭建起了hadoop高可用,要学习hive,先从搭建开始,下面梳理一下hive搭建过程 1.下载hive安装包 ,下载地址:https://hive.apache.org/downloads.html 找到自己h
阅读全文
posted @ 2020-02-07 23:40
七星6609
阅读(2586)
推荐(0)
摘要:
mysql是我们最常用的开源的关系型数据库,mysql不同版本有时候安装的方式也不尽相同,下面以mysql5.7.28版本为例梳理一下安装细节: 1.下载mysql-5.7.28,URL:https://downloads.mysql.com/archives/community/ 我这里下载的是6
阅读全文
posted @ 2020-02-06 23:20
七星6609
阅读(17947)
推荐(2)
摘要:
mysql是我们最常用的开源的关系型数据库,mysql不同版本有时候安装的方式也不尽相同,mysql-5.5和mysql-5.6安装大致相同,下面以mysql5.5.62版本为例梳理一下安装细节: 1.下载mysql5.5.62,URL:https://downloads.mysql.com/arc
阅读全文
posted @ 2020-02-05 23:20
七星6609
阅读(2588)
推荐(0)
摘要:
本篇介绍在centos7中搭建hadoop2.10高可用集群,首先准备6台机器:2台nn(namenode);4台dn(datanode);3台jn(journalnode);3台zk(zookeeper) IP hostname 进程 192.168.30.141 s141 nn1(namenod
阅读全文
posted @ 2020-02-02 23:31
七星6609
阅读(2179)
推荐(3)
摘要:
本篇介绍在centos7中大家hadoop2.10完全分布式,首先准备4台机器:1台nn(namenode);3台dn(datanode) IP hostname 进程 192.168.30.141 s141 nn(namenode) 192.168.30.142 s142 dn(datanode)
阅读全文
posted @ 2020-01-29 22:56
七星6609
阅读(1822)
推荐(0)
摘要:
一、G1面试高频问答 Q1:讲讲G1整体设计思想? A:G1全称Garbage‑First,面向大堆、可控STW停顿。 把Java堆切分成多个等大Region,不再物理划分新生代老年代,Region动态承担Eden/Survivor/Old/Humongous角色。 核心思路:统计每个Region垃
阅读全文
posted @ 2026-08-13 17:00
七星6609
阅读(5)
推荐(0)
摘要:
G1:JDK9默认GC,面向大堆、可控STW停顿,核心思想:优先回收垃圾最多的Region,不再整代回收,增量式局部回收,复制算法做疏散,解决CMS内存碎片问题。 一、内存模型:Region分区架构 传统Parallel/CMS:堆是连续的新生代+老年代,物理隔离。 G1把整个Java堆切分成若干大
阅读全文
posted @ 2026-08-13 16:55
七星6609
阅读(10)
推荐(0)
摘要:
基于前文底层源码原理,拆解线上最容易出事故的4类问题:公共ForkJoinPool饥饿、异常静默丢失、同步链式回调阻塞、大量CF导致内存不可控,每类包含:现象、底层根源、复现Demo、规范解决方案。 一、坑1:默认公共线程池 ForkJoinPool.commonPool 线程饥饿(线上高频事故)
阅读全文
posted @ 2026-08-03 10:24
七星6609
阅读(18)
推荐(0)
摘要:
一、核心定位 Phaser = 增强版同步屏障,融合了 CountDownLatch(计数等待)+ CyclicBarrier(可复用分批等待),解决二者短板: CyclicBarrier:参与者数量创建时固定,不能动态增减;只支持单阶段等待; CountDownLatch:一次性,计数归零不可复用
阅读全文
posted @ 2026-07-25 14:10
七星6609
阅读(12)
推荐(0)
摘要:
按使用场景分类:同步屏障模型、线程等待通知、流量控制、任务分发、异步编排、线程协作锁模型,附带代码、适用场景、对比。 一、屏障同步类(多线程互相等待/统一触发) 1. 双 CountDownLatch 启动门 + 结束门,主线程下发统一信号,精准瞬时并发压测。 2. CyclicBarrier 循环
阅读全文
posted @ 2026-07-25 11:52
七星6609
阅读(13)
推荐(0)
摘要:
一、模型原理 两个Latch分工明确: startLatch(启动门,初始计数=1) 所有工作线程启动后统一阻塞在 start.await(),等待主线程统一开门,保证N个线程近乎同时并发执行,消除线程启动时差。 主线程调用 start.countDown() 一次性放行所有线程。 doneLatc
阅读全文
posted @ 2026-07-25 11:49
七星6609
阅读(3)
推荐(0)
摘要:
一、核心本质:每个 Thread 持有独立许可(permit) 许可不是锁,是0/1计数器 每个 Thread 对象内部维护一个 parkBlocker + 许可计数器(int permit) permit 取值只能是 0 或 1,不会累积超过1 许可属于线程本身,不属于 LockSupport、不
阅读全文
posted @ 2026-07-24 12:50
七星6609
阅读(13)
推荐(0)
摘要:
前言 HashMap是Java集合核心,本文从底层结构、哈希算法、读写流程、扩容、红黑树、线程安全、衍生集合全方位拆解。 一、底层数据结构(JDK1.7 vs JDK1.8) 1. JDK1.7 数组 + 单向链表(Entry节点) 冲突元素全部挂链表,采用头插法,并发扩容会产生环形链表死循环。 2
阅读全文
posted @ 2026-07-22 17:08
七星6609
阅读(29)
推荐(0)
摘要:
前言 Java并发编程是后端面试核心重难点,java.util.concurrent包提供了一整套成熟并发工具,从底层线程阻塞工具LockSupport、同步器AQS,到各类锁、同步等待工具、阻塞队列、线程池,层层依赖、环环相扣。 本文按照底层→中层→上层完整链路梳理,吃透原理、对比差异、附实战代码
阅读全文
posted @ 2026-07-13 12:00
七星6609
阅读(20)
推荐(0)
摘要:
一、为什么需要分布式 ID 1.1 背景 在单体应用、单库单表阶段,很多业务表直接使用数据库自增主键就可以满足需求,但当系统逐步演进到以下场景后,传统自增主键方案往往就不够用了: 服务拆分,系统进入分布式架构 数据量增长,开始分库分表 多机房、多实例部署 业务希望主键同时承担一定的排序能力 对外暴露
阅读全文
posted @ 2026-07-10 20:06
七星6609
阅读(31)
推荐(0)
摘要:
这是分布式系统里最核心、最通用的一致性理论,ZooKeeper、Raft、Redis Cluster、Dynamo 全都在用。 一句话概括: 通过“写至少 W 个节点、读至少 R 个节点”,并满足 W+R>N,来保证强一致。 一、先定义三个变量 假设有 N 个副本节点: N:总副本数 W:Write
阅读全文
posted @ 2026-03-30 22:23
七星6609
阅读(129)
推荐(0)
摘要:
先说结论: 会!而且非常容易出现不一致。 但 ZooKeeper 官方默认配置,已经帮你规避了这个问题,所以正常使用下你感觉不到。 下面用最直白的逻辑讲清楚: 什么时候会不一致、ZK 怎么解决、以及你如果乱配置会踩什么坑。 1. 直接回答:读非半数节点,会不会不一致? 会。 举个最简单的场景(3 节
阅读全文
posted @ 2026-03-30 22:15
七星6609
阅读(14)
推荐(0)
摘要:
一句话核心: ZooKeeper 用“过半写入”来保证分布式系统中,永远只有一个统一、正确的系统视图,同时兼顾高可用,这就是 CAP 理论里的 CP 模型。 下面用最通俗、最本质的逻辑讲清楚原理。 1. 先明确:ZooKeeper 是 CP 系统 ZooKeeper 的定位是: 强一致性(Consi
阅读全文
posted @ 2026-03-30 21:37
七星6609
阅读(36)
推荐(0)
摘要:
分库分表中的数据倾斜,是指数据未均匀分布在各数据库/表节点,导致部分节点负载(存储、CPU、IO)过高、成为系统瓶颈,整体性能与稳定性受影响。核心解决思路:让数据分配更均匀,或让系统具备处理不均匀数据的能力。 一、数据倾斜的四大核心原因 1. 分片键选择不当(最常见) 分片键是数据路由的核心,其值分
阅读全文
posted @ 2026-03-30 21:05
七星6609
阅读(118)
推荐(0)
摘要:
我给你整理一份HTTP 状态码最全、最清晰、面试/工作都能直接用的版本,按1xx、2xx、3xx、4xx、5xx分类,每个状态码含义 + 场景 + 同类型区别一次性讲透。 一、1xx:信息性状态码(临时响应) 含义:请求已接收,服务器正在处理,客户端应继续发送请求。 很少直接用到,一般是底层协议交互
阅读全文
posted @ 2026-03-20 23:06
七星6609
阅读(303)
推荐(0)