Go语言中文网 为您找到相关结果 244

非技术型产品新人如何看待开发给出的工期?

非技术出身的产品经理,想必在从事产品工作前都会问,做产品需要技术基础吗?而大部分人都会告诉你,产品经理不会技术也可以。真是这样么? 那对于非技术出身的产品经理而言,如何看待开发给出的工期呢?比如在我面前说一个月,在老板面前说一个周,这个怎么破? 其实,对于非技术出身的产品经理,很难判断开发工期,但也不是完全没法解决,我们可以通过以下这两个方面提升自己来解决。 一方面,作为产品经理,你需要有长期的经验积累。做产品,有一方面的能力叫做技术理解力,技术理解力对于非技术出身的产品经理非常重要,应该不断的去学习跟产品相关的技术、大概逻辑,不用了解具体的细节,但应该大概知道大概逻辑,复杂程度,大概框架,并进行一定的学习,多和技术同学请教,培养自己的技术理解力。 另一方面,工期的评...阅读全文

为什么选择使用Go语言

为什么选择使用Go语言 国内很多云创业公司都会选择把Go作为首要语言,例如DaoCloud。为什么会选择Go呢?与其他语言的应用相比,它有什么优点呢? 1、学习曲线 它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。 2、效率 Go拥有接近C的运行效率和接近PHP的开发效率,这就很有利的支撑了上面大家追求快速的需求。 3、出身名门、血统纯正 之所以说Go出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。...阅读全文

切片的内部实现

最近比较忙也没有时间打理专栏,今天决定写一个关于切片的内部实现。 ---- 内部实现 ---- Go中的切片是一种数据结构,切片可以按照自己的方式增长或者减短,切片是一个很小的结构,在我的64位电脑上只有24字节,切片有三个字段如下: type slice struct { array unsafe.Pointer len int cap int } 阅读全文

博文 2017-08-10 00:54:32 诺唯

Golang 数据结构之【4.7环形队列】

package main import ( "errors" "fmt" ) //循环队列 const ( MaxSize int = 20 // 存储空间初始分配量 ) type QElemType int // QElemType类型根据实际情况而定,这里假设为int // 循环队列的顺序存储结构 type SqQueue struct { data [MaxSize]QElemType front int //头指针 rear int //尾指针 } //初始化队列 func (q *SqQueue) InitQueue() { q.front = 0 q.rear = 0 } //清空队列 func (q *SqQueue) ClearQueue() { q.front = 0 q....阅读全文

博文 2019-05-17 06:34:40 JiBadBoy

Kingbloc Pear是为中小企业云服务系统

Kingbloc Pear是什么:Kingbloc Pear是为中小企业云服务系统,应用系统,计算型,管理系统,数据处理平台准备的开发环境。系统整合企业可用案例及开发文档。Kingbloc Pear企业云系统开发平台特点:1 云计算领域主流开发语言golang,语法简洁易懂,部署方便,后期维护方便2 编译后不易被反编译,3 采用Nsq亿万级别消息分发工具,4 免费的开源数据库:mysql,5 高效,简洁的XORM框架,6 最新最靠谱的前端框架angular5 ( 相对与其它流行框架不需要各种额外集成,额外的扩展,整体架构需要提前精心规划)7 全新的前端组件库 ionic38 在大数据展示领域,灵活可控的D3js,和免费的图表展示库echartsjs9 PC 和 H5移动展示一套组件库10 可...阅读全文

Go框架解析-gin

前言 今天是我golang框架阅读系列第三篇文章,今天我们主要看看gin的框架执行流程。关于golang框架生命周期源码阅读下面是我的计划: 计划 状态 Go框架解析-beego done Go框架解析-iris done Go框架解析-gin done Go框架解析-echo doing Go框架解析-revel doing Go框架解析-Martini doing 再完成各个golang框架生命周期的解析之后,我会计划对这几个框架的优略进行一个系列分析,由于业内大多都是性能分析的比较多,我可能会更侧重于以下维度: 框架设计 路由算法 第一波我们主要把重点放在框架设计上面。 安装 上次阅读iris我们使用的glide安装的,今天我们安装gin尝试下使用gomod,具体步骤如下。 使用go ...阅读全文

博文 2019-07-08 09:02:39 TIGERB

以太坊源码分析—账户的管理

前言 以太坊是一个巨大的状态机,在网络中,每一个全节点都保存着以太坊状态机的全部历史,只要愿意,我们可以查询到任何时刻的状态(黄皮书中 World State),其中账户状态便是其中的一部分,这部分功能由主要由state包提供 基本概念 账户地址 在以太坊中,无论是外部账户还是合约账户,都以一个160bit的数组表示地址,它是由特定椭圆曲线上的一个点表示的公钥经过Keccak Hash算法截取而来。 外部账户和合约账户的区别 账户内容 以太坊中,账户用 Account 表示 type Account struct { Nonce uint64 Balance *big.Int Root common.Hash CodeHash []byte } Nonce:账户发起交易的次数 Balance...阅读全文

