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

komodo编辑器go语言支持文件

已经有大神写出了komodo ide/edit的go语言支持插件https://github.com/trentm/komodo-go,但是作者并没有将该文件上传到komodo官方插件网站上,并且源码也没有编译,这里给个编译后的版本,方便新手使用。 go_language.xpi 提示: 1,安装gocode 智能提示 2, 安装godef 跳到定义 作者github上有详细的gocode,godef安装指导。 经过测试,在我机器上不能进行语法检查...阅读全文

博文 2014-10-04 19:26:35 mtima

RSS 阅读器 QReader

QReader 是一款使用 Go 和 JavaScript 编写的阅读器,支持订阅 RSS 2.0 和 Atom 1.0 格式的 feed。 为了运行 QReader ,你需要有一台 server,它可以是你放在局域网中的 PC。你需要在 server 上运行 QReader 服务端程序,然后使用手机、平板电脑或 server 上的浏览器访问 QReader。当然,如果你有兴趣,可以尝试把 QReader 编译到 Android、iOS 设备或路由器中。 QReader 是一个单用户的阅读器,不适合多人共同使用。 ![QReader](http://static.oschina.net/uploads/img/201510/03192857_qoy8.jpg) QReader 包...阅读全文

开源项目 2015-10-02 16:00:00 m3ng9i

go的数组和切片

对于GO的数组和切片的初步了解, 切边是数组的一个指针,切片的初始化有三种:一种是通过make,即 slice := make([]int,5,10) 另一种是通过:=指向一个已经存在的数组。即 slice := []int {1,2,3,4,5,6} 切片的切片不可初始化超过原始切片的cap值,比如: sliceA := make([]int,5,10) sliceB := sliceA[:11] 这个是不行的,11超过了sliceA的cap值(10),会报运行时异常。 对切片的append,如果超过切片的cap值,编译器会扩充切片cap至原始切片cap+扩展后的切片len...阅读全文

博文 2014-10-10 17:00:06 canzyq

写爬虫还在用 python?快来试试 go 语言的爬虫框架吧

今天为大家介绍的是一款 go 语言爬虫框架 -- colly。 开始 首先,你可以使用一下命令安装 colly。 go get -u github.com/gocolly/colly/... 其次,构建 Collector,添加事件,然后访问: package main import ( "fmt" "github.com/gocolly/colly" ) func main() { // 初始化 colly c := colly.NewCollector( // 只采集规定的域名下的内容 colly.AllowedDomains("hackerspaces.org", "wiki.hackerspaces.org"), ) // 任何具有 href 属性的标签都会触发回调函数 // 第一个...阅读全文

博文 2018-12-07 13:34:42 Y_xx

【干货】Gisp 解释器 Golang 辅助开发工具

Gisp 是一个提供给 golang 使用的 Lisp 类 DSL 解释器。在 Lisp 的基本语法基础上,针对 go 环境稍作了一点语法糖。主要目标是提供一个尽可能便于与 golang 互操作的微型DSL工具。 简介 Gisp用go语言编写,是一个DSL 解释器,这个 DSL 基本上就是 LIsp 的基础语法,针对go程序的互操作需要稍微做了一点扩展。它的主要设计目标是尽可能方便的在 go 程序中调用 gisp 解释器,执行 dsl。 我们的项目,目前后台主要用 golang 开发。开发过程中,golang 确实达到了我们期待的易用、易维护。但是有几个具体的问题阻碍了我们更好的使用它。这是我们开发一个内嵌解释器的基本动机。我们希望用这种方式提升编程效率,更快的推进工作。 golang 使用...阅读全文

博文 2014-10-25 01:00:01 mengyidan1988

docker 和beego的问题

我在docker上运行了beego web服务器并映射端口8080到主机8006 为什么主机浏览器无法正常显示 ![Screenshot 2016-03-13 21.29.57.png](http://studygolang.qiniudn.com/160314/398b2275320751ea12107ee3950ee734.png) ![Screenshot 2016-03-13 21.31.48.png](http://studygolang.qiniudn.com/160314/7e6e2004a70a29020871c4f79c8fd88e.png) ![Screenshot 2016-03-13 21.33.42.png](http://studygolang...阅读全文

欢迎大家来使用在线 Golang IDE: https://wide.b3log.org

### 特性 * 代码高亮、折叠(Go/HTML/JS/Markdown 等) * 自动补全(基于 gocode) * 格式化(gofmt/goimports, HTML/JSON) * 代码导航(快速打开文件、跳转使用/声明、搜索、大纲视图等) * go get/vet/test * 文件导入/导出 * 多主题 跑一些 _简单的_ 项目已经完全足够了,欢迎大家在体验后[反馈](https://github.com/b3log/wide/issues/new)建议、bug。 ### 使用 * **推荐**直接使用我们搭建的 [Wide 在线服务](https://wide.b3log.org)(“服务器资源这么空闲我都不忍心看了!”) * 我们也提供了...阅读全文

GO語言基礎教程:序章

首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學習GO呢!接下來我對此詳細說明一下. 首先我來說明一下C/S程序和B/S程序的優缺點: C/S程序主要是運行在客戶端的電腦上,通常採用安裝的形式,以windows操作系統為例,軟件會被編譯成二進制然後以exe或dll等方式存在於客戶端的電腦上,其執行效率是非常高的,當然了除非編程者把代碼寫的非常糟糕,除此之外C/S程序幾乎不需要考慮安全問題和負載問題,除此之外C/S程序開發出來的東西幾乎是不開源的,使用者只能被動接受卻不能更改軟件的功能(如果您會彙編的話那就另當別論了).能夠開發C/S程序的語言...阅读全文

完全在Linux下工作

上周周末,闲来无事,在VMware虚拟机下安装了最新版的ubuntu桌面版,尝试在linux下工作。 我的物理机是windows10, 考虑到有部分授权过的加密资料只能在windows下用,所以只是尝试在虚拟机下安装Ubuntu,之后如果体验不错,会尝试将物理机安装成Linux系统。我的物理机内存是16G,我给虚拟机分配了8G,感觉应该绰绰有余了。为了满足日常需求,我总共安装了这些软件: 浏览器:Google Chrome 编辑器:Notepad、SublimePDF等电子书软件:Calibre Golang 代码编辑器:Goland Linux 终端:Guake Terminal 音乐软件:网易云音乐 输入法软件:搜狗输入法 社交软件:Telegram 大概就是以上这些,其他包括offic...阅读全文

golang web编程:简单的会话(使用sessions包)

网站不能根据来访的ip来确定来访者的身份,ip加端口号也不行.一般都是通过用户名密码来确定用户身份的,但用户也不能每次访问网页时都手动输入一次用户名和密码啊,这样太累了. 一个最简单的想法就是让浏览器帮我们输入,但是http协议本身没有夹带用户名密码的功能,而且有时我们的需求又不只是用户名和密码这么简单,比如说我们还想在浏览器和网页服务器之间传递用户的id,上次访问网站的时间等,每个网站的要求都不一样,所谓众口难调. 现在的做法是,浏览器允许网页服务器在浏览器里存一小段数据,什么数据都行,你自己的格式自己去解析就好了.具体的做法是,浏览器第一次访问服务器时,服 务器应答中就会包含需要浏览器请求的数据,浏览器收到服务器的应答,并把数据保存起来.当浏览器再次访问服务器时,浏览器就在请求里包含这段...阅读全文

博文 2014-10-04 19:26:13 deansinaean

go语言学习-在ubuntu上安装golang

golang(中文名:go语言)是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 golang的安装在ubuntu上其实很简单 sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang 如果你喜欢手工安装,请查看 golang编译器安装与配...阅读全文

博文 2014-10-04 19:26:05 dm520

golang导出csv

项目中涉及到导出到csv的功能,在网上找了一圈,有个UTF82GBK的方式,这个后来发现有bug,涉及到复杂中文,显示出来的有问题,而且导出来的csv不是utf-8格式,不能用文本编辑器打开.最终确定一个方案,也比较简单,既解决了csv用excel打开,中文乱码问题,也能用编辑器打开,还能默认显示带逗号的字符串.废话不多说,直接上代码. package main import ( "encoding/csv" "log" "os" ) func main() { filename := "/Users/icsoc/Downloads/test.csv" columns := [][]string{{"姓名", "电话", "公司", "职位", "加入时间"}, {"1", "2", "刘犇...阅读全文

博文 2019-03-22 11:34:41 林子老公

Google HTML/CSS代码风格指南(中文版)

Google HTML/CSS代码风格指南 修正版本 2.1 背景 本文档定义了HTML/CSS的编写格式和风格规则。它旨在提高合作和代码质量,并使其支持基础架构。适用于HTML/CSS文件,包括GSS文件。 只要代码质量是可以被维护的,就能很好的被工具混淆、压缩和合并。 样式规则 协议 嵌入式资源书写省略协议头 省略图像、媒体文件、样式表和脚本等URL协议头部声明 ( http: , https: )。如果不是这两个声明的URL则不省略。 省略协议声明,使URL成相对地址,防止内容混淆问题和导致小文件重复下载。 ...阅读全文

博文 2015-06-18 18:07:58 chajn

为什么go语言适合开发网游服务器端

前段时间在golang-China读到这个贴:有木人用(或打算)golang做游戏服务器端? 个人觉得golang十分适合进行网游服务器端开发,写下这篇文章总结一下。 从网游的角度看: 要成功的运营一款网游,很大程度上依赖于玩家自发形成的社区。只有玩家自发形成一个稳定的生态系统,游戏才能持续下去,避免鬼城的出现。而这就需要多次大量导入用户,在同时在线用户量达到某个临界点的时候,才有可能完成。因此,多人同时在线十分有必要。 再来看网游的常见玩法,除了排行榜这类统计和数据汇总的功能外,基本没有需要大量CPU时间的应用。以前的项目里,即时战斗产生的各种伤害计算对CPU的消耗也不大。玩家要完成一次操作,需要通过客户端-服务器端-客户端这样一个来回,为了获得高响应速度,满足玩家体验,服务器端的处理也不...阅读全文

博文 2014-10-04 19:26:23 Lifehacker

GO语言零基础入门资料整理

GO语言跟它名字一样是门比较装逼的语言,鲜有菜鸟初学者教程,所以没有语言基础的话,理解起来会有点困难。闲来没事整理了一个GO零基础入门资料。 安装与简介 因为国内老被墙,被墙之后请在网上直接下载,下载链接 开发环境编辑器 1.Sublime,支持多标签,自动排版,高亮,简单的填补,简单的SHELL直接运行等。 《Ubuntu下使用Sublime Text 2搭建Go开发环境》 《Sublime Text 2搭建Go开发环境(Windows)》 2.vim + gocode 《Go的Vim的高亮和自动补齐》 3.LiteIDE:只用于GO环境开发的编辑器 4.免费的golang在线开发环境:由实验楼与StudyGolang合作提供的在线实验室,可直接通过浏览器访问进行Go语言的学习与编程。 一...阅读全文

博文 2015-05-04 17:00:00 敲代码的猴子

浏览器实时查看项目日志

# seelog > 有了seelog,妈妈再也不用担心我登录服务器查看日志le... 项目地址:https://github.com/xmge/seelog ### 项目介绍 * 与golang项目集成、提供浏览器实时查看日志的功能,类似 [tail -f xxx.log](https://www.cnblogs.com/fps2tao/p/7698224.html) * 支持多浏览器同时访问 * 支持浏览器websocket断线重连 * 支持暂停、清屏、截图功能 ### 集成方式 * 在项目中引入seelog, **go get github.com/xmge/seelog** * 在代码中 执行 **seelog.See(logpath,port)** * 在浏览器中访问 *http:...阅读全文

博文 2018-08-02 01:02:26 xmge

家庭/企业网络的透明代理软件 kone

kone是一款把路由请求转发到http/sock5 proxy的软件(route2proxy),你可以把它应用到很多需要路由的场合,它同时实现了dns欺骗功能,并隐藏其中的代理服务器细节,实现透明穿越。特点如下: (1)实现了灵活的匹配模式 (2)实现了dns欺骗功能可以透明穿越 (3)实现了WEB status接口,方便查看运行状...阅读全文

Go语言学习环境搭建

简介 Go编程语言是一个使得程序员更加有效率的开源项目。Go是有表达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有弹性的模块化程序。Go编译到机器码非常快速,同时具有便利的垃圾回收和强大的运行时反射。它是快速的、静态类型编译语言,但是感觉上是动态类型的,解释型语言。 优势 良好的性能 并发支持良好,并且可以很好的利用多核心 简单,容易上手使用,只要是会一点C语言的, 都可以现学, 2~3天可以贡献代码 开发效率和运行效率有目共睹。 接近C的运行效率 、接近Python的开发效率 尤其是跨平台编译本地代码,之前为了跨平台运行学的node.但是node需要装运行环境, go不用,编译完直接运行,而且体积也不太大 缺点 官方相关的文档不够全面 第三方...阅读全文

博文 2016-03-02 08:00:00 jinglijun

Golang项目中Makefile编写

背景 Go项目有很多命令,且带有参数,可能我们平时开发的时候最常用的就是 go build 、go run 但是当我们使用其他命令时,通常就会携带一堆参数, 比如 go test -v -count=1 - ... 这个时候一个构建脚本可以解决问题,一段Makefile的规则也能解决问题。我个人更加倾向Makefile+script去解决复杂的事情。 Makefile文件格式 一个简单的Makefile应该是如下规则格式 target ... : prerequisites ... recipe ... ... // 直观一点的 - tab很重要 : [tab] 执行目标,处理先决条件,然后做剩下的事情 install:...阅读全文

博文 2019-05-27 18:34:39 胡忠庆

Go 1.4+垃圾收集器计划与路线图

自从Go语言于2009年11月对外宣布以来,短短几年时间,这门语言发展迅猛,性能也在不断提升,而垃圾收集器的改进正是其中的重要一环。 在[Go 1.1](http://golang.org/doc/go1.1)中,Go语言引入了并行垃圾收集器,可以减少程序在多CPU上运行时的延迟;同时垃圾收集也更为精确了,以牺牲较少的CPU时间为代价,换来了堆内存的显著减少。到了今年6月份发布的[Go 1.3](http://golang.org/doc/go1.3)中,精确性有所改进,又实现了检查栈上的值时的精确性。 那后续版本中,垃圾收集器会有怎样的变化呢?Richard L. Hudson近日撰文介绍了[Go 1.4+垃圾收集器的计划和路线图](http://golang.org/s/go...阅读全文

高速数据同步服务器——Doozer

昨天在讨论平台新架构的时候,还在说要搞个配置管理的服务出来,方便接口的管理。然后今天就看到了这个……人品爆发了吗? 好吧,不扯淡,直接翻译 Doozer 的 README 吧。Doozer 我还没实测,不过感觉,如果真得像 README 上面说得那样,还是很有用,很有用的。 关键——这个玩意提供了 go 的接口。(补充一点,忘了说了,这个是用 go 开发的) 项目代码托管于此:Doozer。 ———————-翻译分割线———————- Doozer 这是什么? Doozer 是高可用的,完整一致性的用于小量、极端重要的数据的存储。当数据变化时,它立刻通知接入的客户端(不缓存),对于那些很少更新,但是希望更新发生时实时性高的客户端来说是非常理想的。Doozer 对于名字服务、主数据库选取和多个...阅读全文

博文 2014-10-09 16:15:18 mikespook

在生成环境中使用 Go 语言两年的总结

在iron.io的生产环境使用Go语言两年后,我想分享我们的经验和感受。我们是第一批在生产环境中使用Go(Go语言)的公司之一,长久以来我们不知道该有怎样的预期,但到目前为止,很棒。 在之前发表的一篇文章从Ruby切换到Go中我谈了一些,但这次将更具细节一些,我们喜欢这门语言以及一路上我们学到的东西。介绍没有特定顺序,按下面这样: 性能表现(Performance)内存占用(Memory)并发性(Concurrency)可靠性(Reliability)部署(Deployment)天赋(Talent) 性能表现 当我们第一次决定要使用什么语言时我们做了一些调研,为我们的应用环境、消息队列创建了一些模拟。我用Go写了我偏爱的beanstalkd的一个副本实现,使用beanstalkd协议,这样我...阅读全文

使用Go 机器学习库来进行数据分析 2 (决策树)

目录 [−] 决策树和随机森林代码评估结果 这篇文章, 继续使用golearn库分析鸢尾花的数据集。 这一次,我们会使用决策树和随机森林来分析。 决策树和随机森林 决策树是机器学习中最接近人类思考问题的过程的一种算法,通过若干个节点,对特征进行提问并分类(可以是二分类也可以使多分类),直至最后生成叶节点(也就是只剩下一种属性)。 每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。 golearn支持两种决策树算法。ID3和RandomTree。 ID3...阅读全文

博文 2017-12-09 03:54:38 smallnest

Go项目(一)、服务器数据拉取和Material Design风格

零、Go项目的github地址:https://github.com/fantianwen/Go 一、前言:因为希望能能够整合现在安卓的围棋app中较好的东西和当下较为流行的App中常见的功能,于是,打算开始这个叫Go的项目。 初步希望实现的功能: 1、使用Material Design风格进行app界面的搭建; 2、具体实现模块: 1>用户中心; 2>新闻中心; 二、新闻中心的实现: 2.1、使用技术:Jsoup,tcpdump,wireshark,本来打算使用tcpdump和wireshark来进行sina体育客户端的数据包的抓取,然后分析出sina体育客户端和服务器端的交互接口。希望有时间能够学习下lunix下的抓包工具tcpdump命令。使用tcpdump分析数据接口失败之后,就使用...阅读全文

博文 2015-05-15 23:00:18 HNAer_RadAsm

Golang使用lxn/walk做GUI界面开发:邮件群发器

我也是刚刚使用walk这个组件,很多控件接口不熟悉,把我上次发的邮件群发器修改成图形界面的,线程发送邮件,gob库保存数据等。只提供作学习交流,仅供参考(界面很烂)。 接下来是main.go的代码: // Multi-SendEmail project main.go package main import ( "bufio" "encoding/gob" "errors" "fmt" "io" "net/smtp" "os" "strconv" "strings" "time" ) import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) type ShuJu struct { Name string Pwd ...阅读全文

博文 2014-12-20 14:00:06 一曲忧伤

电竞行业 招聘Golang工程师 Dota2相关

Golang开发工程师 10-30K 上海浦东 析乐数据 简历请投至 yangx@ceelo.cn 工作职责: 1、使用golang语言编写游戏录像解析器(二次开发) 2、Beego web服务器开发与维护 职位要求: 1、对dota2、LOL等moba类游戏有较为深入的了解 2、熟悉Go语言,对Golang系统库有研究者优先 3、有 Linux 的使用经验,具备一定的脚本和系统维护能力 4、具备C++、Node.js开发经验者优先 5、主动积极,善于学习和总结,乐于分享,有较强的团队精神。 6、对新领域有好奇心,勇于尝试 公司福利 1、我们颠覆以往你对创业公司的印象,10点上班18点下班,双休,法定假日只多...阅读全文

Go 语言 SMTP指令发邮件(实例)

简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF(\r\n)。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。 SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为: (1)建立TCP连接。 (2)客户端向服务器发送HELLO命令以标识发件人自己的身份,然后客户端发送MAIL命令。(EHLO 是扩展指令,不同服务器有不同指令) (3)服务器端以OK作为响应,表示准备接收。 (4)客户端发送RCPT命令。 (5)服务器端表示是否愿意为收件人接收邮件。 (6)协商结束,发送邮件,用命令DA...阅读全文

go语言

学习go语言差不多快一年了,期间在公司也做过几个项目,马上就要就要毕业了(现在大四,目前在一家创业公司实习),就像着使用go语言做个毕业设计。 基本想法就是,使用go revel框架,实现一个简单的网站。虽然毕业设计做网站没有什么稀奇,但是使用一个最新的语言和最新的框架来完成一个可以帮助大家的网站,个人觉得还是很有意义的。 网站的域名都已经申请好了。希望大家能够多多关照。网站现在只是做了几个简单的页面,由于没有服务器,所以现在大家还看不到。现在是,白天上班,晚上回家做毕业设计,期间还要复习四六级(确实很重要)。 最近新建了一个群 还没有什么人,大家有兴趣的可以加入。共同探讨一下go的问题。 280096871期待您的加...阅读全文

博文 2014-10-04 19:25:56 zongjh

go 语言环境安装

当你确定要学习一项技术时,首先要过的一关就是环境的安装,go语言的安装很简单,下边对各个点进行展开 语言安装 官网下载对应平台的二进制包,进行安装 linux,mac下自带的安装工具进行安装 源码编译安装,需要依赖一些工具,gcc,make等 环境变量安装 go语言中有两个重要的环境变量,GOROOT,GOPATH,GOROOT是go语言安装目录和语言内置包的存放目录,GOPATH是go语言开发的工作空间,在该目录下有三个目录,src,pkg,bin,src是源码存放的路径的,pkg是编译连接库文件,bin是编译后的可执行文件. 在开始go语言的开发之旅时,这一步很关键,在此需要特别主要,go语言中包的引用路径. 第三方包的引用,在编译时,通过$GOPATH/src+引用路径进行加载. 第三...阅读全文

博文 2018-08-12 13:35:02 暮雨

go使用protobuf如何判断接收到的数据?

我是刚学go的小白,最近参考golang服务器写了一个通讯程序,golang作为服务器用tcp连接unity3d,传输消息用的是protobuf。但是目前遇到一个问题就是客户端发送消息过来(有可能是各种消息,角色移动,角色请求,角色死亡等)服务器这边如何判断具体应该是哪一个消息呢?我给消息加了消息头原本是想通过消息头判断的,但是才发现protobuf在反序列化的时候就必须指定类型了,例如: mp := &message.ConnetInf{} err := proto.Unmarshal(data, mp) 反序列化时必须指定mp是我发送的ConnetInf消息。但是目前问题是在我不确定mp是什么类型的时候该如何反序列化呢?不知有没有做过的大神给指点一两句。谢谢了T ...阅读全文

用Go语言做产品半年的一些感觉

用Go语言做产品刚好半年,有一些感觉跟大家说道说道。 在使用Go之前,我常常想象,无法使用先进的Debug工具会对工作进度造成多么巨大的影响。甚至在Visual Studio的娇惯下认为,不能调试基本就无法正确的写出代码了。 由于我在Windows平台,能够支持Go语言调试的gdb老是无法工作,所以在这半年中,我一次都没有打过断点,也没有开启过一次单步跟踪。刚开始我心里非常没底,只好老老实实为每一个方法写测试代码,每开发完一个功能之后就运行所有测试。这个方法其实也算是家喻户晓的了,但很奇怪,我在写C#的时候并不会自觉地这样做。只有在一些非常特殊的部分会写部分测试代码。 事后我想了想,懒惰只是其中一个原因,还有一个原因是“编译速度”。众所周知,Go语言的编译速度是非常快的。平时看到这个消息应该...阅读全文

博文 2014-10-06 06:08:32 AllenDang

用 Go 语言构建 SQL 解析器

## 摘要 本文旨在对如何用 Go 语言构建 [LL(1) 文法的解析器](https://en.wikipedia.org/wiki/LL_parser) ——此例用来解析 SQL 请求——作出简要的介绍。只需要读者具有极少的编程能力(函数、结构体、条件语句和 for 循环)。 如果你想直接跳过文章直接看结果,这里是完成后的解析器代码仓库: ## 为了简化而放弃的内容 我们不会实现一些 SQL 中的复杂特性,包括子选择、函数、复杂的嵌套表达式等。但是这些特性都可以很快使用我们的策略来实现。 ## 简要的理论介绍 一个语法分析器由两部分组成: 1. 词法分析器,也叫做 “[记号切分器](https://e...阅读全文

博文 2019-06-23 23:04:14 plus7wist

GO语言的修饰器编程

之前写过一篇《Python修饰器的函数式编程》,这种模式很容易的可以把一些函数装配到另外一些函数上,可以让你的代码更为的简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。所以,一直以来,我对修饰器decoration这种编程模式情有独钟,这里写一篇Go语言相关的文章。 看过Python修饰器那篇文章的同学,一定知道这是一种函数式编程的玩法——用一个高阶函数来包装一下。多唠叨一句,关于函数式编程,可以参看我之前写过一篇文章《函数式编程》,这篇文章主要是,想通过从过程式编程的思维方式过渡到函数式编程的思维方式,从而带动更多的人玩函数式编程,所以,如果你想了解一下函数式编程,那么可以移步先阅读一下。所以,Go语言的修饰器编程模式,其实也就是函数式编程的模式...阅读全文

iOS中键值编码KVC及键值监听KVO的操作方法

![one_20140630080614003.jpg](http://studygolang.qiniudn.com/151225/d6447da995f86fff419b50ed0237d7dd.jpg) 在iOS开发中,我们常常用到键值编码KVC和键值监听KVO两个东东,今天小编和大家分享的就是这两个东东在应用开发中的具体用法。下面是小编在网上看到的一位大牛写的,灰常不错的有关KVC和KVO 的介绍,既然大牛都写得这么详细了,我们就直接借鉴借鉴吧。 键值编码KVC KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说objective-c语言中几乎所有的对象都支持KVC操作,常用的KVC操作方法如下: 1、动态...阅读全文

[翻译]编译器(8)-抽象语法树

文在此。 ————翻译分隔线———— 编译器(8)-抽象语法树 第一部分:介绍 第二部分:编译、转译和解释 第三部分:编译器设计概览 第四部分:语言设计概述 第五部分:Calc 1 语言规格说明书 第六部分:标识符 第七部分:扫描 在构建解析器之前,首先应当谈谈如何处理目标数据。 需要用某种抽象数据类型来保存所有需要解析的数据。树形数据结构很好的满足了我们的需求。这个树描述了编程语言的语法结构,它被很恰当的叫做抽象语法树(AST)。 AST 树形数据结构总是从一个根开始,我们的也是一样。通常,在一个成熟的编译器中,你通常会有一个代表包或程序的对象。在我们的例子中,我们只有一个文件,因此我们将有一个叫做 File 的对象。 这个对象的其他部分可以在我们的语法蓝图中找到。再次提醒,回顾我们创建语...阅读全文

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

[翻译]编译器(7)-扫描

文在此。 ————翻译分隔线———— 编译器(7)-扫描 第一部分:介绍 第二部分:编译、转译和解释 第三部分:编译器设计概览 第四部分:语言设计概述 第五部分:Calc 1 语言规格说明书 第六部分:标识符 现在终于可以开始在扫描器上工作了。 词法分析 那么,从哪里开始呢? 这是最难的一部分,对我来说,扫描看起来应该挺简单的,但是很快我就迷失在细节里。有许多种实现扫描器的方法,我只会向你展示其中的一种。这里是 Rob Pike 在一次演讲中的演示文稿,是关于另外一种很酷的方法:在 Go 中的词法扫描。 扫描器的基本原理就是从顶到底、从左到右、直到源代码的结尾进行检索。每次,发现所需要的元素,就报告词法串被找到,标识符会告诉解析器它是什么,以及找到它的位置。 有限状态机 我现在不会真正深入到...阅读全文

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

Prometheus 编写自己的 exporter

保证Go语言安装环境(1.7以上) 1) 下载对应的prometheus包 go get github.com/prometheus/client_golang/prometheus/promhttp 2)程序主函数: package main import ( "log" "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics", promhttp.Handler()) log.Fatal(http.ListenAndServe(":8080", nil)) } 指标类别 Prometheus中主要使用的四类指标类型,如下所示 Cou...阅读全文

博文 2019-02-26 15:34:49 pigness

go发送邮件

1.获取Go邮件库(自带发送不了) go get gopkg.in/gomail.v1 2.包含库 import ( "gopkg.in/gomail.v1" ) 3.例子 //info.From:发件地址或账号 //to: 收件地址 //body:邮件内容 //port:邮件服务器端口 //info.Host:邮件服务器地址 //info.Password:密码 func GoMail(to, body string) error { info, err := MailInfoGet() if err != nil { beego.Error("Get Mail Config Err:", err) return err } if info.Host == "" || info.Port ...阅读全文

博文 2016-09-19 14:00:01 idwtwt

【译】 Golang 中的垃圾回收(一)

介绍 垃圾回收器负责追踪堆内存的分配,释放掉不需要的空间,追踪那些还在使用的分配空间。不同编程语言对这个机制的实现都很复杂,但是开发人员开发软件时候并不需要了解垃圾回收太细节的东西就能进行构建。另外,不同发布版本编程语言的VM和runtime也总是在改变和进化。对于应用开发人员来说,重要的是保持一个良好的work模型,了解编程语言里垃圾回收器的行为并且它们是怎么样支持这种行为的。 对于go 1.12版本来说,go语言使用了非分代,并发的三色标记和清扫的回收器。如果想了解如何进行标记和清扫的工作,请参考这篇文章。golang的垃圾回收器的实现每个版本都在更新和进化。因此一旦下个版本发布,讲任何细节的实现都不再准确。 总而言之,这篇文章不会去讲实际的实现细节。我会为你分享回收器的一些行为并且去解...阅读全文

博文 2019-07-12 14:34:58 lucifer_L

[译文] 关于Golang的一个令我深深叹服的特性

自:http://golanghome.com/post/155 [译文] 关于Golang的一个令我深深叹服的特性 原文地址:这里 译文: 翻译By:@jemygraw 补充说明:一些评论的人对本文中的一些内容感到很困惑,但是我不想让大家感到我言语不清,所以在此澄清一下: 是的, 默认情况下,向一个hash表插入的元素是没有固定顺序的。但是因为很多原因,比如有一些帖子就指出了不是所有的map都是hash表(而且有些语言还有有顺序的hash表,比如java的TreeMap), 我还是能够了解为什么很多人(尤其是对Go map实现机制比较了解的人)会假定遍历map元素的顺序和向map插入元素的顺序是相同的。 我原来的例子是我自己想出来的,并没有演示出大多数版本的Go关于这方面的特点(尽管我听说...阅读全文

博文 2014-10-09 16:00:02 leonzhouwei

golang sync.RWMutex

sync.RWMutex package main import ( "fmt" "runtime" "sync" ) func clickWithMutex(total *int, m *sync.RWMutex, ch chan int) { for i := 0; i < 1000; i++ { m.Lock() *total += 1 m.Unlock() //这里是写 下面是读,外层还有线程的竞争 if i == 500 { m.RLock() fmt.Println(*total) m.RUnlock() } } ch <- 1 } func main() { runtime.GOMAXPROCS(4) //使用多个处理器,不然都是顺序执行。 m := new(sync.RWMu...阅读全文

博文 2015-04-10 03:00:01 rojas

golang 接口 参数

conn, err = ln.Accept() go handleConnection(conn) 看到这里我曾经有个疑问,为什么不是 handleConnection(&conn) ? package main import ( "fmt" ) type Interface interface { say() string } type Object struct { } func (this *Object) say() string { return "hello" } func do(i Interface) string { return i.say() } func main() { o := Object{} fmt.Println(do(&o)) fmt.Printf("CC...阅读全文

博文 2014-10-04 19:27:01 咖啡伴侣

开源图数据库 Cayley

Cayley 是 Google 的一个开源图(Graph)数据库,其灵感来自于 Freebase 和 Google 的 Knowledge Graph 背后的图数据库。 特性: * 编程语言 Go * 运行简单,只需 3 到 4 个命令 * RESTful API * or a REPL if you prefer 内建查询编辑器和可视化界面 支持多种查询语言: * Javascript, with a [Gremlin](http://gremlindocs.com/)-inspired* graph object. * (simplified) [MQL](https://developers.google.com/freebase/v1/mql-overv...阅读全文

开源项目 2014-06-25 16:00:00 google