自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kafka客户端性能参数调优

max.poll.records减少。

2024-04-10 10:59:48 550

原创 Kafka 生产者缓存

按照上面的使用方式,如果在多线程的环境下,可能会出现一个producer单个sender线程会有性能瓶颈(单发送线程),可能导致,导致入大于出,最终缓存堆积。每次调用produce函数时,都会新建一个producer,每次都需要进行新建与broker连接->获取分区元数据->生产消息的过程,存在性能瓶颈。上述示例中,producerLru的key可以是topic名称,如果是多个用户场景下,也可以以用户名作为key,可以根据实际业务场景进行调整。

2024-01-31 09:56:11 548

原创 Kafka常见参数

参数名含义默认值解释max.request.size生产端:最大请求字节大小1MB如果生产请求消息体大小大于该值,客户端生产时会报错max.poll.records消费端:一次poll()请求最大拉取消息条数500条如果单条消息处理时间长,需要减少该参数值,反之增加fetch.min.bytes消费端:一次poll()请求最小返回字节大小1增加该值可以提高吞吐量,同时也会产生一定延迟fetch.max.bytes消费端:一次poll()请求最大返

2024-01-30 17:20:24 719

原创 Kafka分数数量选择最佳实践

分区选择最佳实践

2024-01-26 11:27:42 143 1

原创 Kafka request.log中RequestQueueTimeMs、LocalTimeMs、RemoteTimeMs、ThrottleTimeMs、含义

要理解各个延时项的含义,必须从Kafka收到TCP请求、处理请求到返回TCP包整个流程开始梳理。

2023-07-10 01:19:37 1129

转载 深入理解Kafka内部存储机制:段、滚动及老化

理解broker如何在磁盘上存储分区和相应的记录是非常重要的。配置参数可能对你的数据保留多长时间有着令人惊讶的大影响。了解这些参数以及你如何调整它们,将使你在处理数据时有更多的控制权。

2023-06-24 21:37:47 573

原创 Kafka源码解析之索引

Kafka有两种类型的索引:构建索引时机由log.index.interval.bytes 参数控制,默认4KB构建一条索引为什么默认值是4kb呢?这里认为与基于磁盘的读写单位是 block(一般大小为 4KB)还有内存管理与分配的最小单位是4kb有关在源码的LogSegment.append方法中,会对当前segement写入大小与上次构建索引时大小差值进行判断,如果超过log.index.interval.bytes,会构建timeIndex以及offsetIndex索引AbstractIndexAb

2023-06-19 00:29:32 1771

原创 Kafka分区消息积压排查指南

如果指定了消息key,那么消息会指定生产到hash(key)的分区中。消息生产是否指定key?

2023-06-04 14:32:50 1740

原创 Kafka重平衡rebalance是什么

Kafka的心跳线程是consumer与broker之间的心跳检查,如果消费者发现和broker之间的心跳超过了session.timeout.ms,那么消费者会阻塞并且进行重试。如果两次拉取消息的时间超过了max.poll.interval.ms , 那么即使消费者与客户端的心跳线程仍在保持,但是broker会认为客户端处于livelock状态,也会触发rebalance。原先的三项工作被细化成了九项工作,这样每个人就都有活干了,但是可能有的人要承担额外的工作(平均分配不了)

2023-06-04 13:57:20 619

转载 进程和线程的概念、区别及进程线程间通信

进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的?基本概念:进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内

2022-01-18 15:56:31 204 1

原创 多线程交替打印的四种方法

