自定义博客皮肤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)
  • 收藏
  • 关注

原创 Java版的XIRR(内部收益率)实现

XIRR 函数用来基于指定的一系列可能不规则分布的现金流,计算投资的内部收益率。

2023-12-26 16:32:18 2502 2

原创 二、BIO、NIO、直接内存与零拷贝

RPC(Remote Procedure Call-远程过程调用),她是一种通过网络从远程计算机程序上请求服务,而不需要连接底层网络的技术;NIO库是JDK1.4中引入的。NIO弥补了原来BIO的不足,它在标准Java代码中提供了高速的、面向块的I/O。NIO被称为no-blacking io;

2024-07-18 17:29:23 899

原创 一、网络通信和tcp协议

简单类说就是利用通信线路实现计算机和通信设备进行信息交互的系统;

2024-07-17 16:47:55 891

原创 分布式共识算法

使用场景:分布式事务特点:强一致性、中心化的原子提交协议过程:准备阶段、提交阶段角色:协调者、参与者缺点:同步阻塞:参与者事务资源被占用,协调者宕机没有发出提交指令;协调者需要等待所有参与者响应;数据不一致问题:部分参与者提交成功,部分失败;单点问题:协调者单点脑裂问题:多个协调者操作参与者造成数据不一致问题;性能问题:所有参与者都要提交成功才提交;

2024-04-24 16:03:13 612

原创 Redis-cluster集群架构

上述集群架构师一个由多个主从节点群组成的分布式服务器,具有复制、高可用和分片的特性。Redis集群不需要sentine哨兵也能完成节点移除和故障转移。官方文档称可以扩展上万个节点。推荐不超过1000个;从节点只担任备份的角色,不承担读写操作;二、集群原理Redis Cluster将所有数据划分为16384个slots(槽位),每个节点负责其中一部分槽位,采薇的信息存储在每个节点中;

2024-04-18 16:40:32 766

原创 Redis持久化、主从与哨兵集群架构

RDB持久化是将数据快照的二进制文件按照配置规则存储到dump.rdb时间范围内进行多少次修改后存储到dump.rdb如:save 60 1000 60秒内修改1000次则自动触发保存命令;子进程进行数据RDB快照持久化,此时主线程修改数据,这块数据会被复制一份生成副本,子进程会把这个副本数据写入RDB文件中;主线程仍然可以直接修改原来的数据;

2024-04-17 19:54:46 760

原创 SpringMvc执行流程源码解析

Spring web Mvc是基于ServletApi构建的原始Web模块,从一开始就包含在Spring框架中;最典型的MVc就是JSP+Servlet+javaBean的模式;弊端:1、xml下配置Servlet的映射非常麻烦,效率低;2、必须要继承父类,重写方法侵入性强;3、如果想在一个Servlet中处理同一个业务模块的功能分发给不同的方法进行处理非常麻烦;4、参数解析麻烦;单个参数->pojo对象,Json文本->pojo对象;5、数据响应麻烦;pojo->json。

2024-03-26 15:30:03 290

原创 Tomcat整体架构

开源的java web应用服务器,实现了java EE的部分技术规范,如 java servlet、javaServer Pages、 JavaWebSocket等;核心:http服务器+Servlet容器。

2024-03-22 23:15:11 1349 1

原创 Netty入门

1、eventloop:Netty Reactor 线程模型的核心处理引擎;(用于处理io时间的单线程执行器)2、EventLoopGroup: 就是一组 EventLoop ,它主要是来维护和管理 EventLoop,一般我们是不会直接使用 EventLoop 的,而是通过 EventLoopGroup 来使用它。3、Channel :客户端与服务端建立一个连接就会创建一个channel,近似于socket;三者之间的关系4、channelhandler:channer时间处理器。

2024-02-19 16:16:05 239 1

原创 从底层了解linux中的epoll

关注点在于调用方是否主动获取结果:调用方需要主动等待结果返回;:不需要主动等待结果返回,通过其它手段获取结果,如回调函数;:关注点是等待结果返回;阻塞:是指结果返回前,当前线程呗挂起,不做任何事;非阻塞:指结果返回前,线程可以做其它事情;(*好好品味上述描述):最常见模型,去买东西,东西卖完了,你在店里一直等待,不做任何事情(干等),等到有货位置;效率很低;:同步非阻塞可以抽象为轮训模式,去买东西,东西卖完了,不需要傻傻的等着,你可以去买奶茶,但这期间你需要时不时的去问老板东西到货了吗;

2024-01-30 18:15:00 1186 1

原创 BIO、NIO编程与直接内存、零拷贝

NIO是为了弥补BIO的不足,提供了高速的、面向块的I/O。NIO全程NO-Blocking io;Java NIO 和 IO 之间第一个最大的区别是,IO 是面向流的,NIO 是面向缓冲区的。Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。Java NIO 的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。

2024-01-29 18:16:06 879

原创 kafka(三)生产问题

a:acks=0: 表示producer不需要等待broker确认收到消息的回复就可以继续发送消息;性能高,但很容易丢失消息;b:acks=1: 表示producer只需要等待leader写入成功的回复消息就可以继续发送消息了,若果follower没有写入成功,leader宕机,则消息丢失;c:acks=-1或all: 这意味着leader需要等待所有备份(min.insync.replicas配置的备份个数)都成功写入日志,才会回复确认收到的消息,producer才会继续提交消息;

