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

Golang sync.WaitGroup的用法

0x01 介绍经常会看到以下了代码: 12345678910111213package mainimport ( "fmt" "time")func main(){ for i := 0; i < 100 ; i++{ go fmt.Println(i) } time.Sleep(time.Second)} 主线程为了等待goroutine都运行完毕,不得不在程序的末尾使用time.Sleep() 来睡眠一段时间,等待其他线程充分运行。对于简单的代码,100个for循环可以在1秒之内运行完毕,time.Sleep() 也可以达到想要的效果。 但是对于实际生活的大多数场景来说,1秒是不够的,并且大部分时候我们都无法预知for循环内代码运行时间的长短。这时候就不能使用time.Sleep() 来...阅读全文

博文 2018-05-17 09:54:29 马谦的博客

Deno 并不是下一代 Node.js

这几天前端圈最火的事件莫过于 ry(Ryan Dahl) 的新项目 deno 了,很多 IT 新闻和媒体都用了标题:“下一代 Node.js”。这周末读了一遍 deno 的源码,特意写了这篇文章。长文预警(5000字,11图)。 0. 为什么开发 Deno? 这是我上周做的一张图,介绍了 JavaScript 的发展简史。刚才修改了一下,添加了对 Node.js 和 Deno 发布时间的标注。Node.js 和 Deno 分别是 Ryan Dahl 在 2009 年和 2018 年,基于当年最新的前端技术开发的非浏览器 JavaScript 运行时。 Ryan Dahl 开发 deno 并不是因为 “just for fun”,也不是为了取代 node。下面慢慢解释。 1. 目前 deno ...阅读全文

博文 2018-06-04 11:34:38 justjavac

windows下gopath设置

下载了go语言的安装包, 然后安装, 装完了需要设置三个地方: 1. 在windows的PATH变量中添加go的可执行文件所在的目录: [javascript] view plaincopy PATH=C:\Go\bin;其他设置; 2. 设置 GOROOT , 这个好理解, 直接设置成 C:\Go 即可 [javascript] view plaincopy GOROOT=C:\Go 3. 设置GOPATH, 这个很难理解, 我的尝试: [python] view plaincopy GOPATH= #就是等于空, 这个是可以在系统环境变量中设置的, 结果报错go get 包的时候报错说$GOPATH未设置 GOPATH=; #就是等于一个分号(;), go get 包开始可以运行, 不报...阅读全文

博文 2015-02-14 03:00:01 rojas

Google:C++、Java、Scala、Go四种语言性能对比

谷歌发布了一个研究报告,仔细比较了C + +、Java、Scala和谷歌自己拥有的Go编程语言的性能。 根据谷歌的测试报告(PDF格式),C + +是四种语言中运行速度最快的。 但是该文件同时也指出,优化代码相对困难,这需要相当的努力、熟练的水准,不是平均水平的程序员所能达到。 Go旨在消除至少这个限制一些,但它仍然是年轻的(它首次亮相大约一年,不过前半年只是一种“实验性”语言年),并在大多数谷歌测试中表现出,它落后于C + +以及Java和Scala。 “Go提供了有趣的语言特性:这是一个简洁和标准化的符号,”阅读了报告, GOOGLE创始人罗伯特亨特写下:“[但是]语言编译器仍然是不成熟的:无论是性能和二进制大小方面都反应了该问题。” 这就是说,Go的编译比其他三种语言都要快。 Java...阅读全文

博文 2014-10-11 03:00:00 jianyi7659

golang 命令行处理

