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

    java设计模式(6)-代理模式(必看的springAOP原理)

    Cglib代理的原理实际上是动态生成被代理类的子类字节码,由于其字节码都是按照jvm编译后的class文件的规范编写的,因而其可以被jvm正常加载并运行。 这里需要注意的是,根据Cglib实现原理,由于其是通过创建子类字节码的形式来实现代理的,如果被代理类的方法被声明final类型,那么Cglib代理是无法正常工作的,因为final类型方法不能被重写.

    87820发布于 2019-10-17
  • 来自专栏深入浅出区块链技术

    EVM 设计原理

    EVM 设计原理 以太坊可以抽象的分成两部分,一部分是状态,另外一部分是用于改变状态的 EVM。 data: 一个不限制大小的字节数组,用来指定消息调用的输入数据 请注意,这是最开始的设计思路,后面经过诸多的 EIP 后,有些改变,更详细的内容可见 理解交易[12]。 blob/main/analyzeSourceCode/%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%90%86%E8%A7%A3% 9C%AC%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%90%86%E8%A7%A3%E6%94%B6%E6%8D%AE.md [12] 理解交易: https:// github.com/learnerLj/geth-analyze/blob/main/analyzeSourceCode/%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%

    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. 设计问题 设计一个注册中心,需要考虑什么东西?一步步来 首先注册中心的作用是用来存储各个服务器的地址端口等信息,所以需要考虑如何存储 存储就需要考虑是主动去拉还是各系统自己推送地址信息过来? Eureka采用的是ConcurrentHashMap来存储注册表信息,没错就是这玩意,我一开始看到也很吃惊,不是吃惊它什么巧妙的设计,我觉得让一个刚入行的菜鸟来做存储,可以也做成这样,只不过可能用的HashMap 注册延迟原理 同样的上面的机制,导致了服务注册到可使用完毕需要更多的延迟,这些延迟在什么地方呢? 这又导致了一次延迟 而如果用Ribbon请求,它首先请求的是Eureka Client缓存的注册表,这个缓存更新同样要30秒,这样就导致了最大可能造成2分钟左右的延迟 这里我要着重强调,Eureka为什么要这么设计

    1.2K21发布于 2019-08-21
  • 来自专栏互联网大杂烩

    6设计原则

    打算用一句话概括每一个设计原则 单一职责原则 一个类只负责一项职责,有且仅有一个原因引起类的变更。 里氏替换原则 所有引用基类的地方必须能透明地使用其子类对象。

    39230发布于 2018-08-22
  • 来自专栏一枝花算不算浪漫的专栏

    JetCache设计原理浅析

    1、目录 JetCache介绍 上帝视角:如何设计一个缓存组件? SpringCache VS JetCache JetCache基本使用 JetCache部分源码分析 2、JetCache介绍 3、如何设计一个缓存组件? 127.0.0.1:7000 #- redis://127.0.0.1:7001 #- redis://127.0.0.1:7002 5.2、JetCache使用示例 6、 JetCache原理 Cache:缓存接口,定义基本方法 AbstractCache:抽象类,缓存接口的继承者,提供基本实现,具体实现交由不同的子类 LinkedHashMapCache:基于LinkedHashMap 设计的简易内存缓存 CaffeineCache:基于Caffeine工具设计的内存缓存 RedisCache:Redis实现,使用Jedis客户端 RedisLettuceCache:Redis实现,使用

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

    Ehcache缓存设计原理

    纯Java开源缓存框架,配置简单、结构清晰、功能强大,是一个非常轻量级的缓存实现,Hibernate里面就集成了相关缓存功能。

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

    HBase原理设计

    所以,HBase在表的设计上会有很严格的要求。 原理 前面介绍了HBase的一般架构,我们知道了HBase有ZK、Master和RS等组成,本节我们来介绍下HBase的基本原理,从数据访问、RS路由到RS内部缓存、数据存储和刷写再到region的合并和拆分等等功能 HBase设计 HBase是一个分布式数据库,其性能的好坏主要取决于内部表的设计和资源的分配是否合理。 列簇设计 HBase的表设计时,根据不同需求有不同选择,需要做在线查询的数据表,尽量不要设计多个列簇,我们知道,不同的列簇在存储上是被分开的,多列簇设计会造成在数据查询的时候读取更多的文件,从而消耗更多的 Region设计 一般地,region不宜设计成很大,除非应用对阶段性性能要求很多,但是在将来运行一段时间可以接受停服处理。

    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 整体设计可总结为 你可以对一个key进行Watch,然后再执行Transactions,在这过程中,如果这个Watched的值进行了修改,那么这个Transactions会发现并拒绝执行 在失效策略上,Redis支持多达6种的数据淘汰策略

    47220发布于 2021-02-23
  • 来自专栏软件研发

    架构设计模式—6设计原则

    架构设计模式—6设计原则架构设计是软件开发中非常重要的一环,良好的架构可以提高软件系统的可维护性、可扩展性和可重用性。在架构设计过程中,遵循一定的设计原则可以帮助我们构建合理的架构。 本文介绍6大常用的架构设计原则,他们是:单一职责原则(Single Responsibility Principle, SRP) 单一职责原则要求一个类或模块只负责完成一项职责。 以上6设计原则是架构设计过程中常用的准则,不同的原则可以结合使用,根据具体的应用场景进行选择。遵循这些原则可以帮助我们构建高质量的软件系统。 这样设计的好处是,我们可以方便地添加新的形状,而不会影响到已有的代码功能。

    2.3K41编辑于 2023-11-02
  • 来自专栏JavaEdge

    Ehcache缓存设计原理

    纯Java开源缓存框架,配置简单、结构清晰、功能强大,是一个非常轻量级的缓存实现,Hibernate里面就集成了相关缓存功能。

    1.2K00发布于 2021-02-03
  • 来自专栏ops技术分享

    Nginx结构原理全解析(6

    首先,请求过来,要建立连接,然后再接收数据,接收数据后,再发送数据。具体到系统底层,就是读写事件,而当读写事件没有准备好时,必然不可操作,如果不用非阻塞的方式来调用,那就得阻塞调用了,事件没有准备好,那就只能等了,等事件准备好了,你再继续吧。

    36520发布于 2021-05-11
  • 来自专栏一个会写诗的程序员的博客

    架构设计模式—6设计原则

    架构设计原则 6设计原则 Single Responsibility Principle  : 单一职责原则 Liskov Substitution Principle : 里氏替换原则 6 内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。 内聚性又称块内联系。 6 功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。 image 1、GOF在书中说:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述; 设计模式就是不断反省,将软件开发经验抽象积累成解决问题的预案。 3、设计模式中广泛遵循了两条设计原则:面向接口编程,而不是实现;优先使用组合,而不是继承。 ........

    2K60发布于 2019-07-04
  • 来自专栏第一专栏

    编译原理4—6章案例复习总结【编译原理

    4—6章总结 4、自上而下文法—LL(1)文法 (1)first集 (2)follow集 ——利用到select集 (3)select集 ——利用到first、select集合 (4)构造自上而下分析表 (5)句子分析—利用LL(1)分析表,注意倒序入栈—符号栈是将表中查询到的产生式倒着写入,栈内只剩下 # 为止 5、规范推导—移进规约法—直接利用推导式规约,顺序入栈,栈内只剩下第一个非终结符S为止 6

    1.8K20编辑于 2023-05-25
  • 来自专栏代码世界

    6设计原则总结

    6设计原则总结 一、单一职责原则  单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个原因引起类的变更。 我们在做系统设计时也需要考虑对系统之间或模块之间的接口采用定制服务。采用定制服务就必然有一个要求:只提供访问者需要的方法。 接口设计是有限度的。 --- 接口的设计粒度越小,系统越灵活,这是不争的事实。 深入了解业务逻辑,最好的接口设计就出自你的手中! 一个展示数据的列表,按照原有的需求是6列,突然有一天要增加1列,而且这一列要跨N张表,处理M个逻辑才能展现出来,这样的变化是比较恐怖的,但还是可以通过扩展来完成变化,这就要看我们原有的设计是否灵活。

    97190发布于 2018-04-12
  • 来自专栏我在本科期间写的文章

    【微机原理】程序设计题基础知识讲解——6、中断调用与系统服务

    为什么使用 **DX** 寄存器?

    48010编辑于 2025-06-13
  • 来自专栏java思维导图

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

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

    1.3K10发布于 2018-12-24
  • 来自专栏JavaEdge

    Guava Cache缓存设计原理

    WeakReference引用内 缓存的Value被封装在WeakReference或SoftReference引用内 统计缓存使用过程中命中率、异常率、未命中率等统计数据 Guava Cache的架构设计源于 "; } }); System.out.println(result); } 总结 Guava Cache基于ConcurrentHashMap的优秀设计借鉴 write链和access链的设计,能更灵活、高效的实现多种类型的缓存清理策略,包括基于容量的清理、基于时间的清理、基于引用的清理等。

    1.3K20发布于 2021-02-23
  • 来自专栏华章科技

    MapReduce 原理设计思想

    2.构建抽象模型-Map和Reduce 借鉴函数式设计语言Lisp的设计思想 —函数式程序设计(functional programming)语言Lisp是一种列表处理 语言(List processing ),是一种应用于人工智能处理的符号式语言,由MIT的人工智能专家、图灵奖获得者John McCarthy于1958年设计发明。 关键思想:为大数据处理过程中的两个主要处理操作提供一种抽象机制 MapReduce中的Map和Reduce操作的抽象描述 MapReduce借鉴了函数式程序设计语言Lisp中的思想,定义了如下的Map和 MapReduce设计为面向大数据集批处理的并行计算系统,所有计算都被组织成很长的流式操作,以便能利用分布在集群中大量节点上磁盘集合的高传输带宽。 6、平滑无缝的可扩展性(Seamless scalability) 主要包括两层意义上的扩展性:数据扩展和系统规模扩展。

    1.6K20发布于 2018-08-16
领券