自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

进击的小学生

To be or not to be, this is a question.

  • 博客(420)
  • 资源 (10)
  • 收藏
  • 关注

原创 059- error 接口

1. error 接口一直以来,我们到处都能看到 error 作为很多函数的返回值类型出现,我们也没太关注它,一般都以下面这样的形式看到它:// err := ...if err != nil { fmt.Printf("%v\n", err)}这个 error 实际上是接口类型:type error interface { Error() string...

2018-06-16 22:21:17 423

原创 058-HTTP 服务(二)

简单回顾一下上一篇我们做了哪些事情:学习 http.Handler 接口简单来说,Handler 是一个用于处理 HTTP 请求的『事件处理器』。type Handler interface { ServeHTTP(ResponseWriter, *Request)}自己根据 http.Request.URL.Path 实现了一个简单的路由功能。实际上,...

2018-06-10 23:00:18 498

原创 057-HTTP 服务(一)

很久以前,也就是在第一章的时候,我们就已经学过怎样使用 Go 来写一个 HTTP Server. 不过那时候我都是走马观花的过了一遍,在你不懂任何 Go 相关的语法(包括我们学过的 struct, interface 等)的情况下,你也能写出来一个 HTTP server。记得有位同学,他的同事告诉他:『为什么要把网络协议细节搞的清清楚楚,大家都是拿同样的工资,用API,会用就行』。后来我告诉...

2018-06-10 18:29:47 713

原创 056-接口值(Interface Value)

目前为止,我们已经学过很多值类型了,比如 int 值,float 值,后面又学过函数值,方法值。到了接口这里也不例外,我们需要学习接口值(Interface value)。之所以单独拿出来讲,是因为接口值也有它与众不同的地方。1. 接口值(Interface Value)从概念上讲,接口值由两部分组成:具体类型 (Type)该类型对应的值 (Value) 之所以加一个...

2018-06-09 17:40:52 1899

原创 055-实战 flag.Value 接口

如果你中间是跳跃着看的,希望你一定不要错过《参数解析》 一文。我们已经学习过参数解析的 flag 包相关使用方法,所以这里不会再赘述,如果你还不会,建议你回去学习并掌握它。1. 简单回顾很久以前,我们就学习过 flag 包的使用方法,它可以解析常见的基础类型,比如 int, string 等。 flag 包使用起来非常简单,只要使用相关的方法,将要解析的标志加入到标志集合,最后调用...

2018-06-03 22:14:10 942

原创 054-接口(Interface)

历尽千辛万苦,我们越来越接近 Golang 的精髓了。从这一章开始,你需要学习 Go 语言中另一个非常重要的知识点——接口。1. 接口为何物首先,我们用几句话简单描述下接口:一种类型抽象类型一种约定...

2018-06-03 18:16:13 427

原创 053-Bitmap (位图)

事到如今,你已经学完了 Go 的大部分语法了。尤其是这一章的 Method,相信你也可以玩的很转了。作为本章的最后压轴,我们来做一个综合练习,写一个非常经典而且强大的数据结构——Bitmap.1. bitmapbitmap 是一种非常强大的数据结构,你可以叫它 bit set,它使用比特位来存储整数。具体来说,第 N 比特位如果为 1,则表示bitmap 里存储了数字 N. 例如下面的 b...

2018-06-02 23:23:11 473 4

原创 052-方法值(Method Value)及方法表达式(Method Expression)