多线程交替打印的四种方法方法一: Wait/Notifypublic class Print { boolean currentA = false; public synchronized void printA() { if (!currentA) { try { System.out.println("wait here"); this.wait(); }

2022-01-12 16:47:00 4303 3

原创 联合索引笔记

联合索引与最左匹配原则最左前缀匹配原则:在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。要想理解联合索引的最左匹配原则,先来理解下索引的底层原理。索引的底层是一颗B+树,那么联合索引的底层也就是一颗B+树,只不过联合索引的B+树节点中存储的是键值。由于构建一棵B+树只能根据一个值来确定索引关系,所以数据库依赖联合索引最左的字段来构建。举例:创建一个(a,b)的联合索引,那么它的索引树就是下图的样子。可以看到a的值是有顺序的,1,1,2,2,3

2021-08-17 16:31:30 216

原创 操作系统之什么是中断?

什么是中断?​ 在学习操作系统中,经常性的会看到中断这个概念,最典型的就是汇编代码中的int命令。​ 用一个比较通俗的概念来说,就是计算机会连接许多外接设备,包括磁盘、显示器、键盘鼠标等等,而如何处理这些输入呢?对于一个处理器来讲,程序运行的过程是一个不断取指执行的过程。如何响应设备也就是常说的I/O输入呢?一种简单的办法就是当我们有数据输入时,想处理器提出请求,处理器过来处理我们的输入,在回去执行原来的程序代码,这样的一个过程就叫做中断(Interrupt)。​ 如果同时有多个设备提出请求,那么CP

2021-08-07 15:53:22 2014

原创 JVM常用参数

JVM参数笔记常用JDK参数表含义解释java -Xss128k -Xmx3550m -Xms3550m -Xmn2g-Xmx3550m:设置JVM最大可用内存3550M-Xms3550m:设置JVM最小内存为3550m这里有个问题,为什么一般将最大可用内存与最小可用内存设置为一样呢?因为可以防止GC后内存伸缩引起的性能问题-Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代+年老代+持久代(JDK8以后)。持久代固定大小64m,增大年轻代=减少年轻代-Xss128k:设

2021-08-06 18:15:18 216

原创 AQS源码阅读与理解

什么是AQSProvides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on first-in-first-out (FIFO) wait queues. This class is designed to be a useful basis for most kinds of synchronizers that rely on a

2021-08-06 15:24:36 139

原创 Java与Redis中的位图(BitSet)

Java与Redis中的位图(BitSet)什么是位图?位图(bitmap)是一种非常常用的结构,在索引,数据压缩等方面有广泛应用位图使用字节来存储数据。在java中一个Long占8个字节,一个字节(Byte)占用8个bit,因此一个Long型数据占用64个bit长度。如果让每一个0/1比特位都作为代表一个数据是否存在的boolean值,那么一个long整形数据就可以存储64个数据,存储的效率非常高。首先来看一下Java源码中位图实现(bitset)对于位图数据结构的描述This class

2021-07-23 14:47:28 1020

原创 二叉树题目归纳:首个共同祖先与后继者

二叉树题目归纳后继者思路:思路比较简单,二叉树中序遍历的一道题首先知道二叉树左子树值小于根结点值,右子树值大于根结点值。如果后继结点值大于根结点值,那么在右子树中递归查找。否则在左子树中,那么此时后继结点即为根结点。如果在右子树中,那么后继结点则为递归查找到的结点。注意第一个if包含了等于的情况,即找到了改结点后继续在右子树中查找。代码class Solution { public TreeNode inorderSuccessor(TreeNode root, TreeNode p)

2021-07-19 00:25:00 85

原创 对于netty零拷贝的理解

一直以来

2021-07-17 22:21:30 229

原创 count(1),count(主键)与count*的区别

2021-07-16 18:05:18 213

原创 Explain用法笔记

Explain用法笔记在官方文档中,对于explain的作用是这么解释的:explain语句提供了MYSQL如何执行语句的信息。explain可以与select、delete、insert、replace与update语句共同使用。它返回explain select count(*)from equity_stock对于显示的结果列进行解释字段名称作用table表名称type连接类型key使用到的索引名称key_len索引长度ref索引的

2021-06-23 14:31:10 273

转载 MYSQL Nested Loop Join

https://www.jianshu.com/p/741a6d4efc44

2021-06-23 10:53:50 209

转载 OOM和StackOverFlow的区别

原文链接:OOM和StackOverFlow的区别

2021-05-13 23:39:37 521

原创 腾讯字节暑期实习面试感悟

​腾讯字节暑期实习面试感悟最近面试了腾讯和字节的暑期实习(后端),对自己的情况大概做了一下梳理,同时也制定了一下下阶段的学习目标博主的背景是湖南大学,今年9月份要去香港读一年的硕士,主要的目标还是硕士毕业后能够进大厂搬砖。首先的话感觉还是基础考察的比较多、比较深。而且有一些点我还没有复习到,例如像比较难的数据库系统、操作系统等着两门课还是复习得不够。还有一点就是算法题目刷的还不够多(现在只刷了100道左右,感觉还是不改头)、有些算法题没能够写出来,面试官给了提示之后也没能够完全ac,这一点应.

2021-04-28 15:11:23 416

原创 字节跳动java后端一面面经(头条/西瓜视频)

字节跳动java后端一面面经面试时间:4月25日 时长:1小时面试官人挺不错的,感觉挺有经验的,但是感觉技术栈应该不是javatcp连接如何保证高可用回答:三次握手四次挥手、校验和、滑动窗口、消息重传、阻塞控制Spring的aop怎么实现的设计模式中的代理模式,两种实现方法JDK反射以及动态代理Spring的aop怎么实现的hashmap并发情况下有什么问题回答循环链表redis sortedset底层实现 答跳表linux 如果删除正在写入的文件会出现什么?没回答出来怎么做?使

2021-04-25 21:32:07 450

转载 线程池的基本原理,看完就懂了

线程池的基本原理,看完就懂了在网上看到一篇不错的线程池记录文章,在这里转载记录一下原博客为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控ThreadPoolExecutor线程池类参数详解参数说明corePoolSize核

2021-04-22 19:08:43 117

原创 vivo春招java一面面经

vivo春招java一面面经TCP与UDP区别 ☑️OSI五层模型 ☑️JVM内存划分 ☑️new一个对象发生了什么(创建对象过程)☑️.class文件是放在那的(方法区)☑️OOM 发生场景和out of memory ✖️操作系统内存管理 ✖️数据库数据放在哪里(b+树的结构,为什么用b+树)Spring IOC☑️ (如何创建bean,如何启动)hashmap 为什么会产生死锁☑️(如何解决)讲到了concurrentHashmap,jdk1.8的优化jdk1.8 锁粒度 s

2021-04-17 01:00:52 297

原创 以Integer为例分析装箱拆箱

以Integer为例分析装箱拆箱拆箱与装箱是java面试题中常见题型,今天来分析一下拆箱与装箱以及对java基本数据类型进行复习八大基本数据类型基本类型包装类shortShortintIntegerfloatFloatcharCharacterbyteBytelongLongdoubleDoubleboolBoolean 装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型

2021-04-16 16:05:50 142 1

原创 StringBuilder与StringBuffer 这么答一定没错

StringBuilder与StringBuffer引言Stringbuffer与StringBuider一直是面试中经常考察的一道题目,之前也经常复习但是常常搞混,但是个人经验通过阅读源码的方式来加深对于题目的理解往往会让你对这两个类记忆更加深刻,同时也可以让你在回答面试问题的时候让面试官对你刮目相看首先看到两个类图的结构可以看到两个类都实现了Comparable、Serializable接口、AbstractStringBuilder接口首先看到AbstractStringBuil.

2021-04-16 15:09:23 78 1

原创 Java文件输入输出流及标准I/O流类知识总结

Java文件输入输出流及标准I/O流类知识总结前几天参加了某企业的笔试,最后一道笔试题的题目大概是这样:给定文件名filename以及一个字符串str,要求从文件中搜索该字符串,并且输出该字符串所在文件中的行数背景这道题考察的是对于文件输入输出流以及字符串的一道基本题目,可以算是比较基本的题目,但是由于太久没有复习,结果写的不是特别好,所以今天对文件输入输出流做一个复习和总结。这是一张网上找的一张关于IO流操作的图片,这里我们可以看到I/O流分为字节流和字符流,从更加细致的划分,我们应该

2021-04-16 00:03:41 212

原创 一篇文章让你搞懂数据库索引

一篇文章让你搞懂数据库索引文章目录一篇文章让你搞懂数据库索引数据在磁盘的存储结构什么是索引?索引的优点动态索引B树B树的操作B+树B+树的操作使用B+树与B树相比有什么好处Mysql的索引ISAM(Index Sequential Access Method)(**不是MyIsam**)myISAMInnodb索引索引的分类聚集索引非聚集索引覆盖索引主键索引二级索引全文索引哈希索引联合索引(多列索引)最左匹配规则InnoDb索引结构注意点​ 索引往往是数据库面试题当中会提到的重点问题,这里对数据库索引的

2021-04-14 18:17:06 232

原创 SpringSecurity问题分析之AccessDeniedException: Access is denied 源码分析

问题描述org.springframework.security.access.AccessDeniedException: Access is denied2021-04-10 16:17:01.950 DEBUG [authorization-server,8c5f48650de0f659,83580d93d6acb342,false] 7328 — [nio-8000-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking matc

2021-04-10 17:36:37 18513 1

原创 netty+websocket实现给指定用户发消息(指定id)+源码分析

Introduction在使用netty向指定客户端发送消息的时候,应该需要怎么做呢?方案首先我们需要认识Netty的主要构件:Channel回调Future事件和ChannelHandle在不考虑分布式netty的情况下,我们知道netty的处理模型是存在一组IO线程,去处理IO事件,如read,connect,write等等,对于服务端接收到的每个channel,都会将该channel映射到一条IO线程。当一个channel被建立之后,需要将其初始化,包含给他创建pipleli

2021-04-08 13:58:27 3707 5

原创 @Target、@Retention、@Documented注解简介

源码样例:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface MthCache {String key();}@Target 注解功能:指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里。ElementType的取值包含以下几种:TYPE:类,接口或者枚举FIELD:域,包含枚举常量METHOD:方法PARAMETER:参数

2020-12-10 14:24:47 635

原创 Apache Benchmark测试结果数据解析

简介Apache Benchmark简称ab,是Apache自带的性能测试工具概念吞吐率(Requests per second)概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests并发连接数(The

2020-11-24 10:56:04 2298

原创 Controller接收参数的方式

Controller接收参数的方式GET请求采用query方式代码形式:@GetMapping("/demo/{id}")public Enterprise selectOne(@RequestParams Integer id) { return this.enterpriseService.queryById(id); }POST请求通常query参数是GET请求时常用的携带参数方式。但是POST请求也要携带query类型的参数,可以把它拼接到url里,spri

2020-11-19 14:53:38 5185

原创 SSM+Swagger问题解决 Can‘t read swagger JSON from http://localhost:8080/xxx/swagger/api-docs

Can’t read swagger JSON最近在做一个SpringMVC项目的时候想要集成一下Swagger,于是按照步骤加入了maven依赖,配置xml文件等,结果最后出现了Can't read swagger JSON from http://localhost:8080/xxx/swagger/api-docs最终解决方法:在web.xml里加入映射,代码如下: <servlet-mapping> <servlet-name>spring</servl

2020-11-06 23:46:58 831

原创 湖南大学基于SMTP和POP3的邮件系统课程设计

运用的技术框架

2020-11-06 23:15:30 10510 14

原创 JAVA基础知识之File类

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2020-11-06 22:18:16 196

原创 数据库设计之数据字典的使用与设计

如何使用数据字典使用场景 :在平时开发的过程中,特别是在遇到表单时候,我们经常需要为前端提供一些下拉选项的信息,这时候我们需要为前端提供下拉菜单的信息,让前端进行渲染。同时我们在数据库中存储的只可能是对应的编码,例子如下:这里我们可以看到在搜索栏中,有一个下拉菜单。如果前端直接将value值写死在前端代码中,那么就破坏了低耦合原则,如果未来清查状态有增加或者管理员想要修改,那么需要修改前端代码,会带来非常大的麻烦解决方案 :简单解决:对字段值比较稳定,不存在比较大的变动,同时对应的分

2020-11-06 13:07:06 35669 5

原创 leetcode——212. 单词搜索 II

参考资料:leetcode程序中用了递归所以导致内存消耗比较大,以后应该尽量使用非递归程序。思路:过段时间在写,程序还可以再优化利用剪枝 public List<String> findWords(char[][] board, String[] words) { if(words.length==0){ return new ArrayList<>(); } TrieNode root

2020-09-01 16:41:42 94

空空如也

空空如也

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

TA关注的人

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