自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

转载 Golang教程:(二十六)go面向对象编程--结构体代替类

原文地址:https://golangbot.com/structs-instead-of-classes/欢迎来到第二十六讲。GO是面向对象的吗?go并不是一个纯面向对象编程语言。下面是从Go的FAQs上面摘录的一些关于go是不是面向对象语言的答复。Yes and no. Although Go has types and methods and allows an object-oriente...

2018-02-14 12:22:07 6328 3

转载 Golang教程:(二十五)Mutex

原文地址:https://golangbot.com/mutex/欢迎来到第二十五节,今天我们将学习如何使用互斥量(Mutexes)和通道(channels)解决竞争问题。临界区资源--Critical section在讲解互斥量之前,我们要先理解并发编程中临界区资源的概念。当我们并发的运行程序,多个协程不能同时运行修改资源的那段代码。修改资源的那段代码我们就成为临界区资源。比如我们有一个变量需要...

2018-02-09 17:16:25 1088

转载 Golang教程:(二十四)Select

原文地址:https://golangbot.com/select/欢迎来到第二十四节。什么是select?select模式是用来从多输入/输出通道中进行选择的一种操作。select模式下会一直阻塞直到至少一个可读/写操作就绪,如果多个读写操作就绪,那么久随机从中选择一个。语法有点类似switch除了每个case选择都是一个通道操作。为了更好理解上代码:package mainimport ...

2018-02-09 16:05:42 1201

转载 Golang教程:(二十三)缓冲通道和工人池

原文:https://golangbot.com/buffered-channels-worker-pools/什么是缓冲通道上一节我们讨论的是基本的无缓冲区的通道,对一个无缓冲的通道进行发送/写入和接收/读取数据是实时阻塞的。事实上我们可以创建一个带缓冲区的通道,往通道中发送数据时,只有当缓冲区满的情况下才会阻塞;类似的,只有我们从通道中读取数据时,只有读到缓冲区空为止才会阻塞。带缓冲的通道可以...

2018-02-08 10:57:23 1675 4

转载 Go批量修改文件名