博文 2018-11-13 19:34:40 187J3X1

golang 生成二维码海报

生成带头像的二维码 import ( "errors" "fmt" "github.com/nfnt/resize" "github.com/skip2/go-qrcode" "image" "image/draw" "image/png" "os" ) var err error func createAvatar() (image.Image, error) { var ( bgImg image.Image offset image.Point avatarFile *os.File avatarImg image.Image ) bgImg, err = createQrCode("http://www.baidu.com") if err != nil { fmt.Println(...阅读全文

URLOS是一款Linux容器云管理面板

URLOS软件介绍 URLOS是一个应用容器管理软件 URLOS是一个Docker管理面板,它把服务器端软件应用的安装行为简化到极致,堪称服务器端的应用宝,具有集群管理、自动故障转移、自动负载均衡等高级功能,可轻易搭建7*24小时在线的网站运行环境。 借助URLOS可轻松让网站在拥有多个主机的集群上运行,单机故障不会导致网站停止。 URLOS官方网站 https://www.urlos.com URLOS演示 演示网址:http://demo.urlos.com:9968(用户名和密码使用默认的urlos,填写验证码后即可登录) URLOS具备以下特征 |-- 安全: 基于Docker容器技术,应用均运行在具有隔离功能的容器中,如果某个应用出现问题(包括假死、真死、漏洞、后门等问题),并不会...阅读全文

博文 2018-11-20 17:34:46 低调的维斯

Go Commons Pool发布以及Golang多线程编程问题总结

趁着元旦放假,整理了一下最近学习Golang时,『翻译』的一个Golang的通用对象池,放到 github Go Commons Pool开源出来。之所以叫做『翻译』,是因为这个库的核心算法以及逻辑都是基于 Apache Commons Pool 的,只是把原来的Java『翻译』成了Golang。 前一段时间阅读kubernetes源码的时候,整体上学习了下Golang,但语言这种东西,学了不用,几个星期就忘差不多了。一次Golang实践群里聊天,有人问到Golang是否有通用的对象池,搜索了下,貌似没有比较完备的。当前Golang的pool有以下解决方案: sync.Pool sync.Pool 使用很简单,只需要传递一个创建对象的func即可。 var objPool = sync.Po...阅读全文

博文 2016-01-19 10:37:26 jolestar

Apache的Mesos和Google的Kubernetes 有什么区别?

Apache的Mesos和Google的Kubernetes 有什么区别?本文来自StackOverFlow上的一个问题,主要讨论Mesos和Kubernetes的区别,相信我们很多人也有同意的疑问。 Kubernetes的开发者Craig回答了这个问题,同时masi也做了概述,不一定对,供读者参考。Kubernetes主要针对容器集群,而 Mesos适用于任何的框架和应用,所以Kubernetes可以运行于Mesos上。Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。它可以完美运行在现代的操作系统环境(比如CoreOS 和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。Kubernetes使用Golang开发,具有轻量化、模块化、便...阅读全文

golang环形队列实现

Summary 什么是环形队列 实现环形队列图示过程 golang版本代码实现过程 参考全部代码 什么是环形队列 在一个指定大小的数组里循环写入数据,借用二个指针分别实现入队标记与出队标记.也体现了指针的大好用处,请深入体会.大有裨益. 如图所示,一个环形队列.含有二个指针: 队列头指针,队列尾指针. 实现环形队列图示过程 初始化一个数组大小为6的环形队列, 头指针front=0, 尾指针rear=0, 刚好front=rear =0的状态,表示环形队列为空. 2.向环形队列里插入1个元素,则rear指针移动一格,front=0,rear=13.继续添加a2,a3,a4,a5元素,rear指针指到末尾处,front=0, reat=54.如果再继续添加a6元素,则rear=6,大于数组大小,...阅读全文

博文 2019-11-08 11:32:46 百里

API网关使用教程

课程介绍 API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成,向合作伙伴、开发者开放功能和数据。 产品详情:https://www.aliyun.com/product/apigateway 课时列表 • 课时1:创建一个 API • 课时2:如何调用 API • 课时3:如何生成和使用 SDK • 课时4:如何设置流量控制 • 课时5:这些地方容易出错 开始学习http://click.aliyun.com/m/27880/ ...阅读全文

GO语言垃圾回收机制

常见的垃圾回收方法: 引用计数:对每个对象维护一个引用计数,当引用该对象的对象被销毁时,引用计数减1,当引用计数器为0是回收该对象。 优点:对象可以很快的被回收,不会出现内存耗尽或达到某个阀值时才回收。 缺点:不能很好的处理循环引用,而且实时维护引用计数,有也一定的代价。 代表语言:Python、PHP 标记-清除:从根变量开始遍历所有引用的对象,引用的对象标记为"被引用",没有被标记的进行回收。 优点:解决了引用计数的缺点。 缺点:需要STW,即要暂时停掉程序运行。 代表语言:Golang(其采用三色标记法) 分代收集:按照对象生命周期长短划分不同的代空间,生命周期长的放入老年代,而短的放入新生代,不同代有不能的回收算法和回收频率。 优点:回收性能好 缺点:实现复杂 代表语言: JAVA ...阅读全文

依赖管理工具漫谈--从Maven,Gradle到Go

本文从Maven谈起,分析了Maven的主要思想以及Gradle对Maven的改进,最后谈了下Go语言面临的依赖管理问题。 为什么要有依赖管理工具? 谈依赖管理之前我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个『Hello World』,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传...阅读全文

小猿圈之解读Go语言的特点?

随着互联网的不断发展,语言也在不断的更新,现在时代正在走向数据化、人工智能的新时代,python、Go语言开始崛起,python已成为当今时代的主流,go语言也开始流行,现在正在向Go发展,越来越多的公司需要这门技术,薪资也在不断提升,那小猿圈为你解读Go语言的特点都有哪些?一、什么是Go语言Golang(GO)是由Google在2009年推出的编程语言,是一门全新的、现代的、语法简洁并容易上手的编程语言,是具备独立的运行时库,就像C语言一样。大神们创建Go语言的初衷是:近十年来开发程序之难让我们有点沮丧,于是Go诞生了。二、Go语言的特点1、学习曲线容易Go语言语法简单,包含了类C语法。因为Go语言容易学习,所以一个普通的大学生花几个星期就能写出来可以上手的、高性能的应用。Go语言的语法特...阅读全文

博文 2019-06-10 15:32:51 小猿圈加加

程序员遇到过的最难兼容性bug

最近看到一个来自国外网站Quora上的热门帖子《What’s the hardest bug you’ve debugged? | 你调试过的最难 BUG 是?》,觉得非常不错,再次分享给大家。这个帖子的原文作者叫做Dave Baggett,伯乐在线 – 熊铎 翻译。以下是故事正文: 回想起这个BUG,仍然让我有些痛苦。作为一个程序员,在发现BUG时,你学会了首先在自己代码中找问题,或许在测试一万次之后,你会把问题归咎于编译器。只有在这所有的都不起作用之后,你才会把问题归咎于硬件。 这是我遭遇一个硬件bug的故事。 抛开别的不说,我曾为《Crash Bandicoot》写存储卡(读写)代码。对于一个自大的游戏程序员,这就像是在公园里散步一样轻松愉快,我认为只要几天就写完了,最终调试用了...阅读全文

Golang圣经----读书笔记

前言 Go语言起源 Golang发展历程 Go语言项目 "软件的复杂性是乘法级相关的-----Rob Pike" 简洁的设计需要在工作开始的时候舍弃不必要的想法,并且在软件的生命周期内严格区别好的改变和坏的改变。通过足够的努力,一个好的改变可以在不破坏原有完整概念的前提下保持自适应,正如Fred Brooks所说的“概念完整性”;而一个坏的改变则不能达到这个效果,它们仅仅是通过肤浅的和简单的妥协来破坏原有设计的一致性。只有通过简洁的设计,才能让一个系统保持稳定、安全和持续的进化。 本书的组织 基础 第一章包含了本教程的基本结构,通过十几个程序介绍了用Go语言如何实现类似读写文件、文本格式化、创建图像、网络客户端和服务器通讯等日常工作。 第二章描述了Go语言程序的基本元素结构、变量、新类型定义...阅读全文

博文 2017-03-05 19:42:34 紫若丹枫

Go的单例模式

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 1.Go实现非线程安全的单例模式(懒汉 就是很懒的单例 哈哈): package singleton type singleton struct { } var instance *singleton func GetInstance() *singleton { if instance == nil { instance = &singleton{} // <--- NOT THREAD SAFE } return instance ...阅读全文

博文 2017-02-10 12:24:07 谢权

重温一遍数据结构之线性表(golang版)

目的 因为最近工作中碰到了一些关于数据结构的问题,发现有些生疏了,所以想重新自己再理一遍,就当是给自己的记录,之所以用golang主要也是因为对goalng比较感兴趣,写起来也比较顺手。本意也不是想分享关于什么是数据结构,因为这种概念性的东西没有什么太大意义,其实最重要的是让自己能看懂自己写了些什么,但是代码中写了非常详细的注释,所以基本都是以代码为主 线性表之顺序存储结构 以下代码是线性表中的顺序存储结构,基本略去了些容错的考虑,还是以实现功能为主 package main //线性表中的顺序存储结构 import ( "fmt" ) // 线性表中存储的数据类型 type Elem int type SqList struct { //最大长度 maxsize int // 当前长度 l...阅读全文

博文 2017-11-19 15:05:03 woshicixide

golang中的数组切片

概念:基于数组,数组切片添加了一系列管理功能,可以随时动态扩充存放空间,并且不会导致所管理的元素被重复复制。创建数组切片:方法一,基于数组:package main import "fmt" func main() { //define an array var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //create a slice based on array var mySlice []int = myArray[:5] fmt.Println("Elements of myArray: ") for _, v := range myArray { fmt.Print(v, " ") } fmt.Println(...阅读全文

博文 2017-02-09 18:26:00 yeleven

LotusDB-高性能 kv 数据库LotusDB

lotusdb 是一个结合 LSM 和 B+ 树优势的 kv 存储引擎,具备读写快速稳定、读写放大和空间放大极低、简洁优雅的特点。 https://github.com/flower-corp/lotusdb 有以下几大特点你可以学习: 1、代码简洁规范 2、涵盖大多数 Go 语言基础用法和高级特性 3、单元测试技巧 4、理解和实践常见 kv 存储模型(LSM 和 B+ 树) 5、数据库设计理念 6、底层基础知识实践(操作系统、文件、磁盘) ...阅读全文

开源项目 2022-01-22 16:56:48 roseduan

阿里讲师带你一步步学习分步式文件存储系统技术及实现

课程介绍 本课程针对分步式文件存储系统的实现进行讲解,首先分析为什么要使用这种分步式存储系统,以及这种系统在设计时需要注意的问题,并比较现在市面常见的分步式存储系统(HDFS、Ceph等),展示阿里Pangu系统针对其中问题的解决方法,并结合Pangu系统说明分步式存储系统的设计要点。 讲师介绍 姚文辉,2009年加入阿里巴巴,从事阿里巴巴自主研发的云计算平台—飞天分布式操作系统中的分布式存储系统—盘古。 课程目标 • 学习分步式文件存储系统的实现 适合人群 • 云计算开发者 课时列表 • 课时1:分布式存储客观需求 • 课时2:小概率事件对分布式系统的挑战 • 课时3:常见分布式系统-终版 • 课时4:分布式设计要...阅读全文

[易学易懂系列rustlang语言零基础快速入门(6)]

[易学易懂系列rustlang语言零基础快速入门(6)] 有意思的基础知识 我们现在回过头来看看,一些基础知识。 因为理解了前面的重要概念:所有权,借用,生命周期。 我们现在看基础知识就很简单了。 先看变量定义: let a = true;//rust不要求显式定义类型,编译器女王自动会根据上下文和用途,来自动定义类型,这里 //是:bool let b: bool = true;//如果显式定义类型,则通过:分号+类型 let (x, y) = (1, 2); let mut z = 5; z = 6; 在rust,这些变量定义叫变量绑定。 为什么这样说?因为rust的变量,默认是不可变的。 如果,要变成可变变量,要用关键字:mut。 那如果是常量呢? 看代码: 常量(const): co...阅读全文

go基本语法学习笔记之类型

整形 类型转换举例 var ia int64 = 54345 var ib int32 ib = int32(ia) fmt.Println("ibis", ib) 浮点形 go语言定义了两个浮点型 float32 等价于C语言的float类型, float64 等价于C语言的double类型 浮点数的比较 math.Fdim(f1, f2) < p p为定义的精度 如 0.00000001 字符串 var str1 string str1 = "this is first string" str2 := "this is second string" str3 := str1 + str2 fmt.Printf("the string str3: %s \n len: %d \n firs...阅读全文

博文 2016-01-28 12:00:01 wolgame

ChainDesk:初识链码-链码概念与原理

作者:ChainDesk韩小东,ChainDesk区块链行业分析师, ChainDesk区块链工程师目标1.认识 Hyperledger Fabric 中的链码(智能合约)2.明确系统链码的种类及作用3.熟知链码的生命周期管理任务实现能走到这一步,您离成功已经越来越近了,真的很不容易,中间经过了多少的大难、小难已经数不清了。而您的聪慧与无人可及的毅力让我不得不说一个大写的:服!下面我们进入正题。4.1.1 链码概念网络运行环境我们已经启动完成,现在我们从开发者的角度来认识一下完成交易所必须的智能合约(在 Hyperledger Fabric 中被称之为 Chaincode,也就是链上代码)的相关知识,以便于理解账本中的数据到底是通过什么方式进行操作。Chaincode:链上代码,简称链码,一...阅读全文

博文 2018-12-22 16:34:44 ChainDesk

【云存储】对象存储管理与安全

课程介绍 为降低云服务器负载和成本,一般需要将网站静态资源、图片、音视频、日志、下载资源等海量文件存储在更低单价的存储类型上,并配合CDN、图片处理、媒体转码、数据处理等服务,给客户提供更好的体验和更多服务。 本课程主要讲解海量、安全、低成本、高可靠的云存储服务——对象存储的常用操作,包括在云端存储静态资源,并通过控制台、API实现资源的上传下载,以及如何确保云端存储资源的安全。 学员受益: * 云存储常用操作:通过学习和在线实验,了解并掌握云存储的基本知识,以及常用的存储操作,为构建高可用网站打下基础。 * 模式真实场景:包含的两个在线实验一步一步带领你在Web开发中实现网站图片和文件的存储与下载。 * 认证证书:考试通过即可获得证书,证明自己拥有云存储...阅读全文

cache2go学习

题外话: 不管学习什么语言,在基础掌握之后,阅读大牛写的开源项目确实是一种相当实在的方式(可是本人之前对此极为排斥,一直觉得要想NB还不如自己写项目,现在想来当时真是高看自己了!!),通过研究别人的代码,不仅能学习大牛们在代码用所用到的语言知识,还能学习他们的设计思想,看到更清晰的结构!这些都是实实在在的福利!因此,阅读开源项目在我看来是必不可少的,而为了防止自己看过遗忘,同时为了更好的理解,把自己学到的记下来,方便随时查看,修正! cache2go 这是一个使用golang实现的并发安全并且包含超时机制的缓存库、缓存方式为表,表中可存储key-value方式的数据,篇幅所限,这里仅对其中的一些核心函数做说明 github地址: https://github.com/muesli/cache...阅读全文

博文 2017-10-05 16:30:01 themoonstone

兄弟连区块链培训分享Go语言获取packed struct的大小

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。网络协议里面,很可能遇到自定义的封包,对应到c里面的是typedef struct _PackageHeader{ int headerLen; int timeStamp; short cmd };为了保证单字节对齐,可以加上编译...阅读全文

博文 2018-08-21 16:35:19 兄弟连区块链培训

Golang 隐藏技能 -- 编译指令

类似C++中的 #pragma pack(2),Golang中也有一些编译指令。它们的实现方式是一些特殊的注释。 警告一下! 编译指令不是语言的一部分。它们可能是编译器实现的,编程规范中也没有对它们的描述。 语法: //go:directive 编译指令的语法是一行特殊的注释,关键字//和go之间没有空格。 //go:noescape func NewBook() (*Book) { b := Book{ Mice: 12, Men: 9 } return &b } 这段代码在C/C++中这样做,返回的是不可用的地址,显然是要出问题的。在go中是可以的。因为逃逸分析,b将会被分配在堆上。 逃逸分析: 逃逸分析可以识别生命周期超出变量声明函数的生命周期,并将变量从栈的分配上移动到堆中 Tech...阅读全文

博文 2019-08-20 22:02:42 郭老汉

Hyperledger Fabric1.4.4开发应用程序-场景-分析

本主题涵盖如何使用Hyperledger Fabric开发客户端应用程序和智能合约以解决业务问题。在涉及多个组织的真实商业票据场景中,您将了解实现此目标所需的所有概念和任务。我们假设区块链网络已经可用。 该主题专为多个受众设计: 解决方案和应用架构师 客户端应用程序开发人员 智能合约开发商 商务专业 您可以选择按顺序阅读主题,也可以根据需要选择各个部分。各个主题部分均根据读者的相关性进行了标记,因此,无论您是要寻找业务信息还是技术信息,当一个主题适合您时都会很清楚。 该主题遵循典型的软件开发生命周期。它从业务需求开始,然后涵盖开发应用程序和智能合约以满足这些需求所需的所有主要技术活动。 如果您愿意,可以按照简短的说明通过运行商业票据教程立即尝试商业票据方案。当需要对本教程中介绍的概念进行更全...阅读全文

[新品发布]全球首个百万IOPS云盘来了 阿里云推出超高性能云盘ESSD

摘要: 搭配ECS云服务器使用, ESSD可提供单盘高达100万IOPS的随机读写能力和低至0.1毫秒的单路时延,相比SSD云盘分别提升了50倍性能上限和降低80%读写时延,单台云服务器整体存储性能提升500%. 点此查看原文:http://click.aliyun.com/m/40293/ **阿里云发布超高性能ESSD云盘 100万IOPS随机读写刷新纪录** 1月9日,阿里云正式推出全球首个跨入IOPS百万时代的云盘——ESSD,单盘IOPS高达100万,这是阿里云迄今为止性能最强的企业级块存储服务。 搭配ECS云服务器使用, ESSD可提供单盘高达100万IOPS的随机读写能力和低至0.1毫秒的单路时延,相比SSD云盘分别提升了50倍性能上限和降低80%读...阅读全文

Go Commons Pool 1.0 发布

Go commons pool是一个通用的go语言对象池,基于Java版本的Apache Commons Pool改写。Go commons pool实现了Java版本的主要功能,改写了大多数Java版本的测试用例,测试覆盖率达到90%,性能测试结果和Java版本的相近,已经可以用于生产环境,于是发布1.0版本。 Go commons pool保留了Java版本的主要功能,包括: 自定义的 PooledObjectFactory. 丰富的设置选项,可以精确控制对象的生命周期。详细参看ObjectPoolConfig。 对象池是否是 LIFO (后进先出) 或者是 FIFO (先进先出) 对象池的容量控制 对象池对象的验证配置 获取对象时是否阻塞以及最大等待时间配置 对象池对象的回收机制配置(...阅读全文

Golang使用Map的正确姿势

初始化后再使用 Golang中,map是引用类型,如切片一样,通过下面的代码声明后指向的是nil,所以千万别直接声明后就使用,新手可能经常会犯如下错误: var m map[string]string m["result"] = "result" 由于字典是引用类型,所以当我们仅声明而不初始化一个字典类型的变量的时候,他的值是nil。对值为nil的字段除添加键值对外其他操作都不会引发错误。上面的第一行代码对其进行写入操作,就是对空指针的引用,这将会造成一个painc。所以,得记得用 make函数对其进行分配内存和初始化: m := make(map[string]string) 并发安全 并发安全也叫线程安全,在并发中出现了数据的丢失,称为并发不安全我们都知道非原子操作的都不是并发安全的,在...阅读全文

博文 2019-04-19 11:34:44 柳浪闻笛

游戏开发过程中需求变化那些事

[原文链接](http://www.bugclosed.com/post/18) : http://www.bugclosed.com/post/18 ## 背景 随着软件项目越来越庞大,为了提高开发效率和有效的质量管控,开发过程中的项目管理越来越重要,流程分工也在不断细化。传统的软件开发过程分大致分为如下几个步骤: 1. 需求提出 2. 可行性分析 2. 需求分析 3. 概要设计 4. 详细设计 5. 编码 6. 测试 7. 集成交付 产品的最终形态和功能都是第一步的需求所决定,“蝴蝶效应”在开发过程中体现特别明显,第一步的需求发生了变化,很可能会导致后面所有步骤都重来一遍。传统的项目管理除了对项目过程的管控,更多的是对需求的管理。传统的软件项目开发过程中会尽力避免需求的变更,甚至在需求确...阅读全文

【玩转云存储】对象存储OSS使用方法入门

课程介绍 阿里云对象存储OSS,提供海量、安全、低成本、高可靠的云存储服务,提供99.99999999%的数据可靠性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。 本课程主要介绍对象存储OSS的使用方法。 课程目标 • 掌握对象存储OSS的使用技巧 适合人群 • 云计算开发者 课时列表 • 课时1:对象存储OSS基本概念讲解 • 课时2:对象存储OSS静态网站托管功能 • 课时3:对象存储OSS跨域(CORS)管理功能 • 课时4:对象存储OSS权限控制功能 • 课时5:对象存储OSS日志统计功能 • 课时6:对象存储OSS文件(Obj...阅读全文

小猿圈之解读Go语言的特点?

随着互联网的不断发展,语言也在不断的更新,现在时代正在走向数据化、人工智能的新时代,python、Go语言开始崛起,python已成为当今时代的主流,go语言也开始流行,现在正在向Go发展,越来越多的公司需要这门技术,薪资也在不断提升,那小猿圈为你解读Go语言的特点都有哪些?一、什么是Go语言Golang(GO)是由Google在2009年推出的编程语言,是一门全新的、现代的、语法简洁并容易上手的编程语言,是具备独立的运行时库,就像C语言一样。大神们创建Go语言的初衷是:近十年来开发程序之难让我们有点沮丧,于是Go诞生了。二、Go语言的特点1、学习曲线容易Go语言语法简单,包含了类C语法。因为Go语言容易学习,所以一个普通的大学生花几个星期就能写出来可以上手的、高性能的应用。Go语言的语法特...阅读全文

博文 2019-06-10 23:33:24 小猿圈Ms加

你使用Kubernetes命名空间的方式对吗?

## 简介 Kubernetes 中有不少概念,这些概念在 RESTful API 中表现为对象 (“resource” 或 “kinds”)。 其中一个比较重要的概念是 namespace (命名空间)。 Kubernetes中,命名空间将单个集群分拆成多个虚拟的集群。本文的主题是命名空间的应用场景。 首先我们举个生活中的例子,做一个类比:命名空间就像家族的姓氏。比如一个家族的姓是”张”,有个家族成员叫”张三”,那么在这个家族中,大家说 “三”,我们可以唯一地确定是 “张三”。但是在家族外,如果要唯一确定这个人,则必须带上姓: “张三”,或者更准确一点 “赵家庄的张三”。 命名空间定义了一个逻辑分区,实现了一定程度上的隔离,它使得单个集群可以由多个用户(组) 使用,...阅读全文

Derek解读Bytom源码-持久化存储LevelDB

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍Derek解读-Bytom源码分析-创世区块 作者使用MacOS操作系统,其他平台也大同小异 Golang Version: 1.8 创世区块介绍 区块链里的第一个区块创被称为创世区块。它是区块链里面所有区块的共同祖先。 在比原链中创世区块被硬编码到bytomd中,每一个比原节点都始于同一个创世区块,这能确保创世区块不会被改变。每个节点都把创世区块作为区块链的首区块,从而构建了一个安全的、可信的区块链。 获取创世区块 ./bytomcli get-block 0 { "bits": 21...阅读全文

博文 2018-09-11 16:35:11 比原链Bytom

用Go写一个聊天软件

周末闲来无事,想着深入了解一下Go的socket编程,就试着写了个聊天软件,为了缩短战线,没有写UI,只是在终端中进行交互,所以如果一个用户和多个用户聊天的话,要打开多个终端进行…… 目前缺陷很多: 1. 没实现长连接的超时机制,所以如若一个用长时间占用资源而不聊天,服务端没办法踢下线 2. 由于没有存储用户信息,没有办法存储聊天记录 3. 因为没有UI,更谈不上用户体验 4. 没有对登录的用户进行流控处理,进入的人太多,server端必定crash掉…… 5. TCP连接没有走加密通道 此处省略一万字…… 总之,缺陷很多,但是无妨,以后慢慢改进,想到哪里就写到那里。 感兴趣的小伙伴,不妨加个star,能更方便的看到我得每次提交,以及增加的一些新东西。 ### 效果: ![效果图](http...阅读全文

博文 2020-01-01 15:46:29 zhangwei

[易学易懂系列|rustlang语言|零基础|快速入门|(6)]

有意思的基础知识 我们现在回过头来看看,一些基础知识。 因为理解了前面的重要概念:所有权,借用,生命周期。 我们现在看基础知识就很简单了。 先看变量定义: let a = true;//rust不要求显式定义类型,编译器女王自动会根据上下文和用途,来自动定义类型,这里 //是:bool let b: bool = true;//如果显式定义类型,则通过:分号+类型 ​ let (x, y) = (1, 2); ​ let mut z = 5; z = 6; 在rust,这些变量定义叫变量绑定。 为什么这样说?因为rust的变量,默认是不可变的。 如果,要变成可变变量,要用关键字:mut。 那如果是常量呢? 看代码: 常量(const): const N: i32 = 5; 静态变量(stat...阅读全文

Derek解读Bytom源码-创世区块

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 本章介绍Derek解读-Bytom源码分析-创世区块 作者使用MacOS操作系统,其他平台也大同小异Golang Version: 1.8 创世区块介绍 区块链里的第一个区块创被称为创世区块。它是区块链里面所有区块的共同祖先。 在比原链中创世区块被硬编码到bytomd中,每一个比原节点都始于同一个创世区块,这能确保创世区块不会被改变。每个节点都把创世区块作为区块链的首区块,从而构建了一个安全的、可信的区块链。 获取创世区块 ./bytomcli get-block 0 { "bits": 2161727821...阅读全文

博文 2018-08-28 11:35:14 比原链Bytom

常见登录验证机制

http://www.golang.ltd/forum.php?mod=viewthread&tid=7215&from=portal | 常见登录验证机制 HTTP Basic Auth HTTP Basic Auth 简单点说明就是每次请求 API 时都提供用户的 username 和 password,简言之,Basic Auth 是最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,尽量避免采用 HTTP Basic Auth。 OAuth OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用...阅读全文

博文 2019-04-03 15:34:42 Golang语言社区

Golang编程基础- 准备篇

Golang是google发布的开源编程语言,这里就不对其进行过多介绍,网上有很多文章已经把它的前身后世都介绍的很清楚了,有兴趣的可以去查阅,前几天刚开始接触Golang的开发,今天抽空在开发之余对其做一些整理,今天要说的就是Golang的基本数据类型。 单纯的介绍数据类型,没有任何意义,无非就是几几个类型,明白表示什么意思,但是一门语言要设置那么一些数据类型肯定是有它的原因的。我们需要了解一下不同的数据类型在内存中的形式。 首先来了解几个概念,bit(比特位),byte(字节),word(字)这三个概念以及它们之间的关系。 计算机是很多电路的集成,在计算机中每一个闭合电路只有 0, 1两种状态。所以数据在计算机中是以二进制(只有0和1组成)形式存在的。所以计算机的本质就是就是对0,1的操作...阅读全文

博文 2015-06-17 20:02:15 jameslong108159

使用Kubernetes 构建自动化平台

编者按:本文由Wercker CTO Andy Smith 分享,他分享了Kubernetes如何帮助他们节省时间并加速开发。本文是关于Kubernetes 1.3新功能一系列深入文章的第九篇。 我们在Wercker运行数百万容器执行用户的CI/ CD工作。这些容器的生命周期大多是短暂的,构建、测试和部署完成后,这些容器的生命周期随之结束。 虽然多数容器的生命是短暂的,但我们倾向于持续运行我们的基础设施。通常情况下我们需要跨多节点运行多个容器,所以一个高度可扩展的调度程序就显得非常有必要。我们决定使用Kubernetes。 Wercker 是容器中心自动化平台,它帮助开发人员构建、测试并部署应用程序。 我们支持任何数量的pipelines,从代码构建、测试微服务间的A...阅读全文

golang操作阿里云对象存储——OSS | 创建桶、上传、下载、查询、删除数据

本节介绍如何快速使用OSS Go SDK完成常见操作,如创建存储空间(Bucket)、上传/下载文件(Object)等。 先下载包github.com/aliyun/aliyun-oss-go-sdk/oss到GOPATH下 创建存储空间 存储空间是OSS全局命名空间,相当于数据的容器,可以存储若干文件。 以下代码用于新建一个存储空间: package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func handleError(err error) { fmt.Println("Error:", err) os.Exit(-1) } func main() { // Endpoint以杭州为例,其...阅读全文

存储IO加强型实例I1+D1 ——为极致存储性能要求场景而生

摘要: 企业客户广泛使用数据库、分布式缓存、ELK(Elasticsearch、Logstash和Kibana)日志分析和大数据等系统,对小IO随机读写IOPS和延时,以及大IO存储吞吐Throughput等提出了严格的要求。 企业客户广泛使用数据库、分布式缓存、ELK(Elasticsearch、Logstash和Kibana)日志分析和大数据等系统,对小IO随机读写IOPS和延时,以及大IO存储吞吐Throughput等提出了严格的要求。而当前高效云盘或SSD云盘存储在性能、成本等方面,还无法很好地满足企业客户存储严苛场景下的要求,成为制约企业客户上云的关键瓶颈。 针对此问题,阿里云ECS企业级产品线推出存储IO加强型实例I1(本地SSD型)和D1/D1NE(大数据型),为客户提...阅读全文

Go语言之变量篇

发自自己的公众号(灰子学技术)原文链接:https://mp.weixin.qq.com/s/m8iQdGu7g_8PX4s9mFbkDQ这篇文章便是笔者,在学习Go语言变量的时候,整理的一些知识。一、变量定义的格式C++的变量定义表达式如下所示:Type name = expression;,例如 int number = 10; // 表示的是 一个数据类型是int,名字叫做 number 的变量,它的初始值是 10。Go的变量定义表达式如下所示:var name type = expression ,例如 var number int = 10 // 表示的是 一个数据类型是int,名字叫做 number 的变量,它的初始值是 10。区别:1.C++ 需要在一句话的结尾 加上一个;号,...阅读全文

博文 2019-09-04 09:18:11 ZhDavis

Derek解读Bytom源码-创世区块

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍Derek解读-Bytom源码分析-创世区块 作者使用MacOS操作系统,其他平台也大同小异 Golang Version: 1.8 创世区块介绍 区块链里的第一个区块创被称为创世区块。它是区块链里面所有区块的共同祖先。 在比原链中创世区块被硬编码到bytomd中,每一个比原节点都始于同一个创世区块,这能确保创世区块不会被改变。每个节点都把创世区块作为区块链的首区块,从而构建了一个安全的、可信的区块链。 获取创世区块 ./bytomcli get-block 0 { "bits": 21...阅读全文

博文 2018-09-11 16:35:11 比原链Bytom