Go
文章平均质量分 64
west_liu
这个作者很懒,什么都没留下…
展开
-
COS461-普林斯顿大学计算机网络课程-assignment1实现
COS461是普林斯顿大学的计算机网络课程:https://github.com/PrincetonUniversity/COS461-Public课程实现assignment1assignment1这次作业的任务大概分为两大部分:搭建环境和socket编程。搭建环境按照教程一步一步搭建即可,期间可能会有各种问题,这时候Google或者百度解决即可。socket编程编程部分分为两部分,c语言版本和python或者go版本的server和client,我这里使用go语言。建议先仔细看编程要求原创 2021-08-22 23:09:02 · 362 阅读 · 0 评论 -
用Go语言爬取基金数据(使用MySQL存储)
最近看到了一个Python爬取基金的实现,就心血来潮用Go语言实现了一个类似的版本:https://github.com/liu-jianhao/crawl_funds0. 准备工作选爬取的网站:https://danjuanfunds.com/funding/005827?channel=1300100141用Go语言的http包调用一下resp, err := http.Get(url)可以看到返回一个大JSON,然后挑选出里面我们需要的数据1. 爬取数据先读取fund原创 2021-08-14 21:00:24 · 593 阅读 · 0 评论 -
只需十分钟,几十行代码实现令牌桶算法
令牌桶算法代码地址前言在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。本文围绕限流,讨论令牌桶相关算法。背景令牌桶算法最初来源于计算机网络。在网络传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。流程产生令牌:周期性的以一定速率往令牌桶中增加令牌。如果桶中的令牌数达到桶容量,丢弃多余令牌。消耗令牌:接受请求或输入数据时会消原创 2020-08-19 20:14:25 · 1918 阅读 · 0 评论 -
Talent Plan:实现一个 Mini 版本的分布式 Key-value 数据库(二)
第一篇:https://blog.csdn.net/westbrookliu/article/details/107451683project2 RaftKV——Leader election这次实现的是Raft算法,该算法分为三部分实现:Leader electionLog replicationRaw node interface预备知识什么是Raft算法?可以看看下面这篇文章了解一下https://blog.csdn.net/westbrookliu/article/detai原创 2020-07-25 17:35:44 · 1114 阅读 · 2 评论 -
Talent Plan:实现一个 Mini 版本的分布式 Key-value 数据库(一)
最近想做一做一些小项目巩固一下Go语言知识和分布式系统的知识,偶然看到PingCAP的一个课程:https://university.pingcap.com/talent-plan/。看上去挺不错,本来还想搞一搞Rust的,但半途而废了orz,写习惯了Go,结果Rust看得很不顺眼(还是太菜了)。因此开一个坑,从五个路径中选了路径二,做完路径二再看看有没空做下其它路径。。先贴上我的github的代码:https://github.com/liu-jianhao/tinykv,我的解决思路方案再my_so原创 2020-07-19 21:25:37 · 2015 阅读 · 0 评论 -
Go语言学习笔记——方法
方法的声明方法的声明和普通函数类似,只是在函数名字前面多了一个参数,这个参数把这个方法绑定到这个参数对应的类型上,例:type Point struct{ X, Y float64 }func (p Point) Distance(q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y)}指针接收者的方法由于主调函数会复制...原创 2019-08-30 20:06:26 · 167 阅读 · 1 评论 -
Go语言学习笔记——函数
函数声明每个函数都包含一个名字、一个形参列表、一个可选的返回列表以及函数体:func name(parameter-list) (result-list) { body}当函数存在返回列表时,必须显示地以return语句结束,除非函数明确不会走完整个执行流程,比如在函数中抛出宕机异常挥着函数体内存在一个没有break退出条件的无限for循环函数的类型称为函数签名,当两个函数拥...原创 2019-08-29 09:58:41 · 131 阅读 · 0 评论 -
5分钟用Go语言实现一个协程池
近期在学习Go语言,自己实现了一个很简单的协程池,记录一下实现过程总体架构可以看到,架构很简单,就是客户通过Channel传一些任务给协程池,然后协程池里的worker就会执行Task结构体type Task struct { taskId int f func() error}Task结构体很简单,一个id,一个要执行的函数// Task的构造函数func NewTask...原创 2019-08-26 17:52:55 · 3393 阅读 · 3 评论 -
Go语言学习笔记——数组、slice
数组数组是具有固定长度且拥有零个或多个相同数据类型元素的序列由于数组固定长度,因此用的比较少,slice的长度是动态的,用的更多初始化默认初始化为元素类型的零值var a [3]int省略号出现在数组长度的位置,那么数组的长度由初始化的元素个数决定q := [...]int{1, 2, 3}fmt.Println("%T\n", q) // "[3]int"通过指定...原创 2019-08-23 13:55:56 · 178 阅读 · 0 评论 -
Go语言学习笔记——struct
结构体是将零个或这多个任意类型额命令变量组合在一起的聚合数据类型成员变量成员通过.号方式来访问结构体是一个变量,它的所有成员都是变量,因此可以给结构体的成员赋值。或者获取成员变量的地址,然后通过指针来访问它如果一个结构体变量名称是首字母大写的,那么这个变量是可导出的,这个是Go最主要的访问控制机制命令结构体类型S不可以定义一个拥有相同结构体类型S的成员变量,也就是一个聚合类型不可以包含...原创 2019-08-25 16:51:56 · 154 阅读 · 0 评论 -
Go语言学习笔记——map
map是散列表的引用,map的类型为map[K]V,K和V是字典的键和值对应的数据类型,map中所有的键都拥有相同的数据类型,同时所有的值都拥有相同的数据类型,但键的类型和值的类型不一定相同键的类型K必须是可以通过操作符==来进行比较的数据类型,所以map可以检测某一个键是否已经存在初始化内置函数make创建ages := make(map[string]int) // 创建一个...原创 2019-08-25 15:40:44 · 149 阅读 · 0 评论 -
用Go语言解释什么是RPC
简介远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。Go语言使用RPC...原创 2018-09-02 12:54:48 · 435 阅读 · 0 评论 -
《go web 编程》中chitchat项目详解(有详细中文注释)
ChitChatChitChat的数据模型: 1. User——表示论坛的用户信息 2. Session——表示论坛用户当前的登录会话 3. Thread——表示论坛里面的帖子,每一个帖子都记录了多个论坛用户之间的对话 4. Post——表示用户在帖子里面添加的回复:w注意如果直接go run 或者 go build 程序会有问题,要修改代码中import有关data包的路...原创 2018-08-20 21:30:59 · 2175 阅读 · 0 评论 -
遗传算法的简单实现(Go语言)
这是我自己写的一篇有关遗传算法的文章。摘 要 很多计算机科学算法往往都受自然界和生物的启发,遗传算法就是受到了生物的自然选择过程而产生的一个启发式算法,启发式算法会尝试通过一些假设来更快地解决问题,因此启发式算法并不是最优的。即便如此,在很多领域都有遗传算法的应用。因此,本文就使用Go语言来实现简单的遗传算法。关键词 遗传算法 Go语言Abstract Selection by bi...原创 2018-08-18 22:15:45 · 1487 阅读 · 0 评论