首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户5744311的专栏

    2、leveldb设计原理--LSM

    概念 LSM(Log-Structured Merge Tree) 原理 特点 把随机写转化成顺序写,写入速度快; 读数据可能需多次磁盘IO; 数据操作流程 写数据 追加写WAL日志; 更新内存中的MemTable

    61020发布于 2021-03-21
  • 来自专栏Miguel三先生

    P2P担保类设计原理

    担保类产品业务模式流程图 场景 投资用户将资金投资给有借款需求者并获得一定的投资收益;投资本息有P2P网贷平台合作的担保公司提供全额担保,且借款需求者需要有足值抵押物作为抵押的一种担保借贷产品 特点 担保公司对 P2P平台的项目进行审核和担保,P2P给予担保公司一定的渠道费和担保费;P2P此时只充当平台中介的存在,不负责坏账,不承担资金风险 操作步骤 提交资料:借款需求者向P2P网贷平台提出借款申请,并提交相关资料 审核并发布借款信息:P2P平台进行严格审核,审核通过后将借款信息发布到平台上 战略合作:P2P平台挑选担保公司进行合作 担保物:担保公司为借款者提供担保的连带责任的服务 提供担保物:借款需求者提供担保物品 购买标的:投资者购买标的进行投资 业务合作:P2P网贷公司和第三方合作,由第三方提供资金的支付功能支持 按时还本付息:借款需求者通过第三方支付公司,向投资者还本付息 委托资金支付:第三方公司将投资者应得的本息定期支付给投资者

    79650发布于 2018-06-19
  • 来自专栏RocketMQ原理与应用

    RocketMQ原理2.源码设计简单分析一

    所以,启动NameServer的过程如下图示:2.NameServer启动时会解析哪些配置(1)什么是NamesrvController(2)NamesrvController是如何被创建出来的(3)NameServer (2)NamesrvStartup.start()方法的工作public class NamesrvStartup { ... (properties); MixAll.properties2Object(properties, brokerConfig); MixAll.properties2Object (2)为什么叫BrokerController下面介绍BrokerStartup、BrokerController和Broker之间的关系,以及为什么要这么设计。 但是毕竟中间件系统的架构设计思想和普通的Java Web业务系统还是不一样的,这两种Contorller还是存在区别。

    24010编辑于 2025-04-02
  • 来自专栏RocketMQ原理与应用

    RocketMQ原理2.源码设计简单分析二

    大纲1.NameServer的启动脚本2.NameServer启动时会解析哪些配置3.NameServer如何初始化Netty网络服务器4.NameServer如何启动Netty网络服务器5.Broker NameServer如何处理Broker的注册请求12.Broker如何发送定时心跳的以及故障感知7.BrokerController的初始化(1)创建完BrokerController之后需要初始化(2) (2)BrokerController.registerBrokerAll()方法public class BrokerController { ... 12.Broker如何发送定时心跳的以及故障感知(1)NameServer处理Broker注册请求的原理(2)Broker如何定时发送心跳到NameServer(1)NameServer处理Broker 注册请求的原理NameServer核心就是基于Netty服务器来接收Broker注册请求,然后交给DefaultRequestProcessor这个请求处理组件来处理Broker注册请求。

    23500编辑于 2025-04-02
  • 来自专栏深入浅出区块链技术

    EVM 设计原理

    本文作者:learnerL[1] 前言 在阅读这篇文章之前,请您先阅读初步理解以太坊虚拟机[2]和以太坊的数据组织[3],它将会介绍 EVM 的基本知识,帮助您形成基本的认识。 EVM 设计原理 以太坊可以抽象的分成两部分,一部分是状态,另外一部分是用于改变状态的 EVM。 data: 一个不限制大小的字节数组,用来指定消息调用的输入数据 请注意,这是最开始的设计思路,后面经过诸多的 EIP 后,有些改变,更详细的内容可见 理解交易[12]。 16]个人博客:https://www.blog-blockchain.xyz/ 参考资料 [1] learnerL: https://learnblockchain.cn/people/1890 [2]

    80510编辑于 2023-01-09
  • 来自专栏社区的朋友们

    Kafka 设计原理

    本文主要简单介绍Kafka的设计原理。 group Zookeeper:保存着集群broker、topic、partition等meta数据;另外,还负责broker故障发现,partition leader选举,负载均衡等功能 三、Kafka设计原理 如果有partition或者Consumer的增减,为了保证均衡消费,需要实现Consumer Rebalance,分配算法如下: broker对Consumer设计原理: 对于每个Consumer 3.4 Replication设计 作为消息中间件,数据的可靠性以及系统的可用性,必然依赖数据副本的设计。 3.6 HA基本原理 broker HA broker集群信息由Zookeeper维护,并选举出一个controller。

    6.5K77发布于 2017-08-21
  • 来自专栏Java工程师成长之路

    Eureka设计原理

    Eureka设计原理 1.1. 前言 目前我越来越关注技术原理层面的东西,开始考虑中间件设计背后,要考虑哪些因素,为什么要这样设计,有什么优化的地方,这次来讨论Eureka 1.2. 设计问题 设计一个注册中心,需要考虑什么东西?一步步来 首先注册中心的作用是用来存储各个服务器的地址端口等信息,所以需要考虑如何存储 存储就需要考虑是主动去拉还是各系统自己推送地址信息过来? 注册延迟原理 同样的上面的机制,导致了服务注册到可使用完毕需要更多的延迟,这些延迟在什么地方呢? 而这个缓存是客户端来读的时候经历的一级缓存 客户端来请求的周期同样是默认30秒,这又导致了一次延迟 而如果用Ribbon请求,它首先请求的是Eureka Client缓存的注册表,这个缓存更新同样要30秒,这样就导致了最大可能造成2分钟左右的延迟 这里我要着重强调,Eureka为什么要这么设计

    1.2K21发布于 2019-08-21
  • 来自专栏ops技术分享

    redis原理2

    一致性哈希分区(Distributed Hash Table) 实现思路是为系统中每个节

    35500发布于 2021-05-18
  • 来自专栏后端从入门到精通

    Join原理(2)--连接原理(四十)

    Join,left join,right join(1)--连接原理(三十九) Join原理 明白了左连接还右连接内连接之后,下面介绍他的原理 嵌套循环连接(Nested-Loop join) 上篇文章我们说的其实就是嵌套循环查询方法 使用索引加快连接速度 我们前面说过嵌套查询分为两个步骤,在回顾一下 步骤1:先查询驱动表的所有数据,结果若果有两条 步骤2:t2.m1 = 2 and t2.n1<’d’,t2.m2 = 3 and t2 如果在步骤2的时候全部都是全表查询,那将是对数据库的灾难,连接的表越多,查询的越多,这就是为什么经常用连接会导致sql性能差的原因。比如内连接,若不加限制条件,结果呈指数增长,这个结果类似。 Select * from t2 where t2.m1 = 2 and t2.n1<’d’ Select * from t2 where t2.m1 = 3 and t2.n1<’d’; 这时候如果我们给 (这里有一点需要注意,假设m1是是主键或者唯一的二级索引,那么他访问的方法将会是const方法,而设计师吧这种对外连接里面对被驱动表查询采用主键或者唯一二级索引的方法,称为eq_ref) 若我们给n1加索引的话

    70520编辑于 2022-07-26
  • 来自专栏一枝花算不算浪漫的专栏

    JetCache设计原理浅析

    1、目录 JetCache介绍 上帝视角:如何设计一个缓存组件? SpringCache VS JetCache JetCache基本使用 JetCache部分源码分析 2、JetCache介绍 3、如何设计一个缓存组件? 3600000 #readFrom: slavePreferred # 优先从Slave节点中读取 uri: redis-sentinel://host1:26379,host2: #- redis://127.0.0.1:7001 #- redis://127.0.0.1:7002 5.2、JetCache使用示例 6、JetCache原理 CaffeineCache:基于Caffeine工具设计的内存缓存 RedisCache:Redis实现,使用Jedis客户端 RedisLettuceCache:Redis实现,使用Lettuce客户端

    2K10编辑于 2022-09-28
  • 来自专栏JavaEdge

    Ehcache缓存设计原理

    L1:本地内存层 L2:Terracotta服务节点层 配置 <ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="1000" eternal="true" overflowToDisk="true"/> <cache name="CACHE<em>2</em>"

    88430发布于 2021-02-23
  • 来自专栏Spark学习技巧

    HBase原理设计

    原理 前面介绍了HBase的一般架构,我们知道了HBase有ZK、Master和RS等组成,本节我们来介绍下HBase的基本原理,从数据访问、RS路由到RS内部缓存、数据存储和刷写再到region的合并和拆分等等功能 Memstore刷写流程 以上1,2,3都可以触发memstore的flush操作,但是实现的方式不同: 通过全局内存控制,触发memstore刷盘操作。 HBase设计 HBase是一个分布式数据库,其性能的好坏主要取决于内部表的设计和资源的分配是否合理。 列簇设计 HBase的表设计时,根据不同需求有不同选择,需要做在线查询的数据表,尽量不要设计多个列簇,我们知道,不同的列簇在存储上是被分开的,多列簇设计会造成在数据查询的时候读取更多的文件,从而消耗更多的 推荐阅读: 1,大数据查询——HBase读写设计与实践 2,HBase的安装部署 3,浅谈数据分库分表之道 4,Spark源码系列之spark2.2的StructuredStreaming使用及源码介绍

    1.8K100发布于 2018-01-31
  • 来自专栏大数据技术博文

    Kafka设计原理

    可实时进行消息的处理计算 日志处理 Application 批量,异步发送日志/行为数据 流式处理 可以流式读取数据,支持Storm/Spark/Kafka Steaming 消息得生产实例&原理 (一) 生产者-发送/发布消息的一端 消息的生产&原理(二) 消息的生产&原理(三) 消息的消费实例&原理(一) 消息的消费实例&原理(二) 消费规则: 一个Partition只能被同一个ConsumerGroup partition数,可能会消费多个Partition 同一个partition保证是有序消费的 0.9之前consumer依赖zk,0.9之后直接链接kafka的Coordinator 消息的消费&原理 leader挂掉之后,通过选举选择follower中一个作为leader[去中心化] ZK中通过ISR维护着所有Follower,Follower通过Tcp与ZK保持心跳 副本因子 KAFKA逻辑架构设计

    31610编辑于 2022-04-18
  • 来自专栏JavaEdge

    Redis缓存设计原理

    hash槽,也就是说当前Redis Cluster支持的最大节点数就是4096 Redis Cluster使用的分布式算法也很简单:crc16( key ) % HASH_SLOTS_NUMBER 整体设计可总结为

    47220发布于 2021-02-23
  • 来自专栏JavaEdge

    Ehcache缓存设计原理

    下图反映数据在各个层之间的流转及各层数据的生命周期 [format,png] L1:本地内存层 L2:Terracotta服务节点层 配置 <ehcache> <! maxElementsInMemory="1000" eternal="true" overflowToDisk="true"/> <cache name="CACHE<em>2</em>"

    1.2K00发布于 2021-02-03
  • 来自专栏程序猿的大杂烩

    表格设计2

    使用自表一对多设计这个表格,因为如果使用多个表格的话,需要增删的情况下就需要改动表格的结构了。所以使用自表一对多的方式,自己这张表的主键对应着自己这张表的外建。 代码示例: ? 例题2: ? 表格设计: 在sqlyog里我们可以通过此工具设计表格时建立表格之间的映射关系: ? 点击进入此界面后右键选择Add Tables...或者Create Table可以添加表格和创建表格: ? 一对一: 表格一对一设计方式有两种,一种是主键对应着关系表的主键,另一种方式是主键对应着关系表设置了唯一索引的外建。 一对多: 一对多关系的表格设计也有两种方式,一种是自表的一对多,第二种是主键对应关系表的外键。 自表一对多: ? 主键对应关系表的外键一对多: ? 多对多: 多对多的表格设计方式是使用一张关系维护表来维护其他表之间的映射关系。 ?

    73520发布于 2020-09-23
  • 来自专栏落叶飞翔的蜗牛

    线程池原理2

    接上文线程池原理(1) 线程池的创建 通过ThreadPoolExecutor构造函数实现(推荐) ? 线程池原理 任务调度 任务调度是线程池的主要入口,当用户提交了一个任务,接下来这个任务将如何执行都是由这个阶段决定的。了解这部分就相当于了解了线程池的核心运行机制。 I/O 密集型任务(2N):这种任务应用起来,系统会用大部分的时间来处理 I/O 交互,而线程在处理 I/O 的时间段内不会占用 CPU 来处理,这时就可以将 CPU 交出给其它线程使用。 因此在 I/O 密集型任务的应用中,我们可以多配置一些线程,具体的计算方法是 2N。 如何判断是 CPU 密集任务还是 IO 密集任务?

    66610发布于 2021-03-19
  • 来自专栏huofo's blog

    设计模式(07)——设计原则(2

    该原则是作为一个指导思想来做的,其作用就是防止过度设计,但需要注意的是其是让你不做,但需要有可能要做的意识,提前留好拓展点,这样如果要做的时候,也可以快速跟上。 ** 后续会有一篇文章,来专门讲解如何在软件设计中,防止过度设计,但对对应该优化,该留好优化点如何实现。 这样的设计可能会导致以下问题, 当一个不知情的人看到这两段代码完成的任务是一样的,但采用的解决方式却是不一样的,则会想其的设计深意,以及不知道该用哪一个? true; } return validContainsA(temp); } 上述代码因为举的例子比较简单,应该能很简单的看出有一段代码被执行了两次,那么这样的设计违反了 迪米特原则 定义 迪米特原则是用来指导设计高内聚、低耦合代码的原则,因此我们先看一下什么是高内聚、低耦合。

    41620编辑于 2022-03-17
  • 来自专栏Tom弹架构

    30个类手写Spring核心原理之Ioc顶层架构设计2

    本文节选自《Spring 5核心原理》 1 Annotation(自定义配置)模块 Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。 RetentionPolicy.RUNTIME) @Documented public @interface GPRequestParam { String value() default ""; } 2 为了尽可能地简化,在这个Mini版本中,暂时只设计了一个refresh()方法。 定位,定位配置文件 reader = new GPBeanDefinitionReader(this.configLoactions); //2. 保留原来的OOP关系 //2.

    57220编辑于 2021-12-10
  • 来自专栏java思维导图

    《Spring设计思想》AOP设计思想与原理

    Spring AOP的工作原理 1. Java程序运行在JVM中的特征 当我们在某个类Foo中写好了一个main()方法,然后执行java Foo,你的Java程序之旅就开启了,如下: ? 2. 弄清楚这个问题,你不得不了解设计模式中的代理模式了。下面我们先来了解一下引入了代理模式的Java程序执行流是什么样子的。 3. 关于代理模式 代理模式属于Java代码中经常用到的、也是比较重要的设计模式。代理模式可以为某些对象除了实现本身的功能外,提供一些额外的功能,大致作用如下图所示: ? Spring AOP的工作原理 前面已经介绍了AOP编程首先要选择它感兴趣的连接点----即切入点(Point cut),那么,AOP能对切入点做什么样的编程呢?

    1.3K10发布于 2018-12-24
领券