04 2023 档案

摘要:提高代码质量!详解在Gradle项目中使用PMD的正确姿势提升代码质量,轻松上手学起来 阅读全文
posted @ 2023-04-09 21:25 我有八千部下 阅读(443) 评论(0) 推荐(1) 编辑
摘要:前言 我们从设计模式的6中原则和3种分类从整体认识下业界关注最多的23种设计模式。 设计模式是什么? 设计模式(Design,DP)是软件界的先辈四人帮(The Gang of Four:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)总结 阅读全文
posted @ 2023-04-05 20:28 我有八千部下 阅读(122) 评论(0) 推荐(0) 编辑
摘要:前言 本文分析多种分布式事务的解决方案2PC、3PC TCC、可靠消息服务、最大努力通知,事务消息等。讲述其执行流程、优缺点、适用场景以及引文具体实战例子。 名词解释 TM(transaction manager) 事务协调者 RM(resource manager) 资源管理者/事务参与者/业务服 阅读全文
posted @ 2023-04-05 20:25 我有八千部下 阅读(243) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述 ZooKeeper 集群架构特点、数据结构、事务ID、选主和ZAB协议具体执行过程。 服务保证 ZooKeeper 非常快速且非常简单。由于它的目标是构建更复杂的服务(如同步)的基础,因此它提供了一组保证: 【顺序一致性】来自客户端的更新将按发送顺序执行,因为只有唯一的主节点负责写请 阅读全文
posted @ 2023-04-05 20:15 我有八千部下 阅读(208) 评论(0) 推荐(0) 编辑
摘要:前言 TX-LCN 是一款国产分布式事务协调框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。 本文讲解如何使用 Springboot 作为基础,来配置使用 TX-LCN。 需要 MySQL 和 Redis。 名词解释 TM (Tx-Manager / Transactio 阅读全文
posted @ 2023-04-05 20:12 我有八千部下 阅读(280) 评论(0) 推荐(1) 编辑
摘要:前言 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 Seata 配置非常灵活,支持多种注册中心、配置来源(配置中心)和持久化方式。本文选择 eurek 阅读全文
posted @ 2023-04-05 20:10 我有八千部下 阅读(495) 评论(0) 推荐(0) 编辑
摘要:前言 参考这一篇 在Linux部署Apollo配置中心 可以搭建出一套Apollo配置中心服务,我们在这里重点看看Springboot如何整合Apollo,将配置交给配置中心管理,并在修改后及时生效到服务上。 我们模拟工作中的开发(development,DEV)和生产(production,PRO 阅读全文
posted @ 2023-04-05 20:02 我有八千部下 阅读(1783) 评论(0) 推荐(0) 编辑
摘要:前言 ElasticJob-Lite是集群环境下应用(比如SpringCloud微服务)任务调度的解决方案。 集群部署的时候,一个定时任务会有多个进程执行,如果不进行任何处理,会导致任务触发的时候每个进程重复执行一次。 解决办法有两种:一种是加锁,保证同时只有一个进程执行任务,比如用分布式锁,或者用 阅读全文
posted @ 2023-04-05 19:54 我有八千部下 阅读(241) 评论(0) 推荐(0) 编辑
摘要:前言 这篇是ShardingSphere-JDBC+Springboot+MybatisPlus+Druid分库分表的简单例子,我们用一个订单表为例,通过简单配置实现数据分片到多个数据库的多个表中。 主要配置和代码已经在文中给出,完整例子可以参考 GitHub - fruitbasket-litch 阅读全文
posted @ 2023-04-05 19:51 我有八千部下 阅读(814) 评论(0) 推荐(0) 编辑
摘要:前言 公司游戏项目服务端运行过程中,依赖 Redis 保存游戏过程数据。与客户端一次交互会对 Redis 进行大量的操作,在内网开发环境下测试,一次操作开销在 1-2 ms,建立连接和网络开销累积在一起大大降低了响应速度,这种场景下可以使用 Redis Pipeline 进行优化。 Redis Pi 阅读全文
posted @ 2023-04-05 19:47 我有八千部下 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:前言 本问阐述 Redis 主从同步、哨兵监控和故障迁移的过程,并通过各个服务日志加以验证。 准备工作 主从和哨兵安装见 安装过程。 为了方便通过日志观察同步过程,你可以在每个 Redis 和 Sentinel 配置文件中修改下面参数,实现前台运行并将日志输出到控制台。 # 这两个配置是为了实现前台 阅读全文
posted @ 2023-04-05 19:45 我有八千部下 阅读(101) 评论(0) 推荐(0) 编辑
摘要:前言 数据分片是指将数据按某种方式存储到不同的服务上来解决单机服务容量不足的问题。 本文围绕 Redis 讲述逻辑拆分、随机分配、哈希取模、一致性哈希等分片算法原理和使用场景。并在此基础上对比客户端分片、代理(Proxy) 和 Redis Cluster 各自的优缺点。 客户端分片 三种普通方式 逻 阅读全文
posted @ 2023-04-05 19:40 我有八千部下 阅读(310) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述 Redis 两种持久化方式 RDB 和 AOF 优缺点以及原理。 为何需要持久化? Redis 是基于内存操作的,进程终止、服务器宕机后内存数据会丢失,但是在很多使用场景中我们希望数据不丢失,服务重启之后数据还能恢复到停机前的状态,特别是使用 Redis 做数据库的情况。 Redis 阅读全文
posted @ 2023-04-05 19:37 我有八千部下 阅读(164) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述布隆过滤器 (RedisBloom) 的基本原理和安装使用。 RedisBloom是什么? RedisBloom 是 Redis 中过滤器模块,可以用来判断值是否存在,常用来解决缓存穿透问题。 查询数据时,先用 RedisBloom 判断数据是否存在,不存在则直接返回,存在则从缓存 / 阅读全文
posted @ 2023-04-05 19:35 我有八千部下 阅读(229) 评论(0) 推荐(0) 编辑
摘要:前言 本篇主要是对MySQL锁的实现的分析和总结。中间很长一段是各种查询情况下的加锁分析,并搭配了完整的脚本和图例,有兴趣可以按文章内步骤验证,其实总结下来内容并不太多,耐心看完一起消除MySQL锁原理的迷雾。 锁分类 下面对InnoDB的锁从不同的角度进行分类,每种锁模式(lock mode)都有 阅读全文
posted @ 2023-04-05 19:32 我有八千部下 阅读(170) 评论(0) 推荐(0) 编辑
摘要:前言 Kafka中ACKS三种策略,LSO、LEO、LW、HW、AR、ISR、OSR解析。 名称解释 ACKS(Acknowledgments)确认、回执 LW(Low watermark)低水位、LSO(Log start offset)起始偏移量 HW(High watermark)高水位 LE 阅读全文
posted @ 2023-04-05 19:25 我有八千部下 阅读(272) 评论(0) 推荐(0) 编辑
摘要:前言 从整体浅析Kafka集群结构、和Zookeeper之间的关系、长轮询机制、消息生产和消费以及顺序消费等。 名词解释 Broker(Kafka服务) Controller(唯一充当控制器的Kafka服务) Topic(消息主题,一个主题包含多个) Partition(消息分区),Replica( 阅读全文
posted @ 2023-04-05 19:23 我有八千部下 阅读(77) 评论(0) 推荐(0) 编辑
摘要:前言 以kafka_2.13-2.8.0为例,分析Kafka消息在磁盘上的存储结构、配置以及如何通过索引找到具体的消息数据。 分区目录 一个分区(Partition)有1到多个副本(Replica),是主从结构,主(Leader)负责处理读写请求,从(Follower)只负责同步数据并在主宕机的时候 阅读全文
posted @ 2023-04-05 19:20 我有八千部下 阅读(355) 评论(0) 推荐(0) 编辑
摘要:前言 这篇内容是保证 Kafka 消息可靠性的相关配置,内容主要来自《Kafka权威指南》这本书,再根据 Apache - Kafka文档2.8 总结出来的。文中每个配置项是个超链接,可以定位到配置的官方文档。代码例子可以访问 GitHub - fruitbasket-litchi-kafka Br 阅读全文
posted @ 2023-04-05 19:16 我有八千部下 阅读(131) 评论(0) 推荐(0) 编辑
摘要:警告Cgroup Driver不一致 节点加入集群会警告 docker 和 kubelet 的 Cgroup Driver 不一致,但是暂未发现影响,如图: 解决办法:修改 docker 的 Cgroup Driver 为 systemd vim /etc/docker/daemon.json 加下 阅读全文
posted @ 2023-04-05 19:13 我有八千部下 阅读(61) 评论(0) 推荐(0) 编辑
摘要:前言 GC(Garbage collection)频繁和堆内存溢出原因简单来说是对象占用堆空间难以回收,新对象无法分配触发GC或者直接导致内存溢出,最终进程结束。 排查思路是先查看进程各种类型对象占用空间大小和比例,锁定占用空间较多的对象后再分析相关的程序是否有使用不当的地方。下文的侧重点是通过多种 阅读全文
posted @ 2023-04-05 19:05 我有八千部下 阅读(261) 评论(0) 推荐(0) 编辑
摘要:前言 在Linux环境通过jar包启动Java进程手动输命令有点麻烦,参数多容易忘记,编写一个能启动停止的脚本会方便很多。下文提供了一个较为通用的脚本,可以灵活指定JVM启动选项和应用参数,能够应付大部分场景,有后台启动、前台启动、停止、重启、查看进程状态功能。 Shell脚本内容 脚本用java、 阅读全文
posted @ 2023-04-05 18:48 我有八千部下 阅读(173) 评论(0) 推荐(0) 编辑
摘要:前言 以制作CentOS镜像为例,讲述对镜像自定义,打包以及推送的远程仓库的过程,步骤都比较简单可以快速上手。 创建步骤 创建CentOS基础镜像 创建构建目录和Dockerfile,在Dockerfile中编辑镜像相关设置,参考菜鸟教程 - Dockerfile。 echo "在当前用户目录下创建 阅读全文
posted @ 2023-04-05 18:45 我有八千部下 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:前言 查看当前YUM(Yellow dog Updater, Modified)配置,如果像下图一样使用国外地址,由于网络限制下载会比较慢,更换国内yum源来解决。 cat /etc/yum.repos.d/CentOS-Base.repo 更换为阿里云YUM源 echo "备份原来的源" > /d 阅读全文
posted @ 2023-04-05 18:42 我有八千部下 阅读(267) 评论(0) 推荐(0) 编辑
摘要:前言 这篇主要是讲LVS配置来实现负载均衡,步骤非常简单,只不过为了解释配置的目的增加了一些文字解释,而显得内容很多。 LVS(Linux Virtual Server)是章文嵩博士成立的自由软件项目。Linux将其作为内核的一部分,命名为IPVS(IP Virtual Server)。 配置简介 阅读全文
posted @ 2023-04-05 18:32 我有八千部下 阅读(367) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述在Linux内网搭建K8s集群详细步骤,解决搭建过程中的问题。 脚本基本可以不修改直接使用。 准备工作 需要Linux CentOS 7.x 两台及以上,本文用的 7.6。 主机要求有2个核心及以上。 安装步骤多个节点可以并行操作,默认所有操作各节点都要执行,某些操作仅主/工作节点执行 阅读全文
posted @ 2023-04-05 18:25 我有八千部下 阅读(429) 评论(0) 推荐(0) 编辑
摘要:前言 参考这篇CSDN - 在Linux配置LVS实现负载均衡可以搭建LVS(Linux Virtual Server)实现负载均衡。但是它有下列主要缺陷: 没有备机,LVS故障时将不能提供服务。就算准备了备机,也需要人为监控LVS状态,在故障的时候修复或者用备机顶替 不能监控RS(Real Ser 阅读全文
posted @ 2023-04-05 18:21 我有八千部下 阅读(77) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述在多台 Linux 服务器搭建 ZooKeeper 集群的具体步骤,共 4 个节点(1 主 2 从 1 观察者)。 ZooKeeper使用的端口:【2181】对 client 提供服务;【3888】选举 leader;【2888】集群内通讯。 准备工作 ZooKeeper需要1.7及以 阅读全文
posted @ 2023-04-05 18:10 我有八千部下 阅读(202) 评论(0) 推荐(0) 编辑
摘要:前言 以kafka_2.13-2.8.0版本做示例,安装架构图如下所示,4台服务器,4个节点的Zookeeper集群(1主2从1观察)以及3个Kafka服务。 准备工作 准备多台服务器来搭建集群环境 Kafka需要Zookeeper做分布式协调,所以得先准备好Zookeeper集群。可以参考 在Li 阅读全文
posted @ 2023-04-05 16:59 我有八千部下 阅读(87) 评论(0) 推荐(0) 编辑
摘要:前言 Dashboard是一个Java web 项目,Maven工程。通过源码编译成jar包后启动即可通过浏览器访问。通过html界面可以查看RockeMQ集群状态、创建/删除Topic、生产/消费等。 安装 echo "从 GitHub 下载源码包" > /dev/null wget -P ~/s 阅读全文
posted @ 2023-04-05 16:55 我有八千部下 阅读(529) 评论(0) 推荐(0) 编辑
摘要:前言 本文主要讲述在 Linux 系统中配置和部署 Redis 主从集群和哨兵,实现高可用和自动故障迁移。 准备工作 参考 Redis 单机部署 安装 3 个 Redis 服务作一主二从,本文准备了 6380(主)、6381(从) 和 6382(从)。 参考 Redis 单机部署 安装 3 个 Re 阅读全文
posted @ 2023-04-05 16:53 我有八千部下 阅读(131) 评论(0) 推荐(0) 编辑
摘要:前言 本文主要讲述 Redis 代理 Twemproxy 安装过程。 Twemproxy 是推特开源用于 Memcached 和 Redis 的轻量级代理。这里以0.5.0版本为例。 我们可以通过取模、随机、一致性哈希等算法将数据分散在多个 Redis 服务来实现水平扩展。但是客户端直连就需要跟每个 阅读全文
posted @ 2023-04-05 16:48 我有八千部下 阅读(52) 评论(0) 推荐(0) 编辑
摘要:前言 本文以predixy-1.0.5为例,讲述 Redis 代理 Predixy 安装过程。 Predixy 是一款高性能全特征 Redis 代理,支持 Redis-sentinel 和 Redis-cluster。作者拿其它常用代理做了 性能测评,Predixy 在各个维度性能都是最优的,与其他 阅读全文
posted @ 2023-04-05 16:43 我有八千部下 阅读(129) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述在 Linux 系统部署 Redis Cluster 实现数据分片的具体步骤。 请参考 Redis 单机部署 下载编译。 Redis Cluster是什么? Redis Cluster 是官方提供的一种用数据分片来实现横向扩容的解决方案,由一个或多个 Redis 服务组成一个无主集群。 阅读全文
posted @ 2023-04-05 16:40 我有八千部下 阅读(197) 评论(0) 推荐(0) 编辑
摘要:前言 目前解决分布式系统下数据强一致性的主要算法理论是Paxos和Raft,偏向CAP定理一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)中的CP。 Raft在容错和性能方面和Paxos相当,不同之处在于它将问题分解成相对独立 阅读全文
posted @ 2023-04-05 16:32 我有八千部下 阅读(224) 评论(0) 推荐(0) 编辑
摘要:前言 ElasticJob-Lite-UI是任务的分布式调度解决方案(ElasticJob-Lite)搭配的可视化运维控制台。运维控制台和ElasticJob-Lite并无直接关系,是通过读取作业注册中心(Zookeeper)数据展现作业状态,或更新注册中心数据修改全局配置。 它具有这些功能:登录安 阅读全文
posted @ 2023-04-05 16:27 我有八千部下 阅读(292) 评论(0) 推荐(0) 编辑
摘要:前言 这篇是参考官网文档总结的Apollo分布式部署方式,包含具体步骤、资源和相关脚本,也在必要的地方给出了资料来源。 通过Apollo - 中文文档 - 部署架构可以了解到单机、集群和高可用部署架构的最佳实践方式。 安装步骤 本篇实践是在Linux系统,使用Apollo 1.9.1版本为例,要求环 阅读全文
posted @ 2023-04-05 16:23 我有八千部下 阅读(561) 评论(0) 推荐(0) 编辑
摘要:前言 本文以redis-6.2.5为例,讲述在 Linux 系统下单机 Redis 下载、编译、打包、安装为服务、启动和访问的整个过程。 安装环境为 Linux CentOS 64,本文用的 7.5 版本. 下载编译目录在当前目录soft/redis下,最终服务可执行程序在/opt/soft/red 阅读全文
posted @ 2023-04-05 16:19 我有八千部下 阅读(263) 评论(0) 推荐(0) 编辑
摘要:前言 Linux 系统安装、配置 Maven 步骤和相关资源地址,以3.8.2版本为例。 安装 下载解压 # 备用地址清华镜像 https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.2/binaries/apache-maven- 阅读全文
posted @ 2023-04-05 16:13 我有八千部下 阅读(75) 评论(0) 推荐(0) 编辑
摘要:前言 EFAK(Eagle For Apache Kafka)是一个简单、高性能的Kafka集群监控系统,实现了监控、可视化操作Topic/Zookeeper、SQL查询、告警等功能,它以前的名字叫Kafka Eagle。 我们重点看看如何安装以及简单使用它。 kafka 版本支持:0.8.2.x, 阅读全文
posted @ 2023-04-05 16:07 我有八千部下 阅读(426) 评论(0) 推荐(0) 编辑
摘要:前言 以Jenkins版本2.303作2例子在Linux系统直接安装的详细步骤,并解决插件下载速度慢问题。所有脚本可以直接复制在任意目录下执行。 下载启动包 echo "清华镜像下载启动war包到/opt/soft/jenkins目录" > /dev/null wget -P /opt/soft/j 阅读全文
posted @ 2023-04-05 16:02 我有八千部下 阅读(452) 评论(0) 推荐(0) 编辑
摘要:前言 本文讲述在 Linux 服务器安装JDK rpm安装 去 Oracle官网 下载.rpm格式的安装包,如 Oracle - JDK8 下载。 也可以从 CSDN - jdk-8u301-linux-x64.rpm.zip 下载。 echo "安装" > /dev/null rpm -ivh j 阅读全文
posted @ 2023-04-05 15:58 我有八千部下 阅读(197) 评论(0) 推荐(0) 编辑
摘要:前言 我们通过Yum几乎全自动的快速安装MySQL服务,这里演示的是8.0版本,给出了具体步骤、脚本、图例,和相关资料来源,以及解决远程连接相关问题。 准备工作 更换国内yum源提速 参考CentOS更换YUM源更换yum源,国内下载速度更快。 找MySQL官方yum仓库地址 这一步只是告诉大家后面 阅读全文
posted @ 2023-04-05 15:54 我有八千部下 阅读(2579) 评论(0) 推荐(0) 编辑
摘要:前言 本文代码实现一个中文的敏感词过滤器,预先将准备好的敏感词写入前缀树数据结构中实现快速检索,并且节省内存。一般用于检查注册用户名称、言论是否包含不文明的词汇。 可以判断内容是否包含敏感词;找出内容中的敏感词;将内容中的敏感词替换成设置的字符。 运行环境 代码使用了JDK8语法,以及测试框架Jup 阅读全文
posted @ 2023-04-05 15:48 我有八千部下 阅读(104) 评论(0) 推荐(0) 编辑
摘要:这篇我们参考亚马逊提供的开发文档 Generating a Java SDK with LWA token exchange and authentication 来生成SPAPI(Amazon Selling Partner API)的 Java SKD,使用SDK可以调用SPAPI的相关接口,开 阅读全文
posted @ 2023-04-05 15:40 我有八千部下 阅读(364) 评论(0) 推荐(0) 编辑
摘要:前言 先安装Docker,使用文内的脚本可以快速创建CentOS 7.8虚拟系统集群,并通过SSH(Secure Shell)远程工具连接。 创建桥接网络,方便容器间通信 指令格式为docker network create <网络名称 >。 docker network create test-n 阅读全文
posted @ 2023-04-05 15:32 我有八千部下 阅读(185) 评论(0) 推荐(0) 编辑
摘要:前言 在Linux系统使用JDK自带的jstack指令分析输出的线程信息排查死锁的详细步骤。 例子程序 下面是一个模拟线程死锁的例子程序,编译(javac DeadLockSample.java)后执行(java DeadLockSample)这个程序来启动一个JVM进程。 其中一个线程会成功获取到 阅读全文
posted @ 2023-04-05 15:26 我有八千部下 阅读(492) 评论(0) 推荐(0) 编辑
摘要:Java程序启动方式 执行类:java [-options] class [args...] 执行 jar 文件: java [-options] -jar jarfile [args...] options指JVM选项,比如堆内存大小;args指程序接收的参数,也就是public static v 阅读全文
posted @ 2023-04-05 15:09 我有八千部下 阅读(82) 评论(0) 推荐(0) 编辑
摘要:无感知导致的问题 当我们在K8s中Deployments配置资源限制和预留的时候,比如设置最大内存为500M。但是宿主机的总内存为8G,这时候Pod启动后会超出内存限制,被Deployments杀掉。但为了维护设置的副本数量又创建新的,如此反复。 原因是默认情况JVM默认最大堆空间为系统总内存的1/ 阅读全文
posted @ 2023-04-05 15:06 我有八千部下 阅读(251) 评论(0) 推荐(0) 编辑
摘要:前言 本文使用的是mysql-8.0.26-winx64,解决思路是先让MySQL可以跳过密码验证,登陆后将密码修改成新的。 解决步骤 跳过验证将密码置空 【CMD窗口1】停止服务,然后前台启动服务并跳过验证。 # 停止服务 net stop mysql # 前台启动服务并跳过验证 mysqld - 阅读全文
posted @ 2023-04-05 15:01 我有八千部下 阅读(172) 评论(0) 推荐(0) 编辑
摘要:前言 介绍高性能队列Disruptor原理以及使用例子。 Disruptor是什么? Disruptor是外汇和加密货币交易所运营商 LMAX group 建立高性能的金融交易所的结果。用于解决生产者、消费者及其数据存储的设计问题的高性能队列实现。可以对标JDK中的ArrayBlockingQueu 阅读全文
posted @ 2023-04-05 14:44 我有八千部下 阅读(614) 评论(0) 推荐(2) 编辑
摘要:代码Bug太多?给新人Code Review头都大了?快来试试SpotBugs如果你需要一个自动化的工具帮助你或者你的团队发现代码中的缺陷,在提升代码质量同时减少人工Code Review的成本,那这篇文章非常的适合你。 阅读全文
posted @ 2023-04-03 23:51 我有八千部下 阅读(1395) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示