工作中遇到了批量修改文件名的情况,为此写了个小程序,以供日后方便查看。 用法:renamedirfiles.exe -d "E:\shared\图片素材\ps123_20121120_01\背景图片打包下载" -p "bg%d"代码如下:package mainimport ( "flag" "fmt" "os" "path/filepath

2018-02-07 15:57:40 1553

转载 Go遍历文件夹

简介Go的path/filepath提供了Walk函数用来遍历文件夹,原型如下:func Walk(root string, walkFn WalkFunc) errorroot 为要遍历的文件夹。在遍历(按照字母顺序)每个文件或文件夹(包括root)时会调用walkFn,它的类型是WalkFunc:type WalkFunc func(path string, info

2018-02-07 15:29:18 1012

转载 Go解析命令行传入参数

APIGo的flag包用来解析命令行参数。 参数的表示方法为:-flag-flag=x-flag x // x不能是bool值主要的API如下:// 获取名字为name的参数值,默认值为value,用法为usage// 注意返回值是一个指针// 类似的方法还有 Int(),Bool()等。func String(name string, value strin

2018-02-07 14:43:41 904

转载 Golang教程:(二十二)信道

https://golangbot.com/channels/在这篇教程中,我们将讨论信道以及如何使用信道实现协程间通信。什么是信道信道(Channel)可以被认为是协程之间通信的管道。与水流从管道的一端流向另一端一样,数据可以从信道的一端发送并在另一端接收。声明信道每个信道都有一个与之关联的类型。此类型是允许信道传输的数据类型,除此类型外不能通过信道传

2018-02-07 14:26:30 2271 1

转载 Golang教程:(二十一)协程

在上一篇中,我们讨论了并发,以及并发和并行的区别。在这篇教程中我们将讨论在Go中如何通过Go协程实现并发。什么是协程Go协程(Goroutine)是与其他函数或方法同时运行的函数或方法。可以认为Go协程是轻量级的线程。与创建线程相比,创建Go协程的成本很小。因此在Go中同时运行上千个协程是很常见的。Go协程对比线程的优点与线程相比,Go协程的开销非常小。Go协程的堆

2018-02-07 14:25:04 524

转载 Golang教程:(二十)并发介绍

原文:https://golangbot.com/concurrency/欢迎来到Golang系列教程的第二十篇。Go是并发语言,而不是并行语言。在讨论Go并发性之前,我们必须首先了解什么是并发,以及并发与并行的区别。什么是并发并发(concurrency)是指一次处理大量事情的能力。让我们用一个例子来说明。假设一个人喜欢慢跑。在早上的慢跑中,他的鞋带开了。

2018-02-06 16:31:06 399

转载 Golang教程:(十九)接口 - II

欢迎来到Golang系列教程的第十九篇。这是介绍接口的第二篇。用指针接收者实现接口在接口I中所有例子都是以值为接收者。也可以使用指针接收者来实现接口。让我们通过一个程序看看这是如何做到的。package mainimport "fmt"type Describer interface { Describe()}type Person struct {

2018-02-06 16:13:50 361

转载 Golang教程:(十八)接口 - I

欢迎来到Golang系列教程的第十八篇。这个接口的第一部分,一共有两部分。什么是接口在面向对象语言中,接口一般被定义为 :接口定义了一个对象的行为。它仅仅指定了一个对象应该做什么。具体怎么做(实现细节)是由对象决定的。在 Go 中,一个接口定义为若干方法的签名。当一个类型定义了所有接口里的方法时,就说这个类型实现了这个接口。这和 OOP 很像。接口指定了一个类型应该包含什么

2018-02-06 15:02:37 485

转载 Golang教程:(十七)方法

欢迎来到Golang系列教程的第十七篇。什么是方法一个方法只是一个函数,它有一个特殊的接收者(receiver)类型,该接收者放在 func 关键字和函数名之间。接收者可以是结构体类型或非结构体类型。可以在方法内部访问接收者。通过下面的语法创建一个方法:func (t Type) methodName(parameter list) { }上面的代码片段创建

2018-02-06 12:14:11 485

转载 Golang教程:(十六)结构体

欢迎来到Golang系列教程的第十六篇。什么是结构体结构体(struct)是用户自定义的类型,它代表若干字段的集合。有些时候将多个数据看做一个整体要比单独使用这些数据更有意义,这种情况下就适合使用结构体。比如将一个员工的 firstName, lastName 和 age 三个属性打包在一起成为一个 employee 结构就是很有意义的。结构体的声明type E

2018-02-06 12:03:24 9820

转载 Golang教程:(十五)指针

这是本Golang系列教程的第十五篇。什么是指针指针是存储一个变量的内存地址的变量。  在上图中,变量 b 的值是 156,存储在地址为 0x1040a124 的内存中。变量 a 存储了变量 b 的地址。现在可以说 a 指向 b。指针的声明指向类型 T 的指针用 *T 表示。让我们写一些代码。package main

2018-02-06 11:59:39 452

转载 Golang教程:(十四)字符串

是本Golang系列教程的第十四篇。string 类型单独提取为一篇教程是因为在 Go 中,string 的实现方式同其他语言的不同。什么是字符串在 Go 中字符串是 byte 数组。可以通过将内容放在双引号 "" 之间的方式来创建一个字符串。让我们看一个简单的例子,该例子创建并打印一个字符串:package mainimport ( "fmt")

2018-02-06 11:51:11 358

转载 Golang教程:(十三)Map

这是本Golang系列教程的第十三篇。什么是 map?Map 是 Go 中的内置类型,它将键与值绑定到一起。可以通过键获取相应的值。如何创建 map?可以通过将键和值的类型传递给内置函数 make 来创建一个 map。语法为:make(map[KeyType]ValueType)。(译者注:map 的类型表示为 map[KeyType]ValueType)例如:

2018-02-06 11:43:53 396

转载 Golang教程:(十二)变参函数

这是本Golang系列教程的第十二篇。什么是变参函数?变参函数是指可以接受可变数量的参数的函数。语法如果一个函数的最后一个参数由 ...T 表示,则表示该函数可以接受任意数量的类型为 T 的参数。请注意只有函数的最后一个参数才能指定为可变参数。例子你有没有想过为什么 append 函数可以将任意数量的值追加到切片末尾?这是因为它是一个变参函数

2018-02-06 11:40:32 320

转载 Golang教程:(十一)数组和切片

这是本Golang系列教程的第十一篇。数组数组是类型相同的元素的集合。例如,整数 5, 8, 9, 79, 76 的集合就构成了一个数组。Go不允许在数组中混合使用不同类型的元素(比如整数和字符串)。声明数组的类型为 n[T],其中 n 表示数组中元素的个数,T 表示数组中元素的类型。元素的个数 n 也是数组类型的一部分(我们将在稍后详细讨论)。有很多声明数

2018-02-06 11:05:28 453

转载 Golang教程:(十)switch 语句

原文:https://golangbot.com/switch/这是本Golang系列教程的第十篇。switch 是一个条件语句,用于将一个表达式的求值结果与可能的值的列表进行匹配,并根据匹配结果执行相应的代码。可以认为 switch 语句是编写多个 if-else 子句的替代方式。举例是说明问题最好的方式,让我们写一个简单的程序,输入手指编号,输出对应的手指名称:)。例如

2018-02-05 11:44:20 326

转载 Golang教程:(九)循环语句

这是本Golang系列教程的第九篇。循环语句用于重复执行一段代码。for 语句是 Go 中唯一的循环语句。Go 没有提供其他语言(如 C)中的 while 和 do while 语句。for 语句语法for 语句的语法如下:for initialisation; condition; post { }其中, initialisation 为初始化

2018-02-05 11:42:46 376

转载 Golang教程:(八)if else 语句

这是本Golang系列教程的第八篇。if 是一个条件语句。if 语句的语法为:if condition { }如果 condition 为 true,那么就执行 { 和 } 之间的代码。与其它语言(如C)不同,即使 {} 之间只有一条语句,{} 也是必需的。if 语句后面可以接可选的 else if 和 else 语句:if condition {

2018-02-05 11:30:41 936

转载 Golang教程:(七)包

这是本Golang系列教程的第七篇。什么是包?为什么使用包?到目前为止我们见到的 Go 程序都只有一个文件,文件中包含了一个main函数和几个其他函数。在实际中这种将所有代码都放在一个文件里的组织方式是不可行的。这样的组织方式使得代码变得无法重用和维护困难。包(package)用于解决这样的问题。包用于组织Go源代码,以获得更好的重用性和可读性。包提供了代码封装的机制从而使

2018-02-05 11:29:38 608

转载 Golang教程:(六)函数

这是本Golang系列教程的第六篇。函数是完成一个特定任务的代码块。一个函数接受输入,对输入进行一些运算并产生输出。函数声明在 Go 中声明一个函数的语法为:func functionname(parametername type) returntype { //function body}函数声明以关键字 func 开头,后面是函数名字,接着是在 ( 

2018-02-05 11:26:32 364

转载 Golang教程:(五)常量

这是本Golang系列教程的第五篇。定义常量常量(constant)表示固定的值,比如:5,-89,"I love Go",67.89 等等。考虑如下程序:var a int = 50 var b string = "I love Go"上面的程序中, a 和 b 分别被赋值为常量 50 和 "I love Go"。关键字 const 用于指示常量,如 

2018-02-05 11:22:21 1484

转载 Golang教程:(四)类型

下面是 Go 支持的基本类型:boolNumeric Types int8, int16, int32, int64, intuint8,uint16,uin32,uint64, uintfloat32, float64complex64, complex128byterunestringboolbool 类型表示真假值,只能为 true 或 false。请运行

2018-02-05 11:20:52 312

转载 Golang教程:(三)变量

什么是变量变量(Variable)是给某个内存地址起的一个名字。我们用变量来存储某个特定类型的值。在 Go 中有多种声明变量的语法。声明单一变量声明一个变量的语法为:var name type,例如:package mainimport "fmt"func main() { var age int // variable declaration

2018-02-05 11:17:35 2267 1

转载 Golang教程:(二)Hello World

原文:https://golangbot.com/hello-world/这是本Golang系列教程的第二篇。除了亲自写代码以外没有更好的方式来学习一门新的编程语言。在这篇教程中我们将开始编写我们的第一个程序。我个人(原文作者)推荐使用 Visual Studio Code 搭配 Go插件 作为 IDE。它有自动完成,代码高亮以及另外一些实用功能。译者注:VSC

2018-02-05 11:10:42 391

转载 Golang教程:(一)介绍和安装

原文:https://golangbot.com/golang-tutorial-part-1-introduction-and-installation/这是本Golang系列教程的第一篇。什么是GolangGolang 又称为 Go,是由 Google 开发的一种开源的、编译型的、静态类型的编程语言。Golang 的主要目的是使开发高可用性和高扩展性的Web应用

2018-02-05 11:09:10 5103

原创 Windows下编译leveldb说明

环境:win7, vs2013源码链接:(Windows版本)https://github.com/google/leveldb/tree/windowsKyoto Cabinet先期准备:需用到sqlite3、Kyoto Cabinet、boost库支持,安装说明见(boost自行搜索比较简单):http://blog.csdn.net/zhangbohh8662

2017-11-07 16:19:28 3093

转载 C++boost之assign使用(二)

boost::assign是boost中一个对容器进行赋值的库,各种方法非常灵活使用。先举一个例子:[cpp] view plain copy/**   2 @author Amiber   3 @date 2012-12-15   4 **/    5     6 #include   //for std::co

2017-06-21 18:06:24 443

转载 C++boost库之assign使用(一)

头文件位于:boost/assign/list_of.hpp,boost::assign是boost中一个对容器进行赋值的库,各种方法非常灵活使用。使用示例如下:[cpp] view plain copy print?// operator+=  // 优点: 可应用与stl中定义的标准容器(vector, list, set, ma

2017-06-21 18:04:46 427

原创 C++boost库之variant使用

Variant库包含一个不同于union的泛型类,用于在存储和操作来自于不同类型的对象。这个库的一个特点是支持类型安全的访问,减少了不同数据类型的类型转换代码的共同问题。通过boost的variant类型,variant类型可以表示任意一种类型和any类型有些相似,但还是有些区别,比如说variant支持的类型需提前定义,而any类型不需要,获取any类型的值需要给出原始类型,然而vari

2017-06-21 17:45:57 1899

转载 Openssl 之大数运算函数 BN

主要介绍Openssl中的有关大数运算函数,这个对于RSA研究和实现比较有价值 1.初始化函数 BIGNUM *BN_new(void);    新生成一个BIGNUM结构  void BN_free(BIGNUM *a);   释放一个BIGNUM结构,释放完后a=NULL;  void BN_init(BIGNUM *);    初始化所有项均为0,

2017-06-01 16:22:28 1566

转载 Kyoto Cabinet库的编译说明

转载自:http://blog.csdn.net/fan_hai_ping/article/details/8236973因为本人要编译window下的bitcoin master版本的源码所以只针对Windows部分介绍。简介      Kyoto Cabinet是一个数据库管理的库,是TokyoCabinet的改进版本。数据库是一个简单的包含记录的数据文件,每个记录是一个键

2017-05-24 15:06:54 744 1

原创 Windows 下SQLite3的安装与使用

SQLite是一款轻量级的本地数据库,支持Windows/Linux/Unix等等主流的操作系统,同时支持很多程序语言,比如 C++、C#、PHP、Java等本篇主要讲述如何在Windows下编译和使用SQLite数据库。一、下载http://www.sqlite.org/download.html,下载我下载的是64位。二、

2017-05-23 16:14:42 7801

转载 常用 Git 命令

我每天使用 Git ,但是很多命令记不住。一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库

2017-05-23 15:45:13 245

转载 C/C++网络编程总结与ZeroMQ

转载自:http://blog.csdn.net/mydipan396/article/details/44411171现在几乎所有C/C++的后台程序都需要进行网络通讯,其实现方法无非有两种:使用系统底层socket或者使用已有的封装好的网络库。本文对两种方式进行总结,并介绍一个轻量级的网络通讯库ZeroMQ。1.基本的Scoket编程关于基本的s

2017-05-23 15:44:00 612

转载 Windows下 Zmq v4.0.4的使用 (C++)

Windows下 Zmq v4.0.4的使用 (C++)最近在研究Zero的使用。我在网上找了一下,发觉大部分博客都写得乱七八糟,又不写明什么版本,什么系统下的,我都不知道怎么样才能弄出个编译过的程序来,只好自己摸索了。我是windows下 使用vs2010的,v4.0.4的版本官方 0mq api 好像还没加上去,我是参照老版本(v3.1)的用法来的。

2017-05-23 15:33:49 2906

转载 windows下编译及使用libevent

windows下编译及使用libeventLibevent官网:http://libevent.org/windows 7下编译:编译环境: windows 7 + VS2010(1)解压libevent到F:\libevent\libevent-2.0.21-stable(2)打开Microsoft visual studio 2010命令行工具(3)

2017-05-23 14:51:32 405

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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