- 博客(36)
- 收藏
- 关注
原创 搭建监控日志系统
Prometheus是一个开源的系统监控和报警系统,基于谷歌的borgemon使用go语言开发,使用TSDB数据库,所以支持云原生,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
2023-05-22 10:55:55 1086
原创 反射工具类ReflectionUtils
AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。通俗点讲,反射就是把java类中的各种成分映射成一个个的Java对象。例如:类的class声明(class对象),变量(field),方法(method)等等信息,利用反射技术可以对一个类进行解剖,动态获取信息进行处理。1、获取Class对象的三种方式1.1 Object ——> getClass(
2022-07-02 17:59:21 4542
原创 ClickHouse插入频繁报错优化
初次使用ClickHouse,基本都会碰到如下图中too many parts的报错。本文将具体介绍报错原因和优化方案。频繁写入ClickHouse报错原因如上图所示,clickhouse操作数据的最小操作单元是block,每次写入,都会按照zookeeper记录的唯一自增的blockId,按照PartitionId_blockId_blockId_0生成data parts,也就是小文件,然后后台会有merge线程,不定时的讲多个小文件进行合并,生成PartitionId_MinBlockNum_
2022-02-21 16:44:39 4692
原创 clickHouse副本和同步机制
文章目录1. 副本的基本概念1. 1 什么是副本1. 2 副本写入流程简单示例1. 3 多副本的配置1. 4 clickhouse创建副本表2. 副本同步原理2.1 clickhouse目录2.2 ClickHouse在zk的目录结构了解clickhouse底层的多副本模式和副本数据同步机制,需要对clickhouse的基础以及clickhouse的分布式表以及分区表有一定的了解,具体可以参考我之前的文章:clickHouse接入指南和排坑日记clickHouse分区和分片详解1. 副本的基本概念
2021-11-25 17:24:17 5355
原创 clickHouse本地表和分布式表
clickHouse接入指南和排坑日记clickHouse分区和分片详解1. clickhouse简介和特点ClickHouse是一个面向联机分析处理(OLAP)的开源的面向列式存储的DBMS,简称CK, 与Hadoop, Spark相比,ClickHouse很轻量级,由俄罗斯第一大搜索引擎Yandex于2016年6月发布, 开发语言为C++。ClickHouse的特点:开源的列存储数据库管理系统,支持线性扩展,简单方便,高可靠性容错跑分快:比Vertica快5倍,比Hive快279倍,比My
2021-11-18 15:38:11 3035
原创 redis基础和使用(三)--单线程与IO多路复用
文章目录1 Redis为什么是单线程的1.1 官方解释1.2 Redis单线程优势1.3 Redis 不仅仅是单线程1.4 Redis的性能瓶颈2 IO多路复用2.1 文件描述符和文件句柄2.2 什么是IO多路复用?2.3 Redis的IO多路复用3 多线程IO多路复用3.1 产生背景3.2 Redis多线程实现思路3.3 Redis多线程具体实现1 Redis为什么是单线程的1.1 官方解释Redis官网–>Documentation–>Tutorials & FAQ–>F
2021-11-16 15:13:43 2280
原创 解决ubuntu源更新和下载问题
更新报错示例Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]Ign http://deb.debian.org jessie InRelease Get:2 http://deb.debian.org jessie-updates InRelease [16.3 kB]Ign http://deb.debian.org jessie-backports InRelea
2021-11-09 17:38:16 1386
原创 redis基础和使用(二)--pipeline
文章目录1.pipeline出现的背景1.1 为什么需要pippeline1.2 pepeline的性能2.pipeline使用方式2.1 使用简介2.2 代码示例2.3 封装pipeline工具类3.pipeline不保证原子性3.pipeline适用场景4.pipeline缺点5.pipeline源码解析1.pipeline出现的背景1.1 为什么需要pippelineredis客户端执行一条命令分4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果这个过程称为Round trip t
2021-11-09 16:32:30 1903
原创 redis基础和使用篇(一)--简介
文章目录1 redis简介1.1 什么是redis1.2 redis特性2 redis数据结构2.1 String--字符串2.2 List--列表2.3 hash--哈希2.4 Set--集合2.5 zset--有序集合2.6 3种高级数据结构3 redis使用场景3.1 热点数据的缓存3.2 分布式锁3.3 限时业务的运用3.4 计算器相关处理3.5 排行榜相关问题3.6 点赞、好友等相互关系的存储4 redis java客户端4.1 Jedis4.1.1 Jedis特点4.1.2 Jedis使用4.2
2021-11-09 16:27:36 1097
原创 tcpdump线上抓包排查问题指南
前言开发过程中,本地程序可以进行debug自测,但是,针对服务调用和联调,需要定位问题的时候,可能就需要抓包去定位一些非代码层面或者服务注入相关的问题。因为在程序运行时,数据都是以数据包的形式进行传输,发送和接收数据的过程中,可能发出的数据有错误的数据,也可能接收的包中有错误的数据,从而导致程序处理出错,因此我们直接抓取传输的数据包,通过其他工具或方法解析数据包中的原始数据,可以定位是否因为数据输错导致的程序出错,如果出错又是因为那一部分的数据出错等。常见的抓包工具有F12、Fiddler、Charles
2021-11-04 19:33:20 2460
原创 编解码和加密详解
文章目录1. 编码和解码(encode/decode)算法1.1 Base64算法1.2 压缩算法1.3 Java序列化和反序列化2. 常见加密算法2.1 什么是加密算法2.2 MD5算法2.3 SHA1算法2.4 HMAC算法3. 结论1. 编码和解码(encode/decode)算法简单理解,编码就是把信息按照一定的规则进行组织,变换消息形式的过程,所谓解码就是把收到的信息按照一定的规则进行解析,并且这个规则往往是固定的,必须是编码者和解码者事先都知道或约定好的。常见的编码手
2021-09-16 12:04:10 4265
原创 一些常见好用的java工具类
文章目录1. 计算器2. 时间处理3. sha1加密4. HttpClient工具类5. json处理工具类1. 计算器import java.util.ArrayList;import java.util.Stack;/** * 计算使用util * * @author aa * @since 2020-11-16 */public class CalculatorUtil { /** * 判断是否无效的运算结果 * * @param n
2021-09-14 19:38:51 4811 1
原创 clickHouse分区和分片详解
文章目录1. 什么是clickhouse?2. 分区和分片2.1 分区2.2 分片3. 分区相关操作3.1 创建分区表3.2 删除分区3.3 查询分区信息4. 分片原理5. clickhouse连表查询5.1 Join 查询5.2 clickHouse单机JOIN实现5.3 clickHouse分布式JOIN实现5.4 数据预分布实现Colocate JOIN1. 什么是clickhouse?ClickHouse是一个面向联机分析处理(OLAP)的开源的面向列式存储的DBMS,简称CK, 与Hado
2021-09-01 14:42:59 12715
原创 常见日志框架介绍和对比(log4j,logback,log4j2)
文章目录1. 什么是slf4j?2. log4j简介和配置2.1 log4j介绍2.2 log4j三大组件2.3 log4j pom依赖引入2.4 配置log4j3. logback简介和配置3.1 logback简介3.2 logback pom依赖引入3.3 logback 配置模版3.4 logback总结4. logback和log4j对比5. log4j2简介和配置5.1 log4j2简介5.2 log4j2常见组件5.3 log4j2配置文件5.4 log4j2异步日志
2021-02-22 17:43:36 3783
原创 spring常用注解anotation和@Conditional
bean注入相关注解@Configuration:标注在类上,相当于把该类作为spring的xml配置文件中的,配置spring容器(应用上下文),其实就是替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器;@Bean:注解用于创建一个Bean对象,然后这个Bean
2021-01-27 15:07:24 421
原创 mysql底层原理面试题,看这一篇就足够
文章目录1. 什么是mysql?2. mysql存储引擎2.1 mysql存储引擎有哪些2.2 各存储引擎的区别3. mysql事务隔离级别3.1 什么是事务3.2 事务的 ACID3.3 mysql的四种隔离级别和分别存在的问题4. MVCC多版本并发控制初探4.1 当前读和快照读4.2 什么是MVCC4.3 MVCC的实现依赖5. mysql事务日志5.1 redo log和undo log5.2 undo日志实现记录版本线性表(链表)6. Read View(读视图)6.1 什么是Read View
2021-01-13 14:28:02 2818 1
原创 maven自动化排包和pom冲突解决插件Maven Helper
1. 安装插件Maven Helper由于我使用的idea,本文将以idea为例介绍Maven Helper的安装和使用。打开设置界面(command + 逗号)搜索plugin菜单在大红色箭头处查找需要安装的插件名称Maven Helper,第一个便是点击install安装插件完成后重启idea2. 查看pom依赖树打开pom文件,下方会多处一列切换菜单Text模式下就是我们常用的pom文件形式,切换到Dependency Analyzer,可以看
2021-01-07 16:00:34 1064
原创 HTTP传递文件和接收文件处理之MultipartFile
1. 什么是MultipartFile?MultipartFile是spring用来处理文件封装的一个接口,继承自InputStreamSource,而InputStreamSource接口中封装了getInputStream方法,所以这也是为什么MultipartFile能处理文件流的原因。2. MultipartFile有哪些方法方法名称描述String getName()获取的是前后端约定的传入文件的参数的名称String getOriginalFileName()
2021-01-05 16:29:21 10022 2
原创 kafka接入和集成springBoot
1.非spring项目配置kafka很多时候,kafka服务都是单纯的数据清洗服务(比如单纯消息异步监听处理,非关键性业务剥离,大数据流式处理等)或者监听报警服务(比如限流,削峰,整合flink监听报警等),其实这个时候是不需要依赖spring的,可以简化服务配置。1. 在resources目录下创建kafka配置文件(根据不同环境进行配置文件的编写,kafka-test.properties):#需要消费的topictopic=bi-data-sam#消费topic下的具体某一个groupId
2020-12-21 19:59:12 557
原创 ClickHouse接入指南和排坑日记
1. clickhouse简介和特点ClickHouse是一个面向联机分析处理(OLAP)的开源的面向列式存储的DBMS,简称CK, 与Hadoop, Spark相比,ClickHouse很轻量级,由俄罗斯第一大搜索引擎Yandex于2016年6月发布, 开发语言为C++。ClickHouse的特点:开源的列存储数据库管理系统,支持线性扩展,简单方便,高可靠性容错跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别;功能多:支持数据统计
2020-12-18 15:35:01 3503
原创 linux rpm yum telnet apt安装
1. rpm下载和安装rpm命令是RPM软件包的管理工具。我们在创建基础容器之后,进入容器,进行编辑配置文件的时候或者下载文件的时候,需要使用rpm,如果没有的话,会出现:bash: rpm: command not found所以第一步是安装rpm,按照下面步骤安装rpm,方便后续软件的安装apt-get updateapt-get install rpm2. yum下载Yum的出现大大简化了软件管理工作,可以让用户在无需关心软件依赖的情况下,方便的进行软件的下载、更新和使用。软件安装完
2020-12-15 21:39:46 1510
原创 Jackson接入指南和工具类util编写
1. Why Jackson?和fastJson的差异以及优劣fastJson更新迭代较快,稳定性较差,究其根本原因是底层bug较多,很可能你现在用的最新的版本,一个月之后就被标记为不安全版本了;fastJson以解析json和组装json较快著称,但是,其实Jackson的性能瓶颈主要在初始化ObjectMapper上,详细初始化代码下面贴出,而在解析上,Jackson的性能是显著高于fastJson的;fastJson解析json主要是用的String类substring这个方法fastjson
2020-12-14 11:49:55 569 2
原创 mac配置jdk环境变量
1. 获取到jdk安装路径打开终端,在终端输入:/usr/libexec/java_home 可以获取到jdk安装路径2. 修改bash_profile配置文件输入:open -e .bash_profile 打开配置编辑窗口:在打开的窗口中加入以下内容:JAVA_HOME=(第一步获取的jdk安装路径,我这里是/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home)PATH=$JAVA_HOME/bin:$PATH:
2020-12-03 20:42:32 475
原创 HTTP请求总结分享
文章目录1.HTTP请求简介1.1 什么是HTTP请求1.2 HTTP请求的特点1.3 HTTP的请求方式1.4 HTTP请求报文和响应报文1.4.1 HTTP请求报文1.4.2 HTTP响应报文2.GET请求和POST请求的区别3.三次握手和四次挥手3.1 TCP报文字段解析3.2 三次握手3.2.1 三次握手模拟图3.2.2 三次握手流程3.2.3 为什么是三次3.2.4 建立连接后故障处理机...
2019-12-13 17:21:16 562 1
原创 Arrays.asList的防坑指南
开发过程中,遇到数组转List热庵后在进行相关操作的时候,很多同学一定会第一时间想到这个方法@SafeVarargs @SuppressWarnings("varargs") public static <T> List&a
2018-12-15 11:02:24 822
原创 Spring AOP原理以及原生AspectJ原理探究
前言前两天看了一些关于spring AOP以及AspectJ的文章,但是总是感觉非常的乱,有的说spring aop跟aspectj相互独立,有的说spring aop依赖于aspectj,有的甚至直接把两者混为一谈。甚至很多实用Spring Aop的朋友并不知道是依赖于AspectJ来开启AspectJ模式,进而简化配置的。为什么用AspectJ为什么用AspectJ,我的理解是两个字”方...
2018-12-13 15:50:14 3536 4
原创 redis基础面试题 --2
1、什么是RedisRedis是一种 高级key-value数据库 。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redis的所有数据都是保存在内存中 ,然后不定期的通过异步方式保存到磁盘上(这称为“...
2018-12-11 11:44:06 184
原创 Spring事务的传播行为
事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。 其实就是对多个事务嵌套的一个执行结果和回滚的方法的定义。开启事务的注解@Transactional中有一个propagation的属...
2018-12-10 16:50:52 168
原创 java解决mysql存储Emoji表情报错问题
最近线上碰到玩家反馈,苹果手机创建游戏角色或者改名的时候,如果名字中包含emoji表情,会导致我们数据库插入的时候报错。原因是数据库的utf-8最多支持三个字节,但是emoji表情则是4个字节(有一些繁体的汉字也是四个字节),导致插入数据库的时候不识别乱码报错。解决方案大致有如下三种: 改变数据库的编码格式为utf8mb4。 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字...
2018-11-12 15:11:12 2184
原创 java复习笔记7--java基础之I/O流2
字符流前面针对字节流和字节缓存流做了一个比较全面的探索。字节流以字节(8bit)为单位读取数据,且可以处理所有的数据,包括文本,音频等,这里就要抛出一个问题了,既然字节流这么方便,只是读取数据比较麻烦,那我们完全可以包装字节流进行快速的一些处理,为什么还要衍生出字符流?字符流的优势 字符流提供了针对字符类型的数据的很好的API操作 字节流读取中文的时候,存在乱码的情况 字符流会使用缓冲...
2018-11-10 09:47:53 194
原创 java复习笔记3--SpringCloud系列一:微服务启动原理探索之beanFactory加载
昨天,我们对SpringApplication的初始化以及SpringApplication.run方法中的部分代码进行了解读和追踪。这一块的重点就是Spring的 SPI,META-INF/spring.factories文件的格式以及加载机制。一定要花时间去研读这块的代码,spring的初始化基本都会用这个方法去注入,其次就是java.awt.headless模式以及用途,其他的属性注入就不做...
2018-11-03 15:24:26 474
原创 java复习笔记6--java基础之I/O流
什么是I/O流所谓I/O(Input/Output缩写),即指应用程序对数据在设备或者文件上的输入与输出。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象(java万物皆对象的特性)。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。数据流是一串连续不断的数据的集合,数据写入程序可以是一段一段地向数据流管道中写入数据 ...
2018-11-03 09:40:03 304
原创 java复习笔记5--java8新特性之流式编程
什么是流式编程对于java来说,我们最常用的面向对象编程属于命令式编程(Imperative Programming)这种编程范式。常见的编程范式还有逻辑式编程(Logic Programming),函数式编程(Functional Programming)。函数式编程java8也导入了,结合 Lambda 表达式,对于函数式接口的实现和使用变得灵活和简介了。关于函数式接口以及Lambda表达式...
2018-10-29 16:18:33 11378 6
原创 java复习笔记4--SpringCloud系列二:五大神兽之Eureka
前面两天介绍了SpringCloud的基础知识,以及窥探了一下加载流程,整个代码还是很长并且晦涩的,一定要多debug去跟进,看每个对象何时创建和赋值,一步步跟着走,这样才能对整个流程有一个很好的了解。这也是我们去阅读所有的开源框架和组件的源码的方法。今天,我们开始研读SpringCloud集成的组件,结合代码和实际项目中的用途,来了解SpringCloud为何可以实现分布式的服务架构。就像前面...
2018-10-26 15:50:39 552
原创 java复习笔记2--SpringCloud系列一:微服务启动原理探索
微服务架构的趋势随着数据量的不断增大,大数据时代的到来,互联网技术的不断发展和变革,微服务架构和云服务平台以及大数据成为了时下最热门的话题。现在,比较流行的微服务框架也有很多, 比如阿里的Dubbo,基于soringBoot的SpringCloud,Apache的thrift,google的Grpc,这些都提供了很多高并发以及负载均衡等的一系列的解决方案。而我们今天的主角,就是热度最高的Spri...
2018-10-24 17:16:59 1788
原创 java复习笔记1-HTTP请求总结分享
年底了,最近开始备战之后的面试之旅,所以开一个博客,权当写日记,记录一下每天复习的进度,以此来激励自己,希望明年能够找到一个合适的工作,有兴趣的it有,也可以指出总结的不对的地方,一起探讨!今天,大概看了一下很多人共享的面试经验,http请求基本都会有被问到,自己思索了一下,发现也有很多回答不上来,所以特意去温习和巩固了一下。主要从以下五个方面进行温习:1.什么是HTTP请求?通俗来讲,他就...
2018-10-23 17:23:02 166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人