java,架构相关技术专家
本文主要讨论两个问题: 1.如何聚合多个节点或分片的数据生成返回结果? 2.ES是如何将相关度高的内容能放在前面的?
介绍ElasticSearch的原理、集群等
ES有一些非常强大的能力,例如:根据用户搜索的时候,也可以搜索同义词,也可以基于语义进行分词,返回最最适合的结果,ElasticSearch是如何实现这种能力的呢?
简介 PBFT简介 BFT(Byzantine Fault Tolerance)是区块链共识算法中需要解决的一个核心问题。例如,公有链网络中,比特币和以太访中用的是POW,EOS用的是DPOS。PBFT一般用于联盟链场景中,它是共识节点较少的情况下BFT的一种解决方案。
本文主要介绍Future与Callable原理,即如何在线程外获取线程执行结果以及其原理。
根据github上tcc-transaction项目介绍TCC原理。
从源码的角度上介绍Eureka服务治理的原理以及LoadBalanced原理与策略
从源码的角度讨论SpringCload Config的原理。
主要讨论线程状态流转,以及引起状态变化的方法。 分析ThreadLocal原理
本文介绍在mac上搭建以太坊私有链。
zuul是一个能够实现动态路由、监控、弹性扩展并且安全的API网关组件。
CyclicBarrier是让一组线程达到一个屏障(也叫做同步点),当这一组线程执行到达这个屏障(cyclicBarrier.await()代码处)时,这组线程才会继续往下执行。
Thread#interrupt()的作用其实也不是中断线程,而是通知线程应该中断了 Thread#interrupted()检查当前中断标识(即查看当前中断信号是true还是false),并清除中断信号 Thread#isInterrupted()检查当前中断标识
通过hystrix可以解决雪崩效应问题,它提供了资源隔离、降级机制、融断、缓存等功能。 资源隔离:包括线程池隔离和信号量隔离,限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。
本文介绍以太坊的一些基础概念,以及基本原理。主要内容包括:以太坊是什么、以太坊网络、账户类型、账户状态、交易、费用、gas、叔块、以太坊区块链结构、以太坊结构
Merkle Patrcia Tree 是结合了Merkle Tree和Patricia Tree两种数据类型的优点的数据结构,所以我们接下来将分别讨论这几种树。 一 Merkle Tree 1 Merkle Tree Merkle Tree(梅克尔树)可以是二叉树,也可以是多叉树;最下面的叶子节点包含基数数据,非叶子节点存储的是其子节点的hash。
一 什么是比特币 比特币(BTC)是基于区块链技术一种数字货币实现。 比特币网络是一个分布式的点对点网络,网络中的矿工通过挖矿来完成对交易记录。区块链网络提供了一个公共可见的记账本,任何人任何时候都可以查看此账本的信息。
本博客为《深入理解java虚拟机》的学习笔记所以大部分内容来自此书。 一 是否可以回收 Java中对象能否被回收取决于对象是“死”还是“活”下面我们就介绍一下判定算法。
Mysql InnoDB存储引擎基于Multi-Version Concurrency Control(MVCC,多版本的并发控制协议)实现。MVCC是通过保存数据在某个时间点的快照来实现的;优点是:读不加锁,读写不冲突。
域名解析、建立连接、发送请求、响应数据、关闭连接
一 Undo Log Undo Log是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。
CountDownLatch是一个计数(构造函数中指定此数值)的锁,当通过countDown方法将此计数值减为0时会唤醒之前调用await的线程。一般用于当某些任务执行完后,在执行其他任务的场景中。 CountDownLatch是基于AbstractQueuedSynchronizer(AQS)实现的,其通过state作为计数器。
一 核心属性 1 int corePoolSize 指该线程池中核心线程数最大值 核心线程:线程池新建线程的时候,如果当前线程总数小于corePoolSize,则新建的是核心线程,如果超过corePoolSize,则新建的是非核心线程。
这几年工作中做过不少营销活动,这里以抽奖活动为例,讨论一下如何设计出一个高可用、高并发的营销系统。 高可用、高并发架构的核心是分流和限流。系统架构时,应根据每一种营销活动的场景与特性,制定不同的分流、限流方案。
部署方案: 主从方案,多实例方案 隔离技术:业务隔离;数据隔离;进程隔离/系统隔离;线程隔离;集群、机房隔离;读写隔离;动静分离;热点/爬虫隔离;资源隔离;故障隔离 限流技术:处理机制(拒绝服务;排队或等待;降级);限流手段(限制总并发数;限制瞬时并发数;限制时间窗口内的平均速率);限流算法(计.
API网关业务域:统一接入、安全防护、流量管控、协议转换 API网关核心指标:安全、高可用、高并发、方便扩展、方便运维 API网关架构:系统领域划分、防护层、接入层、核心层架构。 API网关的设备安全解决方案。
交易系统的业务域是什么?即交易系统应该负责那些内容。 面对多样性的业务场景,交易系统如何承接他们?即交易系统的业务扩展性如何保证。 交易系统的复杂性问题,以及如何处理,特别是业务、系统解耦问题。 事件驱动流程。 简述高并发与高可用技术。
JVM java基础 架构设计 网络相关 中间件 区块链
介绍LockSupport的功能,主要方法。 介绍挂起、阻塞的区别
本博客主要讲述ReentrantLock的实现原理,主要内容包括: AQS原理以及实现过程。 ReenetrantLock获取锁、释放锁流程,以及原理。 ReenetrantLock源码分析。
synchronized原理。 对象头与Monitor结构。 锁优化技术:锁粗化、锁消除、自旋与适应性自旋、偏向锁、轻量级锁
本博客主要探究匿名内部类的原理,重点讨论java是如何将对象传递进入匿名内部类的内部的?
对象创建过程如下: 通过new指令参数查找常量池中类的符号引用,检查此 符号引用代表的类是否已经被加载、准备、解析、初始化过,如果没有则先执行这些操作。 计算并为对象分配内存。 将分配的内存空间初始化为零值。 设置对象头 执行构造函数。
讲述跨域原因以及从原理上讲述两种解决方案:jsonp,options
讲述RPC原理,以及一个简单的示例
本博客为《深入理解java虚拟机》的学习笔记,所以大部分内容来自此书,另外一部分内容来自网络其他博客和源码分析。 主要内容探讨以下问题: Ø Java内存模型、协议、规则。 Ø volatile的可见性和禁止指令重排序是什么意思? Ø Synchronized是如何做到线程安全的? Ø 先行发生原则。
本博客为《深入理解java虚拟机》的学习笔记,所以大部分内容来自此书,另外一部分内容来自网络其他博客和源码分析。 主要内容包括:虚拟机执行引擎的机构;方法调用过程;方法分派(即java支持方法多态,调用中如何确定方法版本的问题)。
本博客为《深入理解java虚拟机》的学习笔记,所以大部分内容来自此书,另外一部分内容来自网络其他博客和源码分析。 主要内容包括:前期(编译期)优化,后期(运行期)优化。 一 前期(编译期)优化 1 编译过程 从javac的角度来看,编译过程大致分为三步: Ø 解析与填充符号表过程。
本博客主要讨论类加载过程中主要的内容,如果想了解更加详细的内容可以参考JVM规范或者其他数据。本文的主要参考资料为《深入理解Java虚拟机》。 一 类的生命周期 1 类的生命周期 说明:在类加载过程中,加载、验证、准备、初始化、卸载这几个阶段的顺序是固定的,而解析的阶段不固定。
本文通过分析一段示例代码的字节码指令,讨论异常流程的处理。
Paxos协议,以及在Zookeeper上的应用。 Zookeeper原理,包括集群结构、特性等。 Zookeeper的设计,包括QuorumPeer模型、leader选举、lead流程、followLeader流程、广播模式 Zookeeper写请求处理
lead流程。 followLeader流程。 主从数据如何同步。 如何保证集群数据一致性。 异常场景分析。
详细讲述zookeeper的leader fast选举流程。 源码分析。 通过示例分析选举详细过程,以及可能的各种异常场景。
Netty的线程模型 Netty Reactor线程模型源码分析 Netty使用的最佳实践