go

GopherChina讲师专访-七牛云大数据高级工程师孙建波

二次信任 提交于 2020-12-03 12:37:49
GopherChina 大会即将在4.15 - 4.16 在上海小南国花园酒店举办,GopherChina大会是国内最大最专业的Go大会,聚集了全中国各地的Gopher一起分享交流,大会希望通过大家线下的交流,讲师的分享,让大家能够了解目前Go动态,应用场景,技术细节等。 会前我们对本次大会的讲师之一、七牛云大数据开发高级工程师——孙建波老师进行了文字专访。 1、首先介绍一下自己。 我是来自七牛的大数据研发工程师, 参与了七牛的大数据平台整条链路多模块的架构设计以及开发工作, 包括流式处理服务、时序数据库服务以及日志检索服务。 在此之前主要研究和参与 Cloudfoundry 、 Kubern etes 、 Docker 等容器与容器云相关工作,是《 Docke r 容器与容器云》一书的主要作者之一。 2 、回忆一下与 Golang 的渊源。是什么原因决定尝试 Gola ng ?自己用 Go 语言实现的第一个项目是什么?当时 Golang 有什么令人惊喜的表现,又有什么样的小不足,这个不足在 Gola ng 已经更新到 1.8 版本的时候是否已经得到改善? 我从 2013 年开始研究和学习使用 PaaS 云平台,那时候看到 C loudfoundry 开始整个用 Golang 重构了一遍原来 R uby 的实现,就对 Golang 产生了很大的兴趣。后来越来越多的云计算项目用到

Go:53---init初始化函数

纵饮孤独 提交于 2020-12-03 12:17:49
一、init函数介绍 一个.go文件中可以定义一个init()函数,它用来做一些初始化操作,另外,该函数在包导入中也起到重要的作用 init函数有哪些特点: init函数不能被主动调用,也不能在包外通过包名调用 init函数没有参数也没有返回值 另外,init函数在导入包的时候会自动执行。例如B包的b.go中有一个init函数,A包中的a.go在导入B包的时候,B包中的init函数会自动执行 init函数一般用来: 对变量进行初始化 检查/修复程序的状态 注册 运行一次计算 二、在本地包执行 init函数执行时机 一个包如果拥有init函数,那么 在运行main()函数之前,全局声明之后 会自动执行init()函数 演示案例 package main import ( "fmt" ) var golbalValue int64 func init() { golbalValue = 100 f() } func f() { fmt.Println("init...") } func main() { fmt.Println("golbalValue: ", golbalValue) } 三、在导入包中执行 导入包的顺序 Go语言导入包的规则: 会先从main包开始检查其导入的所有包,每个包中又可能导入了其他的包。Go编译器由此构建出一个树状的包引用关系,再根据引用顺序决定编译顺序

区块链课程需要学习哪些内容?

梦想的初衷 提交于 2020-12-02 17:20:49
  现阶段随着区块链技术和相关应用的发展,区块链领域正在变得炙手可热,很多朋友看到了区块链的发展前景和空间,纷纷投身于区块链的学习中。那么,区块链课程需要了解哪些内容呢?   1、区块链主流语言——Go语言。   Go语言作为强类型的编译型语言,灵活性上自然不如解析型语言。但是Go语言提供了Any类型(interface{})和强大的类型反射(reflect)能力,二者相结合,开发的灵活性上已经很接近解析型语言。   2、区块链后端技术体系——Go语言高并发服务器开发。   区块链知识体系,是后端编程的知识体系。以太坊,瑞波币,比特币目前主流的区块链成型项目多数都是选择Go语言和C++语言实现,所以搭建后端服务编程知识体系才是打好区块链开发的首选基石,对于今后发展至为重要。   3、去中心化前端开发与web服务器开发。   去中心化Dapp的页面开发还是基于传统的Web2.0的技术,html/css/javascript是整个互联网页面的基石,学好他们,打好基础非常重要。Beego是目前大型互联网公司主流的web服务器框架,由于Go先天性支持高并发,所以很多大型互联网公司都在web服务框架做Go语言的转型,这样可以轻松实现亿万级别的高并发,更加节约企业运营成本。   4、区块链密码学安全理论与开发。   区块链技术实际上是一种对数据安全更加完善和抗风险技术

Anyway to control Soong when to pick Android.bp and when not?

*爱你&永不变心* 提交于 2020-12-02 10:39:33
问题 With new build system i.e. "Soong" , Android replaced Android.mk with Android.bp . Also Android Q onward, Soong will pick all Android.bp files no matter where all are present. Earlier, For 2 level and 3 level modules, it was not picking up Android.bp file unless instructed by "optional_dirs" . Now this too has been deprecated. Quoting from android source code's platform/build/soong/root.bp: // Soong finds all Android.bp and Blueprints files in the source tree, // subdirs= and optional_subdirs

DolphinDB与InfluxDB对比测试报告

