自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 深度剖析 logrotate 之 postrotate:运维的日志管理利器

postrotate作为logrotate工具中的重要组成部分,为运维人员提供了丰富的日志管理后处理手段。通过合理利用postrotate,可以实现服务配置的动态更新、高效的日志备份与传输、定制化的日志预处理以及与监控系统的无缝集成。然而,在使用过程中需要注意权限管理、错误处理、脚本调试和性能优化等方面的问题,以确保日志管理工作的稳定、高效运行。掌握postrotate的应用技巧,将显著提升运维工作中的日志管理水平,为企业级系统的稳定运行和高效运维提供有力支持。

2025-03-07 16:20:45 690

原创 深入理解与配置 Nginx TCP 日志输出

在现代网络架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持,Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能,这使得它在处理数据库连接代理、流媒体服务代理等 TCP 相关业务场景中也发挥着重要作用。在 TCP 代理场景下,准确、详细的日志记录对于监控服务运行状态、排查故障、分析业务流量等工作至关重要。

2025-03-07 15:44:32 1276

原创 深入探索 jvm-sandbox 与 jvm-sandbox-repeater 在微服务测试中的应用

jvm-sandbox 是基于 Java 虚拟机的安全增强框架,能在不修改目标 Java 应用程序代码的情况下,对 Java 方法进行无侵入式增强。其核心原理是利用 Java 字节码增强技术,在运行时动态修改字节码,实现对方法的拦截、替换等操作。这种无侵入特性使其在各种 Java 应用场景中易于集成,不会破坏原有代码结构。jvm-sandbox-repeater 是基于 jvm-sandbox 开发的专门用于流量回放的工具。

2025-03-05 16:35:07 841

原创 Kafka跨集群数据镜像解决方案MirrorMaker及其替代工具

本文介绍了Apache Kafka社区提供的跨集群数据镜像工具MirrorMaker,分析了其优缺点,并简要介绍了LinkedIn和Confluent公司针对MirrorMaker的不足所开发的替代工具。MirrorMaker是Apache Kafka社区推出的一款跨集群数据镜像解决方案。它主要用于实现Kafka消息实时从一个集群同步复制或镜像到另一个集群。在实际应用中,MirrorMaker可应用于数据备份、主备集群等多种场景。

2024-06-14 10:03:57 932 1

原创 Hive源码阅读环境准备

在已经安装的hive机器上开启debug模式,开启debug模式之后,会卡住如果没有配置、运行Idea的Remote JVM Debug。至此hive源码调试环境已经搭建完成,可以从CliDriver#main方法作为入口一步步调试了解hive sql如何解析、校验、最后转化MR的流程。本地编译hvie项目,在本地编译hive项目之前首先需要确保有一个可用的hive环境,才能进行源码调试。将编译好的hive项目导入idea中,导入后的hive项目目录如下。启动后即可获取debug的端口,如下。

2023-04-12 22:53:27 833

原创 无法下载io.confluent:kafka相关jar

在所属的工程的pom文件加入Confluent Maven 存储库。或者maven的配置中加入Confluent Maven 仓库库。

2023-04-12 14:48:38 1158

原创 hive常用配置参数

hive常用配置参数

2022-06-17 11:03:45 362

原创 hive自定义函数

hive自定义udf函数

2022-06-14 21:01:47 1347

原创 presto源码编译错误 ( Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:check )

报错信息如下:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:check (checkstyle) on project presto-parser: You have 4 Checkstyle violations. -> [Help 1]org.apache.maven.lifecycle.LifecycleExecutionException: Failed to ex

2022-05-28 11:24:13 782

原创 hadoop 3.0+ 版本安装访问50070失败处理方法

hadoop 3.0+ 版本安装访问50070失败处理方法安装hadoop 3.0+ 安装成功后访问http://localhost:50070/访问失败,或者http://localhost:9000/提示It looks like you are making an HTTP request to a Hadoop IPC port.hadoop 3.0之后换了端口,修改端口为9870即可。...

2022-04-01 19:50:57 1996

原创 Hadoop单机版安装

hadoop单机版安装流程如下:创建一个用于管理hadood的用户(可新建或者使用已有的用户)安装并配置ssh免密码登陆安装Java环境下载hadoop并配置环境变量配置相关的Hadoop配置验证hadoop安装并启动创建先的用的用户没有用户则通过useradd username # 用户名 passwd username # 设置密码已存在可用的用户则直接切换当前用户:su username安装并配置ssh免密码登陆使用ssh-keygen -t rsa 或 注:使用ssh-ke

2021-09-23 10:50:11 4380 2

原创 docker安装单机版的kafka

安装kafka之前首先需要安装zookeeper,docker安装zookeeper。docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper安装kafkadocker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.112.133:2181 -e KAFKA_ADVERTISE

