go

厉害了!华为将发布国产编程语言,打破国外垄断!

痞子三分冷 提交于 2021-01-26 09:00:35
本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处 萧箫 发自 凹非寺 近日,华为要自主研发编程语言的消息忽然在网上火了。 据微博博主@IT工程师 称,华为正在研发新的自主编程语言 仓颉 ,领头人是南京大学的计算机科学与技术系博士生导师,冯新宇。 △ 图源微博@IT工程师,经授权 目前这件事尚未得到官方证实,但据知乎@匿名用户 透露,华为有意研究自己的程序语言,在行业内 早已是公开的秘密 。 「华为自研编程语言并非秘密」 “编译器实验室早已有之” 事实上,华为在编译器与编程语言方面早有动向。 方舟编译器 ,就是华为在编译器方向的研究成果之一。 2019年8月31日,华为在开源平台上放出了方舟编译器的源代码,这是华为首个完全自主研发的编译器平台。 知乎@养猫的哈士奇表示,华为2012实验室的中央软件研究院下面有一个编译器与编程语言实验室,这个实验室已经存在很多年了。 从拉勾网上的招聘信息可以看见,华为2012实验室的中央软件院下面的确有一个编译器实验室&芯片软件协同设计部,「在编译器及芯片软件协同设计领域 耕耘10余年 」。 △ 图源拉勾网 那么,为什么要进行这方面的研究? 知乎@养猫的哈士奇 表示,去年一次交流中,华为消费者BG软件部的总裁 王成录博士 ,提到了华为为什么要搞这个实验室、做编译器这些东西。 简单来说,就是华为很早以前就发现,在核心网设备上自己编译

聊聊cortex的Distributor

最后都变了- 提交于 2021-01-26 01:22:36
序 本文主要研究一下cortex的Distributor Distributor cortex/pkg/distributor/distributor.go // Distributor is a storage.SampleAppender and a client.Querier which // forwards appends and queries to individual ingesters. type Distributor struct { services.Service cfg Config ingestersRing ring.ReadRing ingesterPool *ring_client.Pool limits *validation.Overrides // The global rate limiter requires a distributors ring to count // the number of healthy instances distributorsRing *ring.Lifecycler // For handling HA replicas. HATracker *haTracker // Per-user rate limiter. ingestionRateLimiter *limiter.RateLimiter

C++类的封装 | 类的封装

烈酒焚心 提交于 2021-01-25 10:05:13
C++公用接口与私有实现的分离 C++通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中,或 者说,类的作用是把数据和算法封装在用户声明的抽象数据类型中,在声明了一个类以后,用户主要是通过调用公用的成员函数来实现类提供的功能 C++公用成员函数是用户使用类的公用接口或者说是类的对外接口,当然并不一定要把所有成员函数都指定为public的,但这时这些成员函数就不是公用接口了。 C++类外虽然不能直接访问私有数据成员,但可以通过调用公用成员函数来引用甚至修改私有数据成员,用户可以调用公用成员函数来实现某些功能,而这些功能是在声明类时已指定的,用户可以使用它们 而不应改变它们。 实际上用户往往并不关心这些功 能是如何实现的细节,而只需知道调用哪个函数会 得到什么结果,能实现什么功能即可。 C++通过成员函数对数据成员进行操作称为类的实现, 为了防止用户任意修改公用成员函数,改变对数据进行的操作,往往不让用户看到公用成员函数的源代码,显然更不能修改它,用户只能接触到公用成员函数的目标代码。 类中被操作的数据是私有的,实现的细节对用户是隐蔽的,这种实现称为私有实现,类的公用接口与私有实现的分离形成了信息隐蔽。 如果想修改或扩充类的功能,只需修改本类中有关的数据成员和与它有关的成员函数,程序中类外的部分可以不必修改。 如果在编译时发现类中的数据读写有错,不必检查整个程序

golang 线程与通道

