自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

0102的博客

专注于数据结构与算法,java基础,应用开发相关中间件Redis,zk等,微服务相关文章正在计划中。

  • 博客(190)
  • 资源 (21)
  • 收藏
  • 关注

原创 Elasticsearch写入原理与调优

ES的写入优化和其他数据库存储类似,就是避免直接对磁盘进行操作,通过加缓存的方式,如果加一层缓存不行,那么久多加一层缓存,通过backup文件追加写的方式来做crash-safe。第二步:node 4 通过文档id在路由表中的映射信息确定当前数据的位置为分片0,分片0的主分片位于node 5,将数据妆发到node5。Es会定期进行flush ,将缓存中的Segment写入到磁盘,写完后,会讲Segment索引标记为可用,所以写入到查询有1s延迟。第一步:客户端发起请求到node4的1分片。

2024-06-25 23:34:30 1293

原创 Apache Flink内存模型

如上图,Flink总内存(Total Process Memory)包含了Flink总内存(Total Flink Memory) 和JVM特定内存,Flink总内存又包括JVM堆内存(JVM Heap),托管内存(Managed Momory),直接内存(Direct Memory),下面我们分别介绍每一部分的功能以及Flink提供的参数配置。

2024-08-25 22:10:09 915

原创 Apache Flink细粒度资源管理原理

如上案例,Flink处理流转关系图中有两个128并发的Kafka Source和一个32并发的Redis ,上下两路数据处理路径,一条是两个Kafka Source经过Join以后在经过一些AGG聚合操作,最后将数据Sink到16并发的Kafka中;(主要是内存),比如,Redis需要将数据缓存到内存提高性能,聚合则需要大量的managed memory存储state,对于这两本了只要申请32 和16份资源,对其后需要128份,那么多余的slot中内存资源就浪费了。对于较重的资源消耗的算子,导致。

2024-08-18 13:18:52 892

原创 Apache Flink中TaskManager,SubTask,TaskSlot,并行度之间的关系

另外一个方面是在Flink中运行的task对CPU资源的占用不同,有CUP密集型task 操作和CPU非密集型task操作情况,例如在Flink集群中source和map操作只是读数据后转换,对CPU占用短,但是window这种穿口计算聚合操作设计大量数据计算,占用CPU资源长,这就导致运行时候source/map,sink操作非常快,window操作时间长,source/map对应的subtask会等待window对应的subtask执行,同样sink的对应的。Flink中哪些操作可以合并一起?

2024-08-11 23:56:43 924

原创 Apache Flink 任务提交模式

Application 模式与Per-job类似,只是不需要客户端,每个Application提交之后都启动一个JobManager,也就是创建一个集群,这个JobManager只为执行这一个Flink Application而存在,Application中的多个Job都会共用该集群, Application执行结束之后JobManager也就关闭了。缺点:每个作业都在客户端享集群JobManager提交,如果一个时间点大量提交Flink作业会造成客户端占有大量网络带宽,会加重客户端所在节点的资源消耗。

2024-07-21 22:17:26 927

原创 Apache Flink 运行时架构

TaskManager会提供JobManager从ResourceManager中申请和分配的Slot计算资源,JobMaster根据分配到的Slot计算资源将Task提交到TaskManager上运行。一个FLink集群中至少有一个TaskManager,在TaskManager中资源调度的最小单位是task slot,一个TaskManager中task Slot的数量决定了当前Taskmanager最高支持的兵法task个数,一个TaskSlot中可以执行多个算子。

2024-07-10 23:59:49 844

原创 Apache Flink核心特性&应用场景

Apache Flink是一个分布式处理引擎,用于处理 无边界数据流, 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行,并能以内存速度和任意规模进行计算如下Flink官网的一张图。

2024-07-08 23:15:51 847

原创 Interview preparation--Https 工作流程

Client将B 以及 A加密后的密文集 一起 发送给Service ,Service 用 私钥解密 B 得到A,利用A解密密文的到原文。Client持有公钥,Service 持有私钥,第三步开始Client 生成一个对称密钥A,用公钥加密A得到加密后的字符B。通过SSL证书,完成了公钥的安全获取,安全性由第三方保证。接下来就是走上一个步骤中说明的:对称加密和非对称加密结合使用过程。同样Service用A加密要传输的数据得到密文传输给Client用A解密得原文。总的来说,HTTPS实现如下图。

2024-07-02 23:26:08 868

