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

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项目结构和模块导入

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

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操作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 别人说我名字很长

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

安装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

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...阅读全文

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 说话的白菜

快速排序算法 原理及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

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 煎鱼

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...阅读全文

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练习实例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 不折腾难受斯基

测试之识别和描述缺陷

一.缺陷   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

开源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的更新状态;如果您对作者的工作...阅读全文

Leetcode 题目:括号匹配

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

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

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

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

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

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 暮色伊人

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 末座少年

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

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名称作为选...阅读全文

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

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

新手求教一个关于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都做一次输出,但是输出的结果是 !...阅读全文

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

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

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

以太坊源码分析:共识(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 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

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实现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,目的在于练习基础算法,同时每次强制用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 杨比轩

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

web服务下,当请求数过多,出现资源竞争问题?求解决

![one.png](https://static.studygolang.com/180626/5c08666c74159d253b05c80e6dd95a65.png) ##### 我仅仅是实现一个插入更新功能:首先判断符合条件的记录是否存在,如果不存在,则插入, 否则更新第四列字段。最终, ##### 在传入同样的请求参数的情况下,也只会有一行记录, 但是,当请求数多的时候。出现了这样。我已经使用过mutex,目的 ##### 是达到了,但是,性能不理想,请问大家,有比较优的解决方案吗? ![two.png](https://static.studygolang.com/180626/d134bf41224ff74cc2f94d5d6b729e1d.png...阅读全文

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进行了“声明并赋值”,这也是对后者的重声明 变量重声明的前提条件 由于变量的类型在其初始化时就已经确定了,所以对它再次声明时赋予的类型必须与其原本 的类型相同,否则会产生编译错误。 变量的重声明只可能发生在某一个代码块中。如果与当前的变量重名的是外层代码块中的变 量,那么就是可重名变量了。 变量的重...阅读全文

golang+cgo的搭建以及使用

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

行为树 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 合肥懒皮

学习数据爬虫应掌握的技术

随着大数据时代和智能化时代的到来,爬虫作为重要的数据来源,及时有效的获得海量的数据已成为现代决策必不可少的一环,那么,数据爬虫到底是怎样工作的呢?想要学习数据爬虫需掌握哪些技能呢? **数据爬虫工作流程** 挑选出符合条件的URL,将这些URL放入待抓取URL队列,从待抓取URL队列中取出URL,解析DNS,得到主机IP,并将URL对应的网页下载下来,存储进已下载网页库中,并将这些URL放入已抓取URL队列,分析已抓取URL队列中的URL,找出符合条件的其他URL,并放入待抓取URL队列,进入下一个循环。 **学习数据爬虫需要掌握的技能** **1. 学习Python基础知识并实现基本的爬虫过程** Python爬虫的过程是按照发送请求→获得页面反馈→解析并存储...阅读全文

linux find name命令详解

find命令用来在指定目录下查找文件的命令,和locate不同,find命令是实时精确查找,不做模糊匹配,但是可以使用通配符查找,相对更精确。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。 语法格式:find [查找路径] [查找条件] [查找后的动作] 查找路径:指定具体搜索路径,默认为当前路径下; 查找条件:可以根据文件名、大小、权限、日期等进行查找。没有指定条件的话默认为当前路径下所有文件; 查找后的动作:对符合条件的文件作出的操作,如删除、复制,默认为输出到标准输出。 实例列举: 1. 列出当前目录及子目录下所有文件和文...阅读全文

过来人经验:程序员怎么升职加薪,迎娶白富美

原作者:Ryan9 原文地址:https://www.zhihu.com/question/20259295/answer/125138094 文章中的观点,小编赞成绝大部分。出于尊重,全文保留。这些经验之谈,到底适不适合你,还需要读者自行分辨。 我是码农出身,工作十年,从 初级程序猿(半年) - 项目主力(一年) - 初级技术管理(一年) - 中级技术管理(两年) - 部门管理(两年) - 高层管理(三年) - 职业经理人,一条路走过来,关于升职,有一些自己的心得可以分享。以下大致说说从技术到管理的转变,暂不涉及管理的进阶。 Love Coding 热爱编程 大四开始找工作的时候,我正在上一门可视化编程的课,大概就是用VC编写出可以绘图、简单动画和播放多媒体文...阅读全文

Go语言实现的Java Stream API

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