3 taokexia

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 23w+

(十五)Go爬虫开发

爬虫简介Go爬虫的实现手段,主要使用的还是net/http这个包。它不仅可以接收浏览器发送过来的请求,实现服务器的功能,也可以模拟浏览器向其它的服务器发送请求。基本的流程如下:构建、发送请求链接获取服务器返回的响应数据过滤、保存、使用得到的数据关闭请求链接。打印出完整的网页内容,和浏览器获取的内容是一样的。只不过我们写的.go程序是直接将服务器返回的所有数据内容打印出来,而浏览器是将服务器返回的内容(代码)按照既定的方式加以执行并显示给用户看,所以我们在浏览器上会看到文字,图片等信息。*

2020-05-28 23:03:53

(十四)Go聊天室实践

并发编程和网络编程是现今行业开发中常用的技术。Go语言强大的语法设定使得并发和网络编程都变的简洁而高效。下面使用并发和网络实现一个简单的网络在线聊天室。在整个聊天室的项目中,充分利用了协程并发,处理不同任务。模块划分整个聊天室程序可简单划分为如下模块,都分别使用协程来实现:主协程(服务器):负责监听、接收用户(客户端)连接请求,建立通信关系。同时启动相应的协程处理任务。处理用户连接协程:HandleConnect:负责新上线用户的存储,用户消息读取、发送,用户改名、下线处理及超时处理。

2020-05-26 04:59:33

(十三)Go网络编程

网络介绍网络协议从应用的角度出发,协议可理解为规则,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的规则即为协议。这

2020-05-23 21:21:22

(十二)Go文件处理

