go

Gin框架

梦想与她 提交于 2020-12-04 03:00:39
概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证。 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方案: engine := gin . Default () //修改成如下 engine := gin . New () 我是怎么知道的?看框架代码。 Default () : func Default () * Engine { debugPrintWARNINGDefault () engine := New () engine . Use ( Logger (), Recovery ()) return engine } New () 代码我就不贴了。 我们看到 Default () 使用了两个中间件 Logger (), Recovery () ,如果不想使用,那就直接使用 New () 就可以了。 开始今天的文章。 比如,请求 v1 / member / add 新增会员方法, name 、 age 为必填,同时 name 不能等于 admin 字符串,10 <= age <= 120。 直接看代码吧。 首先,先定义一个结构体。 entity/member.go package entity // 定义 Member 结构体 type Member struct { Name string

[系列] Gin框架

吃可爱长大的小学妹 提交于 2020-12-04 02:21:21
[TOC] 概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证。 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方案: engine := gin.Default() //修改成如下 engine := gin.New() 我是怎么知道的?看框架代码。 Default() : func Default() *Engine { debugPrintWARNINGDefault() engine := New() engine.Use(Logger(), Recovery()) return engine } New() 代码我就不贴了。 我们看到 Default() 使用了两个中间件 Logger(), Recovery() ,如果不想使用,那就直接使用 New() 就可以了。 开始今天的文章。 比如,请求 v1/member/add 新增会员方法, name 、 age 为必填,同时 name 不能等于 admin 字符串,10 <= age <= 120。 直接看代码吧。 首先,先定义一个结构体。 entity/member.go package entity // 定义 Member 结构体 type Member struct { Name string `form:"name" json:"name

#JVM方法区、堆、栈’#

删除回忆录丶 提交于 2020-12-04 02:20:32
先了解具体的概念: JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 方法区: 1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。 为了更清楚地搞明白发生在运行时数据区里的黑幕,我们来准备2个小道具(2个非常简单的小程序)。 AppMain.java public class AppMain //运行时, jvm 把appmain的信息都放入方法区 { public static void main(String[] args) //main 方法本身放入方法区。 { Sample test1 = new Sample( " 测试1 " ); /

centos7 Hyperledger Fabric 2.x 环境搭建和运行

