自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

义笔记

原创文章

  • 博客(26)
  • 资源 (6)
  • 收藏
  • 关注

原创 7.kafka幂等性实现

7.kafka幂等性实现1.原理阶段在 0.11.0.0 之前的版本中, 如果 producer 没有收到表明消息已经被提交的响应, 那么 producer 除了将消息重传之外别无选择,这里提供的是at-least-once 的消息交付语义,因为如果最初的请求事实上执行成功了,那么重传过程中该消息就会被再次写入到 log 当中,从 0.11.0.0 版本开始,Kafka producer新增了幂等性的传递选项,该选项保证重传不会在 log 中产生重复条目以上内容是kafka官网描述的内容,为了实现

2021-07-13 19:56:15 6616 6

原创 6.kafka的Log存储原理解析

6.kafka的Log存储原理解析从「kafka源码分析」kafka基础知识介绍中,我们知道了kafka是如何实现批量发送消息的,但是发送的消息之后到了哪里,怎么存储,怎么读取我们还是一头雾水,这个章节我们从消息发送到Broker开始出发。1.获取topic的etadata信息,检测topic是否可用2.key、value序列化3.获取partition的值(可以重写partition()方法,默认采用hash取余的方式获取)4.达到batch.size大小,唤起sender线程去发送Recor

2021-07-08 20:35:11 7257 6

原创 5.Kafka客户端事务原理