原创 Interview preparation--Elasticsearch并发控制

每个索引文档都有一个版本号。默认情况下,使用从1 开始的内部版本控制,每次更新都会增加。可选操作是,版本号可以设置为外部(比如在数据库中维护)。提供的值必须大于或等于0 而且小于9.2e + 18 左右的数字长整型值。如果设置了version_type = external,在用外部版本类型时候,系统会检查传递给索引请求的版本号是否大于当前存储文档的版本。如果为真,文档将被索引并使用新的版本号。如果提供的值小于或等于存储文档的版本号,则会发生版本冲突,索引操作将失败。

2024-06-25 16:04:22 449

原创 Interview preparation--elasticSearch正排索引原理

倒排索引适用于确认 term 在哪些文档中, 正排索引正好相反适用于确认某个文档中存在哪些term正排索引 和 倒排索引都是在index-time时候 创建,存储位置都是在lucene文件中序列化到磁盘中doc values 使用非jvm heap,对gc友好。

2024-06-24 23:15:02 1020

原创 Interview preparation--elasticSearch倒排索引原理

第一点说明:以上查询语句,我们需要在product上建索引, MySql上使用的B+树,因为文本的信息量特别的大,导致所需要的节点就更多N个16KB(第三点说明:“小米 NFC 手机%” 去掉做匹配,走索引的方式,则会只查询"小米 NFC 手机"开头的,这样就会导致结果不准确。B树的每个节点都存放 索引 & 数据,数据遍布整个树结构,搜索可能在非叶子结点结束,最好情况是O(1)第二点说明:“%小米 NFC 手机%” 查询中用做匹配的方式去查询,会导致索引失效,这样导致全表扫描。

2024-06-23 11:11:21 707

原创 Interview preparation--elascitSearch深分页问题

【代码】Interview preparation--elascitSearch深分页问题。

2024-06-21 17:50:16 417

原创 Interview preparation--案例加密后数据的模糊查询

如果需要检索所有包含检索条件4个字符的数据比如:test,加密字符后通过 key like “%partial%” 查库。

2024-06-13 18:13:02 797

原创 Interview preparation--RabbitMQ

RabbitMQ没有直接支持延迟队列,而是通过死信队列实现,在死信队列中,可以为普通交换机绑定多个消息队列,假设绑定过期时间为5分钟,10分钟,30分钟,3个消息队列,然后为每一个对了设置一个DLX,为每一个DLX关联一个死信息队列,这样因为普通队列没有被消费,等指定时间后久会到DLX中,接着DLX中的绑定消费者消费这条消息,间接实现了延迟队列。RabbitMQ支持延迟消息,投递后到exchange之后,并不会立刻给消费者,而是指定时间之后给。

2024-06-07 23:30:32 893

原创 Interview preparation-- Feign源码分析

【代码】Interview preparation-- Feign源码分析。

2024-06-02 23:52:08 455 1

原创 Interview preparation-- mongodb

如果需要查询时效性,例如insert后立刻查询,选择 primary/primaryPreferred。如果是类似广播发布信息,比如上传图片后,全国各地每个地方都需要读:nearest。如果实效性不高,则可以从:secondary/sendaryPreferred。

2023-04-16 12:04:11 220 1

原创 Interview preparation -- 线上问题排查指令

【代码】Interview preparation -- 线上问题排查指令。

2023-04-04 16:48:43 178

原创 Interview preparation-- manager

书籍:-《管理学》:https://book.douban.com/subject/1012611/-《卓有成效的管理者》:https://book.douban.com/subject/25850098/-《人性的弱点》:https://book.douban.com/subject/1391399/课程和培训:Coursera:https://www.coursera.org/edX:https://www.edx.org/领英学习:https://www.linkedin.com/learn

2023-04-02 16:58:05 178

原创 Interview preparation--TCP

TCP头部信息关键信息:32位序列号:每个包中表示当前这个数据包的唯一值32为确认序列号:加入是k 目的主机返回的确认好,就是高速对方,我已经收到了你之前发送的序列号为k-1的消息ACK 标志:表示确认是否有效,带上ACK表示当前消息是确认报文段FIN:表示关闭请求的标志位SYN:表示建立请求的标示位TCP连接建立首先客户端,服务器TCP进程都处于关闭状态TCP服务器是被动等待的,因此服务端会进入监听状态客户端发送链接请求,链接请求标志位 SYN = 1 ,当前报文的32

2023-03-30 18:44:54 123

原创 Interview preparation--DNS & CDN

请求从客户端发出后,会先通过网络中的DNS才能找到对应的目的地,因为我们对IP地址等数字不敏感,无法很快的记住,因此我们需要一个类似www.baidu.com这种域名的方式找到我要访问的地址,因此就需要一个数据库用来存储www.baidu.com的IP地址信息。DNS查询过程解析过程:xxx.a.baidu.com。DNS的目的是将域名解析成IP地址,大型系统部署多个节点。

2023-03-29 00:05:18 115

原创 Interview preparation -- MQ

Kafka中是通过Zookeeper选举的出的Master/Slave,Zookeeper具备选举功能,选举机制的原理是少数服从多数,那么Zookeeper的选举机制必定由Zookeeper集群中多个实例共同完成,Zookeeper集群中多个实例必须相互通讯,如果实例太多,网络通讯就会变得非常复杂,并且zookeeper在自身master挂掉,发生选举master节点期间是不对外提供服务的,这样的话系统会变得非常复杂。RocketMQ中Topic是逻辑概念,队列(Queue)是物理概念,和Kafka很想。

2023-03-24 23:58:40 138

原创 Interview preparation -- MySql

其实用其中一个就行,但是因为try-cache语句对性能有一定的影响,我们通过BoomFilter拦截的方式让当天的exception流程降到最低,减少性能损耗,同时因为还存在补数据的问题,例如,昨天或者前天的数据存在一定的问题或者漏穿的问题,需要重新同步,因此在同步历史数据时候,还是需要通过try cache操作来完成update。当前值是4,但是在视图A,B,C中,分别记录的值是1,2,4,也就是同一个字段,在系统不同时间段可能存在N多个版本,这就是数据库的多版本并发控制(MVCC)

2023-03-22 19:04:41 131

原创 Interview preparation -- redis

Redis在执行bgsave的时候主线程的写操作还在进行中,此时,利用写时复制(Copy-On-Write)技术做到并行进行,当写发生,被写入的这块数据会被复制一份,fork线程操作复制数据写入RDB,主线程不影响。bloomFilter是基于BitMap实现的,当我们面对巨量数据时候,用普通的数据结构存储时候,会消耗很大的内存,例如,5千万用户的访问,我们对比集合类型和Bitmaps类型,加入用户id是Long,64位。文件事件处理器:服务器会为不同任务执行不同事件处理器,这些处理器是一个个不同的函数。

2023-03-21 17:45:07 82

原创 Interview preparation -- spring cloud seata

事物完成后释放锁等资源,删除日志。AT模式是一种无侵入的分布式事务解决方案,用户只需要关注自己的SQL,AT模式中用户的SQL就是第一阶段,Seata-AT模式会给你自动生成事务二阶段提交与回滚,是2PC的一个应用。一阶段:Seata拦截业务SQL,解析SQL,找到要更新的数据,记录Undo,然后执行业务SQL,在记录Redo,最后生成行锁,这些操作都是在本地数据库事务内完成。2PC即两阶段提交协议,是将整个事物流程分为两个阶段,P是指准备阶段,C是提交阶段。

2023-03-20 20:45:46 101

原创 Interview preparation -- spring cloud gateway

自定义Filter 用的才是最多的,需要实现Ordered,GlobalFilter。

2023-03-19 23:57:29 72

原创 Interview preparation -- spring-cloud-sentinel

下图是令牌桶案例,系统已一定速率(r token/sec)往固定容量的令牌桶中放入令牌,如果此时有客户端请求过来,则需要从令牌桶中拿到令牌以获得访问资格。令牌桶是对网络整体限制 + 速率限制的一个常用算法,对于每一个请求,都需要从令牌桶中获取一个令牌,如果没有获得令牌,则需要出发限流策略。令牌桶算法中,有两个关键值,桶容量,令牌添加速率,两个值都必须低于系统能承载的最大QPS,

2023-03-18 22:49:15 207

原创 Interview preparation--SpringCloudSentinel

Sentinel的设计中资源定义和 规则配置,还有流控算法三者是分开的,我们可以通过Sentinel api先定义好资源埋点,然后需要的时候我们在实时的增加上流控规则。这种方式极大的增加了Sentinel的灵活性。Sentinel是一个轻量级的流控架构,主要以流量为切入点,从流量控制,熔断,系统负载保护等多个维度来帮助用户保护服务的稳定性。与Hystrixx相比,Sentinel设计更简单,使用更方便灵活,能动态的修改限制规则。

2023-03-18 11:39:19 360

原创 Interview preparation -- java并发编程

AQS是AbstractQueuedSynchronizer抽象类,AQS是JUC包下的一个基础类,很多并发功能都是通过AQS实现的,比如ReentranLock,ThreadPoolExecutor,阻塞队列,CounDownLatch,Semaphore,CyclicBarrier等都是基于AQS实现的AQS内部关键属性如下下:} Node() {} Node() {

2023-03-15 23:34:38 201

原创 Interview preparation -- Nacos核心功能点源码分析

服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。

2023-03-14 10:50:29 255

原创 Interview preparation -- Spring Cloud Alibaba Nacos

​ CP 原则属于强一致性原则,要求所有节点可以查询的数据随时都要保持一直(同步中的数据不可查询),即:若干个节点形成一个逻辑的共享区域,某一个节点更新的数据都会立即同步到其他数据节点之中,当数据同步完成后才能返回成功的结果,但是在实际的运行过程中网络故障在所难免,如果此时若干个服务节点之间无法通讯时就会出现错误,从而牺牲了以可用性原则(A),例如关系型数据库中的事务。​ 分区容错性(Partition tolerance):在网络异常(光缆断裂、设备故障、宕机)的情况下,系统仍能提供正常的服务。

2023-03-13 16:02:50 61

原创 Interview preparation -- Spring AOP

ProxyFactoryBean是ProxyConfig的一个子类,ProxyConfig是一个数据的基础类,他为子类提供了配置属性的解析,一次来获取一个代理信息的基础数据,比如Adice ,PointCut,Advisor等信息在xml文件中的配置由他来载入。代理模式图解,代理对象通过持有被代理对象的引用,在执行具体方法的时候通过调用被持有代理对像的引用来完成被代理对象的方法,并且同时增加自己的增强方法,Spring AOP中的设计思想也是同样的。

2023-03-13 13:13:21 58

原创 Interview preparation -- SpringAop

在不修改原有代码,或者无法修改原有代码的情况下,增强对象功能,使用代理对象代替原来的对象去完成功能而达到扩展功能的目的。JDK动态代理的局限性一定要有接口和实现类的存在增强接口中定义的方法,实现类中其他和接口无关的方法是无法增强的只能读取到接口方法上的注解,不能读取到实现类方法上的注解总而言之,JDK动态代理只能和接口打交道,不能与具体实现类有交集,因为他并不知道所要代理的类是那个实现类。

2023-03-12 23:15:32 83

原创 Interview preparation -- spring bean生命周期

Spring bean生命周期

2023-03-10 15:15:36 76

原创 IM流程图

撒旦法

2023-03-10 14:47:54 114

原创 Interview preparation -- Spring-IOC容器初始化过程

利用AbstractApplicationContext 中对DefaultResourceLoader 类继承的getResource方法 对传入的Path进行解析,然后生成一个FileSystemResource对象并返回。如果是其他类型的ApplicationContext,就生成对应类型的Resource依据上一步骤得到的FileSystemResource,在BeanDefinitionReader 接口中定义了资源文件的读取固定模板方法。

2023-03-08 18:41:13 48

原创 JVM 类加载机制 - review

类加载的“加载”阶段,需要完成以下三件事情。

2023-03-06 18:35:32 49

原创 Interview preparation -- JVM性能优化-垃圾收集器

JVM性能优化-垃圾收集器

2023-03-03 15:37:11 154 1

原创 Interview preparation -- JVM性能优化-jvm参数,GC算法

引用计数算法:标记清除算法:复制算法:标记压缩算法:增量算法:分代收集。

2023-03-02 23:57:18 54

原创 Netty核心组件EventLoop源码解析

每次执行execute方法就会向队列中添加任务。当第一次添加时候就启动线程,执行run方法,run方法是EventLoop的核心实现,负责轮询获取事件,处理事件,执行队列中任务其中调用selector的select方法默认阻塞一秒,有定时任务就t+0.5,t是定时任务剩余时间,当执行execute方法时候,也就是添加任务的时候,唤醒selector,防止selector阻塞事件过长当selector返回的时候,会调用processSelectedKeys对selectKey进行处理。

2023-02-28 22:20:43 321

原创 Netty心跳(heartbeat)服务源码解析

IdleStateHandler实现心跳检测功能,当服务器和客户端没有任务读写,并且超过设置事件,会触发handler的userEentTriggered方法,用户可以在这个方法中实现自己的逻辑IdleStateHandler的实现基于EventLoop的定时任务,每次读写都会记录一个最后读/写事件,定时任务执行的时候,根据最后读写事件与间隔时间的差值来判断是否执行内部有3 个定时任务,分别对应读,写,读/写事件,通常我们监听读/写事件就足够。

2023-02-27 23:02:15 419

Flink架构原理,入门操作

Flink架构原理、Flink应用场景、Flink特点优势、Flink分布式集群企业级部署、Flink任务提交、高可用、并行度设置及参数配置、常用API、Flink窗口、Flink状态、FlinkTable、FlinkSQL、Flink复杂时间等一系列Flink热点技术。如果你在学习和工作中有实时业务处理场景,通过本课程学习,可以掌握如何使用Flink进行企业级开发,同时在市场竞争力上也胜人一筹。

2023-05-05

ClickHouse学习入门,快速上手

ClickHouse学习入门,快速上手 本课程包含大数据OLAP分析场景技术选择、ClickHouse优秀特性分析、ClickHouse分布式集群搭建及实战应用、库表引擎、ClickHouse重点MergeTree引擎、视图、SQL语法、API、ClickHouse与其他大数据分析框架整合、实时场景下ClickHouse应用等内容,从多方面、多角度为大家呈现ClickHouse的“惊艳”之处,让大家学习技术少走弯路,事倍功半。

2023-05-05

20201210技术分享--java动态追踪技术浅析.pptx

动态追踪技术分享ppt,给技术分享提供模板,java技术组内分享ppt,互联网技术,监控底层技术,Arths底层原理,BTrace实现原理

2020-12-10

京东微服务实践--杰夫服务框架.zip

JD微服务实践解析,已现有jd的微服务使用经历来写的一篇文,值得看

2019-07-02

设计模式分享PPT

设计模式分享ppt,需要做分享的可以参照,一定要五十个字吗

2019-07-02

人工智能时代,一本书读懂区块链金融.zip

详细的讲解了区块链金融,比特币,大数据,以及分布式账本技术对以后经济的影响

2019-07-02

Rxjava官网中文翻译

Rxjava响应式编程框架官网的翻译版本,对于初学者来说是比较有用的

2019-07-02

mysql_to_mongodb.py

构建可空速率将mysql中数据导入到mongodb中,脚本化运行,可以直接在服务器上跑

2019-07-02

kafka监控工具

kafka监控,可以监控各个节点以及推送到节点的信息,以及信息大小

2016-06-01

ibatis jar

ibatis 2.3.4.726 java的ibatis的jar包

2014-09-13

李兴华java实战经典pdf完整版

李兴华java实战开发经典,完整版,找了好久才找到。

2014-08-28

jsp获取文件完整路径

可以获取文件完整路径,不过要求环境是在windows下的google浏览器,应为不同浏览器,不同操作系统下获取文件路径方法不同,我没有找到通用的方法,因为浏览器处于安全考虑本身就禁止访问本地中的文件系统。

2014-08-28

jsp获取文件夹路径

获取文件夹路径,不是文件路径,但是这种方法需要设置安全等级,应为浏览器内核安全设置的时候是禁止范文文件夹路径的。

2014-08-27

jsp验证码提交实现

jsp验证码生成,提交拦截,jsp验证码生成,提交拦截,jsp验证码生成,提交拦截,jsp验证码生成,提交拦截,

2014-08-23

XQuery基本使用语法

jackrabbit站内搜索技术使用的基本语言,是基于xpath语言所演化过来的一种jackrabbit对站内信息进行索引的技术。

2014-08-15

jackrabbit jar包

jackrabbit开发用jar包,jackrabbit是基于Lucene的一种站内搜索技术,它用xml文件为他的元数据,自动穿件索引,使用xpath或者xquery的查询方法。

2014-08-15

留言板静态界面

留言板静态界面是做论坛卡发心目的中间步骤,有比较高鹗参考价值

2012-11-04

Java Web开发实战经典视频列表

Java Web开发实战经典视频列表包含了web开发的主要知识点的视屏名字可以参照这个进行视屏下载

2012-11-04

图书管理系统

c语言程序设计,使用文件以及指针使用了不是很复杂的存储在txt文件中

2012-04-16

空空如也

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

TA关注的人

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