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

IntelliJ IDEA 安装Golang插件

网上的例子比较多,这里不重复,只解决我遇到的 --新版本的Intellij无法安装插件的问题。 1、输入仓库网址,搜索不到新的golang插件 2、从https://plugins.jetbrains.com/plugin/5047-go-language-golang-org-support-plugin下载插件,选择 “install plugin from disk”,提示plugin ××× is incompatible with this installation。 3、满足 1、2后恭喜你,无可适配的插件版本。 解压插件zip包,找到lib中 intellij-go-***.jar ,打开jar中的META-INF\plugin.xml,修改 阅读全文

博文 2017-08-16 10:03:19 nickso

阿里巴巴容器技术Pouch

2017年杭州云栖大会中,阿里巴巴正式宣布,自主研发的容器技术 Pouch 将以开源的形式回馈社区,希望与开发者共同推动中国容器技术发展,共建容器生态。 ![image](https://static.oschina.net/uploads/space/2017/1104/104417_iyoH_12.jpg) 阿里Pouch并不是一个完全创新的技术。最早,阿里基于LXC技术为集团业务提供容器服务,2011年,阿里自研容器技术T4,2016年,阿里内部将容器技术重新命名为Pouch,并于去年支持集团内部大量核心业务,比如电商平台核心业务、主要应用和部分数据库、蚂蚁金服的支付业务,淘宝网的交易业务等等。 关于Pouch的命名由来,源于阿里作为开放赋能者,注重用户场景应用的初衷。正如阿里巴...阅读全文

开源项目 2017-11-27 05:00:06 网友

Go语言内幕(6):启动和内存分配初始化

本文由 伯乐在线 - yhx 翻译,黄利民 校稿。未经许可,禁止转载!英文出处:Siarhei Matsiukevich。欢迎加入翻译组。 《Go语言内幕(1):主要概念与项目结构》 《Go语言内幕(2):深入 Go 编译器》 《Go语言内幕(3):链接器、链接器、重定位》 《Go语言内幕(4):目标文件和函数元数据》 《Go语言内幕(5):运行时启动过程》 本文是 Golang 内部机制探索系列博客的后续。这个系列博客的目的是探索 Go 启动过程,这个过程也是理解 Go 运行时(runtime)的关键之处。本文中我们将一起去看看启动过程的第二个部分,分析参数是怎么被初始化的及其中有哪些函数调用等等。 启动顺序 我们从上次结束的地方继续。在 runtime.r0_to 函数中,我们还有一部分...阅读全文

博文 2016-06-01 14:49:26 伯乐在线

数字货币量化交易框架Samaritan

Samaritan 是一个开箱即用的数字货币量化交易框架,可以非常方便地部署属于自己的量化交易平台,目前已适配了 okcoin 中国、火币网、Poloniex、BTCC、中国比特币、okcoin 期货等交易所的接口,更多的交易所适配和功能特性正在陆续开发中。 ![image](https://raw.githubusercontent.com/miaolz123/samaritan/master/docs/_media/add-exchange.png) ![image](https://raw.githubusercontent.com/miaolz123/samaritan/master/docs/_media/add-algorithm.png) ![image](https:/...阅读全文

影游联动出典范,《青丘狐传说》成功的基础4大要素

刚过去的3月份,最具有话题性和关注的手游莫过于《青丘狐传说》了,上线首日即登顶iOS免费榜第一名,随着同时段同名电视剧的热播,《青丘狐传说》被称为又一次“影游联动的典范”,引发了全行业的广泛热议。作为其测试服务提供商,TestBird有幸全程见证紫龙互娱对该款开山作品的精心打磨,也寄希望通过专访《青丘狐传说》的制作团队,为您揭开霸榜背后的秘密。 强力IP,影游联动,奠定扎实的用户基础 《青丘狐传说》作为原搜狐畅游游戏事业群总裁王一成立紫龙互娱后的开山之作,顺应了2015年以来的IP运作热潮。仙侠题材本身是具有庞大用户群体的,紫龙互娱希望将《青丘狐传说》打造成一款具有代表性的手游产品。 同时,基于聊斋故事创作的《青丘狐传说》极富的东方传统文化色彩,它构建的全新世界观非常适...阅读全文

h5聊天室模板|仿微信聊天室html5

文链接:https://www.cnblogs.com/xiaoyan2017/p/9266179.html运用html5开发的仿微信聊天室实战项目weChatRoom,基于h5+css3+zepto+weui+wcPop+swiper等技术混合开发,整体采用flex布局模式,兼容适配各种手机屏幕,实现了消息、表情发送,动图gif,图片、视频预览,红包/打赏等功能。​// ...滚动聊天区底部 function wchat_ToBottom(){ //$(".wc__chatMsg-panel").animate({scrollTop: $("#J__chatMsgList").height()}, 0); $(".wc__slimscroll2").slimscroll({ scrollB...阅读全文

博文 2019-02-24 11:22:01 xiaoyan2015

聚焦市场开发热门技术 手把手带你开发商业级社交App 完整版

第1章 课程导学与准备工作本章主要介绍为何要学习高性能社交App的设计与开发,展示本门课程项目,讲解学习阶梯和实现思路,之后会为大家介绍本课程内容具体安排,最后给出如何学好这门课程的一些学习建议。希望大家都能通过这门课程,学有所成,学有所归。...第2章 AndroidX与Gradle本章会带领大家全面了解AndroidX,并且会传授大家Gradle在项目中的一些优化技巧,以及如何使用Gradle提升项目构建速度。第3章 即时通讯和音视频基础本章会带领大家认识融云的即时通讯和音视频的开发文档,分析实现思路,提前一步铺垫相关技能的基础知识。第4章 通用Framework设计本章会带领大家对通用的功能进行抽取,封装简化之前的冗余代码,做到逻辑与工具分离的开发思想,我们会从创建Framework、...阅读全文

博文 2019-12-18 23:39:59 buzzttys

golang的template试水

解析xml生成相应的java文件 package gsxdb import ( "io" "ron.zhang/util/file" "ron.zhang/util/str" "text/template" ) //xbean的模板 var xbeanTmplate = ` package xbean; import xdb.Bean; public class {{.Name }}Stub extends XbeanAdaptor<{{.Name}}> implements Bean { {{range $index,$V:=.Attributes }} private {{.Des }} {{$index}} ;{{print "\n"}} {{end}} {{range $index,...阅读全文

博文 2014-10-04 19:26:15 ronzhang-536

Go语言内存分配器的实现

前几天断断续续的写了3篇关于Go语言内存分配器的文章,分别是Go语言内存分配器设计、Go语言内存分配器-FixAlloc、Go语言内存分配器-MSpan,这3篇主要是本文的前戏,其实所有的内容本可以在一篇里写完的,但内容实在太多了,没精力一口气搞定。本文将把整个内存分配器的架构以及核心组件给详细的介绍一下,当然亲自对照着翻看一下代码才是王道。 内存布局结构图 我把整个核心代码的逻辑给抽象绘制出了这个内存布局图,它基本展示了Go语言内存分配器的整体结构以及部分细节(这结构图应该同样适用于tcmalloc)。从此结构图来看,内存分配器还是有一点小复杂的,但根据具体的逻辑层次可以拆成三个大模块——cache,central,heap,然后一个一个的模块分析下去,逻辑就显得特别清晰明了了。位于结构图...阅读全文

博文 2014-11-13 21:58:15 skoo

Go语言内存分配器设计

Go语言的整个内存管理子系统主要由两部分组成——内存分配器和垃圾收集器(gc)。十一小长假期为了避开我泱泱大国的人流高峰,于是在家宅了3天把Go语言的内存分配器部分的代码给研究了一番,总的来说还是非常酷的,自己也学到了不少的东西,就此记录分享一下。整个内存分配器完全是基于Google自家的tcmalloc的设计重新实现了一遍,因此,想看看Go语言的内存分配器实现的话,强烈建议先读一读tcmalloc的介绍文档,然后看看Go runtime的malloc.h源码文件的注释介绍,这样基本就大概了解Go语言内存分配器的设计了。 Go的内存分配器主要也是解决小对象的分配管理和多线程的内存分配问题。(后面提到的内存分配器都是指代的Go语言实现的内存分配器)。内存分配器以32k作为对象大小的定夺标准,小...阅读全文

博文 2014-11-12 17:25:06 skoo

如何做好自适应网站

想要自己动手做一个好网站,首先你要了解网站建设的步骤、流程、所需的要素。做网站不是说一朝一夕就能马上完成的,一个好网站是要通过不停的测试与修改才能算做好一个网站。而不是把一个网站做出来就完事了,还要通过各方面的测试与体验才能更好的完善出一个完美的网站。网站建设的过程是枯燥乏味的,做网站也考验耐心。做为资深网站测评者的小编,今天给大家说说怎么来断定一个网站的好与坏呢? 一、 网站的响应速度 一个网站最重要是浏览用户的体验,如果网站的响应速度慢,就会导致用户在体验时的兴趣大大减少。 二、 网站内容的丰富性 网站内容要多样式,不能太过单一,就算是企业型展示网站也不能光是做一些行业的宣传。要多做点关于行业内的新闻,这样整个网站才会感觉有内容。 三、 网站的快...阅读全文

Go中实现手动内存分配的坑

Go中实现手动内存分配的坑 2016-07-10 你一定想到过,分配一块大的内存,然后从里面切小的对象出来,手动管理对象分配。分配的开销非常小,就是offset加一下。尤其是有些场景,释放时直接把offset重置,就可以重用这块空间了。实现手动内存分配的好处是,减少小对象数目,从而减少垃圾回收时的扫描开销,降低延迟和提升整个性能。 想到不代表做过,做过会踩坑,这篇文章会把你可能要踩的坑都说一遍。不过先说结论:别这么干,不作死就不会死! TL;DR 扩容 开始很容易想用make([]byte)分配空间,如果大小不够时,还可以进行扩容。这是第一个陷阱。 不要append,别让它扩容。一旦发生扩容,会分配一块新的空间,而旧的slice将不再有任何变量引用它,于是会被垃圾回收掉。等等!之前分配的对象...阅读全文

Go 语言的内存管理

这篇博客是我在维尔纽斯的 [Go Meetup](https://www.meetup.com/Vilnius-Golang/events/249897910/) 演讲的总结。如果你在维尔纽斯并且喜欢 Go 语言,欢迎加入我们并考虑作演讲 在这篇博文中我们将要探索 Go 语言的内存管理,首先让我们来思考以下的这个小程序: ```go func main() { http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) }) http.ListenAndServe(":8080", nil) }...阅读全文

博文 2018-09-20 22:25:03 polaris

Go语言内存分配器-FixAlloc

昨天写了一篇Go语言内存分配器设计,记录了一下内存分配器的大体结构。在介绍内存分配器的核心实现前,本文先介绍一下内存分配器中一个工具组件——FixAlloc。FixAlloc称不上是核心组件,只是辅助实现整个内存分配器核心的一个基础工具罢了,由此可以看出FixAlloc还是一个比较重要的组件。引入FixAlloc的目的只是用来分配MCache和MSpan两个特定的对象,所以内存分配器中有spanalloc和cachealloc两个组件(见《Go语言内存分配器设计》的图)。MCache和MSpan两个结构在malloc.h中有定义。 定义在malloc.h文件中的FixAlloc结构如下,比较关键的三个字段是alloc、list和chunk,其他的字段主要都是用来统计一些状态数据的,比如分配了...阅读全文

博文 2014-11-13 21:58:14 skoo

Go语言内存分配器-MSpan

MSpan和FixAlloc一样,都是内存分配器的基础工具组件,但和FixAlloc没太大的交集,各自发挥功效而已。span(MSpan简称span)是用来管理一组组page对象,先解释一下page,page就是一个4k大小的内存块而已。span就是将这一个个连续的page给管理起来,注意是连续的page,不是东一个西一个的乱摆设的page。为了直观形象的感受一下span,还是得画个图吧,图形是最好的交流语言。 MSpan结构定义在malloc.h头文件中,代码如下: struct MSpan { MSpan *next; // in a span linked list MSpan *prev; // in a span linked list PageID start; // start...阅读全文

博文 2014-11-13 21:58:14 skoo

golang对象内存分配

一、分配对象(源码) // 分配对象内存入口 func newobject(typ *_type) unsafe.Pointer { return mallocgc(typ.size, typ, true) } // 分配指定object的大小(bytes数) // 当分配的object大小 <= 32kb 使用每个P本地缓存空闲列表即可 // > 32 kB 直接堆上进行分配. func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { // 零长度对象 if size == 0 { return unsafe.Pointer(&zerobase) // 在heap上分配,则都指向预设的同一全局变量(零长度...阅读全文

博文 2019-01-07 19:34:46 神奇的考拉

Android工程师笔试常见的10个NDK与游戏开发简答题

![t014ccdb2f015c81abf.jpg](http://studygolang.qiniudn.com/151014/079d7f84e8486fc65042fe01cccb9436.jpg)   应聘软件开发的工作,一般都会有面试和笔试两个环节,Android开发工程师的的应聘也是如此。今天小编就将为大家整理10道有关NDK与游戏开发的简答题及答案,希望对求职Android工程师的童鞋有所帮助。   1、 Paint类有哪些常用方法?   void setARGB(int a, int r, int g, int b) 设置Paint对象颜色,参数一为alpha透明通道   void setAlpha(int a) 设置alpha不透明度,...阅读全文

分布式数据传输中间件DTLE

**DTLE是一个开源的数据传输中间件**,其针对的核心场景如下:  **跨数据中心的数据传输**:DTLE能在数据中心间进行可靠数据传输,并提供链路压缩以降低传输成本 **云间数据同步/迁移**:DTLE能提供在公有云间架设数据同步通道,以支持数据容灾等需求 **数据汇聚**:DTLE能将多个数据源汇聚到同一个数据源,以提供数据分析/数据转储的功能 **数据订阅**:DTLE能将数据源的变更消息发往Kafka等消息中间件,以支持数据订阅通知/缓存失效通知等需求 **跨数据中心的双向复制**:DTLE能在数据中心间提供双向复制通道,以配合业务实现数据双写   **分布式架构**:DTLE在数据传输这个基本场景上,使用了成熟的分布式任务调度架构,可以便捷地在集群中配置大量的数据传...阅读全文

DockOne技术分享(二十四):容器和IaaS:谁动了谁的奶酪

【编者的话】此次主要分享一下ZStack对IaaS和Container之间关系的一些思考。 很高兴今天能在这里跟大家一起分享一下ZStack对IaaS和Container之间关系的一些思考,我先简单介绍一下我接触容器技术的一些背景。 2013年的时候,我还在Citrix工作,有一天梁胜和我们的架构师Chairdeep找到我,说有一个客户需要用到容器,让我调研一下,当时这个客户主要需求是要做HPC,即高性能计算,传统虚拟技术性能损耗比较大,用Bare Metal技术又失去了虚拟化的灵活性,所以我们决定用容器方案,比如在一个机器上只跑一个容器,这样这个虚机就可以获得近乎物理机的性能,同时具有所有虚拟化的灵活性。 最初我选择的方向是LXC,因为这个技术我本身比较了解,也是比较流行的技术,我花了几天...阅读全文

博文 2017-06-25 15:01:17 李颖杰

从源码讲解 golang 内存分配

## 引言 golang 是谷歌2009年发布的开源编程语言,截止目前go的release版本已经到了1.12,Golang 语言专门针对多处理器系统应用程序的编程进行了优化,使用 Golang 编译的程序可以媲美 C /C++代码的速度,而且更加安全、支持并行进程。和其他“高级语言”一样,golang同样有一套自己的内存管理机制,自主的去完成内存分配、垃圾回收、内存管理等过程,从而避免频繁的向操作系统申请、释放内存,有效的提升go语言的处理性能。由于篇幅有限,本文重点针对golang1.12.6版本就内存分配情况进行一下梳理和讲解。golang的内存管理是基于tcmalloc模型设计,但又有些差异,局部缓存并不是分配给进程或者线程,而是分配给P(Processor);golang的GC是s...阅读全文

博文 2019-08-11 01:00:24 polaris

go-mysql: database/sql 接口适配

go-mysql已经支持golang database/sql接口,并通过https://github.com/bradfitz/go-sql-test测试用例。 现在go-mysql可以直接通过golang sql接口使用,如下: import _ "github.com/siddontang/go-mysql/mysql" import "database/sql" 后续的使用,可以直接参考相关golang sql的教程,譬如这个。 golang sql接口的兼容主要在driver.go的文件中, go-mysql支持的dsn格式为: :@:/ 因为在实现go-mysql的过程中,我就有意识的将一些接口设...阅读全文

博文 2014-10-06 08:54:32 siddontang

适配的那些事

本文来自网易云社区作者:施丹丹1.何为适配 简单来说就是在不同设备上检查功能及样式是否正常2.设备的挑选 a.首先考虑操作系统,Android及IOS从支持的系统开始测试,如Android4.4及IOS8开始,一直到目前市场上最新的系统。一般只要考虑系统大版本即可,若是某个功能是针对系统小版本来判断的,如Apple Pay的出现条件,是iPhone6 & IOS9.3以上,此时就应该考虑IOS9.2及IOS9.3、IOS9.4的系统了;还有若是新出的小版本,一般也是要简单验证下。 b.厂家型号,主要是针对Android机子来说的,某些厂商有自己定制的ROM。测试方法:可以先测用户常用的机型,再考虑特殊机型(如小米、魅族等等定制rom的机子),最后可以测下现有的&未测过的型号。以下是开发拉取的...阅读全文

博文 2018-09-19 17:34:42 yijian2595

设计模式-适配器模式(Go语言描述)

在上一篇博客设计模式-策略模式(Go语言描述)中我们用最简单的代码用go语言描述了设计模式中的策略模式,用最简单的实例来描述相信可以让初学者可以很轻松的掌握各种设计模式。继上篇博客,我们接着用同样简单的代码来了解一下适配器模式。 适配器模式介绍 说起适配器模式,相信很多做android的同学第一印象就是AdapterView的Adapter,那它是干嘛用的呢?为什么要叫adapter呢?要了解这个问题,我们首先来看看适配器模式的定义: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four 恩,看起来好像有点迷糊,举个例子吧: 我电脑的电源是三个插头(也就是有地线)的那种,不知道为啥学校的插座都是两个插孔的...阅读全文

博文 2016-02-01 11:00:02 qibin0506

图解Go内存分配器

本文翻译自《A visual guide to Go Memory Allocator from scratch (Golang)》。 当我刚开始尝试了解Go的内存分配器时,我发现这真是一件可以令人发疯的事情,因为所有事情似乎都像一个神秘的黑盒(让我无从下手)。由于几乎所有技术魔法都隐藏在抽象之下,因此您需要逐一剥离这些抽象层才能理解它们。 在这篇文章中,我们就来这么做(剥离抽象层去了解隐藏在其下面的技术魔法)。如果您想了解有关Go内存分配器的知识,那么本篇文章正适合您。 一. 物理内存(Physical Memory)和虚拟内存(Virtual Memory) 每个内存分配器都需要使用由底层操作系统管理的虚拟内存空间(Virtual Memory Space)。让我们看看它是如何工作的吧。...阅读全文

Go语言内存分配器-FixAlloc

Go语言内存分配器-FixAlloc 09 October 2013 skoo 阅读 918 次 1 人喜欢 0 条评论 收藏 昨天写了一篇Go语言内存分配器设计,记录了一下内存分配器的大体结构。在介绍内存分配器的核心实现前,本文先介绍一下内存分配器中一个工具组件——FixAlloc。FixAlloc称不上是核心组件,只是辅助实现整个内存分配器核心的一个基础工具罢了,由此可以看出FixAlloc还是一个比较重要的组件。引入FixAlloc的目的只是用来分配MCache和MSpan两个特定的对象,所以内存分配器中有spanalloc和cachealloc两个组件(见《Go语言内存分配器设计》的图)。MCache和MSpan两个结构在malloc.h中有定义。 定义在malloc.h文件中的Fi...阅读全文

博文 2016-04-11 08:00:04 caoshulin1989

Go GC

大家好,我是 Okada([@ocadaruma](https://twitter.com/ocadaruma)),LINE 广告平台团队的成员。我对 Go 的 GC (垃圾收集器)有点感兴趣,甚至还促使我专门写一篇关于它的博客。Go 是一门由 Google 开发,并且支持垃圾收集的编程语言。Go 通过[管道](https://tour.golang.org/concurrency/2) 支持并发。很多的公司,包括 Google,都在使用 Go,LINE 也用 Go 来开发工具和服务。 ## Go GC 用 Go,你可以很容易地创建出低延时的应用。Go GC 似乎比其他语言的运行时要简单得多。对于 [Go 1.10](https://golang.org/doc/go1.10) 版本,它的垃...阅读全文

博文 2018-11-07 10:28:34 gogeof

[go语言]Buffered channel、slice和mutex的简单性能测试

测试代码: package main import ( "fmt" "runtime" "sync" "time" ) const COUNT = 1000000 func bench1(ch chan int) time.Duration { t := time.Now() for i := 0; i < COUNT; i++ { ch <- i } var v int for i := 0; i < COUNT; i++ { v = <-ch } _ = v return time.Now().Sub(t) } func bench2(s []int) time.Duration { t := time.Now() for i := 0; i < COUNT; i++ { s[i] = ...阅读全文

博文 2014-11-02 15:06:15 stevewang

Go手动内存分配

2013-10-27 Go手动内存分配 Go手动内存分配 用Go的时候,有时候又想自己管理内存。所以决定写个手动内存管理的包吧。就当无聊练练手... 总体设计 两级分配。较大内存以页为单位分配,每页4k。分配出去的大块内存只能是1页,2页,3页...较小内存使用buddy算法结合分配池的方式进行分配。buddy算法主要是方便回收,对于各种不规则大小则分别维护一个free的链表。 整体上基本类似于Go本身使用的内存管理算法,除了没有引入垃圾回收标记信息,以及对小对象使用buddy分配算法。 buddy算法 管理结点使用的内存跟最小最大结点相关。如果最小单元太小,则浪费过多的管理结点。管理结点数目=最小单元数目*2 如果最大单元过大,则需要用更长的整型来记录大小,单个管理结点的大小增加。 bud...阅读全文

博文 2015-03-17 10:25:55 zenlife

记一次vue+golang开发个人博客网站经历

源代码: 博客地址: http://percywang.top前端: https://github.com/pppercyWan... 后端: https://github.com/pppercyWan... 前言 大概在半年前,因为公司技术栈的原因。作为小前端的俺,对golang也产生了极大的兴趣。就想着用golang(iris) + vue.js来搭建一个博客。这半年因为加班的原因,留给自己的时间比较少。好歹前几日备案刚刚下来,也算是初步的搭建完成了。 博客风格 刚刚工作一年多,但搭建博客的想法在我刚接触前端的时候就有了。但是一直都不知道自己的博客应该长啥样,怎么去设计它。有一天在刷PC端twitter的时候,点了点按钮,滚了滚鼠标。行吧,就它了。 blog设计 我希望这个blog能够有...阅读全文

博文 2020-01-14 18:32:39 优雅的王德奥

AliOS Things网络连接技术概述

摘要: AliOS Things具有非常丰富的连接组件和能力,主要包括: 自组织网络协议(uMesh), 套接字适配层(SAL),TCP/IP网络协议栈(LwIP)和连接协议(WiFi,BLE, LoRaWAN, GPRS和NB-IoT等) AliOS Things 是 AliOS 家族旗下的、面向 IoT 领域的、轻量级物联网嵌入式操作系统。 AliOS Things 致力于搭建云端一体化 IoT 基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云 Link,可广泛应用在智能家居、智慧城市、新出行等领域。 AliOS Things不仅是一个传统的RTOS,而是一个具有丰富组件的,云端一体的运行在嵌入式MCU上的嵌入式操作系统。它...阅读全文

[翻译]Go tip(2013-08-23)带来的变化

Dominik Honnef(之前搞错成 Russ Cox 了)在 What’s happening in Go tip (2013-08-23) 中介绍了一些关于 Go 语言的一些变化。这些变化包含了语法、性能、潜在风险和工具链。并且,这些新的东西可能会随着 Go 1.2 版本一同发布。为了方便中文读者,翻译在此。 ————翻译分隔线———— Go tip(2013-08-23)带来的变化 上周我发布了关于 Go tip 的变化的系列文章的第一篇。得到了大量的肯定,因此这是第二篇。感谢你的支持,并且希望你能像喜欢第一篇文章一样喜欢本文。 有哪些变化 这次,将对以下内容进行探讨: 关于切片的新语法 性能改进 快速的,常量时间的 P-256 椭圆曲线 godoc 到哪去了? 关于切片的新语法 ...阅读全文

博文 2014-10-09 16:20:11 mikespook

[go语言]内存分配器性能测试

在C/C++里,自己动手实现内存分配器是很常见的事情,写过几年C/C++程序的人可能都做过这样的事情。这其中很重要的一个原因是C/C++不支持垃圾回收。但是既然go语言已经支持垃圾回收,还有必要自己去写一个内存分配器吗?我们做一个简单的测试看看结果怎么样。 测试平台: OS: ubuntu 12.04 x86_64 CPU: i5 2.27G MEMORY: 8G // ben1.go 自己实现内存分配器 package main type Pool struct { buf []byte } func (p *Pool) alloc(size int) []byte { if len(p.buf) < size { l := 1024 * 1024 for l < size { l += ...阅读全文

博文 2014-10-30 18:07:21 stevewang

golang内存管理

几个关键数据结构 mspan 由mheap管理的页面,记录了所分配的块大小和起始地址等 mcache 与P(可看做cpu)绑定的线程级别的本地缓存 mcenter 全局空间的缓存,收集了各种大小(67种)的span列表 mheap 分配内存的堆分配器,以8kb进行页管理 fixalloc 固定尺寸的堆外对象空闲列表分配器,用来管理分配器的存储 内存分配逻辑 如果object size>32KB, 则直接使用mheap来分配空间; 如果object size<16Byte, 则通过mcache的tiny分配器来分配(tiny可看作是一个指针offset); 如果object size在上面两者之间,首先尝试通过sizeclass对应的分配器分配; 如果mcache没有空闲的span, 则向mc...阅读全文

博文 2019-08-09 00:32:55 SuperGopher

为什么 Go 还没实现分代和紧凑 GC

本文译自 Google 论坛(golang-nuts)版权@归原文所有. 有人在论坛里面问: 为什么 Golang 垃圾回收器不实现分代和紧凑 gc ? Ian Lance Taylor 的回复: 这已经在过去讨论过了. 忽略细节, 紧凑(compacting) GC 的基本优点是: 避免碎片, 以及; 允许使用简单而有效的凹凸分配器(bump allocator). 但是, 现代的内存分配算法, 象 Go 运行时使用的基于 tcmalloc 的方案基本上没有碎片问题. 而凹凸分配器对于 Go 这样需要锁的多线程程序中的单线程程序是简单有效的. 一般来说, 这可能更多有效地使用一组每个线程缓存来分配内存, 而在这一点上你已经失去了凹凸分配器的优势. 所以我会断言, 一般来说有很多注意事项导致...阅读全文

[笔记]Go语言实现同一结构体适配多种消息源

问题: 提供天气信息的网站有很多,每家的数据及格式都不同,为了适配各种不同的天气接口,写了如下程序。 代码如下: package main import ( "encoding/json" "errors" "fmt" "regexp" "strconv" "strings" ) var s string = ` { "error": 0, "status": "success", "date": "2015-03-26", "results": [ { "test": [ [ "fuck", "shit" ], { "ao": "xxx" }, "vfe" ], "currentCity": "郑州", "pm25": "95", "index": [ { "title": "穿衣", "...阅读全文

博文 2015-04-04 03:00:01 journeyonmyway

mysql5.6 rpm安装后运行错误

mysql5.6.16,rpm安装后运行,日志内出现以下错误: 2014-01-30 00:52:59 17504 [Warning] Buffered warning: Performance schema disabled (reason: init failed). 2014-01-30 00:52:59 17504 [Note] Plugin 'FEDERATED' is disabled. 2014-01-30 00:52:59 17504 [Note] InnoDB: The InnoDB memory heap is disabled 2014-01-30 00:52:59 17504 [Note] InnoDB: Mutexes and rw_locks u...阅读全文

用vue模仿twitter写一个自己的博客

vue生态十分的强大,UI组件库越来越多。而过分依赖组件库,只会导致自己的技术越来越烂。组件的编写,样式的书写,动画,适配,媒体查询等很多都不记得了。 自己一直想着写一个博客。打算模仿twitter的一个页面。写一个自己的博客,先用vue将前端部分写好,后续再用golang或nodejs写后端部分 Github前端 https://github.com/pppercyWang/twitter-blog-vue 目录 头部导航栏实现 拉幕效果 中间导航栏布局实现 模仿的页面 demo.gi...阅读全文

博文 2019-07-29 05:32:45 pppercywang

Golang 在国产化平台中应用

背景国产化平台主要以Linux系统为主,CPU架构包括Arm、MIPS、PowerPC等。基于国产化平台开发的系统应用大多需要适配多CPU架构。Go语言跨平台编译特性能很好适应这种异构需求。跨平台编译Go语言支持交叉编译,例如:在linux开发环境中:GOOS=linux GOARCH=arm go build -ldflags"-s -w" -i -o ./bin/bitA main.goGOOS=linux GOARCH=arm go build -ldflags"-s -w" -i -o ./bin/bitM main.go在windows开发环境中:创建编译脚本:build.batset GOPROXY=https://goproxy.ioset GOOS=linuxset GOAR...阅读全文

博文 2020-04-13 21:32:50 holimon

关于IoT网络的一些特征的探讨

摘要: 网络是IoT设备非常关键的部分,本文和大家一起探讨IoT网络的几个重要特征,及AliOS Things尝试提供的一些解决方案。 IoT网络的特征包括IP网络,UDP网络,多种通信手段及拓扑。而AliOS Things也尝试提供包括CoAP,SAL,uMesh等技术方案来应对这些挑战。 网络是IoT设备非常关键的部分,本文和大家一起探讨IoT网络的几个重要特征,及AliOS Things尝试提供的一些解决方案。 **IP网络** ![图片描述](http://img.blog.csdn.net/20171228154730132?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWlpbnNpZ2h0/font/5a6...阅读全文

图解Golang的内存分配

一般程序的内存分配 在讲Golang的内存分配之前,让我们先来看看一般程序的内存分布情况: 以上是程序内存的逻辑分类情况。 我们再来看看一般程序的内存的真实(真实逻辑)图: Go的内存分配核心思想 Go是内置运行时的编程语言(runtime),像这种内置运行时的编程语言通常会抛弃传统的内存分配方式,改为自己管理。这样可以完成类似预分配、内存池等操作,以避开系统调用带来的性能问题,防止每次分配内存都需要系统调用。 Go的内存分配的核心思想可以分为以下几点: 每次从操作系统申请一大块儿的内存,由Go来对这块儿内存做分配,减少系统调用 内存分配算法采用Google的TCMalloc算法。算法比较复杂,究其原理可自行查阅。其核心思想就是把内存切分的非常的细小,分为多级管理,以降低锁的粒度。 回收对象...阅读全文

博文 2019-06-10 12:34:28 RyuGou

DockOne技术分享(十七):360的容器化之路

【编者的话】容器化技术作为“搅局者”,势必面临适配公司已有架构的挑战,本文将为大家介绍360如何让Docker落地。主要包括三方面内容:一,结合公司业务特点,如何使Docker适配现有技术架构 ,完成线上环境快速部署扩容;二,“让产品失败的更廉价”,使用Docker构建PaaS环境加速中小业务快速孵化上线;三,使用Docker技术,在构建持续集成环境方面的一些积累。 容器化技术作为“搅局者”,势必面临适配公司已有架构的挑战,本文将为大家介绍360如何让Docker落地。主要包括三方面内容:一,结合公司业务特点,如何使Docker适配现有技术架构 ,完成线上环境快速部署扩容;二,“让产品失败的更廉价”,使用Docker构建PaaS环境加速中小业务快速孵化上线;三,使用Docker技术,在构建持...阅读全文

博文 2017-06-25 15:01:09 许四两

给Hugo站点添加搜索功能

## 实现思路 * 利用hugo生成的index.xml文件进行内容搜索。 * hugo的content目录下的html文件会被编译到模板中去。 * 利用以上特性使用js实现功能。 ## 效果图 演示地址:[https://www.rebootok.com/search/](https://www.rebootok.com/search/) ![QQ截图20200312154830.png](https://static.studygolang.com/200312/dda8953c4e8371ab27a838d4a56beb7e.png) ## 实现代码 content目录的search.html文件 ```html +++ title = "搜索" menu = "main" weigh...阅读全文

博文 2020-03-12 15:51:04 RebootOK

图解 TCMalloc

-- 前言 -- TCMalloc ( http://link.zhihu.com/?target=http%3A//goog-perftools.sourceforge.net/doc/tcmalloc.html ) 是 Google 开发的内存分配器,在不少项目中都有使用,例如在 Golang 中就使用了类似的算法进行内存分配。它具有现代化内存分配器的基本特征:对抗内存碎片、在多核处理器能够 scale。据称,它的内存分配速度是 glibc2.3 中实现的 malloc的数倍。 之所以学习 TCMalloc,是因为在学习 Golang 内存管理的时候,发现 Golang 竟然就用了鼎鼎大名的 TCMalloc,而在此之前虽然也对内存管理有过一些浅薄的了解,但一直没有机会深入。因此借此机会...阅读全文

博文 2017-09-14 06:08:50 hellocode

【转载】App测试要点

App测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试。在测试过程中需要注意的测试点如下: 1.安装和卸载 ●应用是否可以在IOS不同系统版本或android不同系统版本上安装(有的系统版本过低,应用不能适配) ●软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里。 ●安装过程中是否可以取消 ●安装空间不足时是否有相应提示 ●如果应用需要通过网络验证之类的安装,需要测试一下断网情况下是否有相应提示 ●是否可以删除应用(可通过桌面删除,也可以通过软件卸载安装。曾发现在IOS手相上有个应用安装时未完全安装,终止安装后,未完成安装的应用图标一直显示在手机上,并且无法成功删除) ●测试卸载后文件是否全部删除所有的...阅读全文

Go语言内存分配器-MSpan

Go语言内存分配器-MSpan 11 October 2013 skoo 阅读 713 次 0 人喜欢 0 条评论 收藏 MSpan和FixAlloc一样,都是内存分配器的基础工具组件,但和FixAlloc没太大的交集,各自发挥功效而已。span(MSpan简称span)是用来管理一组组page对象,先解释一下page,page就是一个4k大小的内存块而已。span就是将这一个个连续的page给管理起来,注意是连续的page,不是东一个西一个的乱摆设的page。为了直观形象的感受一下span,还是得画个图吧,图形是最好的交流语言。 MSpan结构定义在malloc.h头文件中,代码如下: struct MSpan { MSpan *next; // in a span linked list...阅读全文

博文 2016-04-11 16:00:01 caoshulin1989

图解Go语言内存分配

Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以自主地实现更好的内存使用模式,比如内存池、预分配等等。这样,不会每次内存分配都需要进行系统调用。 Golang运行时的内存分配算法主要源自 Google 为 C 语言开发的TCMalloc算法,全称Thread-Caching Malloc。核心思想就是把内存分为多级管理,从而降低锁的粒度。它将可用的堆内存采用二级分配的方式进行管理:每个线程都会自行维护一个独立的内存池,进行内存分配时优先从该内存池中分配,当内存池不足时才会向全局内存池申请,以避免不同线程对全局内存池的频繁竞争。 基础概念 Go在程序启动的时候,会先向操作系统申请一块内存(注意这时还只是一段虚拟的地址空间,并不会真正地分配内存),切成小...阅读全文

博文 2019-06-04 23:32:39 Stefno

图解Go语言内存分配

目录 基础概念 内存管理单元 内存管理组件 mcache mcentral mheap 内存分配流程 总结 参考资料 Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以自主地实现更好的内存使用模式,比如内存池、预分配等等。这样,不会每次内存分配都需要进行系统调用。 Golang运行时的内存分配算法主要源自 Google 为 C 语言开发的TCMalloc算法,全称Thread-Caching Malloc。核心思想就是把内存分为多级管理,从而降低锁的粒度。它将可用的堆内存采用二级分配的方式进行管理:每个线程都会自行维护一个独立的内存池,进行内存分配时优先从该内存池中分配,当内存池不足时才会向全局内存池申请,以避免不同线程对全局内存池的频繁竞争。 基础概...阅读全文

博文 2019-05-22 15:26:26 qcrao-2018

golang 内存分配器

背景 go的很多东西是内敛的,提倡大道至简,但是,我们也看到过对于一些对性能要求比较高的业务场景(比如游戏的某些业务场景),使用cgo等技术手段来绕过go的垃圾回收。所以说,我们不要把所有的目光都盯到那95%上,依然还有5%的情况是需要我们来处理的。即便在今天来看,内存依然是非常紧缺的资源,那么我们可以想象一下,如何管理和分配内存资源,这是一个非常有挑战的话题。 下面我们来看一下这段代码,看看内存究竟发生来什么。 package main func A() *int { x := 100 return &x } 但是如果有c语言经验的人,会知道这个代码是有问题的,我们来简单测试一下这个代码。 package main import "testing" func BenchmarkA (b *...阅读全文

博文 2018-07-07 13:34:43 wolf4j

Go语言中自动选择json解析库

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。 背景 golang官方为我们提供了标准的json解析库–encoding/json,大部分情况下,使用它已经够用了。不过这个解析包有个很大的问题–性能。它不够快,如果我们开发高性能、高并发的网络服务就无法满足,这时就需要高性能的json解析库,目前性能比较高的有json-iterator和easyjson。 现在我们需要引进一个高性能的json解析库,这里以json-iterator为例,但是我们全部换掉又不放心,所以可以先小范围的测试下,这时候我们就需要两个解析库并存,那么这时候我们如何选择我们需要...阅读全文

博文 2018-10-17 19:37:41 飞雪无情

Go 内存管理

内存管理缓存结构Go实现的内存管理采用了tcmalloc这种架构,并配合goroutine和垃圾回收。tcmalloc的基本策略就是将内存分为多个级别。申请对象优先从最小级别的内存管理集合mcache中获取,若mcache无法命中则需要向mcentral申请一批内存块缓存到本地mcache中,若mcentral无空闲的内存块,则向mheap申请来填充mcentral,最后向系统申请。 mcache + mspan最小级别的内存块管理集合mcache由goroutine自己维护,这样从中申请内存不用加锁。它是一个大小为67的数组,不同的index对应不同规格的mspan。newobject的时候通过sizetoclass计算对应的规格,然后在mcache中获取mspan对象。 123type ...阅读全文

博文 2017-12-18 13:34:54 nino's blog