随笔分类 -  Go

Go相关
摘要:一个比特(bit)可以是0,或者是1,8个比特(bit),组成一个字节(byte)。全为0时代表数字0,全为1时代表数字255。 一个字节可以表示256个数字,两个字节可以表示65536个数字。 更多的字节,可以有更多的组合,就可以表示更大的数值范围。 整数可以这么存,那字符呢?一堆二进制的0和1, 阅读全文
posted @ 2022-04-19 16:31 itbsl 阅读(539) 评论(0) 推荐(0) 编辑
摘要:在Go语言并发编程中,用一个goroutine来处理一个任务,而它又会创建多个goroutine来负责不同子任务的场景非常常见。如下图 这些场景中,往往会需要在API边界之间以及过程之间传递截止时间、取消信号或与其它请求相关的数据 谁是性能卡点呢?得通知它们任务取消了。 这时候就可以使用Contex 阅读全文
posted @ 2021-01-14 14:21 itbsl 阅读(3625) 评论(3) 推荐(8) 编辑
摘要:安装Redis客户端 Go语言中使用第三方库https://github.com/go-redis/redis连接Redis数据库并进行操作。使用以下命令下载并安装: go get github.com/go-redis/redis/v8 注:导入时指定了版本v8,忽略版本是一个常见错误 连接red 阅读全文
posted @ 2020-12-27 18:33 itbsl 阅读(29122) 评论(0) 推荐(10) 编辑
摘要:对于文件,我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的word文档,txt文件,Excel文件...等等都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频,声音...... 文件在程序中是以流的形式来操作的。 流:数据在数据源(文件)和程序(内存) 阅读全文
posted @ 2020-06-05 22:28 itbsl 阅读(1702) 评论(0) 推荐(0) 编辑
摘要:当你在浏览器中输入URL时,实际上是在发送一个对Web页面的请求。该请求被发送到服务器。服务器的工作是获取适当的页面并将其作为响应发送回浏览器。 在Web的早期,服务器通常读取服务器硬盘上HTML文件的内容并将该HTML发送回浏览器。 但今天,服务器更常见的是与程序通信来完成请求,而不是读取文件。这 阅读全文
posted @ 2020-01-10 13:14 itbsl 阅读(16015) 评论(0) 推荐(2) 编辑
摘要:[TOC] 概述 简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。 随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会在后台执行各种计算任务和网络请求。即使是传统的批处理问题 读取数据,计算,写输出 现在也会用并发来 阅读全文
posted @ 2020-01-08 10:22 itbsl 阅读(3381) 评论(3) 推荐(7) 编辑
摘要:流程分析 借助TCP完成文件的传输,基本思路如下: 1. 发送方(客户端)向服务端发送文件名,服务端保存该文件名。 2. 接收方(服务端)向客户端返回一个消息ok,确认文件名保存成功。 3. 发送方(客户端)收到消息后,开始向服务端发送文件数据。 4. 接收方(服务端)读取文件内容,写入到之前保存好 阅读全文
posted @ 2020-01-07 14:08 itbsl 阅读(3556) 评论(1) 推荐(2) 编辑
摘要:[TOC] 概述 网络协议 从应用的角度出发,协议可理解为“ 规则 ”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK给传输方; 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK; 第三次,传输文件内容。同样,接收方接收数 阅读全文
posted @ 2020-01-06 16:31 itbsl 阅读(3886) 评论(6) 推荐(2) 编辑
摘要:Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。 以下的程序,我们串行地去执行两次loop函数: go package main import "fmt" func main() { loop() loop() } func loop() { for i := 0; i 阅读全文
posted @ 2019-09-03 23:24 itbsl 阅读(537) 评论(0) 推荐(0) 编辑
摘要:如果你看过 Go 语言标准库,应该有见到过,有一些函数只有签名,没有函数体。你有没有感觉到很奇怪?这到底是怎么回事?我们自己可以这么做吗?本文就来解密它。 首先,函数肯定得有实现,没有函数体,一定是在其他某个地方。Go 中一般有两种形式。 函数签名使用Go,然后通过该包中的汇编文件来实现它 比如,在 阅读全文
posted @ 2019-08-26 10:05 itbsl 阅读(1724) 评论(0) 推荐(1) 编辑
摘要:[TOC] strings包实现了用于操作字符的简单函数。 func EqualFold 判断两个utf 8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。 示例: HasPrefix 判断s是否有前缀字符串prefix。 示例: func HasSuffix 判断s是否 阅读全文
posted @ 2019-04-27 19:45 itbsl 阅读(2045) 评论(0) 推荐(0) 编辑
摘要:[TOC] 结构体转json 结构体转json示例: go package main import ( "encoding/json" "fmt" ) //用户 type User struct { UserName string NickName string Age int Birthday s 阅读全文
posted @ 2019-04-01 19:04 itbsl 阅读(15697) 评论(0) 推荐(0) 编辑
摘要:`WaitGroup`在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组、团队的意思,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行。 先说说WaitGroup的用途: 它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所 阅读全文
posted @ 2019-04-01 17:37 itbsl 阅读(832) 评论(1) 推荐(1) 编辑
摘要:[TOC] 在上一节中我们介绍了 "数组和切片的实现原理" ,这一节会介绍 Golang 中的另一个集合元素 — 哈希,也就是 Map 的实现原理;哈希表是除了数组之外,最常见的数据结构,几乎所有的语言都会有数组和哈希表这两种集合元素,有的语言将数组实现成列表,有的语言将哈希表称作结构体或者字典,但 阅读全文
posted @ 2019-03-26 14:52 itbsl 阅读(2843) 评论(0) 推荐(0) 编辑
摘要:[TOC] 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是非常重要的,除了数组之外,Go 语言引入了另一个概念 — 切片,切片与数组有一些类似,但是它们的不同之处导致使用上会产生巨大的差别。 这里我们将从 Go 语言 " 阅读全文
posted @ 2019-03-26 14:31 itbsl 阅读(4562) 评论(0) 推荐(0) 编辑
摘要:[TOC] Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码。 性能测试系统可以给出代码的性能数据,帮助测试者分析性能问题。 单元测试 概述 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般要根据实 阅读全文
posted @ 2019-03-21 16:26 itbsl 阅读(2267) 评论(2) 推荐(1) 编辑
摘要:反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样 阅读全文
posted @ 2019-03-18 14:11 itbsl 阅读(19226) 评论(1) 推荐(5) 编辑
摘要:[TOC] 接口是什么? Go 语言不是一种 “传统” 的面向对象编程语言:它里面没有类和继承的概念。 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性。接口提供了一种方式来 说明 对象的行为:如果谁能搞定这件事,它就可以用在这儿。 简单的说,interface是一组me 阅读全文
posted @ 2019-03-06 14:45 itbsl 阅读(822) 评论(0) 推荐(0) 编辑
摘要:[TOC] 写过C/C++的同学都知道,调用著名的malloc和new函数可以在堆上分配一块内存,这块内存的使用和销毁的责任都在程序员。一不小心,就会发生内存泄露,搞得胆战心惊。 切换到Golang后,基本不会担心内存泄露了。虽然也有new函数,但是使用new函数得到的内存不一定就在堆上。堆和栈的区 阅读全文
posted @ 2019-03-05 14:40 itbsl 阅读(8187) 评论(2) 推荐(3) 编辑
摘要:[TOC] Go通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(composite types),当需要定义一个类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把 阅读全文
posted @ 2019-02-27 14:59 itbsl 阅读(1327) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示