gin

清华大学发布首个自动图机器学习工具包 AutoGL,开源易用可扩展,支持自定义模型...

混江龙づ霸主 提交于 2021-01-11 13:29:30
来源:机器之心 本文约2800字,建议阅读6分钟如何应用自动机器学习 (AutoML) 加速图机器学习任务的处理? 清华大学发布全球首个开源自动图学习工具包:AutoGL (Auto Graph Learning),支持在图数据上全自动进行机器学习。 人工智能的蓬勃发展离不开数据、算力、算法这三大要素。而在浩瀚的数据中,有一种数据结构既普遍又复杂,它就是图(graph)。 图是一种用于描述事物之间关系的结构,其基本构成元素为节点和连接节点的边。 很多不同领域的研究问题都可以很自然地建模成图机器学习,例如蛋白质建模、物理系统模拟、组合优化等基础研究;社交媒体分析、推荐系统、虚假新闻检测等互联网应用;以及金融风控、知识表征、交通流量预测、新药发现等。 社交网络图示例 图结构丰富且具有与生俱来的导向能力,因此非常适合机器学习模型。同时,它又无比复杂,难以进行大规模扩展应用。而且不同的图数据在结构、内容和任务上千差万别,所需要的图机器学习模型也可能相差甚远,这就导致不同任务的模型自动化面临巨大挑战。 如何设计最优的图自动机器学习模型,是一个尚未解决 的难题。 图 + AutoML = ? 自动机器学习 (AutoML) 旨在将机器学习的过程自动化,在降低机器学习使用门槛的同时,提升机器学习的效果。但现有的自动机器学习工具,无法考虑图数据的特殊性,因此无法应用在图机器学习模型中。

golang 网络框架之 gin

