- 博客(30)
- 资源 (4)
- 收藏
- 关注
翻译 Golang教程:(二十二)信道
原文:https://golangbot.com/channels/欢迎来到Golang系列教程的第二十二篇。在上一篇教程中,我们讨论了如何使用协程实现并发。在这篇教程中,我们将讨论信道以及如何使用信道实现协程间通信。什么是信道信道(Channel)可以被认为是协程之间通信的管道。与水流从管道的一端流向另一端一样,数据可以从信道的一端发送并在另一端接收。声明信道每个
2017-07-27 09:44:39 6204 7
原创 C++ 通过 JNI 调用 Java 代码
简介JNI 是 Java Native Interface 的缩写,它提供了若干的API实现了 Java 和其他语言(主要是 C&C++)的通信。本篇主要介绍通过 C++ 调用 Java 代码的一般方法。本例的开发环境为:WIN10 + VS2015 + JDK1.8.0_131首先我们需要建立一个 Java 项目,为了简单起见,这里没有用到 IDE 。建立 Java 项目建立如下的目录结构:JIN
2017-07-22 15:23:54 9722 5
原创 POCO: 日志的使用
入门#include "Poco/Logger.h"#include "Poco/AutoPtr.h"#include "Poco/ConsoleChannel.h"int main(){ /* 1.获取 root logger */ auto &logger = Poco::Logger::root(); /* 2.设置管道 */ Poco::Au
2017-07-21 13:55:01 3068
原创 VS2015 编译和使用 gRPC
说明本例的环境为:WIN10 + VS2015 gRPC 的版本为: 1.4.2 protobuf 的版本为: 3.3.2准备工作本例使用 VS2015 进行编译,其他版本的 VS 没有试过,不过大致步骤应该差不多。确保环境变量 PATH 包含 git.exe 所在目录,因为我们要通过 git 下载 gRPC 源码。下载并安装 Active State Perl。本例下载的是64:Acti
2017-07-20 16:33:59 3783 2
翻译 Golang教程:(二十一)协程
原文:https://golangbot.com/goroutines/在上一篇教程中,我们讨论了并发,以及并发和并行的区别。在这篇教程中我们将讨论在Go中如何通过Go协程实现并发。什么是协程Go协程(Goroutine)是与其他函数或方法同时运行的函数或方法。可以认为Go协程是轻量级的线程。与创建线程相比,创建Go协程的成本很小。因此在Go中同时运行上千个协程是很常见的。
2017-07-18 06:46:47 14572
翻译 Golang教程:(十九)接口 - II
原文:https://golangbot.com/interfaces-part-2/欢迎来到Golang系列教程的第十九篇。这是介绍接口的第二篇。如果你还没有阅读第一篇,可以在这里阅读。用指针接收者实现接口在 接口 - I 中所有例子都是以值为接收者。也可以使用指针接收者来实现接口。让我们通过一个程序看看这是如何做到的。package mainimport "fmt"
2017-07-17 08:11:17 2688
翻译 Golang教程:(十八)接口 - I
原文:https://golangbot.com/interfaces-part-1/欢迎来到Golang系列教程的第十八篇。这个接口的第一部分,一共有两部分。什么是接口在面向对象语言中,接口一般被定义为 :接口定义了一个对象的行为。它仅仅指定了一个对象应该做什么。具体怎么做(实现细节)是由对象决定的。在 Go 中,一个接口定义为若干方法的签名。当一个类型定义了所有接口里的方法
2017-07-17 08:10:46 3579
翻译 Golang教程:(十七)方法
原文:https://golangbot.com/methods/欢迎来到Golang系列教程的第十七篇。什么是方法一个方法只是一个函数,它有一个特殊的接收者(receiver)类型,该接收者放在 func 关键字和函数名之间。接收者可以是结构体类型或非结构体类型。可以在方法内部访问接收者。通过下面的语法创建一个方法:func (t Type) methodName(par
2017-07-17 08:09:57 3218
翻译 Golang教程:(十六)结构体
原文:https://golangbot.com/structs/欢迎来到Golang系列教程的第十六篇。什么是结构体结构体(struct)是用户自定义的类型,它代表若干字段的集合。有些时候将多个数据看做一个整体要比单独使用这些数据更有意义,这种情况下就适合使用结构体。比如将一个员工的 firstName, lastName 和 age 三个属性打包在一起成为一个 employ
2017-07-17 08:09:17 4300
翻译 Golang教程:(十五)指针
原文:https://golangbot.com/pointers/这是本Golang系列教程的第十五篇。什么是指针指针是存储一个变量的内存地址的变量。 在上图中,变量 b 的值是 156,存储在地址为 0x1040a124 的内存中。变量 a 存储了变量 b 的地址。现在可以说 a 指向 b。指针的声明指向类型 T 的指针用 *T 表示。让我们写一些代码
2017-07-17 08:08:35 19175
翻译 Golang教程:(十四)字符串
原文:https://golangbot.com/strings/这是本Golang系列教程的第十四篇。string 类型单独提取为一篇教程是因为在 Go 中,string 的实现方式同其他语言的不同。什么是字符串在 Go 中字符串是 byte 数组。可以通过将内容放在双引号 "" 之间的方式来创建一个字符串。让我们看一个简单的例子,该例子创建并打印一个字符串:packag
2017-07-16 08:04:49 3592
翻译 Golang教程:(十三)Map
原文:https://golangbot.com/maps/这是本Golang系列教程的第十三篇。什么是 map?Map 是 Go 中的内置类型,它将键与值绑定到一起。可以通过键获取相应的值。如何创建 map?可以通过将键和值得类型传递给内置函数 make 来创建一个 map。语法为:make(map[KeyType]ValueType)。例如:personSalary
2017-07-16 08:04:05 17516
翻译 Golang教程:(十二)变参函数
原文:https://golangbot.com/variadic-functions/这是本Golang系列教程的第十二篇。什么是变参函数?变参函数是指可以接受可变数量的参数的函数。语法如果一个函数的最后一个参数由 ...T 表示,则该函数可以接受任意数量的类型为 T 的参数。请注意只有函数的最后一个参数才能指定为可变参数。例子你有没有想过为什么 appe
2017-07-16 08:03:14 4650 2
翻译 Golang教程:(十一)数组和切片
原文:https://golangbot.com/arrays-and-slices/这是本Golang系列教程的第十一篇。数组数组是属于同一类型的元素的集合。例如,整数 5, 8, 9, 79, 76 的集合就构成了一个数组。Go不允许在数组中混合使用不同类型的元素(比如整数和字符串)。声明数组的类型为 n[T],其中 n 表示数组中元素的个数,T 表示数组中元素的类型。
2017-07-16 08:02:21 14503
翻译 Golang教程:(十)switch 语句
原文:https://golangbot.com/switch/这是本Golang系列教程的第十篇。switch 是一个条件语句,用于将一个表达式的求值结果与可能的值的列表进行匹配,并根据匹配结果执行相应的代码。可以认为 switch 语句是编写多个 if-else 子句的惯用方式。举例是说明问题最好的方式,让我们写一个简单的程序,输入手指编号,输出对应的手指名称:)。例如 0 表示拇
2017-07-16 08:01:27 52619 3
翻译 Golang教程:(九)循环语句
原文:https://golangbot.com/loops/这是本Golang系列教程的第九篇。循环语句用于重复执行代码块。for 语句是 Go 中唯一的循环语句。Go 没有提供其他语言(如 C)中的 while 和 do while 循环语句。for 语句语法for initialisation; condition; post { }初始化语句 initialis
2017-07-15 08:34:36 20617 2
翻译 Golang教程:(八)if else 语句
原文:https://golangbot.com/if-statement/这是本Golang系列教程的第八篇。if 是一个条件语句。if 语句的语法为:if condition { }如果 condition 为 true,那么就执行 { 和 } 之间的代码。与其它语言(如C)不同,即使 {} 之间只有一条语句,{} 也是必需的。if 语句后面可以接可选的 els
2017-07-15 08:33:58 3709
翻译 Golang教程:(七)包
原文:https://golangbot.com/packages/这是本Golang系列教程的第七篇。什么是包?为什么使用包?到目前为止我们见到的 Go 程序都只有一个文件,文件中包含了一个main函数和几个其他函数。在实际中这种将所有代码都放在一个文件里的组织方式是不可行的。这样的组织方式使得代码变得无法重用和维护困难。包(package)使这种情况转危为安。包用于组织Go源代
2017-07-15 08:33:07 4949
翻译 Golang教程:(六)函数
原文:https://golangbot.com/functions/这是本Golang系列教程的第六篇。函数是完成一个特定任务的代码块。一个函数接受输入,对输入进行一些运算并产生输出。函数声明在 Go 中声明一个函数的语法为:func functionname(parametername type) returntype { //function body}函
2017-07-15 08:32:08 3192
翻译 Golang教程:(五)常量
原文:https://golangbot.com/constants/这是本Golang系列教程的第五篇。定义常量在Go中常量(constant)用来表示固定的值,比如:5,-89,"I love Go",67.89 等等。考虑如下程序:var a int = 50 var b string = "I love Go"上面的程序中, a 和 b 分别被赋值为常量
2017-07-15 08:31:27 5307
翻译 Golang教程:(四)类型
原文:https://golangbot.com/types/这是本Golang系列教程的第四篇。你可以阅读 Golang教程:(三)变量 来学习有关变量的只是。下面是 Go 支持的基本类型:boolNumeric Types int8, int16, int32, int64, intuint8,uint16,uin32,uint64, uintfloat32, fl
2017-07-14 15:18:58 4912
翻译 Golang教程:(三)变量
原文:https://golangbot.com/variables/这是本Golang系列教程的第三篇。本篇介绍Golang中的变量。你可以阅读 [Golang教程:(二)Hello World](http://blog.csdn.net/u011304970/article/details/74783686) 来学习如何建立 Go 工作空间以及编写和运行 hello world 程序。#什么是变量
2017-07-14 15:16:03 4298 1
翻译 Golang教程:(二)Hello World
原文:https://golangbot.com/hello-world/这是本Golang系列教程的第二篇。请阅读 [Golang教程:(一)介绍和安装](http://blog.csdn.net/u011304970/article/details/74783552) 来了解什么是Golang以及如何安装它。除了亲自写代码以外没有更好的方式来学习一门新的编程语言。在这篇教程中我们将开始编写我们的第一个程序
2017-07-14 15:09:44 5088
翻译 Golang教程:(一)介绍和安装
原文:https://golangbot.com/golang-tutorial-part-1-introduction-and-installation/这是本Golang系列教程的第一篇。什么是GolangGolang 又称为 Go,是由 Google 开发的一种开源的、编译型的、静态类型的编程语言。Golang 的主要目的是使开发高可用性和高扩展性的Web应用程序变得简单。为什么选择Golan
2017-07-14 14:09:43 5568
翻译 Golang教程:(二十)并发介绍
原文:https://golangbot.com/concurrency/欢迎来到Golang系列教程的第二十篇。Go是并发语言,而不是并行语言。在讨论Go并发性之前,我们必须首先了解什么是并发,以及并发与并行的区别。什么是并发并发(concurrency)是指一次处理大量事情的能力。让我们用一个例子来说明。假设一个人喜欢慢跑。在早上的慢跑中,他的鞋带开了。现在他停下来系鞋带,
2017-07-14 08:21:31 4325
原创 Go批量修改文件名
工作中遇到了批量修改文件名的情况,为此写了个小程序,以供日后方便。代码如下:package mainimport ( "flag" "fmt" "os" "path/filepath")func main() { // 解析命令行参数 var dir string flag.StringVar(&dir, "d", "", "director
2017-07-07 09:37:08 2949
原创 FreeSWITCH 视频会议常用命令
列出所有会议conference list列出会议的所有参与人conference [conference-id] list列出会议所有可用布局conference [conference-id] vid-layout list改变画面布局conference [conference-id] vid-layout [layout-name]更改角色在布局中的位置conference [confere
2017-07-05 14:43:15 2354
原创 Jenkins 搭建C++持续集成环境
简介本文主要介绍如何通过 Jenkins 搭建 C++的持续集成环境。最后达到的效果是每天00:00 - 08:00之间构建、测试和打包一次工程。开发环境为 VS2015,测试工具为 CppUnit,打包工具为 Inno Setup。本例的 Jenkins 版本为 Jenkins2.60.1建立工程新建空白解决方案,命名为 Calculator。勾选 [新建 GIT 存储库]。建立开发项目新建控制台
2017-07-04 09:33:39 27541 1
原创 CppUnit 入门
CppUnit 是一个基于 LGPL 的开源项目,最初版本移植自 JUnit,是一个非常优秀的开源测试框架。CppUnit 和 JUnit 一样主要思想来源于极限编程(XProgramming)。主要功能就是对单元测试进行管理,并可进行自动化测试。本文主要介绍如何利用 CppUnit 进行单元测试。
2017-07-01 09:35:38 5286 2
Cef3博文配套源代码
2017-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人