和这一篇相对应一篇叫函数值(Function Value). 1. 问题仍以一个简单的例子开始:package mainimport ( "fmt" "time")type Point struct { X, Y float64}func (p Point) Show() { fmt.Printf("Position{%v, %v...

2018-05-27 21:09:56 1799

原创 051-结构体嵌入

结构体嵌入的知识(参考 《struct 结构体(三)》)我们很久前就已经学习过,不过这一次我们不是复习,而是再次深入结构体嵌入的话题。1. 复习type Point struct { X, Y float64}type Circle struct { Radius float64 Point}如果有一个 Circle 对象 c := Circle...

2018-05-27 20:34:51 480

原创 050-指针接收器(Pointer Receiver)

学会了 Method 的基本定义和使用后,我们讨论一点更加复杂的话题。1. 问题引入type Person struct { Name string Age int}// 定义 Person 的一个方法 hellofunc (p Person) hello() { fmt.Printf("Hello, my name is %s. I'm %d yea...

2018-05-26 10:40:13 1054

原创 049-方法(Method)

方法是一种特殊的函数。早在函数那一章我们就提过,函数和方法是有区别的。现在,我们可以揭开它真正的面纱了。1. 方法(method)方法,是一种和某种类型关联起来的函数,它总是依附在某个类型之上。换句话说,方法无法直接被调用,既然这样,那方法如何调用呢?1.1 从一个简单示例开始下面这个示例定义一个 Person 结构体,还有一个函数 hello,接收 Person 类型的参数,功能...

2018-05-20 22:20:27 597

原创 048-panic 异常

大多数编程语言都提供了异常处理机制,恰恰相反,Go 延续了 C 语言的风格,并未提供异常处理机制。但在 Go 里,提供了 panic 异常,从某种意义上说,它也非常接近其它语言的异常处理。1. panic 异常Go 语言在编译期就能捕获大量异常,但是有些异常只会发生在运行期。典型比如运行期的除 0 错误,数组越界错误。一旦发生这种错误,程序就会引发 panic 异常导致 crash. ...

2018-05-20 20:25:23 4821

原创 047-Deferred 函数

想象这样一种场景:通常我们在编程的时候,经常会遇到资源申请完成后,再手工释放。比如打开一个文件后,再执行 close 操作关闭文件描述符,如果你不关闭,则会产生描述符泄露。如果程序逻辑复杂,这非常容易出错。因为你的函数可能随时遇到错误而 return 出去,此时你极易忘记 close 掉申请过的资源。Go 提供了关键字 defer 帮忙我们解决这个问题。它有点像 C++ 里的 RAII 机制,...

2018-05-20 14:46:03 432

原创 046-变长参数函数(Variadic Function)

无论是 C/C++ 还是 javascript/python,都支持变长参数函数。在 Go 里典型的变长参数就是 fmt.Printf 函数。那这种函数如何定义呢?1. 变长参数函数定义和使用变长参数函数定义如下:func name(paramname ...type) return-list即在参数名后面加上 ... 符号就行了。关于 ... 符号,在 Go 里之前已经出现过一次...

2018-05-19 22:44:49 1426

原创 045-函数值(Function Value)及匿名函数(Anonymous Function)

在 Go 里,你每声明定义一个函数,就意味着产生了一个函数值。函数值就像其它类型的值一样,可以进行赋值,也可以作为函数的返回结果返回。函数值在 Go 语言里被称为 first-class value (第一等值)。相比那些什么 int 类型的值,float 类型的值来说,函数值的地位就显的要高的多,而且也重要的多。在讲解函数值前,需要普及一些基本的概念。1. 基本概念1.1 函...

2018-05-19 21:48:49 1736 1

原创 044-函数(function)

欢迎进入新的一章。本章的主题是围绕 go 语言函数(function)展开讨论,并介绍 go 中的函数各种各样的特性。值得一提的是,一定要把 function 和 method 区分开。虽然你还没有学到 method,这是下一章的话题,但是还是事先提醒你不要将两者搞混。1. 函数声明一路走过来,你已经写过了不少的 function 了,比如你学到的第一个 function 就是 fun...

2018-05-19 17:53:00 351

原创 043-模板渲染

数据渲染在我们平时编程中几乎每天都会用到。可能有些同学不太明白数据渲染是含义,说白了就是在你的计算机屏幕上,将数据通过某种方式展现出来。最简单的例子就是使用 fmt.Printf 函数,将数据输出到屏幕了。1. 使用 Printf 渲染数据先来看一个最简单的例子。这里继续使用前面几篇用到的结构体 Movie.type Movie struct { Title stri...

2018-05-19 16:19:20 350

原创 042-遍地开花的 json

json 是一种结构化的字符串,因为它的编码和解码都有非常成熟的 library 支持,有些语言甚至已经原生支持编码和解码,比如 Go 就是。另一方面,json 数据有着易读易编写的特性,因此被广泛应用于网络数据的传输。如果你还不知道 json 为何物,那就先阅读一下相关知识:http://www.w3school.com.cn/json/1. 将结构体序列化成 jsontype Mo...

2018-05-19 00:52:23 379

原创 041-struct 结构体(三)

Golang 的 struct 结构体注定是不平凡的。今天要讨论的话题是结构体嵌套。这很平凡,无论是 C/C++,结构体里套结构体不是一件很寻常的事吗?为什么 Go 里又说不平凡呢?1. 结构体嵌套先来看两个结构体的定义:type Point struct { X, Y int // 这个语法是你一次见到,如果相邻连续的字段类型一样,可以连写成一行}type Circ...

2018-05-17 23:04:58 405

原创 040-struct 结构体(二)

现在你已经基本熟悉 struct 结构体的使用套路了。这一次,我们结合 go 语言的 package 来再来看看 struct 的使用上有什么不同。使用 package 的目的是让你定义的结构体也能被别人使用~~~比如你发明了一种很牛逼的结构体,不分享给别人岂不是很浪费?1. 项目结构和程序你要做的就是创建下面这样的文件夹 struct02,当然了名字随便你了。然后再创建一个 co...

2018-05-13 20:00:13 337

原创 039-struct 结构体(一)

终于迎接来 Go 语言最最核心的数据类型 —— struct. 没错,这和 C 语言里的结构体几乎一模一样。不过 Go 里的结构体,会比 C 语言的结构多一些东西,这些后面再讲。本文先简单认识一下 Go 的结构体是什么样子,以及怎么声明和定义。1. 声明与定义例1package mainimport "fmt"func main() { // 定义了一个...

2018-05-06 10:46:24 452

原创 038-Map 结构

大多数编程语言都提供了 Hash 表这种数据结构,比如 C++ 的 map/unorder_map,python 的 dict 等。hash 表是一种相当神奇且有用的数据结构,平时写代码的时候,几乎处处能遇到它的身影。在 Go 里,使用 map 这种数据结构引用底层的 hash 表。1. 声明与定义下面这四种试可以创建 map,它的 key 类型是 string,value 类型是 i...

2018-05-01 20:17:39 344

原创 037-插入排序

这次来一点实战的,让你熟练掌握数组,slice. 所以选来选去,就选一个最简单的插入排序算法吧。1. 插入排序思路这个算法相信学计算机的同学都相当熟悉,不过还是先来预热一下,看看它的基本思路。 图1 插入排序 假设数组 a,大小为 8,其中 a[0...3] 都已经有序,此时我们需要将第 i 个元素(第 4 个)插入到已排序的合适的部分。最简单直接的做法就是从后向前找一...

2018-04-29 13:36:25 332

原创 036-Slice

slice 是 Go 里非常强大的复合结构,简单的说,它就是一个动态数组。1. slice 声明与定义不同于数组的声明,slice 声明是不需要指定长度的。比如下面这样:var a [5]int // 这是数组var b []int // 这是 slice这样一来,数组与 slice 的区别就非常明显了。下面是常见的声明和定义方式。例 1packag...

2018-04-11 23:54:58 358

原创 035-数组

接下来我们就要进入另一个非常非常重要的篇章——Composite Types(复合类型)。这一章,我们需要讨论 4 种复合类型:array (数组)slice (切片)map(映射)struct(结构体)数组将是第一个我们需要正式学习的复合类型。 slice 和 map 前面其实我们都已经接触过了,不过那时候只是浅浅尝辄止。1. 数组数组,是一种有固定长度的同一类元素...

2018-04-08 23:36:47 354

原创 034-常量

无论你是学习 C/C++ 还是 Java,肯定遇到过常量这种概念。Go 语言当然也有常量,在前面的文章里,你肯定遇见过很多次了。下面就是在 Go 里定义的一个常量。const pi = 3.1415926不过很奇怪的是,为什么定义常量的时候没有指定类型?它也是自动推导的吗?这个问题待会我们再说清楚。1. 一些特性Go 语言的常量是在编译期进行计算的常量之间所有的运算,结...

2018-04-07 13:13:48 409

原创 033-basename 程序

经常写 shell 脚本的同学一定用过一个名为 basename 的程序。这个程序可以把一个路径里最后一部分提取出来,像下面这样: 图1 basename 运行结果 接下来你懂的,用 go 来实现这个 basename 程序。本文的程序路径是:gopl/basictypes/basename1. 版本一package mainimport ( "fmt" ...

2018-03-26 23:01:23 354

原创 032-unicode 与 utf-8

字符编码一直是让人头疼的问题。unicode, utf-8, ascii 你知多少?有没有那么几次乱码问题让你夜不能寐?有没有因为编码问题你百度/谷哥过无数次也得不到你想要的答案?好了,希望你在读完这一篇后,能对你有所帮助。1. 字符集Long long ago, 世界还很简单。那个时候,计算机还没那么普及,128 种符号完全可以胜任。26 个英文字母,10 个阿拉伯数字,...

2018-03-17 02:12:22 515 1

原创 031-神奇的字符串

无论在哪种语言里,字符串都是一种相当重要的数据类型。很多语言都有字符串的概念,但是又有很大区别。比如 c 语言里,需要使用一个以 '\0' 结尾的字节数组来表示字符串;c++ 里使用 std::string 类型表示字符串;在 java 里是 String. 在这些语言里,字符串并不是一种基础数据类型,而是更加复杂的复合类型,或者『类』类型。接下来即将讨论的 go 语言里的字符串,它就是一种基...

2018-03-15 00:06:02 1026

原创 030-go 语言里的布尔类型

这一篇来点轻松的,不需要很多的代码量,直接进入主题.1. 布尔类型在 go 中布尔类型使用 bool 来声明。使用 ==, !=, <, >, <=, >= 比较运算符,产生的结果也是 bool 类型。package mainimport "fmt"func main() { var a bool = true var b boo...

2018-03-10 22:07:51 412

原创 029- 使用 go 绘制 Mandelbrot 分形图

在这个世界,有非常多奇妙的事情。分形,就是其中之一。分形艺术(fractal art)由IBM研究室的数学家曼德布洛特(Benoit.Mandelbrot,1924-2010)提出。其维度并非整数的几何图形,而是在越来越细微的尺度上不断自我重复,是一项研究不规则性的科学。 图1 mandelbrot 分形图 图1 是 mandelbrot 分形图中的一部分。一个完整的 mand...

2018-03-10 19:24:12 2970 1

原创 028-使用 go 绘制波浪曲面

1. 介绍先来看看效果。 图1 波浪曲面 这个曲面的函数是:z=f(x,y)=10×sinx2+y2‾‾‾‾‾‾‾√x2+y2‾‾‾‾‾‾‾√z=f(x,y)=10×sinx2+y2x2+y2z = f(x,y) = 10 \times {sin\sqrt{x^2+y^2}\over\sqrt{x^2+y^2} }不妨令 r=x2+y2‾‾‾‾‾‾‾√r=x2+...

2018-03-06 22:46:39 1826 1

原创 027-使用 go 绘制长方体

注意,这也是过渡篇。本文会告诉你绘制 3D 图形的简单原理,并利用上节学习的 svg 的 polygon 指令绘制一个长方体。1. 介绍最终的效果如下图: 图1 绘制长方体(2×4×12×4×12\times4\times1) 可能有人觉得这很简单,只要计算出这个长方体 8 个顶点的坐标不就 ok 了,没错。在 3 维坐标系中,这个长方体的坐标如下(方格的单位是 1):...

2018-03-06 00:18:07 987

原创 026-使用 go 输出 svg 图形

SVG 是使用 XML 来描述二维图形和绘图程序的语言。部分同学可能都没听说过 svg。你可以简单的理解为它是一种图片格式,这种图形是矢量图。比较厉害的是,svg 这种文件可以使用记事本打开直接编辑,因为它使用 xml 来描述图形。本文通过几个例子来告诉你如何简单的编辑 svg 图形。如果你想更加详细的学习 svg 语法,参考这个教程:svg 教程。使用 Chrome 可以打开 svg...

2018-03-04 01:00:49 4823 1

原创 025-整数和浮点数

本文程序路径是 gopl/basictypes/number.1. 整数类型和浮点数类型1.1 整数类型go 语言和 c 语言非常像,整数也分为有符号和无符号。在 go 语言里,整数在内存占用的宽度有 8bit, 16bit, 32bit, 64bit 这四种。有符号是 int8, int16, int32, int64,而无符号是 uint8, uint16, uint32,...

2018-02-28 23:20:11 684

原创 024-go 数据类型介绍

1. 数据类型在我们的世界,充满了形形色色的人、事和物。要想在计算机中描述这个多彩的世界,太复杂了。比如照片,是如何呈现在你的电脑屏幕上的?你现在正在看的这篇博客,又是如何呈现在电脑屏幕上的?这一切都很神奇,不是吗?所以有一切,都是通过执行计算机程序,将 0 和 1 这样的 2 进制数字,进行一定的运算,再解释成照片,解释成一篇博客,解释成你所看到的一切。在过去还没有高级语言的时候...

2018-02-25 20:05:41 363

原创 023-作用域(Scope)与生命期(Lifetime)

作用域和生命期的概念可以借鉴 C 语言,但还有一些不太一样的地方,需要单独解释。1. 作用域与生命期任何一门高级计算机语言都有作用域的概念,go 也不例外。说到作用域,必然也会想到生命期。有些同学可能会把作用域和生命期划上了等号,比如在 c 语言里,在函数中声明了局部变量 int x,这个 x 的作用域就在函数体内,一旦执行完此函数,x 也就销毁了。实际上,作用域和生命期有着本...

2018-02-25 00:11:05 1409

原创 022-包初始化

在 《go 项目结构》 一文我们就已经学会了如何声明一个包了。现在我们再加一点新的知识——包初始化。1. init 函数go 程序可以在导入包时执行包初始化函数。这个函数名为 init,格式如下:func init() { /*...*/}没有参数表,没有返回值。当一个包被导入时,此函数被会自动执行,而且只会执行一次。哪怕你的包在很多地方被导入,初始化也只进行一次...

2018-02-24 20:17:45 564

原创 021-类型(Type),类型转换和测试

go 是强类型的语言。从一开始我们就知道 go 中定义变量是需要指定其类型的,就算是自动推导,那也是需要有类型的,只不过编译器帮你分析了其类型而已。类型的作用是为了描述 object 相关的特性。比如它规定了 object 占用几个字节,在内存中是怎样的结构,是否支持一些操作符。比如 go 的内置类型 int32,它表示整数,在内存中占用 4 个字节(32bit),它支持 +, -, ...

2018-02-23 21:35:05 743 2

原创 020-赋值(Assignment)

同其它语言一样,go 的赋值运算符也是 =,不过 go 的 = 更加强大,它支持元组赋值(Tuple Assignment),有人称其为平行赋值。同样在 go 里,要求 = 左侧的变量类型和右侧值的类型匹配,否则会编译不通过。1. 赋值举几个例子:var x int = 10var y int = 10x++ // oky ...

2018-02-20 16:25:37 966 1

EasyDraw 3.0(事故树绘制)

EasyDraw 事故树软件,3.0 版本,完全免费。排版更加精致,支持生成 svg 矢量图,png/jpeg 图形。

2018-11-02

GCC 内联汇编

gcc 内联汇编 1 AT&T 与 INTEL 的汇编语言语法的区别 1.1 大小写 1.2 操作数赋值方向 1.3 前缀 1.4 间接寻址语法 1.5 后缀 1.6 指令 2 GCC 内嵌汇编 2.1 简介 2.2 内嵌汇编举例 2.3 语法 2.3.1 汇编语句模板 2.3.2 输出部分 2.3.3 输入部分 2.3.4 限制字符 2.3.5 破坏描述部分 2.4GCC 如何编译内嵌汇编代码

2018-10-28

k近邻_kd-tree_kd树_vs2008_C++代码

vs2008写的Kd树泛型算法,支持k近邻查询。

2014-12-15

梯度下降法VS2008_C++

梯度下降法完整的VS2008代码。博客地址:http://blog.csdn.net/q1007729991/article/details/40382071

2014-10-23

事故树绘制软件easydraw免费V2.19

免费版本的事故软件,实现所有计算功能,节点自动调整,建树判错等功能!支持导出图片。

2013-12-13

增强版事故树绘制与分析程序

1.完善建立事故树的过程 2.事故树节点自动排列,免去手工排列节点的烦恼 3.编号自动生成,免去手工编号的繁琐 4.自动检测是否有闭环回路,防止用户建立逻辑上错误的事故树 5.自动检测用户是否在一个事件下重复添加 6.相同事件下建立节点,会进行同步复制,提高建树效率 7.相同事件下删除节点,会进行同步删除 8.手工拖动节点时自动对齐 9.修改节点信息,所有相同节点进行同步修改 10.画布大小自定义 11.画布颜色,事件框颜色,门颜色,文字颜色可以自定义 12.完美的一键保存bmp图片功能 13.编码树与文字树一键切换 14.列出事件清单,方便用户一次性输入事件概率 15.完善顶上事件概率计算,提供最小割集逼近法,无重复基本事件计算法,首项近似法,以及事件状态组合法。 16.优化最小割集、径集算法,提高计算速度 17.结构重要度删除不必要的状态组合法,仅提供公式三计算结果 18.提高了概率重要度、关键重要度的计算精度

2013-04-19

事故树绘制分析软件

简单易用,功能其全的一个事故树绘制分析软件,用以计算最小割集,最小径集,顶上事件概率,概率重要度,结构重要度,临界重要度,计算方法可选。 计算的结果可以保存到本地txt文本文件,方便您复制到您需要的地方,给您的论文写作也会带来极大方便。概率计算提供一套精确算法,可以根据您所提供的数据计算出精确结果。当然您也可以选择近似算法,本软件提供首项近似法和平均近似法的计算结果,给您多种选则。软件非常简单易用,自己几分钟就可以学会,谢谢您的使用!

2012-12-17

MFC 音乐播放器

基本上实现了常用的播放功能,可以自动下一首,通过音量条控制音量,实现时间进度栏,实现将添加到列表的歌曲文件列表存储到本地,下次启动的时候依然还在,更多功能等待你的发觉,不要说分高,学习才是王道,尊重作者的劳动成果,花了两天时间写的。

2012-12-12

汇编_单片机_matlab_Multisim等

注意:此为TXT文档,里面都有下载地址,你所要下载的东东都在我的u115网盘里! 静态反汇编工具W32Dasm.rar 51单片机种子全.rar win7系统工具.rar matlab详细教程.rar Multisim教程.exe 中国象棋经典残局《适情雅趣》_0.1.exe UltraEdit-32_V16.20.0.1009_汉化版(30天免费使用).exe 精美PPT模板_2009.11.30.zip VC6.0简体中文企业版.rar

2010-11-24

空空如也

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

TA关注的人

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