自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

niyuelin1990的博客

专注区块链,云原生,中间件技术

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 区块链-ArcBlock调研

一、项目概述1.1、目前的区块链存在的问题性能问题:目前区块链面临一个最重要的挑战就是性能低下的问题,比特币每秒只能处理7笔交易,而以太坊则稍微多一点,但是如果在网络拥堵的时候就很难看了,比如Status众筹的时候,又或者17年12月初火爆的以太加密猫,都造成了大规模的拥堵并导致交易手续费Gas激增。对用户不友好:不得不说,对于大多数计算机小白来说,目前区块链的学习门槛还是挺高的,不说在你的计算机装个完整的节点,至少得装一个轻节点吧,就连想吸个猫,都得在Chrome安装个Metamask钱包插件。成

2020-07-18 11:31:46 731

原创 区块链-跨链调研new

一、跨链概述1、跨链定义在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。不论对于公有链还是私有链来看,跨链技术就是实现价值互联网的关键,它是把区块链从分散的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。故跨链是指通过技术手段,将原本不同的、独立的区块链上的信息、价值进行交换和流通。狭义上来说是两个相对独立的区块链账本间进行资产互操作(Interoperability)的过程;广义上来说是两个独立的账本间进行资产、数据互操作的过程。2、跨链面临的的关键问题1、跨链

2020-07-18 11:20:19 848 1

原创 以太坊框架梳理

一、整体框架1、以太坊介绍以太坊是一个开放的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供以太虚拟机(Ethereum Virtual Machine)来处理去中心化合约应用。以太虚拟机以太坊虚拟机(EVM):可以执行复杂算法的编码的,具备图灵完备的基于栈的虚拟机。以太坊使用场景支付系统:用于去中心数字货币交易,价值互换去中心化应用:黄金和...

2020-01-16 14:26:48 7991 1

原创 Dubbo框架架构

一、整体框架1、Dubbo介绍Apache Dubbo是一款高性能、轻量级的开源Java RPC框架。它有三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。1、Dubbo特点1、面向接口代理的高性能RPC调用:提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。2、智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状...

2020-01-14 15:45:25 4192

原创 zookeeper架构

一、整体框架Zookeeper介绍ZooKeeper是一个分布式的,开放源码的应用程序协调服务。Zookeeper使用场景ZooKeeper是一个分布式应用程序协调服务,分布式应用程序可以基于它实现分布式同步服务,配置维护、命名服务、服务发现、分布式锁等。Zookeeper特性顺序一致性:从同一个客户端发起的事务请求,将会严格按照其发起顺序被应用到zookeeper中原子性:所有事物...

2020-01-02 16:59:38 1421

原创 jdk并发包源码解析

一、总括java底层并发包,笔者将该包大致分成3个层次。1、基础依赖:共享变量volatile:有利于线程可见性。Unsafe类:CAS(Compare and Swap)比较并交换,用于并发下交换数据;Thread相关挂起(park)及取消挂起的功能。2、基础类(基础类的实现基本是基于基础依赖的类来实现):AQS(AbstractQueuedSynchronizer): 抽象...

2020-01-15 14:32:33 574

原创 libra测试环境搭建

1、搭建前准备1、所需系统:linux(Red Hat 或Debian) 或者 macOs系统2、git环境3、linux系统需要:yum或者 apt-get; macOs系统需要Homebrew2、基础环境搭建以下 基于参考 https://developers.libra.org/docs/my-first-transaction 来搭建 Libra 环境并连接到测试网络。1、下...

2019-06-29 21:00:11 2455 1

原创 区块链跨链技术调研

一、跨链简述跨链是指通过技术手段,将原本不同的、独立的区块链上的信息、价值进行交换和流通。狭义上来说是两个相对独立的区块链账本间进行资产互操作(Interoperability)的过程;广义上来说是两个独立的账本间进行资产、数据互操作的过程。跨链应该理解成一个桥梁或者一个机制,分布式网络是不同的信息孤岛,通过跨链机制不同的桥梁相互连接。这里读者一定要清楚,跨链并不能提高链本身性能,跨链更多的...

2019-01-23 12:25:56 15625 2

原创 区块链-Polkadot 探讨

1. Polkadot 是什么Polkadot是由大名鼎鼎的Gavin Wood主导的ParityTech团队进行设计和开发。Polkadot致力于实现链间任意消息通信,解决区块链的互通性问题,进而实现多链并存,解决扩展性和多样性问题。在区块链世界中, 比特币第一次打造出了公有共识系统,将货币发行和转账作为点对点现金应用,发明了去中心化的群体性协作方式方法。以太坊把区块链去中心化载体本身和上层...

