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

go get安装第三方包的前提条件和步骤

自:http://studygolang.com/articles/5796 首先,你要找到第三方类包所在的网址, 例如: http://github.com/go-sql-driver/mysql 分为命令行自动安装 和 手动下载 然后安装。 ( 欢迎加入go语言群: 218160862 ,群内有实践) 一、通过 go get github.com/go-sql-driver/mysql 命令安装第三方类库 要启用 go get github.com/go-sql-driver/mysql 命令, 首先必须设置环境变量GOPATH的路径、并且安装git for windows!!! 否则 go get 命令不起作用。 1. 设置 GOPATH 环境变量, 并且这个GOPATH 变量里面的路...阅读全文

博文 2016-01-28 19:00:01 bluehawksky

安装Go SDK

前提条件 在安装和使用阿里云SDK前,确保您已经注册阿里云账号并生成访问访问密钥(AccessKey)。详情参考创建AccessKey。 安装方式 您可以通过以下两种方式安装Go SDK。 使用依赖包工具安装(推荐) 自行下载安装 使用Glide安装GO SDK(推荐) 执行以下命令,安装阿里云Go SDK: glide get github.com/aliyun/alibaba-cloud-sdk-go 在安装完成后,您可以使用OpenAPI Explorer来生成相关API的Demo并应用在您的项目中。 使用Govendor安装 执行以下命令,安装阿里云Go SDK: go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk 在安装完成后,...阅读全文

博文 2019-05-19 16:50:08 8588ll

