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

Cache为什么有那么多级?为什么一级比一级大?是不是Cache越大越好?

点击上方“公众号” 可以订阅哦!通过我们前面的系列文章,大家对Cache的组织形式和特性都有了一定的了解。有个问题不知道大家思考过没有:为什么Cache分这么多级,而是不是直接把L1或者L2增大了事?我们为什么不能直接做出个Cache奇大的CPU呢?下面我们来一一分析。为什么Cache要分级? 前文(L1,L2,L3 Cache究竟在哪里?)中我们提到CPU中有L1、L2、L3甚至L4级Cache。为什么搞这么麻烦,制程提高,可以放更多晶体管了,CPU厂商直接把L1和L2加倍不就好了吗?要回答这个问题,首先我们要知道L1和L2 Cache的区别,它们的构造一样吗?答案是否定的,虽然它们都是由CAM(Content Addressable Memory )为主体的tag和SRAM组成的,但是区...阅读全文

博文 2018-01-02 10:31:03 Wolf

Kubernetes学习系列

这段时间项目组内想要引入Kubernetes,作为第二代容器调度引擎,故最近在系统的学习Kubernetes。整理了一些学习笔记,心得,放到博客中,一来记录自己的学习经过,二来看能否帮到有需要的同学。详情见下: 1、Kubernetes核心概念总结——介绍基础架构、Pod、RC、Job、Service、Deployment等。 2、Centos7部署Kubernetes集群——基于Centos7,yum安装K8s,并配置集群,最后部署了容器覆盖网络——Flannel。 3、基于kubernetes集群部署DashBoard——基于上一篇部署的集群,搭建了DashBoard,其中介绍了一些众所周知的坑,比如google镜像国内无法下载。 4、为Kubernetes集群部署本地镜像仓库——针对上...阅读全文

博文 2018-03-14 10:28:05 xiaomin0322

Golang同步机制的实现

Golang的提供的同步机制有sync模块下的Mutex、WaitGroup以及语言自身提供的chan等。 这些同步的方法都是以runtime中实现的底层同步机制(cas、atomic、spinlock、sem)为基础的, 本文主要探讨Golang底层的同步机制如何实现。 1 cas、atomic cas(Compare And Swap)和原子运算是其他同步机制的基础, 在runtime/asm_xxx.s(xxx代表系统架构,比如amd64)中实现。amd64架构的系统中, 主要通过两条汇编语句来实现,一个是LOCK、一个是CMPXCHG。 LOCK是一个指令前缀,其后必须跟一条“读-改-写”的指令,比如INC、XCHG、CMPXCHG等。 这条指令对CPU缓存的访问将是排他的。 CMP...阅读全文

博文 2017-06-21 04:44:00 无心之祸

Go 1.3+ 编译器变革

概述 目前Go编译器是C写的,是时候换成Go啦。 背景 “gc"Go工具链来自Plan 9编译器的工具链。组装器、C编译器和链接器基本没变。Go的编译器(cmd/gc,cmd/5g,cmd/6g,cmd/8g)是配合工具链写的新的C程序。 项目起始时,用C而不是Go写编译器有很多好处。突出的比如,首先,那时候Go还不存在,没法儿写编译器。而且实际上,就算存在,也会经常有明显的不兼容的变化。用C不用Go可以避免初始和持续开发导致的问题。然而如今Go 1已经稳定,所以这些持续的问题减少了很多。 傅小黑翻译于 10 个月 前 0人顶 顶 翻译的不错哦! 持续开发的问题已经消除,为了让Go实现的编译器比C更有吸引力,另一些工程问题出现: 写正确的Go代码比写正确的C代码更容易。 调试错误的Go代码比...阅读全文

博文 2014-10-10 08:00:02 傅小黑, 偃鼠饮河

用 gofight 來測試 golang web API handler