2021-09-14 17:01:15 145

原创 分布式文件系统-HDFS

主要内容:HDFS是什么?HDFS优点HDFS架构副本机制。1、HDFS是什么?是由Hadoop实现的一个分布式的文件系统(Hadoop Distributed File System), 简称HDFS.源于Google的一篇名为GFS论文。2、HDFS优点非常巨大的 分布式 文件系统。运行在廉价的机器降低成本。易扩展、提供性能较为不错的分布式文件系统。3、HDFS架构HDFS是主/从架构。HDFS集群由一个NameNode组成(master)。负责管理文件系统的命名空

2021-06-13 22:14:04 987

原创 spring源码解析之环境准备

到Spring官网下载Spring源码,如果github下载过慢,可以安装github访问的加速插件,地址为:https://github.com/spring-projects/spring-framework/根据官网提供的编译方式进行编译(正确姿势),地址为:https://github.com/spring-projects/spring-framework,下拉如图:点击进去然后选择自己合适的编译器进行编译:...

2021-05-05 21:57:55 138

原创 普罗米修斯可视化监控搭建

安装node_exporter1、下载指定node_exporter版本,下载地址https://prometheus.io/download/2、将下载好的node_exporter上传到服务器并解压安装tar -zxvf node_exporter-1.1.0.linux-386.tar.gz -C /usr/local/mv /usr/local/node_exporter-1.1.0.linux-386.tar.gz /usr/local/node_exporter3、开放3002

2021-02-19 15:10:58 1138

原创 redis高可用之主从架构

当主从库的连接恢复之后,从库首先会给主库发送 psync 命令,并把自己当前的 slave_repl_offset 发给主库,主库会判断自己的 master_repl_offset 和 slave_repl_offset 之间的差距。此外,传输 RDB 文件也会占用主库的网络带宽,同样会给主库的资源使用带来压力。那么,一旦主从库完成了全量复制,它们之间就会一直维护一个网络连接,主库会通过这个连接将后续陆续收到的命令操作再同步给从库,这个过程也称为基于长连接的命令传播,可以避免频繁建立连接的开销。

2021-01-12 16:54:28 193

原创 排序算法(java)

简介及相关概念:使用java是实现常用的排序算法;稳定:如果排序前a在b前面,而a=b,经过排序后a依旧还在b的前面。不稳定:如果未经排序a在b前面,而此时依旧a=b,经过排序后a可能出现在b的后面。时间复杂度:是指排序时随着排序的数据规模的大小与所需的时间变化规律。空间复杂度:是指排序时排序的数据规模与所需的空间变化规律排序算法分类:非线性时间比较类排序: 通过比较来决定元素间的相对次序,由于时间复杂度不能突破logn的,所以被称为非线性时间复杂度。线性时间比较类排序:不通过比较来决定元素

2020-12-17 17:02:25 227

原创 jdk源码分析之 LinkedBlockingQueue

简介: 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。LinkedBlockingQueue是基于链表实现的。整体架构LinkedBlockingQueue的类图如下:从类图可以知道,LinkedBlockQueue实现的路线有两条。一、AbstarctQueue -> AbstarctCollection -&gt

2020-12-07 16:57:25 172

原创 双亲委派机制及JVM类加载机制

