niyuelin1990的博客

专注区块链,云原生,中间件技术
私信 关注
逆月林
码龄8年

区块链极客,技术栈:Java,Golang,Javascript;

  • 309,544
    被访问量
  • 75
    原创文章
  • 29,249
    作者排名
  • 123
    粉丝数量
  • 于 2012-09-18 加入CSDN
获得成就
  • 获得66次点赞
  • 内容获得109次评论
  • 获得132次收藏
荣誉勋章
TA的专栏
  • 区块链
  • 区块链
    19篇
  • java
    28篇
  • go
    32篇
  • kubernetes
    5篇
  • vue
    1篇
  • tendermint
    3篇
  • 分布式
    2篇
  • pinpoint
    3篇
  • iview
    1篇
  • etcd
    1篇
  • zookeeper
    4篇
  • 前端
    2篇
  • javascript
    1篇
  • hbase
    1篇
  • 跨链
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

区块链-ArcBlock调研

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

区块链-跨链调研new

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

以太坊框架梳理

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

jdk并发包源码解析

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

Dubbo框架架构

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

zookeeper架构

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

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、下...
原创
1655阅读
1评论
3点赞
发布博客于 2 年前

区块链跨链技术调研

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

区块链-Polkadot 探讨

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

Zookeeper客户端Curator使用介绍

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

Ethermint部署及框架解析

Ethermint是什么
原创
2174阅读
3评论
1点赞
发布博客于 3 年前

基于以太坊众筹系统

以太坊众筹系统https://github.com/niyuelin1990/CrowdFunding项目环境IntelliJ IDEA 2017 Apache Tomcat 8Geth 1.7.3准备工作learn 搭建 geth 私有环境启动私有链##初始化geth genesis.json在工程目录./geth init ./genes...
原创
4192阅读
3评论
0点赞
发布博客于 3 年前

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

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

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

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

比原链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...
原创
720阅读
0评论
0点赞
发布博客于 3 年前

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

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

Jaeger架构及java-sdk使用

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

commons-pool2中GenericKeyedObjectPool对象池

commons-pool 对象池commons-pool 中实现了多个对象池类,对象池类可以用于数据库连接池,tcp客户端池。 maven依赖:<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId...
原创
1707阅读
0评论
0点赞
发布博客于 3 年前

nsq学习使用

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

golang调用foundationDB

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

Linux部署Jaeger

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

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

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

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

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

区块链系列----比特币go语言源码-BTCD整体架构