假如想象 提交于 2021-01-25 06:44:15
首先我们来看线程,在golang里面也叫goroutine 在读这篇文章之前,我们需要了解一下并发与并行。golang的线程是一种并发机制,而不是并行。它们之间的区别大家可以上网搜一下,网上有很多的介绍。 下面我们先来看一个例子吧 import( "fmt" ) func main() { go fmt .Println ( "1" ) fmt .Println ( "2" ) } 在golang里面,使用go这个关键字,后面再跟上一个函数就可以创建一个线程。后面的这个函数可以是已经写好的函数,也可以是一个匿名函数 func main() { var i = 3 go func ( a int ) { fmt .Println (a ) fmt .Println ( "1" ) }( i ) fmt .Println ( "2" ) } 上面的代码就创建了一个匿名函数,并且还传入了一个参数i,下面括号里的i是实参,a是形参。 那么上面的代码能按照我们预想的打印1、2、3吗?告诉你们吧,不能,程序只能打印出2。下面我把正确的代码贴出来吧 import ( "fmt" "time" ) func main() { var i = 3 go func ( a int ) { fmt .Println (a ) fmt .Println ( "1" ) }( i ) fmt

windows 安装 go 开发环境 和 vscode

谁说胖子不能爱 提交于 2021-01-25 02:40:18
1. https://golang.org/dl/ 是下载go安装包的官网, 国内可能无法访问, 可以访问 https://gomirrors.org/ 或者 https://golang.google.cn/dl/ , 我这里下载 zip 包进行安装. 2. 解压 go1.15.7.windows-amd64.zip 后可以放在 D:\go, 如果是使用 go1.15.7.windows-amd64.msi 安装, 默认安装目录是在 C:\go 3. 配置环境变量, 参考 https://goproxy.cn/ 首先在 PATH 里, 添加 D:\go\bin GO111MODULE=on GOPROXY=https://goproxy.cn 验证是否安装成功, 运行cmd, 然后 go version, 显示版本号 4. https://code.visualstudio.com/Download , 下载 vscode 的 zip 包 5. 安装 vscode 的 go 插件, 然后根据提示安装组件 来源: oschina 链接: https://my.oschina.net/zdtdtel/blog/4922590

SqlServer实时数据同步到MySql

*爱你&永不变心* 提交于 2021-01-24 11:47:08
下载网站: www.SyncNavigator.CN 客服QQ1793040 ---------------------------------------------------------- 关于HKROnline SyncNavigator 注册机价格的问题 HKROnline SyncNavigator 8.4.1 非破解版 注册机 授权激活教程 —安装安装mysqlconnector http://www.mysql.com/products/connector/ /* 配置mysqlconnector ODBC数据管理器->系统DSN->添加->mysql ODBC 5.3 ANSI driver->填入data source name如jt,mysql的ip、用户名、密码即可 */ –新建链接服务器 exec sp_addlinkedserver @server=’MySqll_Aggregation’,–ODBC里面data source name @srvproduct=’MySql’,–自己随便 @provider=’MSDASQL’,–固定这个 @datasrc=NULL, @location=NULL, @provstr=’DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=172.17.29.33;DATABASE=bi

Best practices for empty interfaces in Go?

♀尐吖头ヾ 提交于 2021-01-24 07:14:28
问题 I am learning about empty interfaces. I find that while there are many explanations—also on Stackoverflow—on meaning of an empty interface and how they work, there's very little information on best-practices on when / why to use them, when to avoid, what the considerations are, and the pros and cons of chosing to use them. In Go chatrooms I've read some talk about best to avoid using empty interfaces where possible, but without the proper arguments. Others proudly responding they had zero

Building Go apps with private gitlab modules in Docker

人走茶凉 提交于 2021-01-24 07:11:11
问题 I am trying to build my go apps on a docker file. Inside my go.mod there is private package that needs authentication/ssh. This question is similar to Building Go apps with private modules in Docker, but in my case is i have to pull package from gitlab not from github . Here is my dockerfile: # builder image FROM golang:1.14.11-alpine AS builder # specific directory for build process WORKDIR /usr/src/build # copying the source code # to the current working directory COPY . . RUN apk add --no

Building Go apps with private gitlab modules in Docker

浪子不回头ぞ 提交于 2021-01-24 07:10:21
问题 I am trying to build my go apps on a docker file. Inside my go.mod there is private package that needs authentication/ssh. This question is similar to Building Go apps with private modules in Docker, but in my case is i have to pull package from gitlab not from github . Here is my dockerfile: # builder image FROM golang:1.14.11-alpine AS builder # specific directory for build process WORKDIR /usr/src/build # copying the source code # to the current working directory COPY . . RUN apk add --no

kubernetes 1.15 有哪些让人眼前一亮的新特性?

匆匆过客 提交于 2021-01-24 04:06:15
原文链接: kubernetes 1.15 有哪些让人眼前一亮的新特性? 2019 年 6 月 20 日,Kubernetes 重磅发布了 1.15 版本,不过笔者忙到现在才有空认真来看一下到底更新了哪些东西。这一版本更新主要是针对稳定性的持续改善和可扩展性,仔细把 25 个新增或改动的功能看完后,发现许多以前的小痛点都在这个版本中解决了,本文对每个特性的介绍格式如下: #492 : 前面是 GitHub issue 编号,后面是具体的特性 进度 : 表示该特性目前处于什么阶段,如 Alpha,Beta,Stable 特性分类 : 表示该特性属于哪个分类,如 API,CLI,Network 等。 这里是具体的特性介绍,例如改进了什么,为什么要这么做,有的特性还会有简单的使用范例。 1. 核心功能 #1024 NodeLocal DNSCache 进度 :迈向 Beta 特性分类 :Network NodeLocal DNSCache 通过在集群节点上以 Deamonset 的方式运行 DNS 缓存代理来提高集群的 DNS 性能,从而可以避免使用 iptables DNAT 规则和连接跟踪。如果本地 DNS 缓存代理在内存中找不到相应的 DNS 记录,就会向 kube-dns 服务发起查询请求(默认情况下以 cluster.local 为后缀)。 想了解该特性的更多细节可以阅读