**原文來自: [用 gofight 來測試 golang web API handler](https://blog.wu-boy.com/2016/04/gofight-tool-for-api-handler-testing-in-golang/)** 身為一位後端工程師,如果專案初期階段不導入測試,等到專案越來越大時,您就會發現,解了一個 bug,又產生好多個額外 bug,讓產品一直處於不穩定狀態。後端最主要提供前端或手機端 RESTFul API,所以今天來介紹一套 [gofight][2] 工具,用來測試 [Golang][1] 的 http [handler](https://golang.org/pkg/net/http/#Handler),讓開發者可以送 Form, ...阅读全文

Go 1.10目前进入feature Freeze状态,近期Russ Cox大神提交了两个Cls

cmd/go:make rebuild logic content-based instead of time-based 和 cmd/go: build cache, test cache, go install, go vet, test vet https://groups.google.com/forum/#!msg/golang-dev/qfa3mHN4ZPA/X2UzjNV1BAAJ 前者让rebuild基于源文件内容而不是源文件的modify time;后者为Go build等添加cache,加速首次之后的编译过程,从初步自测结果来看,rebuild的过程加速明显。 ![](https://wx4.sinaimg.cn/mw690/6caa654fly1fl6...阅读全文

配置管理之持续集成

虽然持续集成已经讲了很多年了,为了保持知识的连贯性,还是总结一篇吧,文中很多内容来自网络 - 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。Martin Fowler说过,"持续集成并不能消除Bug,而是让它们非常容易发现和改正。" 为什么要做持续集成 在《Code Complete》里提到了,对于持续集成(在书中,Steve McConnell使用Incremental Integration的术语)有以下几点好处: 易于定位错误。也就是当你的持续集成失败了,说明你新加的代码或者修改的代码引起了错误,这样你很容易的就可以知道到底是谁犯了错误,可以找谁来讨论。 及早在项目里取得系统级的成...阅读全文

golang logging,方便的日志输出

虽说go有自己的log内部实现,但是用起来呢我不太舒服,所以重新造了个。 ```go package main import ( "github.com/gamelife1314/logging" "os" ) func main() { logger := logging.GetDefaultLogger() logger.DEBUG("hello world, %s", "logging") logger.INFO("hello world, %s", "logging") logger.WARNING("hello world, %s", "logging") logger.ERROR("hello world, %s", "logging") logger.CRITICAL("hel...阅读全文

博文 2017-12-30 22:33:55 gamelife1314

【互联网早报】2017.11.09

## ??国内新闻?? 1. 小电成为腾讯全球伙伴大会独家共享充电服务商; http://dwz.cn/6OMUqO 2. 腾讯车联平台布局“AI in car”多家A股公司入围; http://dwz.cn/6OMPvi 3. 芝麻信用接入海外租车品牌「惠租车」,国外自驾游也可以衍生系列服务; http://dwz.cn/6ONbM9 4. 「木鸟短租」宣布完成 B + 轮融资,重点打造卫生、安全、服务有保障的四木房源。 http://dwz.cn/6ON3JC ## ? 国际新闻? 1. iOS 11.2 公测版推出个人转账功能 iPhone 6 以上设备可用; http://dwz.cn/6ONaEc 2. 谷歌首款真正无...阅读全文

go和python变量赋值的一个小问题

平时写得多的是python,最近看了一点go,今天碰到了一个问题,和大家分享一下 12345678910111213141516171819202122232425package mainimport "fmt"type student struct { Name string Age int}func pase_student() { m := make(map[string]*student) stus := []student{ {Name: "zhou", Age: 24}, {Name: "li", Age: 23}, {Name: "wang", Age: 22}, } for _, stu := range stus { m[stu.Name] = &stu } fmt.Pri...阅读全文

博文 2017-12-07 07:32:46 Youmai の Blog

谷歌:谁拥有下一代云平台的DNA?机器学习和云端智能是云的未来

在“NEXT2016”会议上,Google的Eric Schmidt提到Google所占最大的优势之一就是站在云计算下一个十年的前沿。它不是基础设施或者软件,也不像纯数据一样简单。 Crowdsourced 智能,是个进化,可以创建更加智能的从上到下各级用户都可以利用、重新训练、改变、为自己目的输出的系统。这一切将会点燃新一代云平台的未来发展方向。 Crowdsourcing数据的这个概念会令训练变得更好、变得更加智能、范围更加宽广,这也是谷歌在接下来云计算的十年里有竞争力的核心优势,Schmidt说道。“我坚信快速评估模型,谷歌云计算,机器学习,以及crowdsourcing将会是每一个IPO的基础,在下一个5年里成为赢家。”这会是一个跟产生应用程序的过程很相似的评估——将用户眼下真正需要...阅读全文

golang之反射

反射这个概念绝大多数语言都有,比如Java,PHP之类,golang自然也不例外,反射其实程序能够自描述和自控制的一类机制。 比如,通过PHP的反射,你可以知道一个类有什么成员,有什么方法。而golang,也能够通过官方自带的reflect包来了解各种变量类型及其信息。 下面我们通过一个例子查看反射的基本用法。 话不多说,直接贴代码: package main import ( "fmt" "reflect" ) type Order struct { ordId int customerId int callback func() } func reflectInfo(q interface{}) { t := reflect.TypeOf(q) v := reflect.ValueOf(...阅读全文

博文 2019-10-12 17:02:49 aside section ._1OhGeD

从0做到100,打造滴滴内置导航

本文写于2018年3月,距离今年发布已经一年有余。 从2016年11月开始,我接受了自研滴滴内置导航的任务,到今天,历时一年零四个月。最初的目标,是替换当时使用的腾讯SOSO地图内置导航,实现滴滴地图整个产品线的闭环。 当时把这个任务交给我的时候,是机遇,也是挑战。说实话之前我是没有导航语音播报的相关经验的,仅有的后台服务的经验是在高德做公交引擎。除了缺乏经验,时间也比较紧,自上而下都有比较大的压力(自研导航上线是地图这边的一个关键KPI)。 今天,回头看看这款产品的研发结果,还是取得了预期的效果。内置SDK全面替换为自研SDK,司机口碑上升,NPS上升,内置导航使用率上升。调用自研的导航诱导服务,整个过程中没有出现大的问题。没有出现过导航服务整体不可用的事故。在研发过程中,原有司机端一些隐...阅读全文

博文 2019-07-21 11:32:40 Nicolas_Li

提升科研远程办公效率:代码同步工具sync-go

为了提高自己远程办公的效率,花了不到一天的时间,开发了一个代码同步工具,来同步多个远程服务器之间的代码。 地址:github.com/nladuo/sync… 针对场景 最近由于肺炎疫情大家都在远程办公,我平时的开发工具其实就是终端+PyCharm。 终端连接服务器运行命令,然后通过PyCharm的同步工具把代码实时的上传到服务器上,大概就是这样的: 然而,服务器都是内网的,在家连到服务器上就需要通过配置代理,如果不在实验室,那么如果我连接到服务器1,那就要多经历2-3次ssh。比如说termnial的话我就要多用两次ssh。 不过对于termnial的话,我可以在自己的云服务器上开一个tmux,这样其实和在实验室操作没有区别。 但是对于代码编辑,因为我个人还是不习惯用vim,所以如果用Py...阅读全文

博文 2020-02-15 01:34:25 叁公子KCN