Go 运行中的数据保存在内存中。如果希望数据长久的保存在电脑中,这就需要使用 Go 生成文件,添加数据了。创建文件GO语言中提供了一个Create( )函数专门创建文件。该函数在创建文件时,首先会判断要创建的文件是否存在,如果不存在,则创建,如果存在,会先将文件中已有的数据清空。同时,当文件创建成功后默认会打开文件,所以不用再执行打开操作,可以直接向该文件中写入数据。import "os"func CreateFile(path string) { // 创建文件,返回两个值 /

2020-05-21 01:36:36

(十一)Go字符串

字符编码Go 语言中的标识符可以包含任何 Unicode 编码可以表示的字母字符。把整数转换为 string 的时候,被转换整数应该可以代表一个有效 Unicode, 否则转换结果是"�",即:一个仅由高亮的问号组成的字符串值。string 类型值别转换为 []rune 类型时,其字符串会拆分成一个个 Unicode 字符。Go 语言采用的字符编码方案从属于 Unicode 编码规范,其源码文件必须使用 UTF-8 编码格式进行存储。ASCII 编码ASCII 编码方案使用单个字节(byte)的二进

2020-05-19 07:00:36

(十)Go同步通讯

sync同步“sync”的中文意思是“同步”。相比于 Go 语言宣扬的“用通讯的方式共享数据”,通过共享数据的方式来传递信息和协调线程运行的做法其实更加主流,目前大多数的现代编程语言都是用后一种方式作为并发编程的解决方案的。一旦数据被多个线程共享,那么就很可能会产生争用和冲突的情况。这种情况也被称为竞态条件(race condition),这往往会破坏共享数据的一致性。同步的用途有两个:避免多个线程在同一时刻操作同一个数据块协调多个线程,避免它们在同一时刻执行同一个代码块由于这样的数据块和代

2020-05-17 23:00:54

(九)Go通道笔记

通道(channel)是Go 语言的一种特色类型。利用通道可以在多个 goroutine 之间传递数据。通道类型的值是并发安全的,也是 Go 语言自带的、唯一一个可以满足并发安全性的类型。通道的使用在声明并初始化一个通道的时候,需要用到 Go 语言的内建函数make。就像用make初始化切片那样,我们传给这个函数的第一个参数应该是代表了通道的具体类型的类型字面量,此外,还可以接收一个int型的参数(可选),用来表示通道容量。所谓通道的容量,就是指通道最多可以缓存多少个元素值。由此,虽然这个参数是in

2020-05-16 17:10:12

(八)Goroutine 笔记

支持高并发编程模式是 Go 的一大特色。其中,Goroutine(协程)是 Go 中最基本的执行单元。每个 Go 程序至少包含一个 主 Goroutine。并发与并行区别:并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。...

2020-05-06 21:54:20

(七)Go测试与性能调优

测试传统测试测试数据和测试逻辑混在一起出错信息不明确一旦一个数据出错测试全部结束@Test public void testAdd() { assertEquals(3, add(1, 2)); assertEquals(2, add(0, 2)); assertEquals(Integer.MIN_VALUE, add(1, Integer.MAX_VALU...

2020-04-30 00:29:22

(六)Go错误处理和资源管理

defer调用defer调用也是一种流程控制语句,经常用来调用一些资源处理函数。确保调用在函数结束时发生,defer 调用必须出行在函数内,并且在该函数返回之前才会去执行 defer 调用的函数。简单示例func testdefer(){ // defer在函数最后才去执行。 defer fmt.Println("2") fmt.Println("1")} func mai...

2020-04-29 09:36:36

(五)Go函数式编程

函数与闭包闭包就是指有权访问另一个函数作用域中的变量的函数。闭包由两部分构成:函数,以及创建该函数的环境。环境由闭包创建时在作用域中的任何局部变量组成。正常情况下,外部函数调用完后其内部变量对象就应该被销毁,但闭包的存在使得我们仍然能够访问外部函数的变量对象。Go语言对函数式编程主要是体现在闭包上面。函数式编程 vs 函数指针:函数是一等公民:参数,变量,返回值都可以是函数(c++里只...

2020-04-27 23:00:27

(四)Go面向接口笔记

duck typing鸭子类型含义: 像鸭子走路,像鸭子叫(长得像鸭子),那么就是鸭子。用于描述事物得外部行为而非内部结构,不强制限定传入的参数的类,只要具有相关的属性和方法就能执行成功。JavaScript 的 duck typingfunction download(reciver) { reciver.get('test')}// 只要传入参数有 get 方法就能调用成...

2020-04-27 00:57:48

(三)Go 面向对象笔记

Go 语言中没有 class ,不支持继承等面向对象的概念。Go 语言的结构体与“类”都是复合结构体,但 Go 语言中结构体的内嵌配合接口比面向对象具有更高的扩展性和灵活性。Go 语言的类型可以被实例化,使用new或&构造的类型实例的类型是类型的指针。结构体和方法结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体的定义只是内存布局描述,还没分配内存,当结构体实例化后,...

2020-04-26 08:46:48

(二)Go 内建容器笔记

数组Go 语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。声明数组语句:// var variable_name [SIZE] variable_typevar balance [10] float32初始化数组// 初始化元素的个数不能超过 []中的数字。var array1 =...

2020-04-25 13:44:56

Eggjs学习系列(九) 插件开发实践

插件机制是 Egg 框架的一大特色。它不但可以保证框架核心的足够精简、稳定、高效,还可以促进业务逻辑的复用,生态圈的形成。插件也跟应用一样,包含了 Service、中间件、extend等等,没有独立的 Router 和 Controller,也没有 plugin.js 这份插件配置文件。搭建开发环境使用 Egg 提供的脚手架 egg-boilerplate-plugin 来开发插件$ ...

2020-04-24 09:53:48

(一)Go 语言基础笔记

变量声明Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字,可一次声明多个变量var identifier1, identifier2 type // 变量类型都为 type如果没有声明变量类型, Go 语言会自动推断出变量类型。var d = true // 变量类型为 bool当一个变量被声明之后,系统自动赋予它该类型的零值...

2020-04-24 01:19:20

Eggjs学习系列(八)加载器

Egg 是在 Koa 基础上封装并增加了一些约定的框架,通过加载器(Loader)来加载不同目录下代码,实现各种的功能,要开发 Eggjs 插件和框架,首先要了解 Eggjs 的加载器。应用、框架、插件要了解加载器,首先要了解 Egg 框架的结构。Egg 应用通过框架运行起来并根据功能需要加载插件。插件只完成特定功能,通过配置依赖,在 config/plugin.ts 中开启插件。impor...

2020-04-23 13:42:52

JavaScript装饰器实践

装饰器(Decorator)是一种设计模式,通过装饰器可以注释或修改类和类方法,而不必重复编写代码,提高开发效率。许多面向对象的语言都有这项功能。装饰器模式Decorator 是ES7中添加的JavaScript新特性。而在 TypeScript 中,很早就支持 Decorator 了。说到 Decorator ,首先要来了解装饰器模式。装饰器模式的定义是“在不改变原对象的基础上,通过对其进行...

2020-04-22 01:49:21

Eggjs学习系列(七) 多进程实践

JavaScript 是单线程的,只能运行在一个CPU上,这样不能充分发挥计算机的性能。为了更好地利用多核环境,Node.js 提供了 Cluster 模块,可以方便的创建多个子进程,提高项目运行效率。Cluster 模块Cluster 模块将进程分为 Master 进程和 Worker 进程:负责启动其他进程的叫做 Master 进程,只负责启动其他进程。其他被启动的叫 Worker ...

2020-04-17 00:56:14

Eggjs学习系列(六) Socket.IO实践

Eggjs学习系列(六) Socket.IO实践Socket.IO 是一个基于 Node.js 的实时应用程序框架,在即时通讯、通知与消息推送,实时分析等场景中有较为广泛的应用。Eggjs提供了 egg-socket.io插件来实现 websocket 通信,并增加了下列开发规约:namespace: 通过配置的方式定义 namespace(命名空间)middleware: 对每一次...

2020-04-16 16:57:17

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。