kafka 客户端事务实现原理kafka事务在流处理中应用很广泛,比如原子性的读取消息,立即发送消息,如果中途出现错误,支持会滚操作。这里会讲解一下Kafka事务是如何实现的。Producer顶层实现事务的客户端中,只能是Producer(KafkaProducer的顶层实现)public interface Producer<K, V> extends Closeable { //事务初始化,包括申请 producer id void initTransactions(

2021-06-25 01:37:05 6199 4

原创 4.Sender#run源码分析

typora-root-url: ./2.producer设计分析typora-copy-images-to: ./2.producer设计分析4.Sender#run源码分析上节咱们讲解了RecordAccumulator收集器再收集消息的过程,咱们整体回顾一下:生产者发送的消息现在客户端缓存到RecordAccumulator.batches中,等到一定时机再由发送线程Sender批量的写入到Kafka集群中,生产者每生产一条消息,就向batches中追加一条消息,追加方法的返回值表示批记录.

2021-03-03 13:59:02 6378

原创 3.Producer设计分析之RecordAccumulator

typora-root-url: ./2.producer设计分析typora-copy-images-to: ./2.producer设计分析2.Producer设计分析之RecordAccumulator上节讲解了大部分kafka的实现原理,后续我们会逐步深入到kafka源码中体验实现细节,如果分析的有问题可以在评论区进行讨论.类图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SAOlZVXn-1612194471627)(/image-2021020120.

2021-02-01 23:50:38 6362 5

原创 2.RecordAccumulator之BufferPool设计

typora-root-url: ./2.producer设计分析typora-copy-images-to: ./2.producer设计分析RecordAccumulator之BufferPool设计上节我们讲解了kafka基本概念已经部分原理,之后我们将要从Producer->Brokers->Consumer分别进行分析,Producer首先要讲解的就是RecordAccumulator是如何实现队列,并对消息进行缓存的.本节我们先了解BufferPool是如何分配资源的.B.

2021-01-19 01:19:53 6442

原创 1.kafka基础知识介绍

1.「kafka源码分析」kafka基础知识介绍kafka是一个分布式流处理平台,具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。那这意味着什么呢?我们知道流处理平台又以下三种特性:1.可以让你发布和订阅的流式记录,这一方面与消息队列类似.2.可以存储流式的记录,并且又较高的可用性.3.可以在流式记录产生时就进行处理(实时性)Kafka适合什么样的场景呢?熟悉它的都知道,可以采用kafka做消

2021-01-13 20:41:56 6901

原创 2.HotSpot如何加载并解析class文件

2.HotSpot如何加载并解析class文件2.1前言class文件在JVM整个生命周期包括了加载、验证、准备、解析、初始化、使用、卸载等7个阶段,Java层面通过ClassLoader.loadClass方法可以手动加载一个java类到虚拟机中,并返回Class类型的引用。2.2 类如何加载第一步:双亲委派加载类,java顶层实现protected Class<?> loadClass(String name, boolean resolve) throws Cla

2020-06-11 15:02:08 7060

原创 1.深入JVM源码,查看如何实现wait(),notify()方法

1.深入JVM源码,查看如何实现wait()在java中,每个对象都是Object的子类,java中每个对象都是"锁",但是这是如何实现的呢,今天我们看看JVM层面如何实现Object.wait/notify方法的。在讲这个之前我们需要了解一下java的对象在内存中的布局情况;1.对象头:下面重点讲解2.实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐3.填充数据:由于虚拟机要求对象起始地址必须是8字节的整数倍。填充数据不是必须存在的

2020-06-08 17:52:24 7328 3

原创 JVM-class文件详解(官方直译)含脑图

获取脑图方式请看最下面!JVM类文件(Class文件)结构ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2

2020-05-22 15:27:35 6752 2

原创 Mysql最全笔记包含脑图

获取脑图方式请看最下面!Mysql1.mysql语句执行流程查询语句1.通信协议1.通信类型1.同步通信:依赖于被调用方,受限与被调用方的性能,也就是说线程会阻塞,等待数据库的返回。2.异步通信:可以避免应用阻塞等待,但是不能节省SQL执行时间;如果并发过高,每个SQL执行都要建立一个连接,会给服务器造成很大压力,如果要异步,必须要考虑连接池。2.连接方式1.长连接(默认):2.短连接:3.查询连接相关配置1.wait_timeout 非交互式超时时间

2020-05-13 00:04:04 8752 20

原创 线程池的实现原理,绝对简单易懂

#线程池实现原理##1.线程池简介为什么要构建线程池?1.复用已有的资源(减少cpu时间片的切换)2.控制现场资源总数优势:1.限流->控制线程数量2.降低频繁创建和销毁线程。(对于任务的响应速度更快,可以直接从线程池中取,不需要创建线程)##2.Java中提供的线程池Executors,线程池工具类 。//主要都是ThreadPoolExecutor 构造的线程池//...

2019-11-24 17:05:40 6821

原创 ConcurrentHashMap源码详细注释

最近在重新学习ConcurrentHashMap记录。

2024-08-16 14:32:10 168

原创 kafka配置脑图

由于图片太大,关注公众号,回复“kakfa配置” 获得脑图

2021-06-28 16:53:57 6278

原创 ApplicationContextInitializer的三种使用方法

ApplicationContextInitializer的三种使用方法概述:ApplicationContextInitializer是在springboot启动过程(refresh方法前)调用,主要是在ApplicationContextInitializer中initialize方法中拉起了ConfigurationClassPostProcessor这个类(我在springboot启动流程中有描述),通过这个processor实现了beandefinition。言归正传,ApplicationC

2021-06-28 16:14:38 7028 1

原创 tpcds数据压测

1.tpcds数据压测(支持关系数据库)TPC资源准备这个部分主要介绍如何从TPC上获得测试所需资源,入1GB数据、500GB数据的生成,建表语句和sql语句的生成等等。1.官网下载tpc-ds压缩包参考 git clone https://github.com/gregrahn/tpcds-kit.git2.在tools文件中执行make[root@node1tpc]# cd /tpcds-kit/tools[root@node1 tools]# make注意:若没有安装gcc会报错!3

2021-06-28 16:09:17 7824

原创 Docker背后的内核知识之资源隔离

Docker 背后的内核知识—namespace 资源隔离当谈论Docker时,常常会聊到Docker的实现方式.Docker容器本质上是宿主机上的进程.Docker通过namespace实现了资源隔离,通过cgroups实现了资源现实,通过写时复制机制(copy-on-write)实现了高效的文件操作.但当进一步什么namespace喝cgroups等技术细节,大部分开发者都会感到茫然无措.接下来我们进入namespace和cgroup的技术细节中.Docker大热之后,热衷技术的开发者就会思考,想要

2021-06-28 16:02:01 5641 1

原创 分布式事务6种解决方案(超详细)

typora-root-url: ./分布式事务图片typora-copy-images-to: ./分布式事务图片分布式事务六种解决方案前言事务想必大家并不陌生,严格意义上讲事务应该具备ACID,目前常见的分布式事务解决方案包括2PC、3PC、TCC、本地消息表、消息事物、最大努力通知等。ACID原子性:一个事物内的所有操作都要全执行或者都不执行一致性:事务前后数据的完整性必须保持一致隔离性:多个事务并发执行,不能被其他事物的操作所干扰持久性:事务一旦提交,它的改变应该是持久性的

2021-06-19 15:25:27 18300

原创 kafka生产者架构

kafka生产者的结构

2021-03-09 19:28:16 6118

原创 scala学习笔记

scala学习笔记1.数据类型数据类型描述Byte8位有符号补码整数。数值区间为 -128 到 127Short16位有符号补码整数。数值区间为 -32768 到 32767Int32位有符号补码整数。数值区间为 -2147483648 到 2147483647Long64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807Float32 位, IEEE 754 标准的单精度浮点数D

2020-06-08 19:57:56 256

原创 Java导出Excel表格

基本操作步骤 一个Excel文件对应一个workbook,一个workbook对应多个sheet,一个sheet由多行和列组成 (raw,cell),为们用poi要导出一个Excel表格的顺序应该是: 1.用HSSFWorkbook 打开或者创建Excel文件对象 2.用HSSFWorkbook对象返回或者创建Sheet对象 3.用Sheet对象返回行对象,用行对...

2018-09-07 11:23:38 6454

转载 MySQL企业常用集群解决方案

mysql集群架构图片1、mysql企业常用集群架构在中小型互联网的企业中。mysql的集群一般就是上图的架构。WEB节点读取数据库的时候读取dbproxy服务器。dbproxy服务器通过对SQL语句的判断来进行数据库的读写分离。读请求负载到从库(也可以把主库加上),写请求写主库。这里的dbproxy是数据库集群的唯一出口所以也需要做高可用。drproxy是数据库读写分离的常用...

2018-08-30 10:31:36 14460 1

转载 EL表达式中获取 list集合长度

在jsp页面中不能通过${list.size}取列表长度,而是 &lt;%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%&gt; &lt;%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%&gt; list的长度是:${fn:le...

2018-05-13 15:21:30 10219 1

原创 Ajax+Servlet:Servlet无法请求响应或重定位。

今天在做项目的时候,发现了一个问题,在使用ajax与servlet通信的时候,servlet判断成功无法跳转到指定的页面。 通过查资料,我发现servlet 不管用请求转发还是重定向 都没有任何效果这就是因为 servlet拿到的是ajax发送过来的request,也就是说这个请求不是浏览器请求的而是ajax请求的,所以 servlet对request进行请求转发或重定向时都不能进行跳转,...

2018-04-27 14:25:20 6661

原创 使用mysql数据库时添加汉字内容会出现乱码,解决方案

今天学习mysql数据库时,添加了一个中文的内容出现了乱码的状况,以下是我的解决方案。创建数据库的时候可以用create database databasename character set utf8; 或者可以直接修改已经存在的数据库alert database databasename character set utf8;...

2018-04-03 16:26:20 6115

原创 java中所有关键字

零、关键字一览:abstract continue for new switchassert*** default goto* package synchronizedboolean do if private thisbreak double implements protected throwbyte else import public throwscas...

2018-04-03 16:06:56 7925

java餐厅管理系统

本系统采用客户端与服务器,利用网络编程进行多线程连接,分为高级管理员与管理员,可以分别进行不同的功能, 高级管理员具有餐品管理、用户管理、员工管理、今日账单统计、导入Excel到数据库。。注意: excel 必须放在D盘下 ,如需要可以自行更改。管理员可以点餐、退单、会员管理等。

2018-04-17

mysql连接数据库jar包

这个是java连接mysql所需的jar包,只有在Java build path中添加了mysql-connector 才能获取驱动,连接mysql数据库

2018-04-09

Ubuntu_Linux从入门到精通

整本书讲解了Ubuntu的发展史以及安装详解、系统管理、网络管理、服务器管理等

2018-04-09

MVC思想的学生成绩管理系统

实打实啥地方阿萨德富士达发送到富士达发送到发送到发到发到发

2018-04-09

java网络编程TCP 多线程连接例子

TCP网络编程 根据文件内容读写, 支持多线程。包括客户端和服务端

2018-04-03

空空如也

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

TA关注的人

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