Go项目结构和模块导入

Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方。 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 export GOPATH=/home/t/gospace 对于GOPATH来说,允许多个项目目录(Unix中为“:”,Windows中为“;”)。 项目目录 在项目目录中,一般包含三个文件夹,分别为src,pkg和 bin。各个文件夹功能如下, src 存放golang源码 pkg 存放编译后的文件 bin 存放编译后可执行的文件 模块导入 在golang中,模块导入包括两种导入方式:相对路径和绝对路径。 相对导入 当前文件同一目录的model目录,但是不建议这种方式来import import (...阅读全文

博文 2015-09-18 03:00:00 coder2012

switch _ golang

switch 1: 在条件语句中,可以写多条的语句 2: 也可以不添加语句 package main import ( "fmt" "time" ) func main() { i := 2 fmt.Println("write ", i, " as ") switch i { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") } switch time.Now().Weekday() { case time.Saturday, time.Sunday: fmt.Println("it's the weekend") default: fmt.Println("it's a w...阅读全文

博文 2015-03-13 03:00:01 jackkiexu

行为树 behavior3go

参考 游戏AI - 行为树Part1:简介 游戏AI - 行为树Part2:框架 https://github.com/f15gdsy/BT-Framework http://www.u77.com/game/3067 一、有限状态机 游戏中的AI,大多数都是按照规则设定好的,没有太多花哨的技术。原因有几个: 一是出于风险成本的考虑,用一个新技术,需要程序员开发相应的算法和框架,游戏设计师重新上手设计方法和摸索算法的适用范围,小团队承受不起这样的开销,大团队又怕做坏名声; 二是“高级”的AI算法并不直观,难以设计。举一个例子,怎么利用神经网络来训练一个士兵AI?我见过的一个例子是设计师用几个按键来操作士兵移动攻击,然后程序自动记录敌我双方的数据和设计师的操作,最后利用这些信息作为input构...阅读全文

博文 2019-07-02 18:32:41 合肥懒皮

ubuntu下golang的安装、编译、运行

1 简介最近两年Golang发展迅猛,大有比肩C++、Java等主流语言、成为未来十年最为流行的编程语言之势。在开源社区中,热火朝天的Docker、Kubernetes、CoreOS生态圈都采用Golang开发,便是Golang大热的最佳例证。Golang之所以备受推崇,一方面得益于其特有的并发编程模型,一方面得益于其更为简约抽象的编程哲学(接口、OOP等特性)。作为分布式领域的开发者,不能不关注Golang。2 安装环境:Ubuntu 14.04sudo apt-get install golang-go sudo apt-get install golang-go.tools # 安装godoc等工具3 示例程序hello world,例子来源于许式伟等人翻译的《Go语言程序设计》。//...阅读全文

博文 2017-02-09 17:24:45 说话的白菜

RETE算法的描述(原创)

通过一周左右的研究,对规则引擎有了一定的了解。现在写点东西跟大家一起交流,本文主要针对RETE算法进行描述。我的文笔不太好,如果有什么没讲明白的或是说错的地方,请给我留言。 首先申明,我的帖子借鉴了网上很流行的一篇帖子,好像是来自CSDN;还有一点,我不想做太多的名词解释,因为我也不是个研究很深的人,定义的不好怕被笑话。 好现在我们开始。 首先介绍一些网上对于规则引擎比较好的帖子。 1、 来自JAVA视频网 http://forum.javaeye.com/viewtopic.php?t=7803&postdays=0&postorder=asc&start=0 2、 RETE算法的最原始的描述,我不知道在哪里找到的,想要的人可以留下E-mail 3、 CMU的一位博士生的毕业论文,个人觉得...阅读全文

博文 2017-11-29 01:46:33 ipointer

Golang Gin实践 番外 请入门 Makefile

Golang Gin实践 番外 请入门 Makefile 原文地址:Golang Gin实践 番外 请入门 Makefile 前言 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C...,最后才执行构建 如果每次都人为编排,又或是每新来一个同事就问你项目 D 怎么构建、重新构建需要注意什么...等等情况,岂不是要崩溃? 我们常常会在开源项目中发现 Makefile,你是否有过疑问? 本章节会简单介绍 Makefile 的使用方式,最后建议深入学习 怎么解决 对于构建编排,Docker 有 Dockerfile ,在 Unix 中有神器 Make .... Make 是什么 Make 是一个构建自动化工具,会在当前目录下寻找 Makefile 或 makefile 文件。如...阅读全文

博文 2018-08-26 20:34:53 煎鱼

golang操作mongodb

开发十年,就只剩下这套Java开发体系了 >>> 1、要安装mongodb数据库,2、要下载golang的mgo包,3、连接操作 package main import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "fmt" ) const URL = "192.168.1.83:27017" //mongodb的地址 func main() { session, err := mgo.Dial(URL) //连接服务器 if err != nil { panic(err) } c := session.DB("ChatRoom").C("account") //选择ChatRoom库的account表 c.Insert(map[string]int...阅读全文

博文 2018-09-23 00:33:09 别人说我名字很长

golang database 全局

重要的前提条件: type DB type DB struct { // contains filtered or unexported fields } DB is a database handle representing a pool of zero or more underlying connections.It's safe for concurrent use by multiple goroutines. The sql package creates and frees connections automatically; it also maintains a free pool of idle connections. If the database has a co...阅读全文

博文 2016-04-10 10:00:01 scut1135

avl树 golang实现

#Tree 术语: - 树 - 根 - 节点 - 叶子 - 层次, 根节点 - 深度 - 树的高度, 空树的深度为`-1`, 根的深度为`0`, 一个节点的高度为`0`, 所有的树叶的高度都为`0`。 --- ##二叉树 每个节点最多有两个孩子,空树也是一棵二叉树,链表是一种特殊的二叉树。 ## 二叉排序树(二叉搜索树,B树) ## 满二叉树 ## 完全二叉树 ## AVL树 AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是: 1. 本身首先是一棵二叉搜索树。 2. 带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。 例如: ``` 5 5 / \ / \ 2 6 2 6 / \ \ / \ 1 4 7 1 4 / / 3...阅读全文

GoLang练习实例100之003----完全平方数

package main import ( "fmt" ) //题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少 func main() { for i :=1; i<=85; i++{ if 168 % i==0{ j := 168 / i if (i>j) && ((i + j) % 2==0) && ((i - j) % 2 == 0){ //m := (i + j) / 2 n := (i - j) / 2 x := n * n - 100 fmt.Printf("符合条件的整数有:%s\n",x) } } } ...阅读全文

博文 2018-03-20 22:33:04 不折腾难受斯基

golang操作mongodb

1、要安装mongodb数据库,2、要下载golang的mgo包,3、连接操作 package main import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "fmt" ) const URL = "192.168.1.83:27017" //mongodb的地址 func main() { session, err := mgo.Dial(URL) //连接服务器 if err != nil { panic(err) } c := session.DB("ChatRoom").C("account") //选择ChatRoom库的account表 c.Insert(map[string]interface{}{"id": 7, "name":...阅读全文

博文 2015-07-30 18:00:02 别人说我名字很长

快速排序算法 原理及golang语言实现

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面, 所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;、 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换; 4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换; 5)重复第3、4...阅读全文

博文 2016-04-22 01:00:18 zhaoguoguang

map键值的疑问

在effective_go文档中,关于map类型key的取值上说接口类型也可以做key,但是附加条件是只要动态的类型支持即可。 不知道martini中使用的函数 func InterfaceOf(value interface{}) reflect.Type 最终返回的是不是反射包里的以下struct: ``` // interfaceType represents an interface type. type interfaceType struct { rtype `reflect:"interface"` methods []imethod // sorted by hash } ``` 如果是,但文档中指出struct带有slice字段是能不做为ma...阅读全文

boltdb 源码分析-MVCC/持久化-3

boltdb 持久化 在前面简介部分已经描述了一部分持久化相关的内容 boltdb采用单个文件来将数据存储在磁盘上,该文件的前4个page是固定的: 第1个page为meta 第2个page为meta 第3个page是freelist,存储了一个int数组, 第4个page是leaf page page page是boltdb持久化时,与磁盘相关的数据结构。page的大小采用操作系统内存页的大小,即getpagesize系统调用 的返回值,通常是4k大小。 每个page开始的几个字节存储的是page 的raw data: type page struct { id pgid // page的序号 flags uint16 // page的类型,有branchPageFlag/leafPage...阅读全文

开源Go语言数值算法库(An open numerical library purely based on Go programming language)

# 关于goNum [goNum](https://github.com/chfenger/goNum)`(https://github.com/chfenger/goNum)`是一款完全以[Go](https://golang.org)语言为基础的开源数值算法库,它可以使你像调用其它go函数一样使用其进行数值运算,且不依赖于任何外部库。 限于作者业余时间有限,目前功能还在一步步完善,算法还在慢慢添加。 绝大部分算法进行了典型状态测试,但不保证所有算法在所有状态下都是安全的、可靠的。 另外,需要注意的是,此算法库旨在解决问题,而不是实现语言的某些能力,即使作者正在努力使得go语言的独特性在其中充分体现。 如果您对作者的工作满意,请留心关注goNum的更新状态;如果您对作者的工作...阅读全文

2019年下半年阅读

19年写了5本书。《R语言数据挖掘》,《R语言数据分析案例》,《R语言数据探索与数据可视化》,《python数据挖掘》,《golang入门到实战》所以看了市面上我所写书相关主题的书,基本上都看了,这一部分就不罗列。其他值得一说的书罗列一下。《逻辑哲学论》维特根斯坦维特根斯坦对于语言的理解,我蛮赞同的。他说所有的哲学问题都是语言的误用。这句话不一定对,但是有一定道理。语言只是一个描述世界的工具,并不是世界。有一个词语,叫做文过饰非,就是说语言被我们玩坏了,人们分不清所说的和事实了。维特根斯坦很尖锐地指出了语言和事实的边界。有些事实能够被语言表述,有些不能。所以他说 ,凡是可以说的,都可以说清楚。凡是不可以说的,就保持沉默。语言只是事实的一个映射,就好像一个路标,表明了目的地,而语言本身并不是目...阅读全文

Leetcode 题目:括号匹配

前言 这道题目是 LeetCode 第 20 题 Valid Parentheses。 在我用 Go 解答这个问题时,发现了 Go 特别的用法和一些求解中容易忽略的边界条件,觉的还是有必要记录一下。 题目简述 给定一个只包含 '(',')','{','}','['和']'的字符串,判断字符串是否有效。有效的条件为:括号必须有相同的括号对应, 且括号必须以正确的顺序对应。 示例1: 输入:"()" 输出:true 示例2: 输入:"()[]{}" 输出: true 示例3: 输入:"([)]" 输出:true 解题思路 遍历字符串每个字符,当字符属于'(','{','['时,将字符压入栈。若字符不属于,则将当前字符与栈顶元素比较,如果括号对应说明正确并弹出栈顶元素,否则返回错误。 依照此思路写...阅读全文

静态类型语言和动态类型语言的关于类型的思考

类别:符合条件的对象集。 动态语言不关心对象形成的过程,满足条件即认为是同一类别的对象。 静态语言认为同一类别的对象必须是靠继承得到的类创建的。 静态语言可以靠接口来部分实现上述动态语言的特性,但是一个已经被创建了的对象,即便符合接口定义,但是类因为没有显示声明也无法传入一个以该接口为参数的函数中。因此你要在类那里再加一个实现某接口,于是便有了 class A 继承B 实现接口C{ } 这样的类了。(不过golang的接口则不需要这样的显式声明,我想他们可能意识到了这点) 这里有一个很重要的点就是,你是后发现原来这个对象就属于那个类别的。这个对象可能是后面慢慢形成的。但是当你发现这个事实后再去补上这个类实现了某接口。有点违背当初的设计,因为当初是设计有目的的实现接口的,不是后发现原来符合条件...阅读全文

新手求教一个关于slice的问题

小弟最近刚刚开始学GO语言,正在Leetcoding上刷题,今天刷一道Combinations题时遇到了困难。 ![微信图片_20171102213523.png](https://static.studygolang.com/171102/86f1faf873ca94578d7bed63ed5605ef.png) 我的输出定义是二维slice`var result [][]int` 另外定义了stack来寻找符合条件的单维数组`stack := make([]int, 0, k)` 如果stack符合条件就附加入result中,`result = append(result, stack)` 每次执行append都做一次输出,但是输出的结果是 !...阅读全文

go 链表

package main import ( "fmt" "log" ) // Item 可以理解为范性,也就是任意的数据类型 type Item interface { } // 一个节点,除了自身的数据之外,还必须指向下一个节点,尾部节点指向为nil type LinkNode struct { Payload Item // Payload 为任意数据类型 Next *LinkNode } type LinkNoder interface { // go语言接口,在这个接口里面,我们可以定义一系列的方法。 Add(payload Item) Delete(index int) Item Insert(index int, payload Item) GetLength() int Sea...阅读全文

博文 2019-03-05 23:35:28 295631788

IPFS/Filecoin的编译

IPFSgo-IPFS在windows下的编译要遵从这里的指令:https://github.com/ipfs/go-ipfs/blob/master/docs/windows.md#minimal我选择MSYS但是,遇到如下的问题: 错误信息如下: plugin\loader\preload.go:12:2: undefined: pluginipldgit plugin\loader\preload.go:13:2: undefined: pluginbadgerds plugin\loader\preload.go:14:2: undefined: pluginflatfs plugin\loader\preload.go:15:2: undefined: pluginlevelds ...阅读全文

博文 2019-06-05 17:33:50 末座少年

测试之识别和描述缺陷

一.缺陷   APP测试识别、描述缺陷的定义:   违背客户指定需求的内容都称为缺陷    缺陷产生原因:   1.人员(用户、设计、开发、测试、技术支持等)之间的沟通交流出现问题   2.程序设计本身的问题   3.需求的变更   4.软件规模大,结构复杂   5.工期短,任务重   6.开发工具与系统软硬件的支持   缺陷判断方法:   1.参考文档(需求规格说明书,概要设计,详细设计)   2.行业标准,行业背景   3.沟通交流    再现优化缺陷的方法:   1.不要想当然的接受任何假设   2.查找依赖关系和竞争条件的问题   3.与压力和负荷相关的边界条件软件缺陷、内存泄漏和数据溢出缺陷的发生有一定的前提条件   4.状态...阅读全文

go语言方法Value Receiver, Pointer Receiver各种不同情况的实验笔记

注意: 此文章只是我的个人笔记,如有谬误,错误, 请一定指出! for range 问题 http://stackoverflow.com/questions/30577212/go-for-range-slice-and-goroutine-method-invocation-the-logic-behind package main import ( "fmt" "time" ) type field struct { name string } func (p *field) print() { fmt.Printf("print: p: %p, v: %s\n", p, p.name) } func main() { data := []field{ {"one"},{"two"},...阅读全文

博文 2016-09-17 16:00:04 htyu_0203_39

sliceutil 数组操作工具

<https://github.com/issue9/sliceutil> sliceutil 提供了针对数组和切片的功能 - Reverse 反转数组中的元素; - Delete 删除符合条件的切片元素; - QuickDelete 删除符合条件的切片元素,性能稍高于 Delete; - Count 统计数组或切片中包含指定什的数量; - Dup 查看数组或切片中是否包含重得的值; - Contains 判断一个数组或是切片是否包含了另一个的所有元素...阅读全文

让我们一起啃算法----合并两个有序数组

合并两个有序数组(Merge-Sorted-Array) 题干: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6]来源:力扣(LeetCode) 这是一题关于数组的题目。目前为止讲解数组、字符串相关的题目都会引入一个解题思路: 双指针思路。其实就是想让小伙伴们培养一个习惯:面对数组、字符串类...阅读全文

博文 2020-05-11 10:32:47 三斤和他的朋友们

filebeat的“too many open files”的排查

现象 filebeat的日志中出现 2019-04-23T14:28:30.304+0800 WARN transport/tcp.go:36 DNS lookup failure "systemlog-collect-2.novalocal": lookup systemlog-collect-2.novalocal: too many open files 2019-04-23T14:28:39.689+0800 ERROR pipeline/output.go:74 Failed to connect: lookup systemlog-collect-1.novalocal: too many open files 查看设置的max open files 进程的(最终以这个为准): ...阅读全文

博文 2019-04-24 01:34:41 Kinvo

以太坊源码分析:共识(3)Ethash

前言 Ethash实现了PoW,PoW的精妙在于通过一个随机数确定,矿工确实做了大量的工作,并且是没有办法作弊的。接下来将介绍: Ethash的挖矿本质。 Ethash是如何挖矿的。 如何验证Ethash的随机数。 Ethash的挖矿本质 挖矿的本质是找到一个随机数,证明自己做了很多工作(计算)。在Ethash中,该随机数称为Nonce,它需要满足一个公式: Rand(hash, nonce) ≤ MaxValue / Difficulty 其中, hash:去除区块头中Nonce、MixDigest生成的哈希值,见HashNoNonce()。 nonce:待寻找的符合条件的随机数。 MaxValue:固定值2^256,生成的哈希值的最大取值。 Difficulty:挖矿难度。 Rand()...阅读全文

博文 2018-11-17 13:34:43 大彬

golang regexp记录

FindAllSubmatch与FindSubmatch区别 // 匹配一个非元音字母,一个元音字母,一个非元音字母 someRegex, _ := regexp.Compile(`[^aouiye]([aouiye])([^aouiye])?`) m1 := someRegex.FindAllStringSubmatch("somestri", -1) m2 := someRegex.FindStringSubmatch("somestri") fmt.Println(m1) fmt.Println(m2) //result: [[som o m] [ri i ]] [som o m] re2, _ := regexp.Compile("am(.*)lang(.*)") //查找Subma...阅读全文

博文 2018-07-02 21:35:46 暮色伊人

leetcode刷题笔记(Golang)--14. Longest Common Prefix

题链接14. Longest Common Prefix Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string "". Example 1: Input: ["flower","flow","flight"] Output: "fl" Example 2: Input: ["dog","racecar","car"] Output: "" Explanation: There is no common prefix among the input strings. No...阅读全文

博文 2020-02-08 01:32:44 煮酒_zzh

golang goquery selector(选择器) 示例大全

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。 最近研究Go爬虫相关的知识,使用到goquery这个库比较多,尤其是对爬取到的HTML进行选择和查找匹配的内容时,goquery的选择器使用尤其多,而且还有很多不常用但又很有用的选择器,这里总结下,以供参考。 如果大家以前做过前端开发,对jquery不会陌生,goquery类似jquery,它是jquery的go版本实现。使用它,可以很方便的对HTML进行处理。 基于HTML Element 元素的选择器这个比较简单,就是基于a,p等这些HTML的基本元素进行选择,这种直接使用Element名称作为选...阅读全文

Golang实现拓扑排序-DFS算法版

问题描述:有一串数字1到5,按照下面的关于顺序的要求,重新排列并打印出来。要求如下:2在5前出现,3在2前出现,4在1前出现,1在3前出现。 该问题是一个非常典型的拓扑排序的问题,一般解决拓扑排序的方案是采用DFS-深度优先算法,对于DFS算法我的浅薄理解就是递归,因拓扑排序问题本身会有一些前置条件(本文不过多介绍拓扑算法的定义),所以解决该问题就有了以下思路。 先将排序要求声明成map(把map的key,value看作对顺序的要求,key应在value前出现),然后遍历1-5这几个数,将每次遍历取出的数在map中key查找是否存在,如果存在就按map中key,value的关系,放入结果数组中。再用刚map[key]获取的value去map中的key查找是否存在,如果存在就将新的key和va...阅读全文

博文 2019-11-04 10:02:45 hellowoody

go语言方法Value Receiver, Pointer Receiver各种不同情况的实验笔记

注意: 此文章只是我的个人笔记,如有谬误,错误, 请一定指出! for range 问题 http://stackoverflow.com/questions/30577212/go-for-range-slice-and-goroutine-method-invocation-the-logic-behind package main import ( "fmt" "time" ) type field struct { name string } func (p *field) print() { fmt.Printf("print: p: %p, v: %s\n", p, p.name) } func main() { data := []field{ {"one"},{"two"},...阅读全文

博文 2016-09-05 16:00:07 htyu_0203_39

golang中的变量你知道多少?

变量的定义 var a =1//编译器会推断变量 a的类型为int b :=1 //短变量声明 var c int;c=1// 变量声明,并且赋值 变量的重声明 短变量声明。通过使用它,我们可以对同一个代码块中的变量进行重声明。 例子: var err error n, err := io.WriteString(os.Stdout, "Hello\n")//使用短变量声明对新变量n和旧变量err进行了“声明并赋值”,这也是对后者的重声明 变量重声明的前提条件 由于变量的类型在其初始化时就已经确定了,所以对它再次声明时赋予的类型必须与其原本 的类型相同,否则会产生编译错误。 变量的重声明只可能发生在某一个代码块中。如果与当前的变量重名的是外层代码块中的变 量,那么就是可重名变量了。 变量的重...阅读全文

go语言方法Value Receiver, Pointer Receiver各种不同情况的实验笔记

注意: 此文章只是我的个人笔记,如有谬误,错误, 请一定指出! for range 问题 http://stackoverflow.com/questions/30577212/go-for-range-slice-and-goroutine-method-invocation-the-logic-behind package main import ( "fmt" "time" ) type field struct { name string } func (p *field) print() { fmt.Printf("print: p: %p, v: %s\n", p, p.name) } func main() { data := []field{ {"one"},{"two"},...阅读全文

博文 2016-09-05 16:00:00 htyu_0203_39

使用 Makefile 构建指令集

使用 Makefile 构建指令集 make 是一个历史悠久的构建工具,通过配置 Makefile 文件就可以很方便的使用你自己自定义的各种指令集,且与具体的编程语言无关。例如配置如下的 Makefile : run dev: NODE_ENV=development nodemon server.js 这样当你在命令行执行 make run dev 时其实就会执行 NODE_ENV=development nodemon server.js 指令。 使用 Makefile 构建指令集可以很大的提升工作效率。 Makefile 基本语法 : target 其实就是执行的目标,prerequisites 是执行这条指令的前置...阅读全文

go语言方法Value Receiver, Pointer Receiver各种不同情况的实验笔记

注意: 此文章只是我的个人笔记,如有谬误,错误, 请一定指出! for range 问题 http://stackoverflow.com/questions/30577212/go-for-range-slice-and-goroutine-method-invocation-the-logic-behind package main import ( "fmt" "time" ) type field struct { name string } func (p *field) print() { fmt.Printf("print: p: %p, v: %s\n", p, p.name) } func main() { data := []field{ {"one"},{"two"},...阅读全文

博文 2016-09-03 16:00:08 htyu_0203_39

Golang 设计模式之-装饰模式

Golang 设计模式之-装饰模式 最近在温习设计模式,虽然面向对象不是go的特长,但用go实现的设计模式,比java 和 c# 这种纯面向对象语言多了一份灵活,比python 这种虚假的面向对象要更直观, 性能上也更有优势. 装饰模式 装饰模式是一个非常常用的设计模式。常用到python内置了它。 装饰模式是为已有功能动态的添加更多功能的一种方式, 降低了主类(当然,go里没有类这种东西,可以用结构模拟)复杂度, 防止类的爆炸行为. 当新加的功能仅仅是满足某种特定条件下的需要时,装饰模式是个非常好的选择。 装饰模式把核心功能和装饰功能区分了,减少了核心功能可能造成的冗余和耦合,简化核心类的重复装饰逻辑. 装饰模式的装饰顺序很重要,它决定了最终类被装饰的效果 实例 Decorate 抽象 t...阅读全文

博文 2020-05-07 15:41:19 trump2018

0862_和至少为K的最短子数组

0862_和至少为 K 的最短子数组 题目描述 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。 如果没有和至少为 K 的非空子数组,返回 -1 。 示例1: 输入:A = [1], K = 1 输出:1 示例2: 输入:A = [1,2], K = 4 输出:-1 示例3: 输入:A = [2,-1,2], K = 3 输出:3 Note: 1. 1 <= A.length <= 50000 2. -10 ^ 5 <= A[i] <= 10 ^ 5 3. 1 <= K <= 10 ^ 9 暴力算法 func shortestSubarray(A []int, K int) int { minLen := 50001 tail := len(A) - 1 for i := ...阅读全文

博文 2018-09-01 12:35:03 TomorrowWu

golang实现AVL树

AVL树是一棵高度平衡的二叉搜索树,它的特点是: 1.本身首先是一棵二叉搜索树。 2.带有平衡条件:每个结点的左右子树的高度之差的绝对值最多为1。 不废话直接上代码(golang实现): package main import ( "log" ) func main() { array := []int{5, 3, 1, 8, 9, 10, 11, 2, 4, 7, 6, 12} var root *AVLTreeNode for _, v := range array { root = root.InsertNode(v) log.Println("root=> key:", root.value, "high:", root.high) } log.Println("----------...阅读全文

博文 2018-12-06 19:34:55 随意两秒钟

LeetCode算法系列_0862_和至少为K的最短子数组

0862_和至少为 K 的最短子数组 题目描述 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。 如果没有和至少为 K 的非空子数组,返回 -1 。 示例1: 输入:A = [1], K = 1 输出:1 示例2: 输入:A = [1,2], K = 4 输出:-1 示例3: 输入:A = [2,-1,2], K = 3 输出:3 Note: 1. 1 <= A.length <= 50000 2. -10 ^ 5 <= A[i] <= 10 ^ 5 3. 1 <= K <= 10 ^ 9 暴力算法 func shortestSubarray(A []int, K int) int { minLen := 50001 tail := len(A) - 1 for i := ...阅读全文

博文 2018-09-01 11:35:03 tomorrowwu

Golang Gin实践 番外 请入门 Makefile

Golang Gin实践 番外 请入门 Makefile 前言 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C...,最后才执行构建 如果每次都人为编排,又或是每新来一个同事就问你项目 D 怎么构建、重新构建需要注意什么...等等情况,岂不是要崩溃? 我们常常会在开源项目中发现 Makefile,你是否有过疑问? 本章节会简单介绍 Makefile 的使用方式,最后建议深入学习 怎么解决 对于构建编排,Docker 有 Dockerfile ,在 Unix 中有神器 Make .... Make 是什么 Make 是一个构建自动化工具,会在当前目录下寻找 Makefile 或 makefile 文件。如果存在,会依据 Makefile 的构建规则去完成构建 当然了,实际...阅读全文

博文 2019-07-06 00:00:42 EDDYCJY

按量付费实例批量更改实例带宽

摘要: 为了满足按量付费的灵活性,我们开放了批量的更改网络带宽,近期还将发布更改实例规格的功能。 如何更改按量付费实例的带宽 控制台 1.登陆控制台后进入实例列表,勾选要更改带宽的实例。在批量操作栏中更多操作项中点击更改带宽;或在指定实例更多操作项中点击更改带宽。 image image 2.批量更改带宽时,如果选择了多种带宽付费类型的实例,需要先确认本次期望修改的带宽付费类型是按使用流量或按固定带宽,选择带宽付费类型后,会检测用户勾选的实例,符合条件的实例会显示出当前带宽的付费类型以及带宽值,如果实例不符合条件会将其丢入不可操作列表并说明原因。 image image 3.点击批量更改按钮设置期望的带宽值,点击确定后会在**更改带宽**列显示期望的带宽值。检查无误...阅读全文

两数之和

计划从这周开始,每周刷一道leetcode,目的在于练习基础算法,同时每次强制用golang实现,以此达到学习golang的目的。由于刚开始,所以这一题也比较简单。 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 实现思路: 从前往后遍历数组,每次那当前数组和后面所有的数字进行相加比较,如果符合条件,返回两数索引。 这里贴一下java实现 public stat...阅读全文

博文 2019-06-16 20:32:44 杨比轩

golang+cgo的搭建以及使用

摘要由于自己新的工作接触到了图像识别,于是开始从零开始整理自己怎么从一个空白到实现识别的完整功能所需要的技术要点。当然并不是完全的从零开始,前提条件至少会用go和c++,go简单很容易就能上手,如果你有开发的工作经验,学习go那是相当容易的。C++相对于go会比较困难点,但是笔者也没有做过c++的经历,也就大学学过c而已,照葫芦画瓢,依然能用的来c++,所以相信大家花点时间也能熟练的使用这两门语言。为什么要cgo所谓的cgo就是go调用c/c++或者是反过来,如果你是一名go开发者,由于现在很多强大的开源库是使用c/c++编写的,比如Opencv、Opengl、Zbar等等,你既想用又不想切换语言,那么cgo就是很好的选择,这将使你站在巨人的肩膀上开发出自己的应用程序。学会cgo将会打开你新...阅读全文

Go语言实现的Java Stream API

学习Go语言时实现的集合操作工具库,类似于Java 8 中新增的Stream API。由于Go语言不支持泛型,所以基于反射实现。只用于学习目的,不要用于生产(PS:当然也不会有人用)。 项目地址:https://github.com/tk103331/s... 集合操作包括生成操作、中间操作和终止操作。生成操作返回值是Steam对象,相当于数据的源头,可以调用Stream的其他方法;中间操作返回值是Stream对象,可以继续调用Stream的方法,即可以链式调用方法;终止操作不能继续调用方法。 下面介绍下这个库的API: 数据准备后面的操作都是基于集合数据的,先准备一些测试数据。 type student struct { id int name string ageint scores [...阅读全文

博文 2019-09-05 10:02:41 tk103331