2018-10-10 15:12:43 2808

原创 Zookeeper客户端Curator使用介绍

简介Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。Patrixck Hunt(Zookeeper)以一句“Guava is to Java that Curator to Zookeeper”给Curator予高度评价。 ...

2018-07-19 21:14:23 352 1

原创 Ethermint部署及框架解析

Ethermint是什么

2018-06-14 15:21:51 3261 3

原创 基于以太坊众筹系统

以太坊众筹系统https://github.com/niyuelin1990/CrowdFunding项目环境IntelliJ IDEA 2017 Apache Tomcat 8Geth 1.7.3准备工作learn 搭建 geth 私有环境启动私有链##初始化geth genesis.json在工程目录./geth init ./genes...

2018-06-12 18:00:39 6290 4

原创 是时候选择Cosmos SDK 搭建区块链了

一个去中心化的生态以太坊是最常见的开发去中化应用 (ÐApps) 的平台。但作为以太坊上的开发编程语言 Solidity 却有局限性,而以太坊虚拟机 (EVM) 上的交易速度亦越来越慢,所以我们就决定自建区块链,让用户们能更多的参与生态的管治机制。在众多不同的区块链技术中,我们选择了 Cosmos。Cosmos SDK 提供了一系列的工具让开发者建立自己的区块链。这些工具突破了以太坊的局限。C...

2018-06-04 16:41:41 4508

原创 拜占庭共识Tendermint介绍及简单入门

Tendermint是什么Tenermint 是一个软件,用于在多台机器安全一致地复制一个应用。所谓安全,指的是即使有多达 1/3 的机器出现任意故障的情况下, Tendermint 仍然能够正常工作。所谓一致,指的是每一个正常工作的机器都会有着同样的交易日志,计算相同的状态。安全一致的复制是分布式系统中一个至关重要的问题:从货币到选举,到基础设施规划,它在广泛应用的容错中承担了一个极其重要的...

2018-06-01 15:18:28 16458 4

原创 比原链Bytom JAVA SDK使用指南

最近在开源社区协助比原链完成了 java sdk,这里跟大家分享下哈。Bytom Java SDKThis SDK contains methods for easily interacting with the Bytom API. Below are examples to get you started. For more information, please see Byt...

2018-05-30 09:37:52 927

原创 以太坊系列---Block核心数据结构

在Ethereum的世界里,数据的最终存储形式是[k,v]键值对,目前使用的[k,v]型底层数据库是LevelDB;所有与交易,操作相关的数据,其呈现的集合形式是Block(Header);如果以Block为单位链接起来,则构成更大粒度的BlockChain(HeaderChain);若以Block作切割,那么Transaction和Contract就是更小的粒度;所有交易或操作的结果,将以各个个...

2018-05-23 18:02:13 3739 1

原创 Jaeger架构及java-sdk使用

Jaeger架构Jaeger组成: Jaeger Client - 为不同语言实现了符合 OpenTracing 标准的 SDK。应用程序通过 API 写入数据,client library 把 trace 信息按照应用程序指定的采样策略传递给 jaeger-agent。 Agent - 它是一个监听在 UDP 端口上接收 span 数据的网络守护进程,它会将数据批量发送给 collect...

2018-05-18 16:10:09 6514 1

原创 commons-pool2中GenericKeyedObjectPool对象池

commons-pool 对象池commons-pool 中实现了多个对象池类,对象池类可以用于数据库连接池,tcp客户端池。 maven依赖:<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId...

2018-05-15 16:38:54 4834

原创 nsq学习使用

介绍NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。组件介绍nsqd:一个负责接收、排队、转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发现服务的守护进程(运行时发现消费者找到生产者服务) ...

2018-05-14 18:23:49 1301

原创 golang调用foundationDB

原文链接:https://imscc.io/posts/foundationdb/golang_api/原文作者: 聪少FoundationDB是苹果苹果公司早起闭源又重新开源的一款KV数据库(一开源就是5.x的版本6666),FoundationDB的核心提供了一个简单的数据模型和强大的事务处理,这种组合允许构建更丰富的数据模型和库,以继承数据库的可伸缩性,性能和完整性。数据建模的目标是设...

2018-05-07 15:20:42 753 1

原创 Linux部署Jaeger

原文链接:https://imscc.io/posts/trace/install_jaeger_on_linux/ 原文作者: 聪少最近在折腾Jaeger,Jaeger官网都是介绍如何通过Docker部署,二进制部署文档基本没有(已咨询过作者,作者说没文档!你参考Docker自己部署好了!!!),所以打算写一篇Linux部署。JaegerJaeger是Uber推出的一款调用链追踪系...