类加载全流程:当我们使用java命令去运行某一个类的main方法时,首先会通过类加载器(classload)把主类加载到jvm中,通过编写一个测试类来分析类加载流程。package cn.lcw.pattern.example;public class JvmClassLoadDemo { public static final String STR = "常量String"; public static void sayHello() { System.out.

2020-12-04 13:27:23 232

原创 CompletableFuture 异步神器

异步是一种程序设计的思想,使用异步模式设计的程序可以显著减少线程等待,从而在高吞吐量的场景中,极大提升系统的整体性能,显著降低时延。在实际工作中可以使用异步框架或者响应式框架来解决异步编程问题,但是异步框架或者响应式框架学习成本较高,但是jdk8提供了CompletableFuture也可以实现异步编程的问题。初始化CompletableFuture提供了四个静态方法实现异步操作。runAsybc 无返回值,supplyAsync具有返回值,如果没有指定线程池则使用 ForkJoinPool.com

2020-11-30 14:46:28 347

原创 jdk源码分析之 ConcurrentHashMap

整体架构:ConcurrentHashMap 继承了AbstractMap及实现了ConcurrentMap。从类注解获得的信息所有的操作都是线程安全的,可以放心使用,无需再加锁;多个线程同时进行 put、remove 等操作时并不会阻塞,可以同时进行,和 HashTable 不同,HashTable 在操作时,会锁住整个 Map;(所以有些时候要求数据是强一致性时,要使用HashTable,ConcurentHashMap只是弱一致性)。迭代过程中,即使 Map 结构被修改,也不会抛 Con

2020-11-25 10:25:57 323

原创 Linux常用的性能监控工具

内存性能监测free 系统已用、可用、剩余内存及缓存和缓存区的使用量。 -b/k/m/g 分别以bytes/kilobytes/megabytes/gigaby为单位显示 -h 以人类可读的方式输出统计结果 -t 使用该选项会多显示一行标题为Total的统计信息,该行统计的是(used、free、total的总和)此Total与total不同,

2020-11-11 11:23:50 304

原创 java 时间类详解(二)

时间在我们平时的工作中是不可缺少的,而时间又可以单独提取出来做为一个工具类,可以多处利用,避免重复代码,提供代码的复用。public class DateUtils { private static final String DEFAULT_FORMATTER = "yyyy-MM-dd HH:mm:ss"; private static final String YAER = "YEAR"; private static final String MONTH = "MONTH

2020-11-02 16:12:17 122

原创 java 时间类详解(一)

java 常用的时间工具类java.util.Calenderjava.util.Date 是用于表示一个日期和时间的对象(实际一个long类型的以毫秒表示的时间戳)java.time.LocalDateTimejava.time.LocalDatejava.time.ZonedDateTimejava.time.Instant初始化操作及具体时间的指定:data public static void main(String[] args) { SimpleDat

2020-11-02 10:00:08 766

原创 jdk源码分析之 FutureTask

**FutureTask作用:**支持创建有返回值的线程。 FutureTask可以很容易获得异步任务的执行结果,无论异步任务是通过线程池 ThreadPoolExecutor 执行的,还是通过手工创建子线程来执行的总体架构FutureTask从关系图中发现实现了RunnableFuture,而FunnableFuture继承了Future接口和Runnable接口。其关系类图及主要方法如下:类注解信息:可取消的异步计算。这个类提供了一个基于Future实现的,带有开始和取消方法一个计算,查询看

2020-10-30 11:19:56 153

原创 redis学习手记(二)持久化方式

为什么要将redis做持久化方式:一般 redis主要的运用场景为作为后端的缓存层,redis中的数据都在内存,一旦服务器宕机,内存中的数据将全部丢失,所以有必要将数据做数据持久化。如果不做持久化,redis重新启动的话,每次都要去数据库读取数据然后再次把数据回写redis,容器造成数据压力过大。另一个原因就是每次去读取数据库,这种是比较缓慢的一个过程,性能远比不上从redis读取出来的快,导致运用程序的卡顿。故实现持久化是有必要,它避免从后端数据库中进行恢复。redis持久化方式AOF日志RDB

2020-10-20 15:28:55 332 1

原创 redis学习手记(一)redis安装

redis安装1、获取资源访问redis官网的下载选择自己所需的下载版本,官网地址为http://download.redis.io/releases/ ,这种方式还需要将下载到本地的tar包上传到服务器上,也可以在服务器上使用wget的方式获取redis安装包,如:wget http://download.redis.io/releases/redis-5.0.8.tar.gz2、解压并安装redistar -zxvf redis-5.0.8.tar.gz# 做一个重命名mv redis-

2020-10-20 11:52:11 215 1

原创 Http学习手记(二)

常用协议:TCP/IPTCP/IP协议是目前网络世界的标准通信协议,tcp/ip实际上一系列网络通讯协议的统称,其中较为核心的是tcp和ip协议。其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。ip协议:...

2020-10-15 16:30:28 100

原创 设计模式学习手记之单例模式

单例模式单例模式(singleton design pattern)是指一个类只能实例化一次,那么这个类就是单例类,这种设计模式叫做单例设计模式。单例设计模式的用途:处理资源冲突,如对一个文件日志操作,如果可以实例化多次,那么可能存在日志写入操作相互覆盖。全局唯一类,如工具类配置文件。过滤参数的白名单。实现单例的方式:单例可以分为恶汉单例懒汉单例恶汉单例是指在类加载的时候,instance静态实例就已经创建并初始化好了,所以,instance 实例的创建过程是线程安全的。但是,这样的

2020-10-14 14:32:06 92

原创 设计模式学习手记之代理模式

代理模式代理模式(Proxy Design Pattern)的原理和代码实现都不难掌握。它在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。java中实现的动态代理的三种方法静态代理使用jdk api实现的动态代理使用cglib实现的动态代理基于接口实现的静态代理基于接口的静态代理需要代理对象和目标对象实现同一个接口,所以一大致的流程为:1、 定义所需的接口的2、 目标对象实现定义好的接口。3、代理对象也同样实现实现定义好的接口,通过组合的方式来维护目标对

2020-10-13 15:51:04 94

原创 Spring框架学习之AOP前置知识

什么是 AOP根据维基百科对aop的定义为:AOP(Aspect Oriented Programming,面向切面的程序设计)是计算机科学中的一种程序设计思想,旨在将横切关注点与业务主体进行进一步分离,以提高程序代码的模块化程度。该思想使得开发人员能够将与代码核心业务逻辑关系不那么密切的功能添加至程序中,同时又不降低业务代码的可读性。面向切面的程序设计思想也是面向切面软件开发的基础。目前主流的程序设计思想OOP(Object Oriented Programming)面向对象编程AOP(Aspe

2020-10-12 16:29:40 386

原创 jdk源码分析之 HashTable

HashTable整体架构HashTable实现哈希表,该哈希表将键映射到值。可以是任何不为空的key或者value。主要是因为HashTable的存储或者检索key必须实现hashCode 和equals方法

2020-10-10 13:42:35 192

原创 lambad表达式(4)常用方法

在日常工作中使用lambda表达可以较少与业务代码无关的代码,提高代码的可读性及使用很少的代码即可完成相关功能的代码编写。数据准备在使用这些方法之前先准备一些测试数据。测试数据如下:新建的student的javabean如下:public class Student { private String name; private int age; @Override public String toString() { return "Studen

2020-10-08 22:30:39 229

原创 jdk源码分析之 LinkedList

LinkedList整体架构LinkedList底层是基于双向链表实现的,链表的每一个节点叫做Node,Node有一个属性prev,代表Node的前一个节点的位置,属性next代表Node后一个节点的位置。first是双向链表的头结点,其prev属性指向位置的为NULL。last是双向链表的尾结点,其next属性的指向NULL。当linkedList数据为空时,first节点和last节点是统一节点,该节点的prev和next都为null。因为LinkedList是基于双向链表实现的,只要机器的大小足够,

2020-09-29 15:06:22 123

原创 jdk源码分析之 Vector

Vector源码的类注解:Vector类实现了一个可扩展的数组对象。像数组一样,它包含可以使用整数索引访问。Vector 是同步访问,的。Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。如果迭代时,数据发生了改变会,会快速的失败,抛出ConcurrentModificationException异常。Vector是线程安全的,可以放心使用,但是在不考虑线程安全的问题时,建议使用ArrayList替代.

2020-09-28 23:31:11 107

原创 jdk源码分析之 HashSet

HashSet的基于HsahMap的基础上组装起来的类,其类图继承关系如下。从类继续关系图知道HashSet实现了Iterabel和Set、Collectionsh、Cloneable、Serializable的接口及继承AbstractSet.。HashSet的重要的成员变量 // HashSet是基于HashMap来实现的Set集合功能 private transient HashMap<E,Object> map; // 用于放在HashMap 的默认值,为

2020-09-27 22:39:13 208

原创 jdk源码分析之 ArrayList

ArrayList 关系类图如下:从ArrayList的类注解可以得知一些重要的信息如:允许 put null 值,会自动扩容;size、isEmpty、get、set、add 等方法时间复杂度都是 O (1);是非线程安全的,多线程情况下,推荐使用线程安全类:Collections.synchronizedCollection();增强 for 循环,或者使用迭代器迭代过程中,如果数组大小被改变,会快速失败,抛出异常。...

2020-09-24 16:03:05 111

原创 lambad表达式(3) 利用Stream对数据类型进行转换

1、Stream.map其作用接收一个泛型T,返回泛型R,map函数的定义,返回的流,表示的泛型是R对象,这个表示,调用这个函数后,可以改变返回的类型。map方法的源码如下: /** *这个接口,接收一个泛型T,返回泛型R,map函数的定义,返回的流,表示的泛型是R对象,这个表示,调用这个函数后,可以改变返回的类型 */ <R> Stream<R> map(Function<? super T, ? extends R> mapper);

2020-09-23 00:23:36 6785

原创 MySQL Explain使用与参数详解

在实际工作开启mysql的慢日志功能,找到慢查询语句然后使用explain关键字模拟优化器执行sql查询语句,分析慢sql的原因。或者在日常工作中也可以用于检查自己的sql质量如何。exlpain 的作用:查看表的读取顺序数据读取操的操作类型。那些索引可以被使用那些索引被实际使用表之间的引用每张表有多少行被优化器查询。基本用法:exlpain + 查询的sql+----+-------------+-------+------------+------+---------------+

2020-09-21 23:09:27 147

原创 mysql(8.0) 数据库安装(centos 7)

1、寻找自己所需的版本依赖从官网中找到自己所需的下载的yum repository https://dev.mysql.com/downloads/如图本文选择的是yum repository 方式故选择https://dev.mysql.com/downloads/repo/yum/然后选择对应的操作系统进行下载,复制下载的连接,使用wget方式下载(避免再次上传到服务中)2、下载yum repositorywget https://repo.mysql.com//mysql80-commun

2020-09-10 11:14:58 136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除