2024-01-24 17:09:52 2199

原创 Kafka(二)原理详解

在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。:leader副本出现故障时,选举新的leder;检测到某个分区的ISR发生变化时,通知所有borker更新元数据;分区数量发生变化时,通知其它节点感应到新分区;(*ISR,已与leader同步的副本的集合)集群启动时每个broker都会尝试在zookeeper上创建一个controller临时节点,zk会保证有且仅有一个创建成功;

2024-01-23 15:16:40 2593 1

原创 kafka(一)快速入门

kafka是一个分布式、支持分区、多副本,基于zookeeper协调的分布式消息系统;

2024-01-19 13:44:51 643

原创 ZAB最终一致性算法

对于一个分布式系统,不能同时满足以下三点一致性(Consistency):对某个指定的客户端来说,读操作保证能够返回最新的写操作结果。(服务A接收请求,将结果同步到服务B上,直到服务B给出正确的响应结果,才将结果返回给用户,服务A阻塞等待牺牲可用性)可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。(服务A接收请求处理后,服务B异步完成处理,提高系统性能)分区容错性(Partition Tolerance):当出现网络分区后,系统能够继续履行职责。

2024-01-17 16:46:32 1055

原创 Raft集群算法

多个节点存储数据存在数据不一致问题,在互联网应用中如何保证多个节点数据一直是很重要的问题。Raft与ZAB算法就是为了解决分布式存储一致性问题;

2024-01-15 17:02:48 950

原创 ElasticSearch(五)集群架构

特性:高可用 可扩展优势:提高系统可用性,部分节点停止服务整个集群不受影响存储可水平扩展一个集群可以有一个或者多个节点不同的集群通过不同的名字来区分,默认名字“elasticsearch“通过配置文件修改,或者在命令行中 -E cluster.name=es-cluster进行设定节点是一个Elasticsearch的实例本质上就是一个JAVA进程一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上只运行一个Elasticsearch实例。

2024-01-12 17:32:21 1279

原创 ElasticSearch(四)深入搜索查询

搜索的相关性算分,描述了一个文档和查询语句匹配成都;es 会对每个匹配条件的结果进行算分,打分的本质是排序;5之前采用TF-IDF,后面采用BM 25;(*注意:往往分词器分词的结果也会对得分产生影响,可以先看看分词的结果再去判断评分)

2024-01-12 14:28:38 988 1

原创 ElasticSearch(三)高级查询语法(DLS)

1、单词词典:记录所有文档单词,单词到倒排列表的关系;2、倒排列表:记录了单词对应的文档id;3、倒排索引项:a 文档id b 词频 c 位置(单词在文本中的位置)d 偏移:单词开始结束位置;

2024-01-10 17:14:39 987

原创 Elasitcsearch基本使用(二)

"number_of_replicas":副本数量。"number_of_shards":分片数量,注意*重复创建是删除旧的文档,创建新的文档(覆盖更新);局部更新:POST/索引名/_update/1。在有id的情况下雨put一样是覆盖更新操作;"name":"张三""name":"张三""name":"张三"POST支持没有id添加,自动生成id。GET/索引名/_search。PUT /索引名/_doc/1。POST/索引名/_doc/1。使用kibana操作es;并发场景下支持乐观锁更新;

2024-01-10 14:38:18 416

原创 ElasticSearch入门(一)

es是一个分布式、restful风格的搜索和数据分析引擎;

2024-01-10 10:43:15 389

原创 Zookeeper(三)应用场景

为分布式系统中各种API接口服务名称、链接地址,提供java命名和目录接口中的文件系统功能;借助于Zookeeper的树形分层结构就能提供分布式的API调用功能;例如Dubbl分布式框架就是应用了Zookeeper的实现的API目录;服务提供者在启动时,向Zookeeper上的指定节点/dubbo/servicename/providers/api路径;服务消费者启动时,订阅节点/dubbo/servicrname/providers/api路径获取服务者提供的api;

2024-01-03 17:48:56 454 1

原创 java线程池的实现原理与应用

线程池是一种基于池化思想管理的线程工具;

2024-01-03 16:32:17 941 1

原创 Zookeeper(二)集群

1、leader:领导者事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内的所有写操作,都要统一交给leader处理;leader需要决定编号、执行操作、这个过程称为事务;2、 Follower:跟随者处理客户端非实物请求,转发事务请求给leader想,leader选举;3、Obeserver:观察者(同步master数据,多数据备份)对于非实物请求可以独立处理,对于事务请求转发给leader;接收master更新信息,同步本地存储,不参与提交和选举投票;

2023-12-28 14:57:25 435

原创 IRR内部收益率的介绍

当我们知道利率以及两年后的终值时,去倒推本金,此时的本金便是现值;M:终值;r:利率。

2023-12-28 11:02:07 579

原创 Zookeeper(一)特性与节点数据

1、在分布式环境中,一致性是指数据在多个副本之间是否能够保持一直的特性;2、每次请求都能获得正确的响应,但不保证获取的数据为最新数据;3、分布式系统在遇到任何网络分区故障的时候,任然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障;这三个中最多只能同事满足两项,P是必须满足的,因此只能是CP(一致性)和AP;zookeeper保证的是CP,eureka实现的是AP;

2023-12-27 17:02:41 1367

空空如也

空空如也

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

TA关注的人

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