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

USB-OTG(on-the-go)

ID(Identification)角色辨识引脚 两个USB装置互连时,要怎样让两个装置都知道:谁是主控?谁是Peripheral【外围】?这其实使用了新引脚,在传统4-pin的USB接口里追加了第五个引脚:ID 要在互接种担任主控者的USB装置,则将ID引脚位接地(GND),相对的想担任受控者的USB装置则将此引脚空接(NC),若要用更具体的电器特性来说明,则接地者的ID线路电阻必须低于10欧姆,相反的空接将大大拉高阻值,需超过100k欧姆。 图说:USB OTG 通过新增的ID引脚的接地,浮接状态来决定互连时主从的角色。 USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG)。 OTG两用设备完全符合U...阅读全文

博文 2016-02-03 06:00:00 alifrank

仓库作业机器监控系统设计与实现

近期在参与一个仓库作业机器监控项目。该项目的需求背景是:公司的电商业务在全国各地有多处或大或小的仓库,仓库的作业人员(没有IT技术背景)经常反馈/投诉作业机器断网、断电、连不了服务等问题。实际情况经常与反馈的不一致,但运维侧并没有数据可以证明,所以才有了这个项目的需求。 该项目第一期的目标仅是收集、展示作业机器某些监控指标数据,以便在快速定位解决问题,或至少有数据可查。 为了避免大量监控数据上报影响到生产系统的网络服务,系统采用如下结构: 实现一个agent用于在仓库作业PC或作业PDA上获取机器的监控数据; 在仓库本地服务器上实现一个数据收集处理服务,提供API给agent上传监控数据;数据收集处理服务会将接收到的数据持久化到数据库,提供给仓库本地服务器上的webApp进行数据展示等; 中...阅读全文

博文 2014-11-05 09:50:32 youngsterxyf

4种编程语言基本数据类型及其取值范围整理(C++,Java,Python,Go)

1 C++ C++定义的基本类型包括算术类型和void类型。算术类型分为整型(包括字符和布尔型)和浮点型,如下表所示: C++11新增了char16_t,char32_t(最小分别为16、32位的Unicode字符型),long long(最小为64位的长整形)3种内置类型。 对于32位平台,int类型和long类型通常字长是相同的,占32位。 可以用以下语句来测试各种类型所占字节数: std::cout <阅读全文

博文 2015-06-17 23:01:36 dragon_dream

go语言defer使用

defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的: func ReadWrite() bool { file.Open("file") // 做一些工作 if failureX { file.Close() return false } if failureY { file.Close() return false } file.Close() return true } 我们看到上面有很多重复的代码,G...阅读全文

博文 2014-10-04 19:26:04 eclipser1987

解剖Go语言map底层实现

``map``是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? # ``map``的整体结构图 Golang中``map``的底层实现是一个散列表,因此实现``map``的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫``hmap``(``a header for a go map``),一个叫``bucket``。这两种结构的样子分别如下所示: hmap: ![hmap.png](https://static.studygolang.com/180826/09d0c94fc2946bba795ecc2ae0c97ac2.png) 图中有很多字段,但是便于理解``map``的架构,你只需要关心的只有一个,就是标红的字段:bucke...阅读全文

博文 2018-09-01 02:46:44 RyuGou

GoWeb开发_Iris框架讲解(一)

Golang介绍Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。”Golang语言的一些的功能:具有现代的程序语言特色,如垃圾回收,帮助程序设计师处理琐碎和重要的内存管理等问题。Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。该软件是专为构建服务器软...阅读全文

博文 2019-03-27 19:34:49 qfzhangxu

【嗜血GO笔记】Goclipse如何导入已有的GO项目

与其他的JAVA工程略有不同,你是不能在 “导入” 中找到GO项目。 我们需要通过以下的方式导入: 步奏一:如下图所示 步奏二:在创建的时候选中“Create project from existing source”-->在 Directory 中选中你要导入的程序,一般来说,如果你提前配置了GO 的环境,那么在Configure Go settings中是不需要做任何配置的。如下图 至此导入工程就完成了。希望能给刚学习GO的朋友一些帮助...阅读全文

博文 2015-02-11 23:00:00 嗜血程序员

项目Go配置过程

此项目为实验室正在做的视频项目,由于刚刚开始做,菜鸟一个,首先记录下配置过程吧。 环境:win7 64位 (XP的在最后做了相应补充); 1. 配置yasm 到http://yasm.tortall.net/Download.html下载Win64 VS2010 .zip,然后解压,里面有一个readme.txt,将vsyasm.exe改名为yasm.exe,如果是vs2010默认安装在C盘,则按照readme.txt中的配置即可。我的VS2010安装到了D盘,所以需要做些更改。首先,将vsyasm.exe更名为yasm.exe,然后放到D:\Software\VS2010\VC\bin,将另外的三个文件:vsyasm.props,vsyasm.targets和vsyasm.xml放到C:\...阅读全文

博文 2015-03-26 13:00:05 ybsun2010

如何使用GoLand调试beego项目

--- title: 如何使用GoLand调试beego项目 --- ## 前言 **beego**是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架。 **GoLand**是一个用于开发go应用的IDE,和python常用的IDE pyCharm一样,都是由JetBrains公司开发的。 最近看了下使用go开发web应用方面的东西,发现beego(https://github.com/astaxie/beego) 这个框架挺不错的,中文的文档写的也很好 (https://beego.me/docs/intro/)。 我按照文档把demo run起来了,然后就是想着怎么debug了,下面简单介绍下如何使用Go...阅读全文

博文 2019-02-22 16:41:59 ypdai

Golang学习笔记一:语言规范

引言 Golang参考手册,更多内容请参考http://golang.org 语言规范参考自https://golang.org/ref/spec 词汇元素 注释 行注释: // comment content 段注释:/* comment content */ 符号 符号有4类:标识符、关键字、操作符和分隔符、字面常量 分号 golang中,分号可省略 标识符 标识符即程序中的变量和类型,有一个或多个字母或数字组成,第一个字母必须字母开头。 identifier = letter { letter | unicode_digit } 关键字 标识符不能是golang中的保留关键字 break default func interface select case defer go map s...阅读全文

博文 2015-10-10 23:00:00 scherrer

mac + golang环境 + vscode使用

1、开启VPN,到官网下载 Golang ,如下图所示: Apple macOS版下载 选择Apple macOS版下载,下载完成后,双击直接安装; 2、打开终端,输入 go version (按回车) 查看是否安装成功,如出现类似 go version go1.11.2 darwin / amd64,证明安装成功; 3、在桌面新建一个放置Golang的文件夹,如一个名为 Golang项目 的文件夹,这是用来存放以后的golang项目的文件夹,再把文件夹拖入终端,出现一串绝对路径如:/Users/xxx/Desktop/Golang项目,后面的 GOPATH 设置需要用到; 4、在终端输入命令 cd ~ (按回车) ls -all (按回车) 查看是否存在.bash_profile文件,如图...阅读全文

博文 2018-12-12 17:34:46 单抽律化娜

Golang 中 print 与 fmt.print的区别

结论: print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时候用 image.png fmt.print 在golang中 是属于标准输出流,一般使用它来进行屏幕输出. image.png By the way : fmt.Printf是格式化输出 fmt.Println是输出后换行 fmt.Sprint 是返回一个格式化的字符串 image.png One more word: 上图中所示的第10行输出结果为"宋佳",但打印区却优先显示了第12行的打印结果,我猜想可能是go语言这个内置函数print是用一个协程去跑,所以每次打印出现位置都不一样。但是fmt是一直在main协程里面调用,所以在控制台的输入是固定的.所以把第12行替换成fm...阅读全文

博文 2019-04-15 04:34:39 右哼哼丨左哼哼

Go 语言环境搭建

本文内容 概述 Go SDK LiteIDE 参考资料 2009年Google推出了它的第二个开源语言 Go。对 Go 的评价褒贬不一,中国比国外的热情高中国比国外的热情高。Go 天生就是为并发和网络而生的,除了这点外,在静态编译、GC、跨平台、易学、丰富的标准库等,其实并不如 C/C++、Java、C#、Python。由此可想而知,为什么会出现 Go?以及为什么 Go 存在如此多的问题和争论?——也许Go 更像是一个“天才的自闭症患者”,如果看清了这点,对网络和知乎上一些 Go 的褒贬也就能泰然啦,这就好像下班到家,是先吃饭,还是先洗澡,重要吗?~ 下载开发工具 下载相关文档手册 概述 Go 是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言。 罗伯特.格瑞史莫(Robe...阅读全文

博文 2015-05-19 03:00:11 liuning8023

Mac OS X系统搭建谷歌Go语言开发工具 Sublime Text 环境配置

载地址:http://www.cr173.com/html/33948_1.html Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率。其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。 一、安装Golang的SDK 在官网http://golang.org/ 直接下载安装包安装即可。下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装。 安装完成后,打开终端,输入go,检测Golang SDK是否安装成功,如下显示,则表示安装成功: 你也可以输入go version 查看你所安装的Golang的版本 二、环境变量配置(GOPATH) GOPATH是用来告诉Golang命令和其他相关工具,在哪里可以找到你系统上的Go包目录...阅读全文

博文 2015-09-12 23:00:00 showhilllee

gracehttp: 优雅重启 Go 程序(热启动)

问题背景 在 http 应用程序重启时,如果直接 kill -9 使程序退出,然后在启动,会有以下几个问题: 旧的请求未处理完,如果服务端进程直接退出,会造成客户端链接中断(收到 RST); 新请求打过来,服务还没重启完毕,造成 connection refused 这些问题会造成不好的客户体验,严重的甚至影响客户业务。所以,我们需要优雅的重启我们的应用。 解决问题 -- 优雅 Github: gracehttp 原理 信号机制; 子进程继承父进程的资源; 支持功能 平滑重启(Zero-Downtime restart server); 平滑关闭; 多 Server 添加(包含 HTTP 、HTTPS); 自定义日志组件; 使用指南 添加服务器 // http srv1 := &http.S...阅读全文

Go 语言神奇的 JSON

今天我想和大家分享 Go 语言一些非常实用的技巧,用于编码和解码 JSON 文档。Go 语言的 `encoding/json` 包有一些有趣的特性,帮助我们轻松地解析 JSON 文档。你可以轻松地将大多数实际应用中的 JSON 转换为带有 Go 语言结构体标签的接口或者是 `Marshaler` 和 `Unmarshaler` 接口。 但有一个案例比较棘手:包含转义 JSON 元素的 JSON 文档。如下所示: ```json { "id": 12345, "name": "Test Document", "payload": "{\"message\":\"hello!\"}" } ``` 我不建议构建像这样创建文档的应用程序,但有时候这样的情况是难以避免的,你希望像平常的 JSON 那样...阅读全文

博文 2018-03-19 10:27:46 SergeyChang

Golang 语言windows环境搭建

本人是xp系统; 1.首先下载go语言安装包,进入下面的链接,选择适合自己的安装包进行下载(我用的go1.0.3.windows-386.msi),然后安装即可,记录下安装后的根目录以备配置使用。 下载地址:https://code.google.com/p/go/downloads/list 点击安装,我默认安装在路径C:\Go 2.下载liteIDE,进入下面的链接,选择适合自己的安装包(我用的liteidex17.windows-webkit.7z),下载完成后解压到任意目录,然后进入根目录下的bin文件夹,双击liteide.exe即可打开软件。 下载地址:https://code.google.com/p/golangide/downloads/list 软件界面: 3.配置lit...阅读全文

博文 2014-11-11 02:00:01 oopsangle

Golang 格式化json忽略指定的字段

如下的结构体,格式化为json时我想忽略DataSource字段 type RealTimeData struct { Code string `json:"code"` Time time.Time `json:"time"` OpenPrice float32 `json:"openPrice"` PrevClosePrice float32 `json:"prevClosePrice"` LastPrice float32 `json:"lastPrice"` HighPrice float32 `json:"highPrice"` LowPrice float32 `json:"lowPrice"` MarketValue float32 `json:"marketValue"` P...阅读全文

博文 2019-08-10 23:32:56 鹅鹅鹅_

go语言顺序编程

1、变量 声明: Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了关键字var,而类型信息放在变量名之后,实例如下: Go Code 1 2 3 4 5 6 7 8 9 10 var v1 int var v2 string var v4 [10]int //数组 var v4 []int //数组切片 var v5 struct{ f int } var v6 *int //指针 var v7 map[string]int //key-string value-int var v8 func(a int) int //函数 初始化: 对于声明变量时需要进行初始化的场景,var关键字可以保留,但不再是必要的元素。 JavaScript Code 1 2 ...阅读全文

博文 2014-11-21 12:00:18 Al_xin

菜鸟学go之变量(-)

//1.变量 //go语言中变量变量的定义方式是变量名前加var,与c和java不同,go把变量类型放到变量名称后面 //比如定义一个变量名字叫做bird类型为type的变量如下所示 var bird type //还可以在变量后一次性定义多个变量 var bird,cat,dog type //定义变量并且对多个变量进行初始化 var bird,cat,dog type = valone,valtwo,valthree //简写方式 //var可以简写为:并且放在变量的最后形如: bird,cat,dog type := valone,valtwo,valthree //直接省略了var和type称为简短声明,一般使用在函数内部,所以var方式来声明全局变...阅读全文

博文 2014-10-04 19:26:11 范思哲思考者

golang system call

golang处理系统调用的包为syscall,具体系统调用时通过汇编来实现在类Unix系统中,使用以下4个方法进行系统调用(syscall_unix.go)。(trapa1a2a3 ) (r1r2 err ) (trapa1a2a3a4a5a6 ) (r1r2 err ) (trapa1a2a3 ) (r1r2 err ) (trapa1a2a3a4a5a6 ) (r1r2 err )trap 为系统调用号,a1~a6为寄存器参数,以X86为例,如下所示:Linux系统调用号有300多个:(zsysnum_linux_amd64.go)package syscallconst ( SYS_READ = 0 SYS_WRITE = 1 SYS_OPEN = 2 SYS_CLOSE = 3 SY...阅读全文

博文 2018-08-23 15:36:23 暮色伊人

10年大数据架构师:日访问百亿级,如何架构并优化日志系统?

日志数据是最常见的一种海量数据,以拥有大量用户群体的电商平台为例,双 11 大促活动期间,它们可能每小时的日志数量达到百亿规模,海量的日志数据暴增,随之给技术团队带来严峻的挑战。 本文将从海量日志系统在优化、部署、监控方向如何更适应业务的需求入手,重点从多种日志系统的架构设计对比;后续调优过程:横向扩展与纵向扩展,分集群,数据分治,重写数据链路等实际现象与问题展开。日志系统架构基准 有过项目开发经验的朋友都知道:从平台的最初搭建到实现核心业务,都需要有日志平台为各种业务保驾护航。 如上图所示,对于一个简单的日志应用场景,通常会准备 master/slave 两个应用。我们只需运行一个 Shell 脚本,便可查看是否存在错误信息。随着业务复杂度的增加,应用场景也会变得复杂。虽然监控系统能够显示...阅读全文

博文 2018-08-17 10:34:57 养码场

在golang中操作mysql数据库(1)实现增删改操作

**Golang操作mysql简介** Golang操作mysql数据库的感觉有点想php中的pdo对mysql操作,假设你原本是phper转型到golang中的接受起来很亲切,总体的感觉非常简单 **Golang操作mysql的注意点** `golang实现了对mysql操作的标准库然而却没有实现mysql的驱动` 因此我们需要先从github中下载go-sql-driver这个驱动包(建议在src目录下执行),使用命令如下所示: ```go go get github.com/go-sql-driver/mysql ``` **在test数据库中建立表字段如下所示** ```go CREATE TABLE IF NOT EXISTS `test`.`user` ( `user_id` I...阅读全文

博文 2018-09-03 19:04:18 JimPang

Golang 中的“潜规则”

GO语言中要提供给外面访问的方法或是结构体必须是首字母大写 在一个公共的头文件中定义了一个结构体,如下所示: type Header struct { ver int magic_num int len int } 在另一个执行文件中,进行了初始化和赋值: var head comm.Header; head.ver = 1 head.magic_num = 0xffee head.len = 0 编译时报错 ./example_struct2binary.go:21: head.ver undefined (cannot refer to unexported field or method ver) ./example_struct2binary.go:22: head.magic_nu...阅读全文

博文 2016-09-03 22:00:04 nellson

启航 - cache2go源码分析

一、概述​ 我们今天开始第一部分“golang技能提升”。这一块我计划分析3个项目,一个是很流行的golang源码阅读入门项目cache2go,接着是非常流行的memcache的go语言版groupcache,最后是docker项目中分出来的核心组件之一containerd,通过这3个项目的源码全解析来达到golang能力上一个台阶的目的。 在本系列教程的学习过程中,我希望你能够做到如下要求:如果你是一个go语言新手,在看下面的代码分析过程中你肯定会遇到一些自己陌生的编码方式、陌生的知识点,这个过程中我希望你遇到一个点掌握一个点,比如看到下面的代码用到了锁,就去找各种资料把锁相关的知识点学了。看到回调函数,就思考一下人家为什么这些地方都使用回调函数,有什么好处。这样在看完这个项目源码分析后,...阅读全文

博文 2018-06-19 12:30:28 CloudGeek

Go Slice vs Map

Slice 和 Map 是 Go 中的两种重要的数据类型。本文将记录我关于这两种数据结构性能的一些关键的发现。 在讨论性能方面之前,我们先来简单介绍一下 Slice 和 Map。 **Slice:** Slice 是构建在数组之上的一种抽象数据结构。Slice 拥有一个指向数组开始位置的指针、数组长度以及 Slice 可以使用该数组的最大容量。Slice 可以按需增长或收缩。Slice 的增长通常包括为底层的数组重新分配内存。像 copy 和 append 这样的函数可以帮助增长数组。 **Map:** Go 中的 Map 和其他语言类似(内部实现可能会有所不同)。Go 中的 Map 创建 bucket (每个 bucket 可以容纳 8 个键)。 **性能统计:** 我对这两种数据结构都进...阅读全文

博文 2017-11-30 16:17:05 ictar

Golang AES算法与 java(android)的互通

由于Java AES256 加密库受出口限制,所以只采用AES 128加密。 互通要达到的要求 加密位数:统一采AES 128 分组加密条件:CBC/PKCS#5PADDING 密钥填充方式一样 因为android的默认填充与java默认不一样,而且在不同的JDK版本里也会出现key填充不一致的情况,所以自己手动填充,Go也采取与java一样的填充方式:不满16位补零。AES两个平台均要实现AES的加密与解密操作。加密结果转成base64。 关键代码如下所示:go: //填充 func paddingkey(key string) (string){ var buffer bytes.Buffer buffer.WriteString(key) for i:=len(key);i<16;i+...阅读全文

博文 2017-04-19 08:56:03 送你一碗大麦茶

Go - 以任意类型的slices作为输入参数

Go - 以任意类型的slices作为输入参数(译) 2014-01-16 Thu By youngsterxyf 原文:Go – taking slices of any type as input parameters 译者:youngsterxyf 最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向 对象编程而设计的。没有泛型,没有类型继承,也没有提供任何对这些特性有用的东西。 但是,提供了一个名为interface{}的类型,你可以向其赋予几乎任意类型的值,不会抛出编译错误,就像.NET的Object或Java的Object: var o interface{} o := 3.14 o := Student{Name: "Ahmet"} 我们假设你...阅读全文

博文 2016-05-20 17:00:02 hittata

Go_闭包_基础理解

Golang支持闭包 1 什么是闭包 闭包就是一个匿名函数和一个外部变量(成员变量)组成的一个整体 通俗的讲就是一个匿名函数中引用了其外部函数内的一个变量而这个变量和这个匿名函数的组合就叫闭包 如下代码所示 func closure1() func() int{ i :=0 return func() int{ i++ //该匿名函数引用了closure1函数中的i变量故该匿名函数与i变量形成闭包 return i } }2 理解闭包 如果第一次使用闭包一定会想(以上述代码为例) closure1()返回一个匿名函数 比如 f:=closure1() 然后我再其他的函数内部多次调用f() 会有什么结果呢 如下代码所示 f := closure1() fmt.Println(f()) fmt....阅读全文

博文 2015-06-17 20:12:43 u012807459

golang下在终端显示字体颜色及闪烁、下划线效果的小工具

在终端下打印不同颜色的字体,具体说明见:http://blog.csdn.net/gxut555/article/details/7913591 自己用golang实现一个,除了在MAC下显示不出效果来,其他端上还算正常了,效果所示: 代码如下(见:https://github.com/liuyongshuai/goColorTerm): ``` /* * @author Liu Yongshuai * @package goColorTerm * @date 2018-01-25 19:19 */ package goColorTerm import ( "fmt" "strings" "reflect" ) //绿色字体,modifie...阅读全文

博文 2018-02-01 17:55:52 liuyongshuai

安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。 如下例所示,二段式的定义在append操作后会污染到源数组: a := [5]int{1, 2, 3, 4, 5} s1 := a[1:3:3] s2 := a[1:3] _ = append(s1, 6) fmt.Println(a) //out:[1 2 3 4 5] _ = append(s2, 7) fmt.Println(a) //out:[1 2 3 7 5] 关于对new函数的改进,chai大帮我发...阅读全文

博文 2014-11-11 18:00:02 sz_Promi

Golang_tag

Golang tag也就是go语言中的注解 比如 type PostBody struct { Ids []int `json:"Id__in__int"` }`json:"Id__in__int"` 这一段内容就是Ids这个属性的一个tag 我们可以通过反射来获取这个tag的值 如下所示 package main import ( "fmt" "reflect" ) type PostBody struct { Ids []int `json:"Id__in__int"` } func main() { // s := "{\"Id__in__int\":[101010,101009],\"text__in__string\":[\"开单\",\"测试页\"]}" // var pb st...阅读全文

博文 2015-06-17 20:03:52 u012807459

《Go语言编程》【2.7 完整示例】的错误

今天看《Go语言编程》再次发现了两处错误,一处是目录名称algorithms,根据上下文推测,目录名应当是没有最后一个字幕s的algorithm,因为最后main主程序import导入包时、调用排序函数时,以及编译环节时,都采用了algorithm,书中结构如下图: 这个名字同时按照书中所示的程序目录结构编译会报错: can't load package cannot find package 经过重新整理,修改成如下目录结构后编译不再报无法加载包和无法找到包的错误: 下图是修改成正确结构后编译和运行程序的结果: 本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/158890...阅读全文

博文 2014-12-11 22:00:06 董松

公司编程竞赛之最长路径问题 — 从深度优先搜索算法到贪心算法,再到模拟退火算法

最近产品线举办了一个软件编程大赛,题目非常的有趣,就是在一个9 × 9的格子里,你要和另一个敌人PK,在PK的过程中,你可以吃格子里的果实来提升攻击力。每次可以往正上、正下、正左、正右、左上、左下、右上、右下八个方向走。每次要么连续吃果实要么连续走空白区域,且不能走重复的位置。初始状态如下图所示: ![](http://o7x0ygc3f.bkt.clouddn.com/%E6%9C%80%E9%95%BF%E8%B7%AF%E5%BE%84%E9%97%AE%E9%A2%98-5.png) 为了提升攻击力,我们需要尽可能地一次吃最多的果实,所以路线可以这样规划: ![](http://o7x0ygc3f.bkt.clouddn.com/%E6%9C%80%E9%95%BF...阅读全文

如何正确理解消息送达成功率?

初接触极光推送的使用者,为了衡量消息推送的质量。经常会纠结到消息的"送达率"这个概念.那么究竟什么是送达率呢?或者如何正确理解消息的送达情况呢?   基本概念   先来看与消息送达相关的几个基本概念:   iOS 目标用户数:匹配推送条件的 iOS 用户的数量。   iOS 推送成功数:推送到 APNS 并被 APNS 成功接收的数量。如果 device token 变更,过期或者与推送环境不匹配则不会成功。   Android 目标用户数:匹配推送的条件的Android 用户数(1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)。   Android 在线推送数:消息推送时,目标用户在线...阅读全文

Win7安装golang开发环境--备忘录

首次接触golang,很多东西不熟悉,Git也没有安装。 1 安装golang 1.1 下载golang 我是在Golang中国的下载频道下载的golang1.6。链接如下: http://www.golangtc.com/download 我选择了64位的 go1.6.windows-amd64.msi 这个文件,安装后GOROOT和path等环境配置自动完成。 我们只需要另行配置GOPATH即可。 1.2 配置GOPATH 添加GOPATH系统环境变量;如下图所示: 然后在CMD命令行工具中通过go命令查看环境配置信息。如下图所示 2 安装Sublime Text 3 2.1 下载Sublime Text 3 官网能够访问,下载链接是:http://www.sublimetext.com...阅读全文

博文 2016-04-13 16:00:02 tom06

golang 定时器, 定时任务的用法与 linux crontab类似, 支持定时任务删除与定时器的停止

github 的地址如下: https://github.com/yukongco/cron 基于 github.com/robfig/cron 的一个改进版本, 在原有基础上支持带 jobname 的定时器, 方便删除定时器中的任务。 带 jobname 的定时器如下所示 测试例子如下: package testcrontab import ( "fmt" "time" "github.com/yukongco/cron" ) func print1() { fmt.Println("111 now time: ", time.Now().Format(Time_Format)) } func printa(...阅读全文

Golang Walk 托盘菜单

最近在用Golang开发一个客户端。客户端打开之后,会打开系统浏览器然后弹出一个网页。 目前已经写的差不多了,但是有个问题疑惑着我,Golang有没有类似C# contextMenu的东西呢,我在 github.com 上看到了 walk. 一个非常不错的golang gui开发框架,这个实现了类似于C# ContextMenu的东西 下面是一个非常简单的小示例: package main import ( "github.com/lxn/walk" "log" ) func GuiInit() { mw, err := walk.NewMainWindow() if err != nil { log.Fatal(err) } //托盘图标文件 icon, err := walk.Resou...阅读全文

博文 2019-03-24 14:34:45 smoothcraft

Go 中 BST 的实现方式

本篇文章为A Binary Search Tree的核心内容翻译,仅做个人学习之用。原文在文章开头花了不少篇幅介绍查找、二叉树相关内容,本译文假定你具备一定的计算机基础,就不做过多介绍了。Import and globals在构建BST的结构时候,需要导入以下包,作用都很简单分别是提示Error,打印以及Log相关内容:package main import ( "errors" "fmt" "log" ) A Tree Node按照之前的定义,一个树节点需要包含节点数值、左孩子节点、右孩子节点。树就是一种递归的数据结构,孩子节点也同样具备上述特性。在这个小实例中,每个树节点还包含一个简单的string值域。所以Node节点的定义如下所示:type Node struct { Value s...阅读全文

博文 2017-09-27 03:06:43 allenwu.itscoder.com

go语言坑之list删除所有元素

go提供了一个list包,类似python的list,可以存储任意类型的数据,并提供了相应的API,如下: type Element func (e *Element) Next() *Element func (e *Element) Prev() *Element type List func New() *List func (l *List) Back() *Element func (l *List) Front() *Element func (l *List) Init() *List func (l *List) InsertAfter(v interface{}, mark *Element) *Element func (l *List) InsertBefore(v i...阅读全文

博文 2017-04-13 07:18:12 songleo

Java、Scala、Go以相同方式实现快速排序代码量比较

在程序猿的世界,语言之争是个永恒的话题,在此,我想说:让争论来的更猛烈些吧。 在此,我要用相同的方式实现快速排序。首先,我们简单的回顾一下什么是快速排序。 快速排序: 快排的精髓在于”分治“。注意:这是两个方面,”分“讲的是利用所选的元素(往往是第一个元素,在此命名为Key),以Key为分水岭将列表分为:比Key元素大的和比Key元素小的两部分;”治“讲的是将分开的两部分以同样的方式(”分”的方式)继续排序,直至完全排完。如下图所示: 很显然,用“递归”的方式是很不错的。下面,每个语言用最最简洁的方式实现这个排序,然后比较一下代码量: 给出的需要排序的序列是:6、2、7、3、9、4、8、5 JAVA: private void setQuickSort(int[] array,int lef...阅读全文

博文 2016-03-04 16:00:00 i6448038

让我们一起Go(十二)

前言: 上篇中,我们讲到了在Go语言中如何定义方法,今天,我们将进一步深入Go语言的面向对象编程。 一、Go语言中的接口 首先来看一个最基本的接口: 和定义一个结构体类似,只不过将struct换成了interface,然后声明了两个函数:draw()和count()。就这么简单,一个接口就定义好了,那么如何实现接口呢?在java中我们会让一个类去实现接口,在实现的时候必须用implements关键字显示声明去实现,如: class myshow implements show{...} 在Go语言中,不需要这么做,我们要做的只是去实现接口声明的所有函数就可以了,如下所示,就实现show这个接口: 上面代码,我们的osArgs结构体实现了文章开头给出的show这个接口。其实就是用到上一篇的内容...阅读全文

博文 2015-09-05 00:00:00 a6652162

golang变量作用域问题

func f()(string,error){ return "test scope of variable",nil } func main() { var name string if name,err := f();nil ==err{ println(name) } println(name) fmt.Println("Hello, 世界") } 上面的例子输出: test scope of variable =============(空行) Hello, 世界 期望是: test scope of variable test scope of variable Hello, 世界 原因分析: golang一旦遇到:=这个符号,如果在不同一个作用域中,就会新定义个变量,如果在同一个...阅读全文

博文 2015-06-17 20:04:00 rufidmx

Windows下Go语言的环境搭建

在本地搭建了一个开发GO语言的开发环境,给大家分享一下用go语言写的第一个hello world的过程,希望对大家有所帮助。 1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把下载好的文件解压到你想解压的文件夹下,解压到的是C盘的根目录下,文件命名为go,然后是设置环境变量: 计算机->属性 ->高级系统设置 -> 环境变量 在系统变量里的Path里面加上C:\go\bin,如下图所示: 测试环境变量是否设置成功: 在CMD里运行go命令,出现如下界面说明设置环境变量成功: 3.在Eclips上安装goclips插件: (1).打开Eclips...阅读全文

博文 2014-11-09 21:00:08 allyes001

Go语言map底层实现

``map``是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中``map``的底层实现是一个散列表,因此实现``map``的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫``hmap``(``a header for a go map``),一个叫``bmap``(``a bucket for a Go map``,通常叫其``bucket``)。这两种结构的样子分别如下所示: hmap: 图中有很多字段,但是便于理解...阅读全文

博文 2018-08-26 02:58:20 RyuGou

Go打印函数printf格式简介

fmt.print参数规约 printf输出规约是按照预定义好的参数格式输出的,参数和对应说明如下表所示。 parameter description %d decimal integer %x, %o, %b integer in hexade cimal, octal, binar y %f, %g, %e floating-p oint number: 3.141593 3.141592653589793 3.141593e+00 %t boole an: true or false %c rune (Unico de co de point) %s string %q quoted str ing “abc” or rune ‘c’ %v any value in a natural...阅读全文

博文 2016-08-04 20:00:06 abcijkxyz