前言笔者一直致力于区块链底层技术研究。本文将讲下第一代区块链(比特币),go语言版本BTCD源码整体架构。如果你是刚入门区块链技术,那么笔者建议可以先学习下blockchain_go。 blockchain_go:一个简单的go语言实现的区块链工程(A simplified blockchain implementation in Golang) blockchain_go将从区块(B...
原创
8710阅读
1评论
1点赞
发布博客于 3 年前

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

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

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

背景区块链背景下,对密码学技术要求需要有很深的研究。笔者以java语言为例,搜罗各种加密算法的相关使用。 github地址:https://github.com/niyuelin1990/mycrypto简介搜罗各种加密算法电子邮件传输算法Base64摘要算法MD2,MD5;SHA-256,SHA-348,SHA-512;HMAC;RipeMD系列,Tig...
原创
3822阅读
1评论
6点赞
发布博客于 3 年前

scylladb 安装及 golang 客户端gocql使用

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

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

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

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

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

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"
原创
13999阅读
5评论
0点赞
发布博客于 3 年前

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

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

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

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

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

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

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

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

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

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

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

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

JAVA多线程系列--ForkJoinPool详解

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

JAVA多线程系列--ThreadLocal详解

1. ThreadLocal是什么?ThreadLocal,是线程本地变量,也可以称为线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。1.1 数据库链接例子class ConnectionManager { private static Connection connect = null; public static C
原创
189阅读
0评论
0点赞
发布博客于 4 年前

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

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

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

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

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

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

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

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

vueleopard--一个简单的'vue iview webpack'管理系统

前言vueleopard 是一个简单的’vue iview webpack’后台管理系统模板 github地址:https://github.com/autors/vueleopard 游览地址:https://autors.github.io/vueleopard/simple build simple developsimple changesimple give you简单的构建
原创
1995阅读
15评论
0点赞
发布博客于 4 年前

JAVA多线程系列--关键字(volatile,synchronized)

1.Synchronized 使用范围:1.对于普通同步方法,锁水当前实例对象                  2.对于静态同步方法,锁是当前类的class对象                  3.对于同步方法快,锁是synchonized内配置的对象 实现原理:JVM要保证每个monitorenter必须有对应的monitorexit与之配对。 任何对象都有一个monit
原创
273阅读
0评论
0点赞
发布博客于 4 年前

JAVA多线程系列--线程实现方式

前言:Java线程的实现方式有3种,分别是 Thread,Runable,Callable。 1.Thread/** * 线程死锁 用jstack pid查看死锁 * @author wangting * */public class DeadLock extends Thread { protected Object tool; static Object f
原创
350阅读
0评论
0点赞
发布博客于 4 年前

协程Vs线程

1、线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。2、协程协程是一种用户态的轻量级线程,协程的
原创
869阅读
0评论
0点赞
发布博客于 4 年前

graphql----javascript使用

前言javascript端的使用也比较方便,首先  安装 express express-graphql graphqlnpm install express express-graphql graphql --save下面让我们修改我们的“hello world”示例,以便它是一个API服务器/** * Created by TF016591 on
原创
1126阅读
0评论
0点赞
发布博客于 4 年前

graphql----java使用

前言前一篇,已经讲了go语言中的使用。那么java端如何使用。1.定义用户结构public class User { private int id; private int age; private int sex; private String name; private String pic; // get set方法}
原创
1419阅读
1评论
0点赞
发布博客于 4 年前

graphql---go http请求使用

1. Graphql是什么?GraphQL是Facebook 在2012年开发的,2015年开源,2016年下半年Facebook宣布可以在生产环境使用,而其内部早就已经广泛应用了,用于替代 REST API。facebook的解决方案和简单:用一个“聪明”的节点来进行复杂的查询,将数据按照客户端的要求传回去,后端根据GraphQL机制提供一个具有强大功能的接口,用以满足前端数据的个性化需求,
原创
3144阅读
1评论
0点赞
发布博客于 4 年前

golang有用的库及工具 之 fasthttp客户端 最通用最有效最简单使用方式

fasthttp 是go语言中最常用性能最好的http请求库。那么如何使用fasthttp 客户端调用http请求。常用http kv请求://http请求func doTimeout(arg *fasthttp.Args, method string, requestURI string, cookies map[string]interface{}) ([]byte,
原创
5631阅读
2评论
0点赞
发布博客于 4 年前

golang有用的库及工具 之 缓存淘汰算法--LRU算法

1. LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 
原创
1608阅读
1评论
0点赞
发布博客于 4 年前

golang有用的库及工具 之 zap.Logger包 使用

zap.Logger  是go语言中相对日志库中性能最高的。那么如何开始使用?不多说直接上代码:import ( "encoding/json" "fmt" "log" "go.uber.org/zap" "go.uber.org/zap/zapcore")var Logger *zap.Loggerfunc InitLogger() {
原创
14265阅读
0评论
0点赞
发布博客于 4 年前

docker CE/EE 原生支持Kubernetes 之我见

在今天的 DockerCon EU (2017) 上,Solomon 宣布 Docker 将原生支持 Kubernetes,也就是说 Kubernetes 将和 Swarm 一样作为 Docker 平台的编排管理系统。这包括 Docker EE、Docker CE 以及 Docker for Mac/Windows等全平台的支持。 这件事情标志着 容器编排大战宣告着 kuber
原创
1162阅读
0评论
0点赞
发布博客于 4 年前

golang有用的库及工具 之 sync.Pool改造

一个sync.Pool对象就是一组临时对象的集合。Pool是协程安全的。Pool用于存储那些被分配了但是没有被使用,而未来可能会使用的值,以减小垃圾回收的压力。如下是使用的两种方式:一:func main() { for index := 0; index 100; index++ { go sss() //go ssse()
原创
2712阅读
0评论
0点赞
发布博客于 4 年前

golang有用的库及工具 之 一致性哈希(Consistent Hashing)算法

Consistent Hash  可用于  一致性哈希可用于解决服务器均衡问题。经配合 etcd使用git 库地址:https://github.com/stathat/consistentimport "stathat.com/c/consistent"type Hash struct { consistent *consistent.Consistent}f
原创
1527阅读
0评论
1点赞
发布博客于 4 年前

golang有用的库及工具 之 字符串转换 获取32位 uint32位hash 方法 MurmurHash哈希

const ( c1_32 uint32 = 0xcc9e2d51 c2_32 uint32 = 0x1b873593)// GetHash returns a murmur32 hash for the data slice.func GetHash(data []byte) uint32 { // Seed is set to 37, same as C# versi
原创
4524阅读
0评论
0点赞
发布博客于 4 年前

melody websocket 使用

melody websocket
原创
1172阅读
0评论
0点赞
发布博客于 4 年前

基于pinpoint改造的一种方式的思考(3)--javascript/golang agent处理

前言在前一篇文章中,我们探讨了collector 的数据处理,这一篇中我们将讲讲如何构建javascript、golang agent。
原创
2155阅读
0评论
0点赞
发布博客于 4 年前

基于pinpoint改造的一种方式的思考(2)--collector 的数据处理

pinpoint 改造 collector
原创
2671阅读
3评论
1点赞
发布博客于 4 年前

Service Mesh

什么是Service MeshService mesh 又译作 ”服务网格“,作为服务间通信的基础设施层。Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 WHAT’S A SERVICE MESH? AND WHY DO I NEED ONE? 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh。如 Willian Morgan 所
原创
892阅读
0评论
0点赞
发布博客于 4 年前

vue 如何使用websocket

vue 如何使用websocket
原创
56259阅读
44评论
9点赞
发布博客于 4 年前

java,go语言 压缩 snappy 的使用

snappy
原创
2853阅读
0评论
0点赞
发布博客于 4 年前

uber log 使用

log
原创
1381阅读
0评论
1点赞
发布博客于 4 年前

基于pinpoint改造的一种方式的思考(1)--agent 添加代理层

Pinpoint 改造
原创
3833阅读
0评论
0点赞
发布博客于 4 年前

为什么说Flutter是革命性的?

译者按:在本文发布的时候,Flutter 的 SDK 尚不能从中国大陆直接下载,不过我们在和本文作者沟通的时候,他表示 Google 正在考虑为国内开发者提供更便捷的下载方式。Flutter 是什么?Flutter 移动应用程序 SDK 是为开发人员提供一种创建快捷、美观的应用程序的新方式,从而摆脱过去那种千篇一律的 app,尝试过 Flutter 的人都会真的爱上它。与任何新
转载
5366阅读
0评论
2点赞
发布博客于 4 年前

java 获取内存dump 的几种方式

1、获取内存详情:jmap -dump:format=b,file=e.bin pid这种方式可以用 jvisualvm.exe 进行内存分析,或者采用 Eclipse Memory Analysis Tools (MAT)这个工具2. 获取内存dump:  jmap -histo:live pid这种方式会先出发fullgc,所有如果不希望触发fullgc 可以使
原创
23786阅读
1评论
2点赞
发布博客于 4 年前

java 获取线程dump最佳方案

最近在做openapm 监控相关的项目,其中涉及到破析线程dump的功能。其中有2个方案。第一个方案是指令获取: jstack -l pid。第二种方案是在程序里面开一个线程获取数据。代码如下public class Runthread {public static void main(String[] args) {// 线程1new Thread() {@O
原创
8814阅读
0评论
0点赞
发布博客于 4 年前

go echo后端处理跨域的两种方式

跨域问题一般需要在后台解决会比较好。1.第一种方式当然是接受所有的跨域方式:func setAccessOriginUrl(c echo.Context) { c.Response().Header().Set("Access-Control-Allow-Origin", "*")}2.第二种接受指定地址的跨域请求:func setAccessOri
原创
2720阅读
0评论
1点赞
发布博客于 4 年前

tcp 服务端

1.新建TcpServer type TcpServer struct { // 记录每个IP的连接数量 perIPConnCounter ipmanager.PerIPConnCounter ln net.Listener}func (tc *TcpServer) Start() { var las
原创
249阅读
2评论
0点赞
发布博客于 4 年前

golang tcp 客户端

最近找了网上tcp客户端的例子,都不是很好,特今天写一个tcp 客户端案例。1.新建tcpclient结构体:type TcpClientModel struct { Conn net.Conn //发送chan SendChan chan []byte //心跳chan ClientPingChan cha
原创
3769阅读
1评论
0点赞
发布博客于 4 年前

使用docker搭建hadoop分布式集群

使用Docker搭建部署Hadoop分布式集群 在网上找了很长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,只能自己写一个了。 一:环境准备: 1:首先要有一个Centos7操作系统,可以在虚拟机中安装。 2:在centos7中安装docker,docker的版本为1.8.2 安装步骤如下: 安装制定版本的dockeryum install -y
转载
119阅读
0评论
0点赞
发布博客于 4 年前

go获取协程(goroutine)号

func GetGID() uint64 { b := make([]byte, 64) b = b[:runtime.Stack(b, false)] b = bytes.TrimPrefix(b, []byte("goroutine ")) b = b[:bytes.IndexByte(b, ' ')] n, _ := st
原创
6520阅读
0评论
0点赞
发布博客于 4 年前

Git代码管理

Git代码管理Git代码管理 之我见:1、GIT简介2、GIT常见指令3、GIT代码规范4、功能开发5、BUG修复6、代码提交7、Git merge/git rebase8、代码评审9、其他有效指令10、问题11、总结1、GIT简介 Git是目前世界上最先进的分布式版本控制系统,每个电脑上都是完整的版本,如果多人协作开发,只要推送各自的修改就行 —— [链接 ]集中
原创
363阅读
0评论
0点赞
发布博客于 4 年前

Epoll在Java Nio中的实现

Nio与Epoll一直对nio和epoll没有系统的认识,最近看了下openjdk,简单的做个记录。Linux2.6之后支持epollwindows支持select而不支持epoll不同系统下nio的实现是不一样的,包括Sunos linux 和windowsselect的复杂度为O(N)select有最大fd限制,默认为1024修改sys/select.h可以改变select的f
转载
1646阅读
0评论
0点赞
发布博客于 4 年前

【golang】signal和chan结合使用

golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 接下来举个signal和chan结合使用的例子func main() { shutdown := make(chan struct{}) go func() { select
原创
3600阅读
0评论
0点赞
发布博客于 5 年前

【JAVA】JAVA线程及锁基础知识-niyuelin

JAVA线程及锁基础知识-wangting线程实现方式并发关键字Lock锁并发工具类线程池Exector问题及实践
原创
269阅读
0评论
0点赞
发布博客于 5 年前

【golang】go-ConcurrentMap实现

用go实现ConcurrentMap// 泛化的Map的接口类型type GenericMap interface { // 获取给定键值对应的元素值。若没有对应元素值则返回nil。 Get(key interface{}) interface{} // 添加键值对,并返回与给定键值对应的旧的元素值。若没有旧元素值则返回(nil, true)。
原创
1485阅读
1评论
0点赞
发布博客于 5 年前

【golang】go-channel-goroutine实践2

需求:获取数组数据,对数据的原始数据逐个进行处理,后返回处理完的数据目标:对列表数据进行逐个goroutine并发处理,在用select整合type money_per struct{ id int name string money float64}type MoneyHandler interface { BatchDe
原创
359阅读
0评论
0点赞
发布博客于 5 年前

【golang】go-channel-goroutine实践1

某些信息从旧的资源池中取出来,经过一些加工处理,再放入新的资源池中,这个过程如果按传统的方式就是采用完全串行的方式效率会很低,粒度太粗了,具体的粒度可以细化以每次所取的单位资源为粒度。有一个资源池存储这person的信息,将每个person从中取出来,之后进行一些处理,再存到新的资源池中,这里用oldarray以及newarray来模拟旧的和新的资源池:代码如下:type
原创
377阅读
0评论
1点赞
发布博客于 5 年前

Kubernetes1.2 集群部署

1、虚拟机配置hostname配置IP组件k8s-master5G内存10G硬盘2CPUprivate=121.xx.xx.155,chronydetcdflannelkube-apiserverkube-controller-manage
原创
798阅读
0评论
1点赞
发布博客于 5 年前

etcd:从应用场景到实现原理的全方位解读

随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,本文
转载
630阅读
0评论
0点赞
发布博客于 5 年前

基于Kubernetes构建Docker集群管理详解

一、前言        Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,目前最新版本为0.6.2。本文介绍如何基于Centos7.0构建Kubernetes平台,在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能。以下为Kubernetes的架构设计图:
转载
433阅读
0评论
0点赞
发布博客于 5 年前

Web 网页通信之长连接、长轮询

基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。一、什么是长连接、长轮询?用通俗易懂的话来说,就是客户端不停的向服务器发送请求以获取最新的数据信息。这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它只是一种快速的停下然后又立即开始连接而已。
转载
396阅读
0评论
0点赞
发布博客于 5 年前

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。第一:介绍Dubbo背景    大规模服务化之前,应用可能只是通过RMI或Hessian等
转载
274阅读
0评论
0点赞
发布博客于 5 年前