大憨熊 提交于 2020-12-04 01:40:35
一、环境安装: 1.安装基本工具 ``` yum install curl ``` 2.安装docker 2.1 确保yum包更新到最新: ``` yum update -y ``` 2.2 对服务器进行清理, 如果之前安装过Docker , 需要先执行卸载操作,具体命令 ``` sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine ``` 2.3 安装需要的软件包: ``` yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2.4添加docker yum 源 ``` yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo ``` 2.5安装docker ``` yum install docker-ce -y ``` 2.6查看docker版本信息,是否安装成功 ``` docker --version ``` 2

CentOS7 搭建Fabric 1.0

£可爱£侵袭症+ 提交于 2020-12-04 00:32:34
1.环境搭建 1.1 go的按装及配置 1.1.1下载go压缩包 ​ wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz 1.1.2 解压 ​ tar -C /usr/local -zxvf go1.9.2.linux-amd64.tar.gz 1.1.3配置环境变量 ​ vi ~/.bash_profile 添加如下内容: PATH=$PATH:$HOME/bin export PATH export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin 使环境变量生效 source ~/.bash_profile 1.2 安装Docker 1.2.1 检查是否已经安装 rpm -qa|grep docker 1.2.2 卸载旧版本 yum remove docker docker-client docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine 1.2.3

006/搭建fabric(二)

牧云@^-^@ 提交于 2020-12-03 22:56:23
准备vmware虚拟机,并安装完ubuntu系统后。继续搭建fabric运行环境。。。 0。打开终端,切换root身份。目的:后续操作即可不用sudo... 右键-》open Terminal-》 // 默认root用户是无固定密码的,并且是被锁定的,如果想给root设置一个密码 sudo passwd root // 输入密码 & 确认密码 // 切换root用户 su root // 输入密码即可--root // 切换为普通用户 su username // eg:su yufeng 1。安装GIT apt- get install git //安装git git version //查看版本号 2。安装docker 和 docker-compose(必须) // 1.卸载旧版本的Docker // 旧版本的Docker被称作docker或者docker-engine,Docker CE(社区版)包现在被叫做docker-ce。如果之前安装过了,需要先卸载: apt - get remove docker docker- engine docker.io // 2。使用存储库安装docker (一)。设置存储库 // 【1】.更新apt安装包索引 apt - get update // 【2】。安装软件包以允许apt通过HTTPS使用存储库: apt - get

基于gRPC的注册发现与负载均衡的原理和实战

不羁的心 提交于 2020-12-03 22:54:26
gRPC 是一个现代的、高性能、开源的和语言无关的通用RPC框架,基于HTTP2协议设计,序列化使用PB(Protocol Buffer),PB是一种语言无关的高性能序列化框架,基于HTTP2+PB保证了的高性能。 go-zero 是一个开源的微服务框架,支持http和rpc协议,其中rpc底层依赖gRPC,本文会结合gRPC和go-zero源码从实战的角度和大家一起分析下服务注册与发现和负载均衡的实现原理 基本原理 原理流程图如下: 从图中可以看出go-zero实现了gRPC的resolver和balancer接口,然后通过gprc.Register方法注册到gRPC中,resolver模块提供了服务注册的功能,balancer模块提供了负载均衡的功能。当client发起服务调用的时候会根据resolver注册进来的服务列表,使用注册进来的balancer选择一个服务发起请求,如果没有进行注册gRPC会使用默认的resolver和balancer。服务地址的变更会同步到etcd中,go-zero监听etcd的变化通过resolver更新服务列表 Resolver模块 通过resolver.Register方法可以注册自定义的Resolver,Register方法定义如下,其中Builder为interface类型,因此自定义resolver需要实现该接口,Builder定义如下

Java Stream 源码分析

天涯浪子 提交于 2020-12-03 16:47:33
前言 Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题。 Java 8 集合中的 Stream 相当于高级版的 Iterator,它可以通过 Lambda 表达式对集合进行各种非常便利、高效的聚合操作(Aggregate Operation),或者大批量数据操作 (Bulk Data Operation)。 Stream的聚合操作与数据库SQL的聚合操作sorted、filter、map等类似。我们在应用层就可以高效地实现类似数据库SQL的聚合操作了,而在数据操作方面,Stream不仅可以通过串行的方式实现数据操作,还可以通过并行的方式处理大批量数据,提高数据的处理效率。 操作分类 官方将 Stream 中的操作分为两大类: 中间操作(Intermediate operations) ,只对操作进行了记录,即只会返回一个流,不会进行计算操作。 终结操作(Terminal operations) ,实现了计算操作。 中间操作又可以分为: 无状态(Stateless)操作 ,元素的处理不受之前元素的影响。 有状态(Stateful)操作 ,指该操作只有拿到所有元素之后才能继续下去。 终结操作又可以分为: 短路(Short-circuiting) 操作,指遇到某些符合条件的元素就可以得到最终结果

七牛与GopherChina的不解之缘

别说谁变了你拦得住时间么 提交于 2020-12-03 14:15:24
提及中国 Go 语言的布道与实践,七牛及其 CEO 许式伟总是出现频率最高的两个名词。从近乎冒险地选择到互相促进,七牛占据了Go 语言领域的很多个第一。第一个使用Go语言进行大规模项目研发;第一个完全用Go 语言实现分布式对象存储系统的核心服务 ; 编写第一本国内原创图书《 Go 语言编程》......时至今日, Go语言几乎已成为云计算领域的统治者,七牛云也已经服务了40万客户,成为国内云服务行业的TOP 品牌。 向上追溯, Google 首次对外公开透露Go 的存在是在09年末,而仅在一年半之后,七牛就与 Go 正式结缘,启用其来研发分布式对象存储系统,此时甚至连官方正式版都尚未发布,市面上几乎没有发现这么大规模玩 Go 语言的其他个体或组织。而这个“吃螃蟹”的壮举,并不是盲目的冒险决策,而是七牛团队经历了慎之又慎地分析、测试、实践、内部争论后,认为Go 是一个能把 C++ 的性能优势以及Erlang 天生的并发特性相结合并的语言,并且语法语义非常简约,编写也很优雅,加上考虑到背景以及社区的基因,从而做出的决策。 从只有官方文档作为资料的岁月起步,七牛团队在四年时间内,用 Go 开发了以下服务和工具: 分布式存储系统 ( Distributed Key/Value Storage) 数据处理服务 (Data Processing) 网络接口服务 (RESTful API

GopherChina讲师专访-Grab高级工程师高超

泄露秘密 提交于 2020-12-03 14:15:06
GopherChina 大会即将在4.15 - 4.16 在上海小南国花园酒店举办,GopherChina大会是国内最大最专业的Go大会,聚集了全中国各地的Gopher一起分享交流,大会希望通过大家线下的交流,讲师的分享,让大家能够了解目前Go动态,应用场景,技术细节等。 会前我们对本次大会的讲师之一、Grab高级工程师高超老师进行了文字专访。 1、首先介绍一下自己。 高超,目前就职于东南亚最大出行平台Grab,任软件工程师。 主要负责Grab内部大数据平台的开发, 涉猎领域包括分布式系统,机器学习平台和微服务架构。 2、回忆一下与Golang的渊源。 是什么原因决定尝试Golang? 自己用Go语言实现的第一个项目是什么?当时 Golang 有什么令人惊喜的表现,又有什么样的小不足, 这个不足在Golang已经更新到1. 8版本的时候是否已经得到改善? 我是在2011年就接触过Go, 但是直到2013年底才开始在生产环境中采用。 当时作为一家初创电商公司的技术负责人, 发现原本基于Django开发的整体性架构网站的性能渐渐跟不上 业务的发展,部署和运维也变得越来越麻烦, 架构的服务化势在必行。在这样的一个上下文中, 我们决定采用Go开发一套单独的RESTful API层为移动端服务。 这个决策的结果是非常令人满意的, 我们发现Go不但开发效率很高(