1.命令行参数(命令行参数是指定程序运行参数的一个常见方式。例如,go run hello.go,程序 go 使用了 run 和 hello.go 两个参数。) package main import "os" import "fmt" func main() { //os.Args 提供原始命令行参数访问功能。注意,切片中的第一个参数是该程序的路径,并且 os.Args[1:]保存所有程序的的参数。 argsWithProg := os.Args argsWithoutProg := os.Args[1:] //你可以使用标准的索引位置方式取得单个参数的值。 arg := os.Args[3] fmt.Println(argsWithProg) fmt.Println(argsWithou...阅读全文

博文 2015-04-21 03:00:01 benlightning

golang实现http的get和post

golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下。 get请求 get请求可以直接http.Get方法,非常简单。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func httpGet() { resp, err := http.Get("http://www.01happy.com/demo/accept.php?id=1") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { // handle ...阅读全文

博文 2016-11-17 02:00:03 徐学良

Golang 编译成 DLL 文件

首先撰写 golang 程序 exportgo.go: package main import "C" import "fmt" //export PrintBye func PrintBye() { fmt.Println("From DLL: Bye!") } //export Sum func Sum(a int, b int) int { return a + b; } func main() { // Need a main function to make CGO compile package as C shared library } 编译成 DLL 文件: go build -buildmode=c-shared -o exportgo.dll exportgo.go 编译...阅读全文

博文 2018-02-22 22:33:04 八风不动

golang可以写前端,你澡吗?

引入:GopherJS:Go代码转为JS,在浏览器中运行Go代码(公司群发的,感觉有意思就随意写了2行。) 以下文章转载: GopherJS 可以把 Go 代码编译成纯 JS 代码。其主要目的是让你有机会用 Go 语言编写前端代码,并且可以运行在所有浏览器中。可以到这里试试 GopherJS Playground。 有了这个东东,你可利用 Go的优雅的类型系统和其他编译时(compile-time)检查,尤其是对大型项目,在Bug侦测有重大影响、有重构的能力。想想看, JS 方法是不是要经常要额外处理一些遗留参数,因为你并不确切知道其他某些代码是不是仍然在按老方法调用。如果没调用,GopherJS 会告诉你,你就可以确信和这样的Bug说拜拜了。 设计目标 生成代码的性能 (查看 Joseph...阅读全文

博文 2015-11-06 15:00:02 jinlong0326

golang tar gzip 压缩,解压(含目录文件)

tar是用于文件归档,gzip用于压缩。仅仅用tar的话,达不到压缩的目的。我们常见的tar.gz就是用gzip压缩生成的tar归档文件。 go实现tar压缩与解压与zip类似,区别在于tar需要使用gzip进行处理。tar与zip的Header不同。代码如下 package tartest import ( "archive/tar" "compress/gzip" "io" "os" "strings" ) //压缩 使用gzip压缩成tar.gz func Compress(files []*os.File, dest string) error { d, _ := os.Create(dest) defer d.Close() gw := gzip.NewWriter(d) defe...阅读全文

博文 2016-07-08 08:00:00 xiaofengshuyu

Go 语言编译运行的小问题

载:http://c2pblog.sinaapp.com/archives/355 简单谈一谈Go语言的编译运行。 golang 和C/C++都是编译型的语言,首先要写好源文件,然后编译,最后运行。这几天在用IDE的时候一直都是一键运行的,没有怎么好好理解编译和运行之间的区别。而在Linux下面则出现了一些小问题不得不重新思考这个区别。虽然说golang编译速度很快,但是我们实际使用的时候必须是要用可执行文件的,你给我一个源代码是没有意义的,而在实际项目中,你的代码会跑在很多机子上面,每一分钟都会运行很多很多次,然后这种情况下如果你在编译的时候都会浪费掉时间的话,那么这个成本将会很大。于是我们必须做一些对应的处理,将golang源文件先编译成可执行文件,然后直接在使用的时候去执行就好。 这时...阅读全文

博文 2015-03-13 10:00:02 yugongpeng_blog

go环境变量配置 (GOROOT和GOPATH)的区别和含义

GOROOT就是go的安装路径在~/.bash_profile中添加下面语句:GOROOT=/usr/local/goexport GOROOT当然, 要执行go命令和go工具, 就要配置go的可执行文件的路径:操作如下:在~/.bash_profile中配置如下:export $PATH:$GOROOT/bin如果是windows需要使用;符号分割两个路径, mac和类unix都是用:符号分割GOPATH:go install/go get和 go的工具等会用到GOPATH环境变量.GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径 (其实也是你的工作目录, 你可以在src下创建你自己的go源文件, 然后开始工作)。GOPATH之下主要包含三个目录: bin、pkg、s...阅读全文

C中调用go中的回调函数

在用go包装某些c库时(如glut),需要将go函数当作回调函数传递给c库(如glutDisplayFunc(&draw)中的draw函数,我想将go写的函数传过去),应该怎么做?我写了一个示例,但一直不成功,不知道为什么?麻烦知道的帮我解答一下。 代码如下: /* test.h */ extern void SetFunc(); /* test.c */ #include "test.h" #include "_cgo_export.h" void SetFunc() { InternalFunc(); } /* test.go */ package main // #include "test.h" import "C" ...阅读全文

主题 2013-04-19 09:03:40 shikuijie

Go推出的主要目的之一就是G内部大东西太多了,系统级开发巨型项目非常痛苦,Go定位取代C++,Go以简单取胜(KISS)

以前为了做compiler,研读+实现了几乎所有种类的语言。现在看语法手册几乎很快就可以理解整个语言的内容。后来我对比了一下go和rust,发现go的类型系统简直就是拼凑的。这会导致跟C语言一样,需要高超的技巧才能写大程序。而rust则没有这种问题,每个部分的组成都很和谐。---------------------------------------------------------------------- Rust是挺优秀的,函数式本来就比命令式来的优雅。但同时也要看到,两种语言的定位不同。Go的定位是取代C(或C++),做所有软件的基础。而Rust想是一种划时代的语言,如果成功,将是颠覆性的。 但同时也应该看到,Go的目标简单,现在也比较稳定,可以使用了而Rust虽然很强大,但它还处...阅读全文

博文 2015-01-16 18:00:01 findumars

Golang中JSON解析结构体

一、StructTag介绍StructTag是go语言结构体中的一个标记字段,放在字段声明的后面,一般只有特定情况下会用到,如json的转化。 使用的时候只要把标记的字段用两个包起来即可,标签内的语法形式通常为key:”value”` ,多个标记用空格隔开。 1234type tagTest struct { tagA string `TagA` tagB int `TagB`} 二、Struct转Json要想把struct转化成json,只要把结构体内的字段名设置成导出状态,也就是把首字母大写就行了,默认情况下,转化后的json中的key值和结构体中的字段名是一样的。 1234567891011121314151617181920212223package mainimport ( "fm...阅读全文

博文 2018-05-17 09:27:59 马谦的博客

windows上GOROOT和GOPATH的设置

下载了go语言的安装包, 然后安装, 装完了需要设置三个地方: 1. 在windows的PATH变量中添加go的可执行文件所在的目录: PATH=C:\Go\bin;其他设置; 2. 设置 GOROOT , 这个好理解, 直接设置成 C:\Go 即可 GOROOT=C:\Go 3. 设置GOPATH, 这个很难理解, 我的尝试: GOPATH= #就是等于空, 这个是可以在系统环境变量中设置的, 结果报错go get 包的时候报错说$GOPATH未设置 GOPATH=; #就是等于一个分号(;), go get 包开始可以运行, 不报错, 最后还是报错, 说$GOPATH未设置 GOPATH=C:\Go 或者GOPATH=C:\Go; #go get 包报错, 说$GOPATH不能设置成和G...阅读全文

GO语言学习笔记(一)

每个Go源码文件开头都是package声明,表示Go代码所属的包要生成Go的可执行程序,需要定义一个main的包,同时创建main目录外部参数传入用os模块的os.Args方法获取,os.Args接收的参数下标从1开始 package main import ( "fmt" "os" ) func main(){ fmt.Println("Hello Test") fmt.Println(os.Args[1]) } 在函数返回时没有被明确赋值的返回值会被设置成默认值,例如float类型返回值会被设置成0.0,error类型返回值会被设置成为nil6g和6l是64为版本的Go编译器和链接器,32为版本的编译器和连接器是8g和8l,gcc版本的编译器是gccgo 6g helloworld.go...阅读全文

博文 2014-10-11 13:00:06 YaphetS_xiaoyang

golang入门之go语言简介

Go出生的背景:   Go最早并不是一个Google的正式项目,而是作为一个"20%"的项目出现的,直到2009年才以开源的方式面向大众,目前go team有稳定的发布周期,大约半年一个新的版本,最新的是1.8。   Go语言的出身可以说非常豪华,最早对go语言的讨论是由罗伯特·格瑞史莫、罗伯·派克和肯·汤普逊发起的,主要是为了解决c++中出现的问题而发起的项目。肯·汤普逊是c语言和unix的发明者,罗伯特·格瑞史莫参与设计了Java的HotSpot虚拟机和Chrome浏览器的JavaScript V8引擎,罗博·派克在大名鼎鼎的bell lab侵淫多年,参与了Plan9操作系统、C编译器以及多种语言编译器的设计和实现。 Go语言从2009年开源到现在吸引了很多开发者的注意,分别获得了200...阅读全文

博文 2017-06-10 00:00:02 yangbin1110

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

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

博文 2015-03-11 19:48:43 Garfielt, lidashuang

dart语言 (安卓应用开发)

当今IT业界,三足鼎立。三巨头中,Google还如同赤壁后的刘备,正处于全面出击时期,生态系统还未成型。Apple有OC,Microsoft有.NET,Google只能用最普通的C++和JavaScript,还有个Java,整天被人讨着要专利费。这种借荆州的日子怎么能忍,Google先推出了Go语言,欲取代C++和Java;去年底又推出了Dart语言,目的想取代JavaScript,不仅是自己用,而且想彻底打破Web开发僵局。 互联网时代开启以来,互联网这么多年来总体是以超高速发展。然而根据辩证法还是什么法则,事物发展往往是螺旋上升的。互联网这么多年来也经历了两次低潮,一次是2000年泡沫破裂,另一次就是现在这次,这一次不像2000年那么大起大落,却是Web高速发展多年后瓶颈矛盾的交织...阅读全文

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

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

C/C++/Go混合编程实践之GoJieba

最近想在团队中推动Go在项目中更多场景的应用,提高开发效率。 但是遇到了一个顾虑,就是有些功能库是 C++ 写的, 切换到 Go 开发之后如果需要这些功能的话, 完全重写一个短期内不现实。 所以就产生了探究 C/C++/Go 混合编程的想法。 很早之前就听说 Go 语言对 C 语言非常友好, 几乎可以无缝使用 C 的一些丰富遗产。 刚学 Go 的时候尝试了一下,应该是因为参考的资料的问题, 没有顺利跑通。后来忙其他事情了,也没有深究为什么。 所以趁这个周末捣鼓了一下,跑通了 C/C++/GO 混合编程。 主要参考 how-to-use-c++-in-go 和 cgo , 不过前者的回答毕竟久远了,比如就不需要写像作者描述的, 那么复杂的 Makefile,直接 go build 即可(可以参...阅读全文

博文 2016-02-05 05:00:00 xie1xiao1jun

用过beego ORM框架的大神进来看看

用了beego的orm框架,发现会对表名全部转换成小写了。而我的数据库中的表名是T_UserInfo,经过GO转换之后变成了t_userinfo了。而我的数据库对表名大小写是敏感的,如果设置成不敏感,那么对以前的一些服务程序会有影响,所以想问一下这个ORM可以设置表名不自动转换吗? stament.QueryTable("TUserinfo").Filter("id", id).One(&data...阅读全文

beego多级路由导致页面不能正常加载css样式

(1)路由设置:beego.Router("/index",&controller{}) (2)controller的Get()方法:this.TplName="index.html" (3)其中index.html位于views文件夹下,引用了位于static文件夹下的css,"./static/css/xxxxx; 此时访问/index路径能正常加载css显示index.html页面。 (4)如果把路由设置成beego.Router("admin/index",&controller{}),其他不变,访问admin/index时则不能正常显示index.html页面. (5)检查页面元素时发现index.html页面加载的css路径位于admin/static/css/xxxx...阅读全文

Go 语言项目管理

Go 作为自带项目管理的编程语言,及其方便。 目录结构 通常, 一个Go语言项目 ( 假设这个项目的根目录是 GoProjectRoot )的目录是这样的 : 一级目录 GoProjectRoot/src #包含项目的源代码文件; GoProjectRoot/pkg #包含编译后生成的包/库文件; GoProjectRoot/bin #包含编译后生成的可执行文件。 其中src目录需要我们自己创建, 其余的两个目录都是在执行 go install 的时候自动生产的。 二级目录 在src目录下面的, 是我们本项目的全部源码, 一般按照不同的模块分别放置 : |-- |-- |--mudule1.go |-- |--mo...阅读全文

博文 2015-11-13 18:00:04 cchd0001

golang 进程出现too many open files的排查过程

1. 现象 服务的cpu跑满(golang实现), 并大量报too many open files错误.服务使用systemd来运行,部署在阿里ecs上. 2.分析 从日志来看,cpu的上升主要为到达文件数限制引起的,但之前已经更改过系统的文件数及所有用户的文件数,按道理是不应该出现这个问题的,后来查阅资料发现,文件数可以从三个维度限制分别为操作系统限制,用户态限制,以及进程限制,对于这三个维度选取最小值生效.于是对系统进行分析. 首先查看当前打开文件数, 进程占用的文件数并不多. lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 然后获取系统级文件数限制 输入命令cat /etc/sysctl.conf得到fs.file-max = 1...阅读全文

博文 2016-10-11 09:00:11 u010511236

Go语言GUI Demo 之 Walk

Go语言没有自带官方Gui,目前找到的Gui框架中感觉Walk还不错,但该库只支持Windows操作系统(一般也只用到Windows)。本次我把官方的example编译成exe,方便网友参考Walk 的gui功能。Walk地址:https://github.com/lxn/walk以下是各demo的截图,和exe文件下载地址(本次编译保留黑框框方便查询调试信息,实际中可以去掉)下载地址:http://d.139.sh/snans/file/gogui-examples.rarDemo截...阅读全文

博文 2016-11-12 14:00:02 sunansheng

为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是直接编译成机器码?

为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是直接编译成机器码? 之所以问这个问题是因为知乎上有问题“为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是强类型 + 静态?”,其中大多数答案都是在说动态语言存在的问题 那么按照这个逻辑,这三门语言都不是像JAVA、C#那样先编译成中间代码(JAVA字节码和CIL)、在运行时再JIT成机器码,那是不是说明中间码这种思路也有问题呢? 1 条评论 分享 按投票排序按时间排序 2 个回答 什么是答案总结? 答案总结 4赞同 反对,不会显示你的姓名 匿名用户 沈世军、Colliot、卿培 等人赞同 你忘记scala和clojure等jvm上的语言了。所以提问的前提就不对 你忘记sca...阅读全文

博文 2016-04-20 10:00:01 autumn20080101

Go调用C/C++

cgo golang是类C的语言 支持调用C接口(不支持调用C++) Go调用C/C++的方式 : C : 直接调用C API C++ : 通过实现一层封装的C接口来调用C++接口 Go集成C/C++的方式 go的源代码中直接声明C代码 比较简单的应用情况 可以直接使用这种方法 C代码直接写在go代码的注释中 注释之后紧跟import "C" 通过C.xx来引用C的结构和函数 package main /* #include #include typedef struct { int id; }ctx; ctx *createCtx(int id) { ctx *obj = (ctx *)malloc(sizeof(ctx)); obj->id = ...阅读全文

博文 2018-11-17 12:34:39 sakura3zz

Android app打包知识点大全

android app开发结束后,就需要对app进行打包、部署与发布了,那对于android初学者而言,如何对apk进行打包呢?今天小编就为大家分享一二,一起来看看吧~~ aapt package -m -J src -M AndroidManifest.xml -S res -I android.jar //这句命令主要是重新自动生成R.java文件,比如增加个图片或者字符串或者增加个layout目录xml文件 mkdir D:\testapk\classes //这句命令是创建个编译*.java源文件输出*.class存放的目录,文件夹名可以随便命名. javac D:\testapk\src\aimoxiu\theme\moxiutheme\*.java ...阅读全文

双十一倒计时,这些可怕的烧脑套路,玩不起玩不起

明天就是双十一了啊 朋友圈常年隐匿的水军突然就忙起来了 晒珍藏!比价!预定!加购物车!充钱! 一面哭爹喊娘逛着各大商城平台, 一面大喊卧槽好便宜疯狂加入购物车! 一面说着贫穷使我冷静, 一面忍不住预定预定充钱充钱! 没错,是我们了,高贵的剁手党! 自从去年爆出双十一涨价再降价的套路 今年的网民显然成长了,也淡定了 提前一年关注商品价格走势 支付宝余额设置成屏保、桌面 用我们高贵的血液发誓 今年!绝不被套路! 有限的钱只能花在最优惠的方案上! 然而,商家却用高智商碾压了我们 他们说, 可怕的不是没钱,而是没脑 火炬红包、 群战队红包、 定金膨胀、 双十一津贴等...阅读全文

[go]linux环境中文乱码问题

之前一直在windows下测试go代码,保存为utf-8,就可以正常显示中文. 迁移到linux后发现中文无法正常显示. 搜索了一下类似问题几乎没有. 测试发现是使用终端的问题. 我一直用的secure crt4.0, 懒得升级.但是4.0版本没有设置字符集的功能 换成putty就没问题了 下载了一个7.0的便携版的crt,把字符集设置成utf-8也可以了. cat和more显示都无问题(LANG=en_US也可以) 因为go必须是utf编码,所以使用vim要设置一下.vimrc set termencoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936 set fileencoding=utf-8 set encoding=utf-...阅读全文

博文 2015-06-18 09:09:20 laputa73

怎么解决VSCODE调试控制台exec: go: executable file not found in %PATH%

感谢您花时间阅读我的问题。 google baidu都用上了没找到症结。 go env set GOPATH=C:\mygo set GOROOT=C:\Go path=%GOROOT%\bin;%path% 目前解决办法是打开windows环境变量不做任何改动点击确定,重启vscode,这个错误消除了。 好像和集成终端没关系吧?设置成powershell了...阅读全文

Repustate从Python迁移到Go,性能提高10倍

Repustate向世界各地的企业和组织提供文本分析服务。随着公司的发展,他们每天处理的文本段数量从5亿增加到10亿,其中包括Tweet、新闻文章、博客评论、用户反馈等。大规模的文本分析非常困难,因为很少会出现两段文本完全相同的情况,所以无法利用缓存来提高效率。不过,它可以将大段的文本分成多个句子,然后并发分析每个句子。近日,Repustate官方博客发表了一篇博文,介绍其API的演进过程。 Repustate API的第一个版本是用Django编写的。他们构建了一个原型,并以此为基础推出了他们的服务。但每个Django请求/响应周期的开销太大。随着API访问量增加,可靠性问题凸显,使用Amazon服务的成本也大大增加。于是,他们开始寻找一种Python代替方案,并选择了Flask。Flas...阅读全文

博文 2015-09-25 17:08:05 谢丽

《Go语言101》:一本在线Golang电子书

大致是从2016年7月开始打算写一本罗列各种Go编程中的细节的小册子。 但没想到在随后的两年半中,这本原计划中的小册子演变成了一本近500页专注于Go语言语法和语义的书。 原本的三个月的写作计划也拖成了两年半的一场马拉松。 真累了,另外也耽误了太多事儿。实在没有心力再准备排版和操心出版纸质书了。 有兴趣学习Go语言的,请点击以下链接: 本书官网(在线阅读版,有可能间歇性被墙) 本书github项目(可用来开启本地阅读版) 离线版下载(目前包括pdf和epub格式) 觉得此书对学习Go语言有帮助的,顺便赞赏和传播一下,以让老貘保持继续更新本书和go101.org网站的心力。 BTW,刚给本书搞了个公众号,主要用来发表一些关于Go语言细节、常识和编程技巧的快餐型的短小文章。 有兴趣的可以扫描下面...阅读全文

博文 2019-04-27 13:34:41 liulaomo

golang在window平台交叉编译

情景设定:操作系统:window7x64安装目录:c:/go设置环境变量: PATH=%PATH%;C:/go/bin GOROOT= C:/go GOPATH = D:/goproject 进行交叉编译的原理是设置GOARCH(cpu架构)和GOOS(操作系统)然后执行c:/go/src/make.bat --no-clean将c:/go/src的源码编译成各个ARCH下对应OS的包打包好的批处理文件如下: set CGO_ENABLED=0 ::x86 set GOARCH=386 set GOOS=windows call make.bat --no-clean set GOOS=linux call make.bat --no-clean set GOOS=freebsd call ...阅读全文

博文 2014-10-04 19:27:26 chen yuwen

从简历被拒到收割今日头条 offer,"我"用一年时间破茧成蝶!

一、印象中的头条先说说“我”印象中的今日头条:1.给的钱多,笔试也贼难参加过头条笔试的同学都知道,头条笔试可以笔试三次,就是不论你有没有参加都有三次机会。笔试就5道算法题,两个小时,去年第一次看到算法题就自闭了,第一次挂了。第二次又很认真地做,做到一半放弃了。没过几天又邀请我做第三次,有一种强行被侮辱的感觉。2.内推被拒如我标题所说,简历被拒。去年3月份在知乎上看到一个头条大佬说可以内推春季实习,于是私信并发了简历给他。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。(打扰了)二、面试背景自从去年被头条笔试的算法凌辱和被头条的前辈指教了之后对头条没啥好感了,也感觉进不去,所以后面大半年都没关注头条的招聘,直到以下两件事情的发生。1.有一天,之前一块实习的哥们说进了头条,我也蠢蠢欲动打算...阅读全文

博文 2019-06-14 16:02:54 java菲

go programming language(1)

go语言的特征 1. 用很简单的语法支持并行编程 2. 部分的更加规范编程风格,比如大小写等 3. go的编程哲学,精炼包容 怎么安装go。 每一个语言都要一个编译器,所谓的安装语言就是安装这个编译器。 下载了source code也是用C语言写的,不清除能否实现超越C的梦想,不过早期的C++做得更过分,先编译成C,相比这还是进步很多,后来为了安装方便还是下载了bin安装,花费了一百多M的空间。 Create a file named hello.go and put the following program in it: package main import "fmt" func main() { fmt.Printf("hello, world\n") } Then run it w...阅读全文

博文 2014-10-11 09:00:00 wangeen

Django项目部署中的服务器安全详解

  跨站脚本安全保护(Cross site scripting protection)   跨站脚本攻击(XSS)通常发生于站点存储和使用不安全的内容,例如数据库里存储的用户内容是用户的脚本,这些脚本读取后未经处理便执行导致了网站的不安全。例如:     当var是来自用户类似于这样的内容:   'class1 onmouseover=javascript:func()'   这样就可能导致浏览器执行不安全的脚本。为了避免这类问题,Django的模版有一些自动过滤特殊字符的机制,类似于 ‘<’和>’之类的字符都会被过滤。如果你确定某些内容是完全安全的,不是来自用户的非法输入,想展示在...阅读全文

grpc(5):使用grpc+consul 开发服务调用

1,consul 服务发现 在使用了几次之后终于感受到了这个系统挺好的了。 在一个小的团队里面,要做服务发现,做的简单高效。 可以直接使用 consul 作为服务发现,服务检查的系统。 不用自己去开发了。真的很方便,只要部署下就可以了。 github 上放了代码,都是很简单的。 https://github.com/freewebsys/grpc-go-demo 2,重新研究consul启动 发现之前是使用dig 进行操作的,因为consul官方网站也是推荐使用的。 但是其实可以使用ping ,nslookup 也是一样的。 但是需要修改consul的端口。 consul agent -dev -ui -server -node=consul-dev -client=10.0.2.15 -d...阅读全文

博文 2017-07-12 02:30:18 freewebsys

golang的项目结构 相关知识

### 项目结构 ``` ├── bin │ ├── login │ └── main ├── pkg │ └── darwin_amd64 │ └── login │ └── auth1.a ├── src │ ├── cfg │ │ └── testcfg.go │ ├── db │ │ ├── innerdb │ │ │ └── innerdb.go │ │ └── db.go │ ├── login │ │ ├── auth1 │ │ │ └── auth1.go │ │ ├── auth2 │ │ │ └── auth2.go │ │ └── login.go │ └── main.go └── Makefile ``` *** ### 两种包导入方式 ##### local im...阅读全文

论Golang 给我惊喜的Go语言

今日凌晨,看了Google推出的编译型静态语言Golang的见解。 感觉这就是我一直期望得到的一种编程语言。简单概括我喜欢的地方: 1. 语法特性非常少,精简到没有多余的语法特性,甚至没有泛型; 2.运行效率特别高,我估计会高于C++; 3.可以编译到不同的OS,实现跨平台,并且不借助于虚拟机(JVM等)。 4. 编译型强类型编程语言 说说第一点 :很符合本人自己的喜好,本人厌恶C++里太多的语法特性。比如,光一个子类继承自父类,就有public继承、private继承的区别,多重继承等大量的特性,带来的弊端往往多余带来的好处。 同样是面向对象的编程语言,Java和C#都是只有public继承,人家也能实现所有的东西,C++这样做,纯属多余。另外C#6.0又玩出写什么新特性,说是可以减小代码...阅读全文

博文 2015-08-27 10:00:07 lsm135

Golang 优化之路——自己造一个日志轮子

写在前面 Golang 的log包内容不多,说实话,直接用来做日志开发有些简易。主要是缺少一些功能: 按日志级别打印和控制日志; 日志文件自动分割; 异步打印日志。 按日志级别打印和控制日志 我们实现的日志模块将会支持4个级别: const ( LevelError = iota LevelWarning LevelInformational LevelDebug ) 定义一个日志结构体: type Logger struct { level int l *log.Logger } func (ll *Logger) Error(format string, v ...interface{}) { if LevelError > ll.level { return } msg := fmt....阅读全文

博文 2017-07-14 04:06:21 Cyeam

main包不同文件的无法相互调用的原因?

main包不同文件定义的方法及常量无法相互调用,不是main包就行 ``` package main import "fmt" const( Const1 = "1" Const2 = "12" Const3 = "123" Const4 = "1234" ) var( str1 string = "str1" ) func Test() { fmt.Println("Test") } ``` ``` package main import () func main(){ Test(); fmt.Println(Const4 ) fmt.Println(str1) } ``` 无法编译说找不到Test()方法\常量Co...阅读全文

golang之cgo---调用C/C++动态库函数

之前说过golang调用C代码的方式可以通过cgo或者是swig,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性。怎么办,将c++的功能函数封装成C接口,然后编译成动态库,或者是功能较为简单的可以直接嵌入到go源文件中。   cgo的使用是在linux平台上,在windows平台上可以配置交叉编译器。 动态库头文件:myfuns.h #pragma once #include #include #include #include void fun1(); void fun2(int a); int func3(void **b); // others 动态库名:myfuns.so...阅读全文

博文 2016-07-17 03:00:01 FreeApe