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

学习Go语言第一周的感受

学习Go语言第一周的感受 一、 首先,由于生活中的所需,需要对go语言进行一套系统的学习,下面就是学习过程的几种情况: 1.书籍,主要看了《学习 Go 语言(Golang)》,《go语言编程》这两本适合团队开发中,在较短的时间下,熟悉语言的语法,以及代码举例、思考学习; 《Go语言圣经》这本适合对语言在语法熟悉了以后时间比较宽裕,或者对自己要求较高的条件下需要看的(内容比较详细,也穿插的有需要的看)。 2.视频,单纯的书籍学习,会使大脑变的麻木,疲倦,结合着别人的讲解,以及图画给自己形成二次记忆,以及举一反三 3.刷题,新的知识的吸收程度需要一个考核,来检验自己的成果 4.项目,每个版块学懂以后进行相应的小项目,这样会让对语法和编程习惯有更好的理解和更好的开发效率 5.开源社区,开源项目:是...阅读全文

博文 2019-02-19 14:32:41 IT_model

手摸手教你用beego实现留言本之三(实现登录和退出)

> 登录和退出的流程: 1. 输入用户名、密码传到后台 2. 数据库查询结果是否匹配 3. 匹配成功保存 session 跳转首页 4. 退出登录 删除session 这里用到了beego的三个知识点:session | 数据库查询 | 跳转 ### 1. 设置session >首先,我们需要开启 session,在文件 app.conf 中加入 ``` sessionon = true ``` 如果未开启直接访问session可能会报如下错误: ``` goblog:runtime error: invalid memory address or nil pointer dereference ``` #### 1.1 设置session 这里提到的变量 `c` 即是控制器中传入的指针对象...阅读全文

博文 2019-01-15 11:16:01 wujiangwei

golang练手小项目系列(1)-位向量

