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

golang中image/jpeg包和image/png包用法

jpeg包实现了jpeg图片的编码和解码 func Decode(r io.Reader) (image.Image, error) //Decode读取一个jpeg文件,并将他作为image.Image返回 func DecodeConfig(r io.Reader) (image.Config, error) //无需解码整个图像,DecodeConfig变能够返回整个图像的尺寸和颜色(Config具体定义查看gif包中的定义) func Encode(w io.Writer, m image.Image, o *Options) error //按照4:2:0的基准格式将image写入w中,如果options为空的话,则传递默认参数 type Options struct { Qual...阅读全文

博文 2015-06-17 20:03:41 chenbaoke

自制JVM -- 用GO语言实现JVM

虽然写了很多年的Java代码,但是基本上只把JVM当blackbox处理。介绍JVM的书也看过几本,但效果不佳。看OpenJDK代码?提不起兴趣。最近有几个礼拜的空闲时间,于是我决定用GO语言写了一个JVM,彻底征服JVM这头怪兽! 为什么选择GO 首先不想用动态语言来写。实现JVM的初衷就是想离机器更近一点,所以排除了JavaScript、Python、Ruby等语言。其次也不想用Java来写,原因基本同上。还有一个原因是自己对Java太熟悉了,用它来写,没挑战性。再次也不想用C/C++,原因是自己不喜欢这两个语言。C过于底层,C++过于复杂。所以最终选择了GO。 GO是Google发布的语言,编译型,接近底层,一定程度上可以充当系统语言来使用。GO的语法很简洁,学习曲线平滑,文档也比较详...阅读全文

博文 2015-02-09 13:00:01 SpiderDog

go.image/tiff 的一些问题

最近给 go.image/tiff 增加了 Tile/Gray/Gray16/RGB16bit 等格式的支持. 还有一些特性以后会陆续完善. Go语言图像库的基本思路是能尽量提供完善的解码功能(当然只支持文件的第一个图像). 而编码功能则比较有限, 主要是支持基本的不同颜色模型, TIFF特有的特性应该不会完整支持. 最近有用户反馈生成的tiff在Mac系统不能正常浏览(Issue6421). 而我自己的Win7/64可以正常打开有问题的图像. 用 tiffinfo 也没有看到什么异常的Tag(有问题的已经修改之后). 之后无意中用GIMP也不能打开Mac有问题的tiff影像. 既然问题已经重现, 查找原因就容易多了. 初步分析之后, 发现问题主要是针对非RGB的图像(灰度和调色板). 然后...阅读全文

博文 2014-10-06 06:14:32 chai2010

beego入门示例-简易购物车

稍微整理了一下 电脑里面之前做过的小demo github : beegoshoppingcart可以做为beego入门示例:数据库自动生成go 和beego的安装可以参考之前写的go&beego安装教程 基本功能包括,包括产品选择,购物车增删改查,订单的生成 demo示例图: 首页 购物车 数据库设计见models文件夹,只需建库,不用建表。 注意,当时赶时间写的示例,代码很多地方并不规...阅读全文

博文 2017-03-05 19:46:21 cowkeys

命令行网络诊断工具 myLG