笑着哭i 提交于 2020-12-02 10:35:57
DolphinDB Database 是一款分析型的分布式时序数据库,内置处理流式数据处理引擎,具有内置的并行和分布式计算的功能,并提供分布式文件系统,支持集群扩展。DolphinDB以C++编写,响应速度极快。提供类似于Python的脚本语言对数据进行操作,支持类标准SQL的语法。提供其它常用编程语言的API,方便与已有应用程序集成。在金融领域中的历史数据分析建模与实时流数据处理,以及物联网领域中的海量传感器数据处理与实时分析等场景中表现出色。 InfluxDB是一款开源的时序数据库,由Go语言实现。它的核心是一款定制的存储引擎TSM Tree,对时间序列数据做了优化,优先考虑插入和查询数据的性能。InfluxDB使用类SQL的查询语言InfluxQL,并提供开箱即用的时间序列数学和统计函数。适用于监控、实时分析、物联网、传感器数据等应用场景。是目前最为流行的时间序列数据库。 本文将会对DolphinDB和InfluxDB进行性能测试对比。 在本次测试中,硬件配置如下: 设备:DellXPS 8920(07DC) CPU:Inter® Core™ i7-7700 CPU @ 3.60GHz,4核心8线程 内存:16GB 硬盘:512GB SSD 操作系统:Ubuntu 16.04 x64 由于InfluxDB集群版本闭源

Anyway to control Soong when to pick Android.bp and when not?

纵饮孤独 提交于 2020-12-02 10:34:34
问题 With new build system i.e. "Soong" , Android replaced Android.mk with Android.bp . Also Android Q onward, Soong will pick all Android.bp files no matter where all are present. Earlier, For 2 level and 3 level modules, it was not picking up Android.bp file unless instructed by "optional_dirs" . Now this too has been deprecated. Quoting from android source code's platform/build/soong/root.bp: // Soong finds all Android.bp and Blueprints files in the source tree, // subdirs= and optional_subdirs

Anyway to control Soong when to pick Android.bp and when not?

走远了吗. 提交于 2020-12-02 10:34:00
问题 With new build system i.e. "Soong" , Android replaced Android.mk with Android.bp . Also Android Q onward, Soong will pick all Android.bp files no matter where all are present. Earlier, For 2 level and 3 level modules, it was not picking up Android.bp file unless instructed by "optional_dirs" . Now this too has been deprecated. Quoting from android source code's platform/build/soong/root.bp: // Soong finds all Android.bp and Blueprints files in the source tree, // subdirs= and optional_subdirs

内网穿透工具——FRP

瘦欲@ 提交于 2020-12-02 07:41:11
使用内网穿透工具——FRP,以及一台云服务器当做服务端,进行简单配置后即可远程访问 配置 FRP 服务端的前提条件是需要一台具有**公网 IP **的设备,得益于 FRP 是 Go 语言开发的,具有良好的跨平台特性。你可以在 Windows、Linux、MacOS、ARM等几乎任何可联网设备上部署。 FRP软件下载地址: https://github.com/fatedier/frp/releases 2 | 1 架构 如图,在这里,客户端即被远程的机器,service我们使用3389远程控制 一台云服务器,比如 CentOS7 一个公网IP,带宽视情况而定,公网IP地址以 117.73.3.210 为例 3 | 0 服务端配置 3 | 1 服务端下载FRP及配置 服务端下载Linux版的FRP工具,比如 frp_0.30.0_linux_amd64.tar.gz ,为了方便管理,这里进行了重命名为frp wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz tar -zxvf frp_0.30.0_linux_amd64.tar.gz mv frp_0.30.0_linux_amd64 frp 进入frp目录: cd frp ,如图 3 | 2

Python|动态规划经典案例

五迷三道 提交于 2020-12-02 07:02:04
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 欢迎加入团队圈子!与作者面对面!直接点击! 动态规划原理 动态规划算法将待求解问题拆分成一系列相互交叠的子问题,通过递推关系定义各子问题的求解策略,并随时记录子问题的解,最终获得原始问题的解,避免了对交叠子问题的重复求解。 动态规划要领 在动态规划算法中有三要素,即最优子结构、边界和状态转移函数。 最优子结构:每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到; 边界:问题最小子集的解; 状态转移函数:从一个阶段向另一个阶段过渡的具体模式,描述的是两个相邻子问题之间的关系。 最长上升子序列问题 给定一个无序的整数数组,找到其中最长上升子序列的长度。 1.示例 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 2.解题思路: 状态定义: 创建与输入列表nums相同长度的列表dp,dp[i]的值代表nums前i个数字的最长子序列长度。 3.最优子结构: 当计算dp[i]时,我们需要遍历[0,i)的列表区间做出判断(j∈[0,i)): (1)当nums[i]>nums[j]时,此时为上升子序列,所以此时dp[i]=dp[j]+1 (2) 当nums[i]>nums[j]时

How do you do UUID in Golangs Gorm?

不羁岁月 提交于 2020-12-02 06:11:32
问题 I have the following model... type User struct { ID string `sql:"type:uuid;primary_key;default:uuid_generate_v4()"` FirstName string `form:"first_name" json:"first_name,omitempty"` LastName string `form:"last_name" json:"last_name,omitempty"` Password string `form:"password" json:"password" bindind:"required"` Email string `gorm:"type:varchar(110);unique_index" form:"email" json:"email,omitempty" binding:"required"` Location string `form:"location" json:"location,omitempty"` Avatar string