本系列整理了10个工作量和难度适中的Golang小项目,适合已经掌握Go语法的工程师进一步熟练语法和常用库的用法。 问题描述: 有一组非负整数,实现一个位向量类型,能在O(1)时间内完成插入、删除和查找等操作。 要点: 实现Has(uint)、Add(uint)、Remove(uint)、Clear()、Copy()、String()、AddAll(…uint)、UnionWith()、IntersectWith()、DifferenceWith()、SymmetricDifference()方法。 拓展: 使用uint存储而不是uint32或uint64这样限定字长的类型。 代码实现: import ( "bytes" "fmt" ) func (s *IntSet)countBit(n ...阅读全文

博文 2019-06-29 14:32:37 李说的对

go 练手 os文件操作+os包相关

如果文件不存在就创建文件,如果存在就续写文件 package wrigeFile import ( "fmt" "github.com/golang/glog" "os" ) //注意OpenFile这个方法的第二个参数,一定要加上RDWR,可读可写的权限 func writeFile(s string) { file1, err := os.OpenFile("test.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0660) if err != nil { panic(err) } defer file1.Close() if err != nil { fmt.Println(file1, err) return } glog.Infoln(s) fi...阅读全文

博文 2017-03-05 19:48:42 暗黑破坏球嘿哈

golang练手小项目系列(3)-并发读取文件夹信息

问题描述:实现一个程序计算并打印输入的目录下所有文件的总数和总大小(以GB计算)。完成之后你将熟悉select、WaitGroup、ioutil的用法。要点:并发读取文件(夹)信息。限制开启的goroutines的最大数量。运行时每隔500ms打印当前已经统计的文件数和总大小(使用命令行参数指定此功能是否启用)。拓展:在执行中在有外部输入时退出程序。实现:import ( "flag" "fmt" "io/ioutil" "os" "path/filepath" "sync" "time")var verbose = flag.Bool("v", false, "show verbose progress messages")var sema = make(chan struct{}, 50...阅读全文

博文 2019-06-29 01:32:42 李说的对

分布式系统测试那些事儿——理念

本文整理自 PingCAP NewSQL Meetup 第 26 期刘奇分享的《深度探索分布式系统测试》议题现场实录。文章较长,为方便大家阅读,会分为上中下三篇,本文为上篇。 今天主要是介绍分布式系统测试。对于 PingCAP 目前的现状来说,我们是觉得做好分布式系统测试比做一个分布式系统更难。就是你把它写出来不是最难的,把它测好才是最难的。大家肯定会觉得有这么夸张吗?那我们先从一个最简单的、每个人都会写的 Hello world 开始。 A simple “Hello world” is a miracle We should walk through all of the bugs in: Compiler Linker VM (maybe) OS 其实这个 Hello world 能够...阅读全文

博文 2017-02-10 02:38:47 PingCAP

手摸手教你用go写爬虫之三(单任务版爬虫1.0)

> 本文介绍爬虫相关流程和搭建 ### 1. 项目需求 > 我们的需求分三步: 1. 从租房网站上获取到杭州市的所有区的链接和名称 2. 根据每个区的链接抓取第一页列表内容,找到房屋的链接和名称 3. 根据第2步中获取的链接,抓取对应的房屋的具体信息 ### 2. 项目流程 > step 1 从项目需求中可以分解出俩个信息 三步中均需要抓取 那么就要提供 url 三步中均需要解析 那么需要提供解析函数 func > 每一步解析到的结果我们需要暂存下来,如果含有链接需要继续抓取 这里我们抽象出两个结构体 ```go //请求结构体 type Request struct { Url string ParserFunc func(string) RequestResult } //结果解析结构体...阅读全文

博文 2019-02-20 20:13:19 wujiangwei

golang练手小项目系列(4)-网络聊天室

问题描述:实现一个网络聊天室服务端。完成之后你将熟悉select、net库、time定时器的用法。要点:用户发来的消息广播给所有接入聊天室的用户。新用户进入的时候能收到聊天室所有其他用户的名字列表。使用netcat工具作为客户端。拓展:当用户不活跃的时间超过指定时间后,断开用户的连接。代码:import ( "bufio" "fmt" "log" "net" "time")type client struct { Out chan<- string Name string}var ( entering = make(chan client) leaving = make(chan client) messages = make(chan string))var timeout = 10 * ...阅读全文

博文 2019-06-29 01:32:42 李说的对

golang练手小项目系列(5)-并发无阻塞缓存

问题描述:如下的函数被并发调用时,如果有重复的URL(在一个routine中被多次访问或多个routine访问同一个url),会产生冗余的网络请求。请实现一个并发安全的缓存,以提高网络的利用效率和降低函数的执行时间。完成后你将熟悉互斥锁的使用。func httpGetBody(url string)(interface{},error){ resp,err:=http.Get(url) if err!=nil{ return nil,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body)}要点:注意多个routine同时访问同一个URL时只需要发出一个网络请求。拓展:代码实现1:import ( "sync")type r...阅读全文

博文 2019-06-29 01:32:41 李说的对

golang练手小项目系列(6)-使用map实现set

问题描述 go没有提供set数据结构,请用map实现set 要点 需要支持方法: Add 添加元素 Remove 删除元素 Cardinality 获取 Set 长度 Clear 清空 Set Contains 检测元素是否在 Set 中 Pop() 随机删除一个元素并返回被删除的元素 ToSlice() []interface{} 转换成slice返回 拓展 Clone 复制 Set Difference(other Set) Set 返回和另一个Set的差集 Equal(other Set) bool 判断和另一个Set是否相等 Intersect(other Set) Set 返回和另一个Set的交集 SymmetricDifference(other Set) Set 返回不在交集中...阅读全文

博文 2019-07-02 14:02:59 李说的对

golang练手小项目系列(6)-使用map实现set

问题描述 go没有提供set数据结构,请用map实现set 要点 需要支持方法: Add 添加元素 Remove 删除元素 Cardinality 获取 Set 长度 Clear 清空 Set Contains 检测元素是否在 Set 中 Pop() 随机删除一个元素并返回被删除的元素 ToSlice() []interface{} 转换成slice返回 拓展 Clone 复制 Set Difference(other Set) Set 返回和另一个Set的差集 Equal(other Set) bool 判断和另一个Set是否相等 Intersect(other Set) Set 返回和另一个Set的交集 SymmetricDifference(other Set) Set 返回不在交集中...阅读全文

博文 2019-07-02 12:03:03 李说的对

LeetCode - 160. Intersection of Two Linked Lists

题链接:https://leetcode.com/problems/intersection-of-two-linked-lists/ 简单题拿golang练练手。 /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func getIntersectionNode(headA, headB *ListNode) *ListNode { la := getLen(headA) lb := getLen(headB) if(la > lb) { headA = skipNodes(la - lb, headA) } else if (lb > la...阅读全文

博文 2020-03-08 17:32:42 码农老姜