2018-05-07 14:26:50 4079 2

原创 以太坊系列---ipc实现方式---管道通信库npipe

背景以太坊rpc有4种实现方式分别是inproc,ipc,http,ws。inproc是进程内部调用,为console使用;http是以http接口方式提供访问;ws是以websocket的方式提供访问。ipc便是进程间通信,以npipe为底层实现,上层采用Json-Rpc为消息格式,并使用go的reflect包实现对内部Api的调用。 ipc通信是用于同一个主机间钱包等客户端与geth...

2018-04-27 15:21:49 3616 3

原创 区块链系列----ChainVm区块链虚拟平台

架构笔者18年任务准备搭建ChainVm区块链虚拟机平台。该平台旨在提供高通用性,高扩展性,高并发的区块链平台。 ChainVmChainVm包括DB、BlockChain、拔插共识、网络和智能合约。编程语言以golang为主。DBDB包括嵌入式LevelDB和分布式dispersedDB。 LevelDB是默认存储方式,全量数据数据的存储。 dispersedD...

2018-04-19 12:02:12 832

原创 区块链系列----Pos大有可为

随机数随机数对于区块链技术来说很关键。 本质上,分布式账本的核心问题就是随机选择出块人的问题,这个随机性要能被全网确认,并且不能被操控,也不能被预测, 否则恶意节点通过操控这个随机数就可以操控长链,从而实现双花攻击。Pow算法PoW(工作量证明,Proof-of-Work)的方案是让大家进行算力竞赛,设置一个计算哈希的难题,谁先算出来谁赢,算力高的赢的概率高,算力低的赢的概率低,以...

2018-04-10 14:01:15 3111

原创 区块链系列-----加密算法汇总

背景区块链背景下,对密码学技术要求需要有很深的研究。笔者以java语言为例,搜罗各种加密算法的相关使用。 github地址:https://github.com/niyuelin1990/mycrypto简介搜罗各种加密算法电子邮件传输算法Base64摘要算法MD2,MD5;SHA-256,SHA-348,SHA-512;HMAC;RipeMD系列,Tig...

2018-04-10 12:13:11 5162 1

原创 scylladb 安装及 golang 客户端gocql使用

前言ScyllaDB 是用 C++ 重写的 Cassandra,每节点每秒处理 100 万 TPS。ScyllaDB 完全兼容 Apache Cassandra,拥有比 Cassandra 多 10x 倍的吞吐量,降低了延迟。 ScyllaDB 是性能优异的 NoSQL 列存储数据库。 ScyllaDB 在垃圾收集或者 Compaction 的时候不需要暂停;在常规生产负载的时候可以添加和删除...

2018-03-20 14:02:57 2823

原创 区块链系列----分布式一致性算法---Paxos 和 Raft

背景在一个分布式系统中,如何保证集群中所有节点中的数据完全相同并且能够对某个提案(Proposal)达成一致是分布式系统正常工作的核心问题,而共识算法就是用来保证分布式系统一致性的方法。 然而分布式系统由于引入了多个节点,所以系统中会出现各种非常复杂的情况;随着节点数量的增加,节点失效、故障或者宕机就变成了一件非常常见的事情,解决分布式系统中的各种边界条件和意外情况也增加了解决分布式一致...

2018-03-08 10:56:32 3615

原创 kubernetes 客户端client-go 使用及常用api

前言client-go 是kubernetes 的go语言客户端简单易用,但需要小心区分kubernetes的API版本。简单例子import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/kubernetes" appsv1beta1 "k8s.io/api/apps/v1beta1"

2018-01-16 16:55:33 17875 6

原创 go语言工程制作yaml文件,并部署到kubernetes

前言在前文中,笔者将了如何制作go语言的dockerfile,并部署到docker。链接地址是:http://blog.csdn.net/niyuelin1990/article/details/79035728在这篇文章中,笔者将讲下如何将go工程的docker镜像部署到kubernetes。1.制作yaml文件首先基于现有的docker镜像,制作出deployment和service。apiVe

2018-01-11 17:35:32 2069

原创 go语言工程制作dockerfile,并部署到docker