徘徊边缘 提交于 2020-12-19 16:52:26
golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析,对象返回等等,原生 api 就显得有些不太够用了,而 gin 是一个功能完备,性能很高的 web 网络框架,特别适合 web api 的开发 hello world package main import "github.com/gin-gonic/gin" func main() { r := gin.New() r.GET("/ping", func(c *gin.Context) { c.String(200, "hello world") }) r.Run() // listen and serve on 0.0.0.0:8080 } 如这个 hello world 程序所示 gin 所有的业务逻辑都在 func(c *gin.Context) 函数中实现,请求和返回都通过这个 gin.Context 传递 请求参数解析 gin 提供了丰富的请求参数获取方式 (c *Context) Query(key string) string // 获取 GET 参数 (c *Context) QueryArray(key string) []string // 获取 GET 参数数组 (c *Context) DefaultQuery(key

golang 上传文件(包括 gin 实现)

孤街浪徒 提交于 2020-11-29 05:34:46
golang web服务有时候需要提供上传文件的接口,以下就是具体示例。为了示例简单(吐槽下 golang 的错误处理), 忽略了所有的错误处理。本文会用两种方式(标准库和 gin )详细讲解 golang 实现文件上传的实现。 gin 是一个用 golang 实现的优秀 web 服务框架 上传文件 标准包实现 package main import ( "io" "log" "net/http" "os" ) var ( // 文件 key uploadFileKey = "upload-key" ) func main() { http.HandleFunc("/upload", uploadHandler) if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatalf("error to start http server:%s", err.Error()) } } func uploadHandler(w http.ResponseWriter, r *http.Request) { // 接受文件 file, header, err := r.FormFile(uploadFileKey) if err != nil { // ignore the error handler } log

3年部署3000套PG实例的架构设计与踩坑经验

喜你入骨 提交于 2020-11-24 08:28:13
作者介绍 陈华军, 苏宁易购架构专家,负责数据库产品的相关设计工作,十年以上数据库相关工作经验。PostgreSQL中文社区核心组成员,主要负责PostgreSQL中文手册翻译项目的维护。 PostgreSQL作为一款许可开放,功能齐备的开源关系数据库,在当前提倡自主可控的大背景下,正受到越来越多企业的重视。 苏宁从2017年开始引入PostgreSQL,到2019年双11前3年间已上线3000多PostgreSQL实例,运行在我司各个不同的业务线。我们用PostgreSQL替换掉大量的商业数据库,不仅为公司节省了很多成本,而且通过灵活运用PostgreSQL的特色功能,甚至大大提升了业务的使用体验。 本次分享主要介绍苏宁引入PostgreSQL的背景和历程,以及我们在实际使用PostgreSQL中积累的一些经验。 一、背景 早期苏宁的数据库全部采用商业数据库。2013年,我们引入了MySQL。到了2016年,MySQL已经被大量使用,但是,核心业务仍然依靠商业数据库承载。当时我们意识到继续依赖国外商业数据库,除了每年需要支付高昂的许可和维保成本,对我们提升自身的数据库运维水平更好地支撑业务发展也存在诸多的弊端。因此我们在2016年启动了去商业数据库的调研工作,并于2017年开始逐步推进。 通过摸底现有业务数据库的使用情况

gin使用BasicAuth()(验证)中间件

不问归期 提交于 2020-11-04 18:52:38
gin使用BasicAuth()(验证)中间件 // simulate some private data var secrets = gin.H{ "foo": gin.H{"email": "foo@bar.com", "phone": "123433"}, "austin": gin.H{"email": "austin@example.com", "phone": "666"}, "lena": gin.H{"email": "lena@guapa.com", "phone": "523443"}, } func main() { r := gin.Default() // Group using gin.BasicAuth() middleware // gin.Accounts is a shortcut for map[string]string authorized := r.Group("/admin", gin.BasicAuth(gin.Accounts{ "foo": "bar", "austin": "1234", "lena": "hello2", "manu": "4321", })) // /admin/secrets endpoint // hit "localhost:8080/admin/secrets authorized.GET("

常见面试题之缓存雪崩、缓存穿透、缓存击穿

吃可爱长大的小学妹 提交于 2020-11-03 03:35:49
前言 ❝ Hello,everybody,我是asong,今天与大家一起来聊一聊面试中几个常见的缓存问题。为什么会突然想做一篇这个文章呢,今天翻了一下我当初准备面试时整理的一些资料,发现缓存在面试中占比还是很高的,当初为了面试也是背了好久的,不过因为都是背的,现在也有点忘了,今天就想着好好整理一下这一部分,好好记录一下。因为自己能力有限,这一篇主讲通俗易懂,不涉及太难的缓存使用场景。好啦,我们开始吧。 ❞ 缓存应用 缓存在我们平常的项目中多多少少都会使用到,缓存使用的使用场景还是比较多的,缓存是分布式系统中的重要组件,主要解决高并发、大数据场景下,热点数据访问的性能问题。提高性能的数据快速访问。一提到缓存,这些是我们都能想到的一些缓存应用场景,但是我们是不太清楚缓存的本质思想是什么的。缓存的基本思想就是我们非常熟悉的空间换时间。缓存也并不是那么的高大上,虽然他可以为系统的性能进行提升。缓存的思想实际在操作系统或者其他地方都被大量用到。比如 「CPU Cache 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。」 「再比如操作系统在 页表方案 基础之上引入了 快表 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache)。」 上面简单介绍了缓存的基本思想,现在回到业务系统来说:*

基于Go的web开发示例

坚强是说给别人听的谎言 提交于 2020-11-02 14:19:50
1、简单web服务 Go语言内置了Web服务;net/http 标准库中包含有关HTTP协议的所有功能。 注册请求处理函数 func ( w http.ResponseWriter , r *http.Request) 该函数接收两个参数:一个http.ResponseWriter 用于text/html响应。http.Request 其中包含有关此HTTP请求的所有信息,包括URL或者请求头字段之类的信息。 侦听http连接 http.ListenAndServe(":80",nil) 代码 package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "你好,你的请求是 %s\n", r.URL.Path) }) http.ListenAndServe(":80", nil) } 2、Web开发框架-Gin Gin 是一个 go 写的 web 框架,具有高性能的优点。官方地址: https://github.com/gin-gonic/gin 下载并安装 a: 如果比较慢,设置代理: https://goproxy.io/zh/docs/introduction

PostgreSQL中的索引(八)--RUM