myLG,是一个命令行网络诊断工具。my looking glass是一个开源软件工具,将不同网络探测器的功能结合到一个网络诊断工具中。 **特性:** * 200多个国家的DNS查询信息 * 本地快速ping和实时跟踪 * 数据包分析 -  TCP / IP和其他数据包 * 本地HTTP / HTTPS Ping(GET,POST,HEAD) * RIPE信息(ASN,IP / CIDR) * PeeringDB信息 * 快速端口扫描 * 网络LAN发现 * 可配置的选项 * 直接从shell 访问 命令 * 支持vi和emacs模式的几乎所有基本功能 * CLI自动完成和历史记录功能 **运行效果:** ![image](https://static.o...阅读全文

go语言:优雅的模板切割技术

众所周知,一个网页普遍由头、身、脚组成,而一个项目中头和脚基本相同,这些部分就需要提取出来。 比如: ... ... ... 分割的时候就会分成这样: 头: ... 身: ... 脚: ... 然后就可以通过三次调用func (*Template) Execute这个方法来渲染模板了! 可是本人有个强迫症,看到和被分到了两个文件中十分不爽,所以想了下面这个方法: main.html: {{define "main"}} ... 阅读全文

7天玩转云服务器

七天能干什么,赶快加入阿里云大学跟我们一起学习,7天带你玩转云服务器 课时列表 • 课时1:第1天:云服务器ECS是什么 • 课时2:第2天:上云概览——在云服务器上快速搭建个人网站 • 课时3:第3天:云服务器最基本操作——实例管理 • 课时4:第4天:云服务器磁盘管理 • 课时5:第5天:为应用创建备份——快照管理 • 课时6:第6天:轻松复用你搭建好的环境和应用——镜像管理 • 课时7:第7天:加固你的网站——云上应用的安全 开始学习:http://click.aliyun.com/m/27894/ ...阅读全文

Golang绑定Lua脚本,小小封装一下

好吧,我承认我有点无聊! 原来的时候,自己用C写过一个小东东,里面集成了lua脚本,lua主要用于配置系统,感觉很不错。 最近折腾了一段时间的Golang,写代码的感觉,的确比C爽,所以想着用Golang写个爬小说的稍微通用的爬虫,基本功能搞定后,发现配置还是用lua比较方便,便试着封装一下lua c-api的bindings,整了半天,发现挺累的,就去github搜了下,发现了几位前辈写的东东,但是感觉都不太满意,最后终于通过golang官网找到了这个。 恩,github.com/aarzilli/golua,这个封装,相对完整。试用了一下,和C-API基本一致,问题是,从配置文件里面取个东东,依然和C-API一样,繁琐无比。哎,之后只能自己再封装一下算了。整了2小时,感觉不错,读取基本配...阅读全文

博文 2015-06-17 20:01:46 u013125772

Go语言中的fmt.Scan使用说明

在go语言中如果想获取用户输入,会用到Scan方法。scan在go语言中有很多中,今天介绍一下他们的使用方法和不同点。 和print类似,scan也分为三大类: Scan、Scanf和Scanln: 从标准输入os.Stdin读取文本(从终端获取数据) Fscan、Fscanf、Fscanln: 从指定的io.Reader接口读取文本(通用) Sscan、Sscanf、Sscanln: 从一个参数字符串读取文本(从字符串string获取数据) Scan: 语法: func Scan(a ...interface{}) (n int, err error) 例: func main() { var str string fmt.Printf("请输入内容:") fmt.Scan(&str) f...阅读全文

博文 2020-03-30 13:33:15 oudemen

年中总结与目标OKR

文: 年中总结与目标OKR thumbnail: /thumbnails/xingbake.jpg date: 2018-07-16 21:39:04 [TOC] 昨天看到了狗哥的年中总结, 虽然开头和结尾比较丧, 但还是比较详细的列出了半年回顾和计划 也让我感受到了像狗哥这样的年轻人有目标真好~ 自己没制定过目标和计划, 发现有点难或者好奇心没啦又断了 所以, 结合前段时间看到的OKR, 这次来学习做一次年中总结, 内容尽可能细致且可度量, 以便年终进行检验 一. OKR 先来简单说下OKR是什么 OKR: Objectives and Key Results的简称,中文名是目标与关键成果法 从名称上看到它包含两个要素 目标(Objectives) 关键结果(Key Results) 它由...阅读全文

博文 2019-05-22 17:34:54 i蝸居年華_谢谢谢

Golang 排序算法

基本排序算法的Golang实现 BubbleSort func BubbleSort(data []int) { fmt.Println("BubbleSort") fmt.Printf("Source Data:%d\n", data) for i := 0; i < len(data); i++ { for j := 0; j < len(data)-i-1; j++ { if data[j] > data[j+1] { data[j], data[j+1] = data[j+1], data[j] } } fmt.Printf("Middle Data:%2d=>%d\n", i, data) } fmt.Printf("Result Data:%d\n", data) } Inser...阅读全文

博文 2017-04-13 07:09:29 宇间草木

[Golang]Socket编程01----实现基本功能的Client和Server

支持多连接。 Server运行之后,进入Accept阻塞状态。Accept得到一个Conn之后,开启一个协程,分别有两个协程阻塞在Read和Write。当Read一个数据之后,将Read得到的数据写入readChannel中,之后再对其进行处理。在writeChannel得到一个数据之后,向Conn写入数据。 Client运行后,接入Server,之后开启两个协程阻塞在Read和Write的Channel中。在Scan得到一个数据之后,向writeChannel写入数据,唤醒阻塞的协程向Conn中写入数据。当Server中有数据返回时,read协程被唤醒,将数据写入readChannel中。 当然,还有诸多细节要处理。比如Conn的关闭在什么时候等等。 客户端源码 package clien...阅读全文

博文 2017-01-13 03:00:02 码农小骚年

用go语言和org-mode搭建自己的博客环境

2012-12-23 用go语言和org-mode搭建自己的博客环境 设计目标 操作流程 目录格式 博文头部meta格式 功能实现 设计目标 半静态的博客。尽量是self-contain的,没有数据库依赖。只要完全基本功能。使用博文头部有元信息来分类别,tag等,go语言后台动态生成按类别浏览。 静态部分包括: css样式文件 各种显示的模板 大多数博文都是由org文件使用emacs生成的html 动态部分包括: 由go语言程序生成rss的feed 管理博文的分类,tag,等 评论等功能后期再考虑 操作流程 手写org格式的博文。文件格式有特殊头部存储博文json格式的meta信息。然后用emacs加工,将org文件转化为html导入到pub/post目录,只生成body部分。 go语言写后...阅读全文

博文 2015-03-16 11:50:39 zenlife

[译] Go 1.7 中程序结构的解析

Go 1.7终于发布了,这个版本的一大特色是引入了一个新的基于SSA的编译器! SSA是一个描述低层次的操作集合的方法,比如隐射到系统底层操作的加载和存储操作。而SSA的特殊之处在于它有无限数量的寄存器。它本身不是特别有趣,除了它启用了一类很容易理解的优化传值这一点以外,因为这个特性使得编译速度更快,编译出的二进制文件更小。Go的新版本发布说明实现正在成熟,并且开始利用llvm(wider world of compiler technology)中的技术和实践。 新的基于SSA后端除了带来的性能提升,还提供了一系列的新工具允许开发者与SSA机制交互。这个工具输出了SSA过程语句,优化传值,和Go特有的汇编。当使用go工具来反汇编时,可以通过设置GOSSAFUNC环境变量为函数名,比如: $...阅读全文

博文 2016-08-23 05:00:01 shenjiaxu

go时间/时间戳操作大全

基本操作 01: 获取当前时间 dateTime := time.Now() fmt.Println(dateTime) 02: 获取年 月 日 时 分 秒 纳秒 year := time.Now().Year() //年 fmt.Println(year) month := time.Now().Month() //月 fmt.Println(month) day := time.Now().Day() //日 fmt.Println(day) hour := time.Now().Hour() //小时 fmt.Println(hour) minute := time.Now().Minute() //分钟 fmt.Println(minute) second := time.Now()...阅读全文

博文 2019-07-08 12:02:37 李昊天

MySQL的事务隔离级别是什么?

????我是平也,这有一个专注Gopher技术成长的开源项目「go home」 背景介绍 想必事务大家都已经非常熟悉了,它是一组SQL组成的一个执行单元,要么全执行要么全不执行,这也是它的一个特性——原子性。而事务的应用场景也非常广泛,最经典的就是转账问题,A给B打钱,不能出现A钱扣了B还没收到的状况,否则业务就乱套了。 事务的特性 于是呢,根据用户对这些场景的严苛要求,总结出了事务应该具备的四个特性,分别是原子性、一致性、隔离性、持久性,简称事务的ACID属性。 原子性 Atomicity,事务是一个最小的执行单位,事务里面的SQL要么全执行,要么全不执行,就拿A与B转账为例,一条语句从A里扣钱,另一条语句往B身上加钱,如果这两条语句不能全部执行,而是成功了一部分,那事务就没有存在的意义了...阅读全文

博文 2020-04-22 19:32:47 平也

go语言(使用了cgo与硬件交互),算上空行和注释共200行代码

go语言(使用了cgo与硬件交互),算上空行和注释共200行代码 实现了贪吃蛇的基本功能,好吧你不能指望我还加上声音啥的,我不会啊 很多时间花在"图形"界面上了,其实时间还可以缩短的 package main import ( "fmt" "math/rand" "os" "time" ) /* #include #include // 使用了WinAPI来移动控制台的光标 void gotoxy(int x,int y) { COORD c; c.X=x,c.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); } // 从键盘获取一次按键,但不显示到控制台 int d...阅读全文

博文 2015-06-17 23:00:25 a771948524

<6> go select 和 switch

select和switch语法都能相近,但是有重要不同的一点,switch可以做表达式的比较判断,而select只能是io操作的判断。相同点:都能用return跳出来。 // switch i := 1 switch{ case i==1: //doing case i==2: //doing default: // doing } //select ch := make(chan ,bool) select { case <- ch: // doing 当ch有值的时候,会触发这个case default: // doing } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this)....阅读全文

博文 2015-12-15 00:00:00 a11101171

Vugu:Go + WebAssembly的现代UI库

翻译:疯狂的技术宅来源:https://www.vugu.org/ 未经允许严禁转载 Vugo 是什么 Vugu 是一个 Go语言开发库,可以很容易地使用 Go 语言编写 Web 用户界面。 其基本思路如下: 在 .vugu 文件中编写 UI 组件。这些文件类似于你在 JavaScript 框架中看到的 UI 组件(例如 .vue 文件)。但是它们不包含 JavaScript,而是包含用于 if、for 和其他类似的 Go 语言表达式。 每个 .vugu 文件都被转换为对应的 .go 文件。 Vugu 项目中有一个开发服务器,可以在页面重新加载时自动执行此操作,或者用 vugugen 命令行工具与 go generate 集成。代码生成还尝试在需要时提供合理的默认值,以便 .vugu 文件包...阅读全文

博文 2019-07-19 09:02:38 疯狂的技术宅

自制JVM -- 用GO语言实现JVM

虽然写了很多年的Java代码,但是基本上只把JVM当blackbox处理。介绍JVM的书也看过几本,但效果不佳。看OpenJDK代码?提不起兴趣。最近有几个礼拜的空闲时间,于是我决定用GO语言写一个JVM,彻底征服JVM这头怪兽! 为什么选择GO 首先不想用动态语言来写。实现JVM的初衷就是想离机器更近一点,所以排除了JavaScript、Python、Ruby等语言。其次也不想用Java来写,原因基本同上。还有一个原因是自己对Java太熟悉了,用它来写,没挑战性。再次也不想用C/C++,原因是自己不喜欢这两个语言。C过于底层,C++过于复杂。所以最终选择了GO。 GO是Google发布的语言,编译型,接近底层,一定程度上可以充当系统语言来使用。GO的语法很简洁,学习曲线平滑,文档也比较详细...阅读全文

博文 2015-03-01 11:27:55 zxhoo

打造容器工作流的云原生平台 Cyclone-caicloud

![image](https://static.oschina.net/uploads/space/2016/1108/174047_xW7k_2894582.jpeg) Cyclone是一个打造容器工作流的云原生持续集成持续发布平台。 Cyclone主要致力于将代码从本地开发环境用任意容器引擎封装搬运到测试或者生产环境运行。Cyclone包括一下特性: * 容器原生: 每次构建、集成、部署均在容器中运行,完全解决运行时环境不一致的问题。 * 依赖关系: 定义依赖规则或简单的组件关系,确保执行顺序依照既定策略。 * 版本控制: 基于版本控制构建,检索镜像/流水线历史就像查询版本管理接口一样简单。 * 双向绑定: 记录每次CI/CD操作用于回答类似问题:“各容器镜像部署在集群哪个角...阅读全文

垃圾回收面面观

垃圾回收面面观 2015-06-18 下一篇准备写Go1.5的垃圾回收的,所以这一篇先做一些垃圾回收相关的基础知识的铺垫。 基本垃圾回收算法 实际上大多数的垃圾回收算法,都是下面三种基本垃圾回收算法之上的变种。 引用计数(reference counting) 基本思路是为每个对象加一个计数器,记录指向这个对象的引用数量。每次有一个新的引用指向这个对象,计数器加一;反之每次有一个指向这个对象引用被置空或者指向其他对象,计数器减一。当计数器变为 0 的时候,自动删除这个对象。 引用计数的优点是: 相对简单,不需要太多运行时的支持,可以在原生不支持GC的语言里实现。 对象会在成为垃圾的瞬间被释放,不会给正常程序的执行带来额外中断。 它的问题是循环引用,对象A包含一个引用指向对象B,同时对象B包含...阅读全文

如何制作自适应网站

自适应网站已经成为现互联网时代的主流网站,自适应网页布局的改革,让网站焕然一新,赋予了网站新的活力与更精美的展现。今天给大家讲下如何利用建站宝盒制作自适应网站。 建站流程:模板设置>基本资料>网站栏目>编辑内容>发布网站>推广网站 1. 进入界面 网站建设 2. 选择网站模板,安装模板 建站宝盒 网站模板 3. 编辑网站 自助建站工具 双击栏目,更改内容 网站制作 点击首页,可以管理更改网站所有内容栏目 网站编辑 4.编辑完成,进行发布 自适应网站 程序代码的建站者而言,使用建站宝盒进行网站建设是一个不错的选择,操作简单方便,无需懂程序编码就能进行自建站。 免费注册...阅读全文

Go Web 开发(一)

目的 了解 Go 开发 Web 应用的基本原理。 效果 代码 package main import ( "fmt" "http" ) type User struct { Name string } func Register(w http.ResponseWriter, r *http.Request) { if "GET" == r.Method { fmt.Fprintln(w, "Register" + "" + " User Name: " + "") return } user := &User{r.FormValue("userName")} fmt.Fprintln(w, "Hello ", user.Name) } func main() { http.HandleFun...阅读全文

博文 2015-06-18 09:09:04 DL88250

神奇的go语言(面向对象)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 有过C++语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封装,就是指运行的数据和函数绑定在一起,C++中主要是通过this指针来完成的;继承,就是指class之间可以相互继承属性和函数;多态,主要就是用统一的接口来处理通用的逻辑,每个class只需要按照接口实现自己的回调函数就可以了。 作为集大成者的go语言,自然不会在面向对象上面无所作为。相比较C++、java、C#等面向对象语言而言,它的面向对象更简单,也更容易理解。下面,我们不妨用三个简单的例子来说明一下go语言下的面向对象是什么样的。 封装特性,package main import "fmt" ty...阅读全文

Golang的GC信息

本文转自:http://studygolang.com/articles/2701 一、GC信息的信息收集 设置环境变量GODEBUG=gctrace=1。 使用方法,如果程序为myserver。正常的启动方法为./myserver,如果需要收集GC信息启动方式如下GODEBUG=gctrace=1 ./myserver。 二、GC信息分析 gc5(6): 11+12+357+77 us, 0 -> 1 MB, 4294 (5261-967) objects, 67/2/0 sweeps, 6(115) handoff, 6(9) steal, 170/56/5 yields gc5(6):表示第5次GC,共有6个线程参与GC。 11+12+357+77 us:表示停止各个goroutine...阅读全文

博文 2015-06-17 20:00:10 chenbaoke

【云存储】对象存储管理与安全

课程介绍 为降低云服务器负载和成本,一般需要将网站静态资源、图片、音视频、日志、下载资源等海量文件存储在更低单价的存储类型上,并配合CDN、图片处理、媒体转码、数据处理等服务,给客户提供更好的体验和更多服务。 本课程主要讲解海量、安全、低成本、高可靠的云存储服务——对象存储的常用操作,包括在云端存储静态资源,并通过控制台、API实现资源的上传下载,以及如何确保云端存储资源的安全。 学员受益: * 云存储常用操作:通过学习和在线实验,了解并掌握云存储的基本知识,以及常用的存储操作,为构建高可用网站打下基础。 * 模式真实场景:包含的两个在线实验一步一步带领你在Web开发中实现网站图片和文件的存储与下载。 * 认证证书:考试通过即可获得证书,证明自己拥有云存储...阅读全文

golang小结

go build calc go test:http://www.cnblogs.com/yjf512/archive/2013/01/22/2870927.html 关于build flags,调用go help build 关于packages,调用go help packages 关于flags for test binary go的log模块基本功能:例如如何输出到文件中 log.New()时可以传入io:Writer const itoa 下标和range遍历字符串 rune panic传入任何类型 recover如何恢复:在提前的defer中进行recover,recover返回的是panic传入的interface,可以是任意类型 数据也是值语义 引用语义包含4个:slice、...阅读全文

博文 2014-11-04 01:00:02 chuqingq

Golang 一些基本功能使用记录

所以,怎么插入目录?不是 [TOC] 吗? 命令行参数 import "flag" func main() { ports := flag.String("ports", "10086", "list the port ....") var version_check bool flag.BoolVar(&version_check, "v", false, "version") flag.Parse() if version_check { do() } portsList := strings.Split(*ports, ",") if len(portsList) > 5 { fmt.Println("no more than 5 ports") return } } 配置文件 pac...阅读全文

博文 2017-11-01 03:03:09 城寒

【栈与队列】由两个栈组成的队列

#### 【题目】 编写一个结构体,用两个栈实现队列,支持队列的基本操作(push、poll、peek) #### 【难度】 ★★☆☆ #### 【解答】 ```go package main import ( "container/list" "errors" "fmt" ) func main() { q := NewQueue() q.Push(1) fmt.Println(q.Peek()) q.Push(2) fmt.Println(q.Peek()) fmt.Println(q.Poll()) fmt.Println(q.Peek()) fmt.Println(q.Poll()) fmt.Println(q.Poll()) fmt.Println(q.Peek()) } type...阅读全文

goroutine之间移动计算

2014-05-23 goroutine之间移动计算 goroutine之间移动计算 如何在goroutine之间移动计算?即如何把goroutine G1中的计算"搬"到goroutine G2中去执行? 场景是这样的,有一些goroutine之间共享的数据,只有一个goroutine拥有数据的写权限,其它goroutine只有读权限(若多个goroutine同时对数据有写权限就必须加锁了)。这时某个goroutine G1持有数据D的引用,但却不具备数据的写权限,而另一个goroutine G2具备数据的写权限,希望将对D的计算,从G1"搬"到G2中去执行。 基本思路,是将函数与数据一起,封装在闭包内面,然后通过channel,从一个goroutine中传递到另一个goroutine中去...阅读全文

博文 2015-03-20 13:26:59 zenlife

database/sql包连接池解读

连接池是做网络应用经常用到的一个概念,可以缓存连接减少创建连接的损耗。那么在golang中应该如何做一个连接池,在这里会通过解读database/sql包的连接池实现来给自己一些参考和启发。首先,需要了解database/sql的基本原理和使用方法,请参考下面的链接仔细阅读:http://go-database-sql.org/overview.htm...阅读全文

Flutter+golang实现的简单的你画我猜小游戏

PaintOnlineClient 疫情期间和女友玩了微信小程序版本的你画我猜,比较有趣,本来打算做出来和女友一起玩,但没想到还没做完就和女友吵架不联系了,所以这个工程承载了我从开心到心痛的心态变化... ^ _ ^戳这里进入项目 1.项目展示 home1.jpg home2.jpg home3.jpg 2.项目描述 2.1 客户端 如项目展示,一个简单的画图界面 客户端使用flutter完成,目前仅做了Android客户端,flutterWeb实在是问题太多,随便加个依赖就各种报错,展示先不做吧,毕竟心很痛。 2.1 服务器 服务器是使用golang搭建,一个很简单的WebSocket后台地址在这里 更新记录 20200222 完成基本功能 20200223 添加即时聊天功能 202002...阅读全文

博文 2020-02-23 18:32:45 我爱小白小白爱大开

[译] Go 1.7 中程序结构的解析

Go 1.7终于发布了,这个版本的一大特色是引入了一个新的基于SSA的编译器! SSA是一个描述低层次的操作集合的方法,比如隐射到系统底层操作的加载和存储操作。而SSA的特殊之处在于它有无限数量的寄存器。它本身不是特别有趣,除了它启用了一类很容易理解的优化传值这一点以外,因为这个特性使得编译速度更快,编译出的二进制文件更小。Go的新版本发布说明实现正在成熟,并且开始利用llvm(wider world of compiler technology)中的技术和实践。 新的基于SSA后端除了带来的性能提升,还提供了一系列的新工具允许开发者与SSA机制交互。这个工具输出了SSA过程语句,优化传值,和Go特有的汇编。当使用go工具来反汇编时,可以通过设置GOSSAFUNC环境变量为函数名,比如: $...阅读全文

博文 2016-08-23 06:00:02 shenjiaxu

go语言(二):基本知识

一.变量 变量声明 var a int var b bool var str string 声明+赋值 var a int = 15 var i = 5 var b bool = false 值类型和引用类型: go中,int、float、bool 和 string 这些基本类型都属于值类型; 指针, slices,maps和 channel属于引用类型; 常量的定义格式:const identifier [type] = value const Pi = 3.14159 没指定类型时,常量会根据其使用环境而推断出它所需要具备的类型. $(function () { $('pre.prettyprint code').each(function () { var lines = $(this...阅读全文

博文 2016-04-24 06:00:03 sbjiesbjie

Golang 常用的一些基本操作

下面是Golang常用的一些操作,获取环境变量、操作文件等等;package main import ( "fmt" "os" "path/filepath" "io/ioutil" ) func main () { //将当前路径和给定的路径连接成绝对路径 absPath,_ := filepath.Abs("test") fmt.Println(absPath) //返回路径中最后的那个路径(通常是目录名或者文件名) basePath := filepath.Base(absPath) fmt.Println(basePath) //返回除最后的目录之外的路径(即最后的目录之前的路径) dirPath := filepath.Dir(absPath) fmt.Println(dirPat...阅读全文

博文 2016-09-08 16:00:02 afandaafandaafanda

【go语言从零单排2】基本知识,变量常量和控制结构

今天看无闻的视频,2到5讲的内容,一些摘要零星写在下面: 1. main函数作为程序入口,必须存在且在main的package里 2. type 用来声明 新的类型,struct,interface 3. import var const 等等都可以()来声明多个,但是未调用函数的话会报错,保证速度。var只能声明全局变量时使用括号,函数中声明变量不行。 4. import 可以取别名比如 import std “fmt” import . “fmt” 这样就直接调用fmt的函数了 5. 约定函数名小写是私有的,开头大写是公有的。 6. bool 类型只有true和false 7. int/uint 根据平台决定32位64位, int8 -128~127 uint8 0~255 byte u...阅读全文

博文 2016-04-17 12:00:00 yhl162139

[译] Go 1.7 中程序结构的解析

Go 1.7终于发布了,这个版本的一大特色是引入了一个新的基于SSA的编译器! SSA是一个描述低层次的操作集合的方法,比如隐射到系统底层操作的加载和存储操作。而SSA的特殊之处在于它有无限数量的寄存器。它本身不是特别有趣,除了它启用了一类很容易理解的优化传值这一点以外,因为这个特性使得编译速度更快,编译出的二进制文件更小。Go的新版本发布说明实现正在成熟,并且开始利用llvm(wider world of compiler technology)中的技术和实践。 新的基于SSA后端除了带来的性能提升,还提供了一系列的新工具允许开发者与SSA机制交互。这个工具输出了SSA过程语句,优化传值,和Go特有的汇编。当使用go工具来反汇编时,可以通过设置GOSSAFUNC环境变量为函数名,比如: $...阅读全文

博文 2016-08-23 04:00:07 shenjiaxu

GoFasion:一个轻量级的具备链式调用风格的JSON数据解析库

Gofasion是一个方便开发过程中接口JSON数据解析的轻量级解析库,其最大的特点在于支持链式调用,也就是说不必预先定义好数据的结构就可以直接获取到目标键名和键值。 ### 开源 [https://github.com/Anderson-Lu/gofasion](https://github.com/Anderson-Lu/gofasion) ### 安装 ```shell go get github.com/Anderson-Lu/fasion/gofasion ``` ### 快速开始 ```shell package main import ( "github.com/Anderson-Lu/fasion/gofasion" "fmt" ) //规则数据 var testJson =...阅读全文

博文 2018-08-09 12:49:16 Anderson-Lu

GoLang中面向对象的三大特性

有过 JAVA 语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封装,就是指运行的数据和函数绑定在一起,JAVA 中主要是通过 super 指针来完成的;继承,就是指 class 之间可以相互继承属性和函数;多态,主要就是用统一的接口来处理通用的逻辑,每个 class 只需要按照接口实现自己的回调函数就可以了。 作为集大成者的 Go 语言,自然不会在面向对象上面无所作为。相比较 java、C#、C++ 等面向对象语言而言,它的面向对象更简单,也更容易理解。下面,我们不妨用三个简单的例子来说明一下 go 语言下的面向对象是什么样的。 封装特性 package main import "fmt" type data struct { val int } func (p...阅读全文

博文 2017-09-27 16:30:01 grimm

golang对mongodb的基本操作

package main import ( "fmt" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "log" ) type Student struct { //Id_ bson.ObjectId `bson:"_id"` Name string `bson:"name"` Phone string `bson:"phone"` Email string `bson:"email"` Sex string `bson:"sex"` } //数据库连接主要用到了mgo中的Dial()函数,连接形式如mgo.Dial(url1,url2,url3) func ConnecToDB() *mgo.Collection { session, err := mg...阅读全文

博文 2019-03-31 22:35:40 梁十八

Golang 实现凯撒密码

一.凯撒密码加密代码思路 基本思路: 设置明文 和 位移步长(秘钥) 将明文转成小写,准备 明文字节切片 与 密文切片 循环将每个明文字符 按照 位移步长 做位移,存入密文切片 返回密文 凯撒密码加密位移 导入包 import ( "fmt" "strings" // 包含字符串操作相关方法 ) 凯撒密码加密代码 //一、凯撒密码加密 func caesarEn(strRaw string, step byte) string { //1.明文 转成 小写 str_raw := strings.ToLower(strRaw) //2.位移步长 step_move := step //3.将字符串 转为 明文字符切片 str_slice_src := []byte(str_raw) fmt.P...阅读全文

博文 2019-02-15 20:34:44 碧竹轩

GO语言面向对象编程之方法

#GO语言面向对象编程之方法(上)# 学过C++或者JAVA的程序员,对于面向对象编程应该是很熟悉的。大家都知道面向对象编程的三大基本特征:封装,继承,多态。在GO语言中,简化了很多面向对象编程的概念,比如 继承,虚函数,构造函数,析构函数,隐藏指针等。对于接触过面向对象编程的人来说,GO语言的面向对象编程更加的简单易懂。 ##方法(类)的定义 在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法。 package main import "math" import "fmt" type Point struct { x float64 y ...阅读全文

博文 2017-08-20 15:19:43 wenxuwan

基于 rabbitmq 实现的延时队列

虽然 rabbitmq 没有延时队列的功能,但是稍微变动一下也是可以实现的 实现延时队列的基本要素 存在一个倒计时机制:Time To Live(TTL) 当到达时间点的时候会触发一个发送消息的事件:Dead Letter Exchanges(DLX) $~~~~~~$基于第一点,我利用的是消息存在过期时间这一特性, 消息一旦过期就会变成dead letter,可以让单独的消息过期,也可以设置整个队列消息的过期时间而rabbitmq会有限取两个值的最小值 $~~~~~~$基于第二点,是用到了rabbitmq的过期消息处理机制:. x-dead-letter-exchange 将过期的消息发送到指定的 exchange 中. x-dead-letter-routing-key 将过期的消息发送...阅读全文

博文 2018-05-15 11:34:43 只是一个id

Golang 实现凯撒密码

一.凯撒密码加密代码思路 基本思路: 设置明文 和 位移步长(秘钥) 将明文转成小写,准备 明文字节切片 与 密文切片 循环将每个明文字符 按照 位移步长 做位移,存入密文切片 返回密文 导入包 import ( "fmt" "strings" // 包含字符串操作相关方法 ) 凯撒密码加密代码 //一、凯撒密码加密 func caesarEn(strRaw string, step byte) string { //1.明文 转成 小写 str_raw := strings.ToLower(strRaw) //2.位移步长 step_move := step //3.将字符串 转为 明文字符切片 str_slice_src := []byte(str_raw) fmt.Println("明...阅读全文

博文 2019-02-15 20:34:43 jameszou

Golang 入门系列(五)GO语言中的面向对象

前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。 今天GO语言中的面向对象。 GO语言中的面向对象 其实GO并不是一个纯面向对象编程语言。它没有提供类(class)这个关键字,只提供了结构体(struct)类型。 java或者C# 里面,结构体(struct)是不能有成员函数的。然而,Go语言中的结构体(struct)可以有"成员函数"。方法可以被添加到结构体中,类似于一个类的实现。 我个人觉得Go 语言在的面向对象,其实更简单,也更容易理解。 学过java或C# 的人应该都知道,面向对象的三个基本特征:封装、继承和...阅读全文

博文 2018-08-31 12:30:01 zhangweizhong

SQL Server on Linux入门教程

课程介绍 SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。 本课程主要介绍SQLServer On Linux的基本知识。 学习入口:[点击这里](http://click.aliyun.com/m/27907/) 课程目标 掌握SQLServer On Linux的使用 适合人群 数据库开发者 数据库运...阅读全文

怎样上手一个开源系统

本文目的是呈现一种掌握开源系统的方法,以及掌握阶段划分。纯属个人观点,如有指导意见,恳请留言,大家一起学习。 掌握开源系统,可以分成四个级别 基本使用 掌握高级特性 熟悉系统实现细节,可以参与功能开发和bug修复 深刻理解系统设计哲学,提出建设性方案和实现 基本使用 系统初始化(安装、引用等) 基本功能使用,满足一般场景的需求 高级特性 高级特性使用,满足特殊需求 扩展高级特性,满足定制化需求 参与者 发现系统中bug,提价issue,参与讨论 能修复自己的bug 能参与处理别人提交的issue 领导者 深刻理解系统的定位,提出建设性功能 让大家接受自己的设计哲学,带领大家一起不断完善系统 实现列表 后续会根据以上步骤,分析几个比较热门的开源系统 golang web框架 gin golan...阅读全文

博文 2019-02-14 00:34:43 小肥涛

golang学习笔记

go中的channel channel是类型相关的1.声明var channame chan chantype2.定义ch := make(chan int)3.基本操作ch <- value value := <- ch当没有设置缓冲区时,channel的读写都会阻塞4.缓冲机制ch := make(chan int, 1024)当设置缓冲区大小时,在缓冲区填满前不会阻塞5.超时处理可以利用select来实现channel的超时机制 timeout := make(chan bool, 1) go func() { time.sleep(1e9) timeout <- true }() select{ case <-ch: case <- timeout: } 这样无论ch是否接收到数据,...阅读全文

博文 2017-07-09 15:07:04 C_A_dogN