前言众所周知云计算时代,是docker,kubernetes的天下。学习使用docker和kubernetes是必选的。当然这两个应用都是基于go语言的。所以云计算时代使用go语言写服务也是极好的。那么如何将go语言服务部署到docker容器呢?1.首先使用go语言实现基本http服务使用echo标准库实现8080端口输出helloworld的服务。import ( ...

2018-01-11 17:15:38 20954 7

原创 JAVA多线程系列--并发工具类(CountDownLatch, CyclicBarrier, Semaphore,Exchanger)

前言本节笔者将详细讲下CountDownLatch, CyclicBarrier, Semaphore,Exchanger 这四个并发工具类的使用。 这4个工具类在高并发的场景下,也是使用广泛。1.1 CountDownLatch简介CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。1.2 CountDownLatch使用场景 1

2017-12-14 19:10:48 410

原创 JAVA多线程系列--指令重排和happens-before规则

1 背景 我们在平时所习惯的单线程编程中默认了一种乐观的模型——串行一致性。即在程序中只存在唯一的操作执行顺序,并且在每次读取变量时,都能获得在执行序列(任何处理器)最近一次写入该变量的值。但在JVM底层的很多操作在现代多处理器架构中都不会提供这种串行一致性。这样是导致线程不完全问题的深层次原因。导致非串行执行的原因是指令重排引起的,下面笔者将介绍下指令重排和规避指令重排的方法happens-be

2017-12-14 16:15:00 1073

转载 Austin 第二天 | 炫技!Google 语音操控 GKE 部署集群及扩容服务

KubeCon + CloudNativeCon NA 2017 第二天上午共有 6 场精彩的 Keynote 演讲,从多个角度展现了 Kubernetes 和 CNCF 项目在技术开放性、企业应用、社区开发方面的魅力。戳“阅读原文”,看现场直播!KubeCon Opening Keynote1Cool V.S. Boring

2017-12-08 16:42:18 522

原创 区块链有可能和互联网一样伟大

区块链发展到如今,已经能成功引起所有人的注意,在一些传统互联网企业家中,很多人都对区块链的未来充满期待。所以我认为区块链有可能和互联网一样伟大。1.区块链简介  区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。   区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一 种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义

2017-12-06 11:01:02 716

原创 JAVA多线程系列--ForkJoinPool详解

1. 什么是ForkJoinPoolForkJoinPool是JDK7引入的线程池,核心思想是将大的任务拆分成多个小任务(即fork),然后在将多个小任务处理汇总到一个结果上(即join),非常像MapReduce处理原理。同时,它提供基本的线程池功能,支持设置最大并发线程数,支持任务排队,支持线程池停止,支持线程池使用情况监控,也是AbstractExecutorService的子类,主要引

2017-11-28 19:45:24 34589 4

原创 JAVA多线程系列--ThreadLocal详解

1. ThreadLocal是什么?ThreadLocal,是线程本地变量,也可以称为线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。1.1 数据库链接例子class ConnectionManager { private static Connection connect = null; public static C

2017-11-28 15:01:26 276

原创 JAVA多线程系列--ReentrantLock实现原理-AQS详解

1.概述  前文笔者已经讲了ReentrantLock的使用,在这篇文章中我们将讲讲ReentrantLock的底层实现AbstractQueuedSynchronized(AQS)。   AQS:抽象的队列式的同步器。AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。2.AQS框架

2017-11-23 17:40:24 516

原创 JAVA多线程系列--Lock锁-ReentrantLock之Condition应用

1.Conditionsynchronized与wait()和nitofy()/notifyAll()方法相结合可以实现等待/通知模型,ReentrantLock同样可以,但是需要借助Condition,且Condition有更好的灵活性,具体体现在:1、一个Lock里面可以创建多个Condition实例,实现多路通知2、notify()方法进行通知时,被通知的线程时Java虚拟机

2017-11-22 19:39:26 433

原创 JAVA多线程系列--Lock锁-ReentrantLock,ReentrantReadWriteLock应用

1.前言java除了synchronized 锁外,还有Lock更加灵活的锁。ReenTrantLock从名字上理解,是可再进入的锁。重入锁是一种递归无阻塞的同步机制,底层实现采用AQS原理实现,具体实现原理将在今后的文章中具体探讨。ReentrantReadWriterLock:可重入读写锁。读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相

2017-11-22 17:46:05 370

原创 JAVA多线程系列--Unsafe和CAS,Volatile---concurrent包的基石

1.Unsafesun.misc.Unsafe至少从2004年Java1.4开始就存在于Java中。Unsafe类是用来做一些Java语言不允许但是又十分有用的工作,Unsafe是通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言。  Unsafe顾名思义是不安全的类,故如果作者对它不够熟悉,不建议在自己代码中使用。

2017-11-17 10:25:25 3442 3

深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)书和源代码

该资源包括深入理解Java虚拟机第二版pdf版本(文字图片版,非扫描版),以及书本对应的源代码。

2018-03-06

空空如也

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

TA关注的人

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