自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 (十五)Go爬虫开发

爬虫简介 Go爬虫的实现手段,主要使用的还是net/http这个包。它不仅可以接收浏览器发送过来的请求,实现服务器的功能,也可以模拟浏览器向其它的服务器发送请求。基本的流程如下: 构建、发送请求链接 获取服务器返回的响应数据 过滤、保存、使用得到的数据 关闭请求链接。 打印出完整的网页内容,和...

2020-05-28 23:03:53 13 0

原创 (十四)Go聊天室实践
原力计划

并发编程和网络编程是现今行业开发中常用的技术。Go语言强大的语法设定使得并发和网络编程都变的简洁而高效。 下面使用并发和网络实现一个简单的网络在线聊天室。在整个聊天室的项目中,充分利用了协程并发,处理不同任务。 模块划分 整个聊天室程序可简单划分为如下模块,都分别使用协程来实现: 主协程(服务...

2020-05-26 04:59:33 15 0

原创 (十三)Go网络编程
原力计划

网络介绍 网络协议 从应用的角度出发,协议可理解为规则,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK给传输方; 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK; 第三次,传输文件内容。同样,接收方接收数据完成后应答...

2020-05-23 21:21:22 85 0

原创 (十二)Go文件处理
原力计划

Go 运行中的数据保存在内存中。如果希望数据长久的保存在电脑中,这就需要使用 Go 生成文件,添加数据了。 创建文件 GO语言中提供了一个Create( )函数专门创建文件。该函数在创建文件时,首先会判断要创建的文件是否存在,如果不存在,则创建,如果存在,会先将文件中已有的数据清空。 同时,当文件...

2020-05-21 01:36:36 23 0

原创 (十一)Go字符串

字符编码 Go 语言中的标识符可以包含任何 Unicode 编码可以表示的字母字符。把整数转换为 string 的时候,被转换整数应该可以代表一个有效 Unicode, 否则转换结果是"�",即:一个仅由高亮的问号组成的字符串值。 string 类型值别转换为 []rune 类...

2020-05-19 07:00:36 104 0

原创 (十)Go同步通讯
原力计划

sync同步 “sync”的中文意思是“同步”。相比于 Go 语言宣扬的“用通讯的方式共享数据”,通过共享数据的方式来传递信息和协调线程运行的做法其实更加主流,目前大多数的现代编程语言都是用后一种方式作为并发编程的解决方案的。 一旦数据被多个线程共享,那么就很可能会产生争用和冲突的情况。这种情况也...

2020-05-17 23:00:54 41 0

原创 (九)Go通道笔记
原力计划

通道(channel)是Go 语言的一种特色类型。利用通道可以在多个 goroutine 之间传递数据。通道类型的值是并发安全的,也是 Go 语言自带的、唯一一个可以满足并发安全性的类型。 通道的使用 在声明并初始化一个通道的时候,需要用到 Go 语言的内建函数make。就像用make初始化切片那...

2020-05-16 17:10:12 41 0

原创 (八)Goroutine 笔记

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

2020-05-06 21:54:20 22 0

原创 (七)Go测试与性能调优

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

2020-04-30 00:29:22 39 0

原创 (六)Go错误处理和资源管理
原力计划

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

2020-04-29 09:36:36 24 0

原创 (五)Go函数式编程

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

2020-04-27 23:00:27 15 0

原创 (四)Go面向接口笔记
原力计划

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

2020-04-27 00:57:48 25 0

原创 (三)Go 面向对象笔记
原力计划

Go 语言中没有 class ,不支持继承等面向对象的概念。Go 语言的结构体与“类”都是复合结构体,但 Go 语言中结构体的内嵌配合接口比面向对象具有更高的扩展性和灵活性。 Go 语言的类型可以被实例化,使用new或&构造的类型实例的类型是类型的指针。 结构体和方法 结构体是由一系列具有...

2020-04-26 08:46:48 42 0

原创 (二)Go 内建容器笔记

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

2020-04-25 13:44:56 39 0

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

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

2020-04-24 09:53:48 102 0

原创 (一)Go 语言基础笔记

变量声明 Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字,可一次声明多个变量 var identifier1, identifier2 type // 变量类型都为 type 如果没有声明变量类型, Go 语言会自动推断出变量类型。 v...

2020-04-24 01:19:20 18 0

原创 Eggjs学习系列(八)加载器

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

2020-04-23 13:42:52 35 0

原创 JavaScript装饰器实践

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

2020-04-22 01:49:21 23 0

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

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

2020-04-17 00:56:14 85 0

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

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

2020-04-16 16:57:17 180 0

原创 Eggjs学习系列(五) Sequelize的使用

Eggjs学习系列(五) Sequelize的使用 简单的数据库操作通过使用egg-mysql 插件基本上可以满足需求,而在一些较为复杂的应用中,我们可能会需要一个 ORM 框架来帮助我们管理数据层的代码。sequelize 是一个广泛使用的 ORM 框架,支持多种数据库。ORM 即使用面向对象的...

2020-04-16 14:05:15 143 0

原创 ArrayBuffer 实践

ArrayBuffer 实践 ArrayBuffer对象、TypedArray视图和DataView视图是 JavaScript 操作二进制数据的一个接口。都是以数组的语法处理二进制数据,所以统称为二进制数组。主要用于二进制数据的通信。 ArrayBuffer 以数组的形式直接操作内存,提升了...

2020-04-16 01:18:49 41 0

原创 Eggjs学习系列(四) 数据库操作

Eggjs学习系列(四) 数据库操作 操作数据库是后端日常开发中必不可少的一个环节。Egg.js也提供了相应的插件,其中,最常用的是egg-mysql,用来访问操作数据库。 egg-mysql 安装和配置插件 npm i --save egg-mysql 安装完成插件后,在 config 中开...

2020-04-15 10:47:50 33 0

原创 Eggjs学习系列(三) 爬虫项目进阶

Eggjs学习系列(三) 爬虫项目进阶 通过上一次爬虫项目实战,初步完成了网页内容的抓取和展示,接下是给网站添加登录功能。 登录功能 首先编写基本的登录页面 <!-- app/view/news/login.tpl --> <!DOCTYPE html> <html ...

2020-04-14 10:42:56 22 0

原创 Eggjs学习系列(二) 爬虫项目实战

Eggjs框架结构 路由 Router 主要用来描述请求 URL 和 Controller 的对应关系, 框架的 app/router.js 文件统一管理路由规则。 // app/router.ts import { Application } from 'egg'; //...

2020-04-13 08:04:53 60 0

原创 Eggjs学习系列(一) 使用TypeScript快速入门

Eggjs学习系列(一) 使用TypeScript快速入门 Eggjs是一个node的渐近式开发框架,用于服务端开发。而 TypeScript 是 JavaScript的超集,在兼容 JavaScript的基础上增加了类型检查、智能提示等特性,适用于大规模的企业项目开发。下面是Eggjs在 Typ...

2020-04-12 18:18:24 193 0

原创 C语言内存管理实践

C语言内存管理 作用域 C语言变量的作用域分为: 代码块作用域(代码块是{}之间的一段代码) 函数作用域 文件作用域 局部变量 局部变量也叫auto自动变量(auto可写可不写),一般情况下代码块{}内部定义的变量都是自动变量,它有如下特点: 在一个函数内定义,只在函数范围内有效 在复合语句...

2020-04-08 22:03:29 31 0

原创 C++友元实践

C++友元 类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办? 友元函数提供了一种解决方法,友元函数是一种特权函数,c++允许这个特权函数访问私有成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。...

2020-04-08 11:05:04 10 0

原创 C++ 修饰符使用总结

C++ 修饰符使用总结 基础类型修饰符 C++ 允许在 char、int 和 double 等基础数据类型前放置修饰符。基本类型常用的修饰符有: signed unsigned long short 修饰符 signed、unsigned、long 和 short 可应用于整型...

2020-04-07 11:41:29 30 0

原创 C++引用使用总结

C++引用 引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。引用是指针的另一种表示方式。 引用与指针区别: 引用很容易与指针混淆,它们之间有三个主要的不同: 引用不能为空。 引用指定过后不能修改。 引用必须在创建...

2020-04-06 23:23:08 19 0

原创 C语言const关键字详解

const 在实际编程中用得并不多,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。 说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法...

2020-04-06 02:02:45 30 0

原创 C语言的typeof关键字

c语言中typeof关键字,是C语言中的一个新扩展。typeof的参数可以是两种形式:表达式或类型。 下面这两个等效声明,用于声明int类弄的变量a typeof(int) a; typeof('b') a; //相当于获取'b'的类型,定义一个变量a //...

2020-04-05 21:31:42 50 0

原创 理解void和sizeof关键字

void的字面值是“无类型”,void*则是"无类型指针"。void*可以指向任何类型的数据。void几乎只有"注释"和限制程序的作用,因为从来没有人会定义一个void变量。 void a;    //编译时提示"illegal use of ty...

2020-04-05 18:03:23 28 0

提示
确定要删除当前文章?
取消 删除