12 2018 档案

摘要:Docker Swarm是Docker官方的三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。 Docker Swarm是Docker公司推出的官方容器集 阅读全文
posted @ 2018-12-22 20:42 明王不动心 阅读(1035) 评论(0) 推荐(0) 编辑
摘要:如果想SSH免密码登录一台机器,只需要如下两部就行: 1.生成公钥文件 首先需要说明的是,如果A想免密码登录B,那么只需要A在自己的机器上生成公钥文件发送到B对应的目录下面就可以,不要以为是把B的公钥发送到A,然后A就可以免密码登录了。 (1)生成密钥文件之前的目录 (2)生成密钥 (3)生成密钥之 阅读全文
posted @ 2018-12-21 23:38 明王不动心 阅读(1320) 评论(0) 推荐(0) 编辑
摘要:Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境。它支持多种平台,让用户在很短时间内搭建一套Docker主机集群。Machine项目是Docker官方的开源项目,负责实现对Docker主机本身进行管理。Machine项目 阅读全文
posted @ 2018-12-21 05:35 明王不动心 阅读(529) 评论(0) 推荐(0) 编辑
摘要:编排(Orchestration)功能是复杂系统实现灵活可操作性的关键。特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理。作为Docker官方编排工具,Compose的重要性不言而喻,它可以让用户通过编写一个简单模板文件,快速地创建和管理基于Docker容器地应用 阅读全文
posted @ 2018-12-21 05:11 明王不动心 阅读(1432) 评论(0) 推荐(0) 编辑
摘要:一、简介 Etcd按照官方介绍: Etcd is a distributed, consistent key-value store for shared configuration and service discovery 是一个分布式的,一致的键值对存储,主要用于共享配置和服务发现。Etcd是 阅读全文
posted @ 2018-12-21 03:04 明王不动心 阅读(2116) 评论(0) 推荐(0) 编辑
摘要:一、网络启动与配置参数 Docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机,它会在挂载其上的接口之间进行数据转发。同时,Docker随机分配一个本地未占用的私有网段(在RFC1918中定义)中的一个地址给docker0接口。当创建一个 阅读全文
posted @ 2018-12-21 00:57 明王不动心 阅读(4925) 评论(0) 推荐(0) 编辑
摘要:从1.7.0版本开始,Docker正是把网络和存储这两部分的功能都以插件化形式剥离出来,允许用户通过指令来选择不同的后端实现。剥离出来的独立容器网络项目叫libnetwork,从名字就能看出,它希望将来为不同容器定义统一规范的网络标准层。 一、容器网络模型 libNetwork中容器网络模型(Con 阅读全文
posted @ 2018-12-21 00:01 明王不动心 阅读(1353) 评论(0) 推荐(0) 编辑
摘要:Docker是基于Linux操作系统实现的应用虚拟化。运行在容器内的进程,跟运行在本地系统的进程本质上并无区别,配置不合适的安全策略将可能给本地系统带来安全风险,因此,Docker的安全性在生产环境中是十分关键的衡量因素。Docker容器的安全性很大程度上依赖于Linux系统本身,主要考虑下面几个方 阅读全文
posted @ 2018-12-20 23:40 明王不动心 阅读(1130) 评论(0) 推荐(0) 编辑
摘要:作为一种容器虚拟化技术,Docker深度应用了操作系统的多项底层支持技术。早期版本的Docker是基于已经成熟的Linux Container(LXC)技术实现的。自从0.9版本起,Docker逐渐从LXC转移到新的libcontainer上,并积极推动开放容器规则runc,试图打造更通用的底层容器 阅读全文
posted @ 2018-12-20 23:26 明王不动心 阅读(685) 评论(0) 推荐(0) 编辑
摘要:Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像。Dockerfile由一行行命令语句组成,并支持以#开头的注释行。一般而言,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行的命令。 一、Dockerfile指 阅读全文
posted @ 2018-12-20 22:00 明王不动心 阅读(2645) 评论(0) 推荐(0) 编辑
摘要:在生产环境中,单个服务往往是独立的,但是服务与服务之间往往是相互依赖的,这样对于容器来说,容器之间就需要相互访问。除了网络访问之外,docker还提供了另外两种方式来满足服务的访问。 一:允许映射容器内应用的服务端口到本地宿主机; 二:互联网机制实现多个容器间通过容器名来快速访问; 1.端口映射实现 阅读全文
posted @ 2018-12-20 21:40 明王不动心 阅读(487) 评论(0) 推荐(0) 编辑
摘要:生产环境中使用docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享。容器中管理数据主要有两种方式: 数据卷(Date Volumes):容器内数据直接映射到本地环境 数据卷容器(Date Volumes Containers):使用特定容器维护数据卷 1.数据卷 数据卷 阅读全文
posted @ 2018-12-20 18:37 明王不动心 阅读(286) 评论(0) 推荐(0) 编辑
摘要:容器相关命令一览表: docker create docker run docker start/stop/restart docker attach/exec docker rm docker export/import docker ps 1.创建容器 (1)docker create Usag 阅读全文
posted @ 2018-12-20 18:02 明王不动心 阅读(1696) 评论(0) 推荐(0) 编辑
摘要:镜像相关命令一览表: docker images docker tag docker inspect docker history docker search docker pull/push docker rmi docker save/load 1.查看镜像 (1)docker images:列 阅读全文
posted @ 2018-12-20 16:23 明王不动心 阅读(2951) 评论(0) 推荐(0) 编辑
摘要:镜像、容器、仓库是docker的三大核心概念。docker镜像类似于虚拟机镜像,你可以将其理解为一个只读模板。docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。 镜像 阅读全文
posted @ 2018-12-17 00:18 明王不动心 阅读(3418) 评论(0) 推荐(0) 编辑
摘要:Docker划分为CE和EE。CE即社区版(免费,支持后期三个月),EE即企业版,强调安全,付费使用。 不论是在centos上面还是在ubuntu上面,安装docker一般就需要两部 这种方式安装的docker的版本会取决于系统的版本。 如果没有更新源,可能安装的不是最新版本。启动: 开机启动: 阅读全文
posted @ 2018-12-17 00:16 明王不动心 阅读(157) 评论(0) 推荐(0) 编辑
摘要:这是一个用来处理日志的库,它的设计思路来自于 database/sql,目前支持的引擎有 file、console、net、smtp,可以通过如下方式进行安装: 通用方式 首先引入包: 然后添加输出引擎(log 支持同时输出到多个引擎),这里我们以 console 为例,第一个参数是引擎名(包括:c 阅读全文
posted @ 2018-12-16 18:52 明王不动心 阅读(1552) 评论(0) 推荐(0) 编辑
摘要:session介绍 session是一个独立的模块,即你可以那这个模块应用于其它Go程序中。 session模块是用来存储客户端用户,session目前只支持cookie方式的请求,如果客户端不支持cookie,那么就无法使用该模块。 session模块参考了database/sql的引擎写法,采用 阅读全文
posted @ 2018-12-16 18:29 明王不动心 阅读(3221) 评论(0) 推荐(0) 编辑
摘要:开发模式 通过bee创建的项目,beego默认情况下是开发模式。 我们可以通过如下的方式改变我们的模式: 或者我们在conf/app.conf下面设置如下: 以上两种效果一样。 开发模式中 开发模式下,如果你的目录不存在views目录,那么会出现类似下面的错误提示: 模板每次使用都会重新加载,不进行 阅读全文
posted @ 2018-12-16 15:59 明王不动心 阅读(464) 评论(0) 推荐(0) 编辑
摘要:Go 语言内部其实已经提供了 http.ServeFile,通过这个函数可以实现静态文件的服务。 beego 针对这个功能进行了一层封装,通过下面的方式进行静态文件注册: 第一个参数是路径,url 路径信息 第二个参数是静态文件目录(相对应用所在的目录) beego 支持多个目录的静态文件注册,用户 阅读全文
posted @ 2018-12-16 14:34 明王不动心 阅读(3676) 评论(0) 推荐(0) 编辑
摘要:beego 支持用户定义模板函数,但是必须在 beego.Run() 调用之前,设置如下: 定义之后你就可以在模板中这样使用了: 目前 beego 内置的模板函数如下所示: dateformat 实现了时间的格式化,返回字符串,使用方法 {{dateformat .Time “2006-01-02T 阅读全文
posted @ 2018-12-16 14:31 明王不动心 阅读(676) 评论(0) 推荐(0) 编辑
摘要:beego的模板处理引擎采用的是Go内置的html/template包进行处理,而且beego的模板处理逻辑是采用了缓存编译方式, 也就是所有的模板会在beego应用启动的时候全部编译然后缓存在map里面。 1.模板目录 beego中默认的模板目录是views,用户可以把模板文件放到该目录下, be 阅读全文
posted @ 2018-12-16 14:25 明王不动心 阅读(6066) 评论(0) 推荐(0) 编辑
摘要:一、基本语法 go统一使用{{和}}作为左右标签,没有其它的标签符号。 使用"."来访问当前位置的上下文,使用"$"来引用当前模板根级的上下文,使用$var来访问创建的变量。 1.模板中支持的go语言符号 2.模板中的pipeline(管道) 可以是上下文的变量输出,也可以是函数通过管道传递的返回值 阅读全文
posted @ 2018-12-16 13:26 明王不动心 阅读(3295) 评论(0) 推荐(0) 编辑
摘要:复杂的模型定义不是必须的,此功能用作数据库数据转换和自动建表 默认的表名规则,使用驼峰转蛇形: 除了开头的大写字母以外,遇到大写会增加 _,原名称中的下划线保留。 自定义表名 type User struct { Id int Name string } func (u *User) TableNa 阅读全文
posted @ 2018-12-16 03:19 明王不动心 阅读(1040) 评论(0) 推荐(0) 编辑
摘要:1.事务处理 ORM 可以简单的进行事务操作。 2.命令模式 注册模型与数据库以后,调用 RunCommand 执行 orm 命令。 自动建表 使用 -force=1 可以 drop table 后再建表 使用 -v 可以查看执行的 sql 语句 在程序中直接调用自动建表: 自动建表功能在非 for 阅读全文
posted @ 2018-12-16 03:09 明王不动心 阅读(816) 评论(0) 推荐(0) 编辑
摘要:QueryBuilder提供了一个简单、流畅的SQL查询构造器。在不影响代码可读性的前提下用来快速的建立SQL语句。 QueryBuilder在功能上与ORM重合,但是个由利弊,ORM更适合用于简单的CRUD操作, 而QueryBuilder更适用于复杂的查询,例如查询中包含子查询和多重联结。 使用 阅读全文
posted @ 2018-12-16 03:02 明王不动心 阅读(535) 评论(0) 推荐(0) 编辑
摘要:使用Raw SQL查询,无需使用ORM表定义。 多数据库,都可直接使用占位符号?,自动转换。 查询时的参数,支持使用Model Struct和Slice,Array 创建一个RawSeter RawSeter接口中所包含的方法: type RawSeter interface { Exec() (s 阅读全文
posted @ 2018-12-16 02:58 明王不动心 阅读(5659) 评论(0) 推荐(0) 编辑
摘要:ORM以QuerySeter来组织查询,每个返回QuerySeter的方法都会获得一个新的QuerySeter对象。 基本使用方法: 1.expr QuerySeter中用于描述字段和sql操作符,使用简单的expr查询方法。 字段组合的其后顺序依照表的关系,比如User表拥有Profile的外键, 阅读全文
posted @ 2018-12-16 02:38 明王不动心 阅读(9503) 评论(0) 推荐(0) 编辑
摘要:如果已知主键的值,那么可以使用这些方法进行CRUD操作 对object操作的四个方法Read/Insert/Update/Delete Read Read默认通过主键赋值,可以使用指定的字段进行查询: 对象的其它字段值将会是对应类型的默认值。 ReadOrCreate 尝试从数据库读取,不存在的话就 阅读全文
posted @ 2018-12-15 06:49 明王不动心 阅读(988) 评论(0) 推荐(0) 编辑
摘要:先来看一个简单示例: models.gp main.go 一、数据库的设置 目前beego ORM支持三种数据库,已经经过基本测试。 RegisterDriver 三种默认数据库类型的版本设置 RegisterDataBase ORM必须注册一个别名为default的数据库,作为默认使用。ORM使用 阅读全文
posted @ 2018-12-15 05:53 明王不动心 阅读(3488) 评论(0) 推荐(0) 编辑
摘要:beego ORM是一个强大的Go语言ORM框架。她的灵感主要来自Django ORM和SQLAlchemy。 已经支持的数据库驱动: MySQL:https://github.com/go-sql-driver/mysql PostgreSQL:https://github.com/lib/pq 阅读全文
posted @ 2018-12-15 04:36 明王不动心 阅读(1470) 评论(0) 推荐(0) 编辑
摘要:beego通过Redirect方法来进行跳转: 如何终止此次请求并抛出异常,beego可以在控制器中这样操作: 这样 this.Abort("401") 之后的代码不会再执行,而且会默认显示给用户如下页面: beego 框架默认支持 401、403、404、500、503 这几种错误的处理。用户可以 阅读全文
posted @ 2018-12-15 03:02 明王不动心 阅读(4981) 评论(0) 推荐(0) 编辑
摘要:beego的日志处理是基于logs模块搭建的,内置了一个变量BeeLogger,默认已经是logs.BeeLogger,初始化了console,也就是默认输出到console。 使用入门 一般在程序中我们使用如下的方式进行输出: 设置输出 我们的程序往往期望把信息输出到log中,现在设置输出到文件很 阅读全文
posted @ 2018-12-15 02:26 明王不动心 阅读(5624) 评论(0) 推荐(0) 编辑
摘要:表单验证是用于数据验证和错误收集的模块。 安装: 测试: 示例1:直接使用 示例2:通过StructTag使用 StructTag 可用的验证函数: Required 不为空,即各个类型要求不为其零值 Min(min int) 最小值,有效类型:int,其他类型都将不能通过验证 Max(max in 阅读全文
posted @ 2018-12-15 02:09 明王不动心 阅读(4098) 评论(0) 推荐(0) 编辑
摘要:beego当初设计的时候就考虑了API功能的设计,而我们在设计API的时候经常是输出JSON或者XML数据,那么beego提供了这样的方式直接输出: 1.JSON格式输出 调用ServerJSON之后,会设置content-type 为 application/json,然后同时把数据进行 JSON 阅读全文
posted @ 2018-12-15 02:01 明王不动心 阅读(361) 评论(0) 推荐(0) 编辑
摘要:如果可以匹配URl,那么beego也可以生成URL吗?当然可以。 UrlFor()函数就是用于构建执行函数的URL的。它把对应控制器和函数名结合的字符串作为第一个参数,其余参数对应URL中的变量。未知变量将添加到URL中作为查询参数。 下面定义了一个相应的控制器 下面是我们注册的路由: 那么通过方式 阅读全文
posted @ 2018-12-15 01:54 明王不动心 阅读(645) 评论(0) 推荐(0) 编辑
摘要:这个flash与 Adobe/Macromedia Flash没有任何关系,它主要用于在两个逻辑间传递临时数据, flash中存放的所有数据会在紧接着的下一个逻辑中调用后清除。 一般用于传递提示和错误消息。它适合 Post/Redirect/Get 模式。 下面看使用的例子: 上面的代码执行的大概逻 阅读全文
posted @ 2018-12-15 01:24 明王不动心 阅读(697) 评论(0) 推荐(0) 编辑
摘要:beego支持自定义过滤中间件,例如安全验证、强制跳转等。 过滤器函数如下所示: InsertFilter函数的有三个必填参数和一个可选参数。 (1)pattern 路由规则,可以根据一定的规则进行路由,如果你全匹配可以用*。 (2)position 执行Filter的地方,五个固定参数如下所示,分 阅读全文
posted @ 2018-12-15 01:19 明王不动心 阅读(7612) 评论(0) 推荐(0) 编辑
摘要:beego内置了session模块,目前session模块支持的后端引擎包括memory、cookie、file、mysql、redis、couchbase、memcache、postgres, 用户也可以根据相应的interface实现自己的引擎。 beego中使用相当方便,只要在main入口函数 阅读全文
posted @ 2018-12-15 00:33 明王不动心 阅读(2440) 评论(0) 推荐(0) 编辑
摘要:1.获取参数 我们经常需要获取用户传递的数据,包括Get、POST等方式的请求,beego里面会自动解析这些数据,你可以通过如下方式获取数据: GetString(key string) string GetStrings(key string) []string GetInt(key string 阅读全文
posted @ 2018-12-14 22:24 明王不动心 阅读(5698) 评论(0) 推荐(0) 编辑
摘要:跨站请求伪造,简称XSRF,是Web应用中常见的一个安全问题。 当前防范 XSRF 的一种通用的方法,是对每一个用户都记录一个无法预知的token数据, 然后要求所有提交的请求(POST/PUT/DELETE)中都必须带有这个token数据。如果此数据不匹配 ,那么这个请求就可能是被伪造的 关于XS 阅读全文
posted @ 2018-12-14 19:56 明王不动心 阅读(753) 评论(0) 推荐(0) 编辑
摘要:路由本质是URL与要为该URL调用的视图函数之间的映射表,其实就是你定义的使用那个URL调用那段代码的关系对应表。 首先看一下最简单的路由: 以及对应的控制器函数: 基础路由 从beego1.2版本开始支持基本的RESTful函数式路由,应用中大多数路由都会定义在routers/router.go文 阅读全文
posted @ 2018-12-14 17:37 明王不动心 阅读(1140) 评论(0) 推荐(0) 编辑
摘要:基于beego的Controller设计,只需要匿名组合beego.Controller就可以,如下所示: beego.Controller实现了接口beego.ControllerInterface,其源码定义如下: 部分解释: (1)Init(ct *context.Context, child 阅读全文
posted @ 2018-12-14 08:26 明王不动心 阅读(1588) 评论(0) 推荐(0) 编辑
摘要:beego目前支持INI、XML、JSON、YAML格式的配置文件解析,但是默认采用了INI格式解析,用户可以通过简单的配置就可以获得很大的灵活性。 一、默认配置解析 beego 默认会解析当前应用下的 conf/app.conf 文件。 通过这个文件你可以初始化很多 beego 的默认参数: BC 阅读全文
posted @ 2018-12-13 21:32 明王不动心 阅读(1346) 评论(1) 推荐(0) 编辑
摘要:1.定义 函数是结构化编程的最小单元模式。它将复杂的算法过程分解为若干个较小任务,隐藏相关细节,使程序结构更加清晰,易于维护。函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果。一个函数的声明通常包括关键字func、函数名、分别由圆括号包裹的列表参数和结果列表,以及由花括号包 阅读全文
posted @ 2018-12-11 19:16 明王不动心 阅读(607) 评论(0) 推荐(0) 编辑
摘要:在Go语言里面,你不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以消除竞争状态, 还可以使用通道,通过发送和接收需要共享的资源,在goroutine之间做同步。 当一个资源需要在goroutine之间共享时,通道在goroutine之间架起了一个管道,并提供了确保同步交换数据的机制。 声明通 阅读全文
posted @ 2018-12-11 16:46 明王不动心 阅读(284) 评论(0) 推荐(0) 编辑
摘要:通常程序会被编写为一个顺序执行并完成一个独立任务的代码。 如果没有特别的需求,最好总是这样写代码,因为这种类型的程序通常很容易写,也容易维护。 不过也有一些情况下,并行执行多个任务会有更大的好处。 一个例子是,Web服务需要在各自独立的套接字上同时接收多个数据请求。 每个套接字请求都是独立的,可以完 阅读全文
posted @ 2018-12-11 15:06 明王不动心 阅读(837) 评论(0) 推荐(0) 编辑
摘要:相比Erlang,go并未实现严格的并发安全。允许全局变量、指针、引用类型这些非安全内存共享操作,就需要开发人员自行维护数据一致和完整性。Go鼓励使用CSP通道,以通信来代替内存共享,实现并发安全。作为CSP核心,通道(channel)是显式地,要求操作双方必须知道数据类型和具体通道,并不关心另一端 阅读全文
posted @ 2018-12-11 02:53 明王不动心 阅读(466) 评论(0) 推荐(0) 编辑
摘要:并发与并行的区别: 并发:逻辑上具备同时处理多个任务的能力。 并行:物理上在同一时刻执行多个并发任务。通常都会说程序是并发设计的,也就是说它允许多个任务同时执行,但实际上并不一定真在同一时刻发生。在单核处理器上,它们能以间隔方式切换执行。而并行则依赖多核处理器等物理设备,让多个任务真正在同一时刻执行 阅读全文
posted @ 2018-12-11 02:40 明王不动心 阅读(382) 评论(0) 推荐(0) 编辑
摘要:在声明一个新类型之后,声明一个该类型的方法之前,需要先回答一个问题:这个类型的本质是什么。 如果给这个类型增加或删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就使用值接收者。如果是要修改当前值,就使用指针接收者。 这个答案也会影响程序内部传递这个类型的值的方式 阅读全文
posted @ 2018-12-11 01:08 明王不动心 阅读(649) 评论(0) 推荐(0) 编辑
摘要:多态是指代码可以根据类型的具体实现采取不同行为的能力。 如果一个类型实现了某个接口,所有使用这个接口的地方,都可以支持这种类型的值。 标准库里有很好的例子,如io包里实现的流式处理接口。 io包提供了一组构造得非常好得接口和函数,来让代码轻松支持流式数据处理。 只要实现两个接口,就能利用整个io包背 阅读全文
posted @ 2018-12-10 22:05 明王不动心 阅读(299) 评论(0) 推荐(0) 编辑
摘要:Go语言是一种静态类型的编程语言。这意味着,编译器需要在编译时知晓程序里每个值的类型。 如果提前知道类型信息,编译器就可以确保程序合理的使用值。 这有助于减少潜在的内存异常和bug,并且使编译器有机会对代码进行一些性能优化,提高执行效率。 值的类型给编译器提供了两部分信息:第一部分,需要分配多少内存 阅读全文
posted @ 2018-12-10 08:09 明王不动心 阅读(184) 评论(0) 推荐(0) 编辑
摘要:切片是一种数据结构,这种数据结构便于使用和管理数据集合。 切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。 切片的动态增长是通过内置函数append来实现的。这个函数可以快速且高效地增长切片。 还可以通过对切片再次切片来缩小一个切片地大小。 因为切片的底层内存也是在连续中分配的,所以切片还能 阅读全文
posted @ 2018-12-10 05:17 明王不动心 阅读(686) 评论(0) 推荐(0) 编辑
摘要:字典是一种数据结构,用于存储一系列无序的键值对。 字典是基于键来存储值。字典功能强大的地方是能够基于键快速检索数据。 键就像索引一样,指向与键关联的值。 1.内部实现 字典是一个集合,可以使用类似处理数组和切片的方式迭代字典中的元素。 但字典是无序的集合,意味着没有办法预测键值对被返回的顺序。 即使 阅读全文
posted @ 2018-12-09 09:21 明王不动心 阅读(1187) 评论(0) 推荐(0) 编辑
摘要:1.内部实现 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。 数组存储的类型可以是内置类型,如整型或字符串,也可以是某种结构类型。 灰格子代表数组里面的元素,每个元素都紧邻另一个元素。 每个元素都属于相同的类型,并且每个元素可以用一个唯一的索引(也称下标或标号 阅读全文
posted @ 2018-12-09 06:04 明王不动心 阅读(292) 评论(0) 推荐(0) 编辑
摘要:反射(reflect)让我们能在运行期探知对象地类型信息和内存结构,这从一定程度上弥补了静态语言在动态行为上地不足。和C数据结构一样,Go对象头部并没有类型指针,通过其自身是无法在运行期获知任何类型相关信息地。反射操作所需地全部信息都源自接口变量。接口变量除存储自身类型外,还会保存实际对象地类型数据 阅读全文
posted @ 2018-12-09 02:06 明王不动心 阅读(235) 评论(0) 推荐(0) 编辑
摘要:Go语言提供了另外一种数据类型,即接口,它把所有具有共性的方法定义在一起,任何其它类型只要实现了这些方法就是实现了这个接口。接口代表一种调用契约,是多个方法声明的集合。在某些动态语言里,接口(interface)也被称作协议(protocol)。准备交互的双方,共同遵守事先约定的规则,使得无须知道对 阅读全文
posted @ 2018-12-09 01:55 明王不动心 阅读(287) 评论(0) 推荐(0) 编辑
摘要:方法是与对象实例绑定的特殊函数。方法是面向对象编程的基本概念,用于维护和展示对象的自身状态。对象是内敛的,每个实例都有各自不同的独立特征,以属性和方法来暴露对外通信接口。普通函数则专注于算法流程,通过接收参数来完成特定逻辑算法,并最终返回结果。换句话说,方法是有关联状态的,而函数通常没有。方法和函数 阅读全文
posted @ 2018-12-09 01:46 明王不动心 阅读(315) 评论(0) 推荐(0) 编辑
摘要:Go语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体定义需要使用type和struct语句。struct语句定义一个新的数据类型,结构体中有一个或多个成员。type语句设定了结构体的名称。格式如下: 阅读全文
posted @ 2018-12-09 01:36 明王不动心 阅读(694) 评论(0) 推荐(0) 编辑
摘要:Go中字典类型是散列表(hash table)的一个实现,其官方称谓是map。散列表是一个实现了关联数组的数据结构,关联数组是用于表示键值对的无序集合的一种抽象数据类型。Go中称键值对为键-元素对,它把字典中的每个键都看作与其对应的元素的索引,这样的索引再同一个字典值中是唯一的。下面的代码声明了一个 阅读全文
posted @ 2018-12-09 01:07 明王不动心 阅读(435) 评论(0) 推荐(0) 编辑
摘要:切片(slice)可以看作一种对数组的包装形式,它包装的数组为该切片的底层数组。反过来讲,切片是针对其底层数组中某个连续片段的描述,下面的代码声明了一个切片类型的变量: var ips = []string{"192.168.1.1","192.168.1.2","192.168.1.3"}与数组不 阅读全文
posted @ 2018-12-09 01:01 明王不动心 阅读(322) 评论(0) 推荐(0) 编辑
摘要:数组(array)就是由若干个相同类型的元素组成的序列。 在这条赋值语句中,我们为刚声明的变量ipv4赋值。在这种情况下,变量名右边的类型字面量可以省略。如果它在函数里面,那么关键字var也可以省略,但赋值符号必须由=变为:=。类型字面量[4]uint8表明这个变量的类型长度为4且元素类型为uint 阅读全文
posted @ 2018-12-09 00:36 明王不动心 阅读(1549) 评论(0) 推荐(0) 编辑
摘要:Go在流程控制方面的特点如下: 没有do和while循环,只有一个更广义的for语句。 switch语句灵活多变,还可以用于类型判断。 if语句和switch语句都可以包含一条初始化子语句。 break语句和continue语句可以后跟一条标签(label)语句,以标识需要终止或继承的代码块。 de 阅读全文
posted @ 2018-12-09 00:20 明王不动心 阅读(298) 评论(0) 推荐(0) 编辑
摘要:Go有许多预定义类型,这里简单把它们分为基本类型和高级类型。下面是基本类型列表: Go的基本类型共有18个,其中int和uint的实际宽度会根据计算架构的不同而不同。在386计算架构下,它的宽度为32比特,即4个字节。在amd64计算架构下,它们的宽度为64比特,即8个字节。byte类型可以看作un 阅读全文
posted @ 2018-12-08 23:42 明王不动心 阅读(1432) 评论(0) 推荐(0) 编辑
摘要:Go的语言符号又称为词法元素,共包括5类内容: 标识符(identifier) 关键字(keyword) 字面量(literal) 分隔符(delimiter) 操作符(operator)它们可以组成各种表达式和语句,而后者都无需以分号结尾。 1.标识符 标识符可以表示程序实体,前者即为后者的名称。 阅读全文
posted @ 2018-12-08 23:39 明王不动心 阅读(337) 评论(0) 推荐(0) 编辑
摘要:常量是一个简单值的标识符,在程序运行时,不会被修改的量常量中的数据类型只可以是布尔值、数字型(整数型、浮点型和复数)和字符串。常量的定义格式: 你可以省略类型说明符[type],因为编译器可以根据变量的值来推断其类型。 显式定义: 隐式定义: 多个相同类型的声明可以简写为: 下面是一个综合示例: 需 阅读全文
posted @ 2018-12-08 23:39 明王不动心 阅读(260) 评论(0) 推荐(0) 编辑
摘要:在数学概念中,变量(variable)表示没有固定值且可以改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。作为静态类型语言,Go语言总是有固定的数据类型,类型决定了变量内存的长度和存储格式。通过类型转换或指针操作,我们可以修改变量值,但是却无法改变变量的类型。因为内存分配发 阅读全文
posted @ 2018-12-08 23:22 明王不动心 阅读(258) 评论(0) 推荐(0) 编辑
摘要:Go本身包含大量用户处理Go程序的命令和工具. 1.子命令 go命令的子命令:build:用于编译指定的代码包或Go语言源码文件. 命令源码文件会被编译成可执行文件,并存放到命令执行的目录或指定目录下. 而库源码文件被编译后,则不会在非临时目录中留下任何文件. clean:用于清除因执行其它go命令 阅读全文
posted @ 2018-12-08 23:03 明王不动心 阅读(335) 评论(0) 推荐(0) 编辑
摘要:Go是一门推崇软件工程理念的编程语言,它为开发周期的每个环节都提供了完备的工具和支持。 Go语言高度强调代码和项目的规范和统一,这几种体现在工程结构或者说代码体制的细节之处。 1.工作区 一般情况下,Go源码文件必须放在工作区中。但是对于命令源码文件来说,这不是必须的。工作区其实就是一个对应于特定工 阅读全文
posted @ 2018-12-08 22:59 明王不动心 阅读(1372) 评论(0) 推荐(0) 编辑
摘要:1.下载安装 官方下载地址:https://golang.org/dl/ 备用下载地址:https://golang.google.cn/dl/ 在windows下面直接运行.msi程序文件就可以安装,注意添加环境变量,windows在安装地时候一般都会自动添加环境变量。 在linux下安装执行如下 阅读全文
posted @ 2018-12-08 22:46 明王不动心 阅读(4124) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示