泄露秘密 提交于 2020-10-26 23:59:35
我们已经讨论了PostgreSQL索引引擎,访问方法的接口,以及主要的访问方法,如:hash indexes、B-trees、GiST、SP-GiST和GIN。在这篇文章中,我们将观察gin是如何变成rum的。 RUM 尽管作者声称GIN是一个强大的精灵,但比较的最终结果证明:GIN的下一代被称作RUM。 RUM访问方法扩展了GIN的基础概念,使我们能够更快地执行全文搜索。 在本系列文章中,这是唯一一个没有包含在标准PostgreSQL交付中并且是一个外部扩展的方法。有几个安装选项可供选择: ·从PGDG 资料库中获取«yum»或«apt»包。例如,如果从«PostgreSQL-10»包中安装了PostgreSQL,那么也要安装«PostgreSQL-10-rum»。 ·在github上从源代码构建并自己安装(说明也在那里)。 ·作为Postgres Pro企业版的一部分使用(或者至少从那里阅读文档)。 GIN的存在的限制 RUM让我们超越了GIN的哪些限制? 首先,«tsvector»数据类型不仅包含lexemes,而且还包含它们在文档中的位置信息。正如我们上次所观察到的,GIN索引并不存储这些信息。因此,GIN索引对搜索出现在9.6版本中的短语的操作的支持效率很低,并且必须访问原始数据进行重新检查。 其次,搜索系统通常根据相关性(不管那意味着什么)返回结果。 我们可以使用排序

算法学习计划

萝らか妹 提交于 2020-10-25 06:02:06
学习计划 根据王红梅编著的《算法设计与分析》,读取每一章的内容,然后从乐扣上找对应的算法题,包含简单-中等-困难三种程度。尽量每两周能够完成一章。遇到一种类型的问题时,先自己想想解决方案,然后再看标准答案。 所有章节为: 蛮力法 分治法 减治法 动态规划法 贪心法 回溯法 分支限界法 概率算法 近似算法 代码用go实现,写到asap中,github仓库位置https://github.com/shidawuhen/asap。 这样的好处是即能够学习基础知识,又能够进行实践,加深记忆。 实现完一遍后,如果有兴趣,可以参加一下乐扣的比赛。 这里需要推荐一下《算法设计与分析》这本书。 其实算法的书我看过不少,以前也看过《算法导论》,《算法设计与分析》这本书在我看过的这些书里,算是比较顶级的存在,主要原因是鞭辟入里、入木三分,深入浅出的讲述了算法的内核,而且篇幅也不是《算法导论》那种鸿篇巨著。建议大家有时间可以读一下。 我使用 乐扣 上的算法题演练,最近在上面做了一些算法题,感觉专业度上其实和北大的PKU有一定差距,不过乐扣在用户体验上做的更好一些,而且更注重面试,PKU给我的感觉更注重专业程度。大家可以视自己的具体情况选择平台。当然选择哪个平台都是可以的,只要能好好写代码,对于普罗大众而言,都是够用的。 最后 大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫) 往期文章回顾: 算法

go tool pprof

梦想与她 提交于 2020-10-18 02:34:20
gin - pprof go get https://github.com/gin-contrib/pprof main.go package main import ( "github.com/gin-contrib/pprof" "github.com/gin-gonic/gin" ) func main() { s := gin.Default() // 方式一:性能 pprof.Register(s) // 方式二:性能 - 授权访问 a := s.Group("/admin", gin.BasicAuth(gin.Accounts{"root": "888000"})) pprof.RouteRegister(a) s.Run(":13000") } web访问 http://127.0.01:13000/admin/debug/pprof/ 页面元素 类型 描述 备注 allocs 内存分配情况的采样信息 可以用浏览器打开, 但可读性不高 blocks 阻塞操作情况的采样信息 可以用浏览器打开, 但可读性不高 cmdline 显示程序启动命令及参数 可以用浏览器打开 goroutine 当前所有协程的堆栈信息 可以用浏览器打开, 但可读性不高 heap 堆上内存使用情况的采样信息 可以用浏览器打开, 但可读性不高 mutex 锁争用情况的采样信息 可以用浏览器打开,