随笔分类 -  10 - Go开发

Golang和C都是源于同样的理念设计的编程语言,UNIX创始人之一Ken Thompson是Golang的设计者,同时,他也是C语言设计者之一,他深知C语言存在的问题和影响其开发效率的因素,希望在Golang上得以改善;其次,Golang设计之初就希望成为和C/C++一样的系统语言,执行效率应当与C/C++相媲美,但是要有强大的快速开发能力;最后,Go语言的语法和C语言一样,简单却强大。
该文被密码保护。
posted @ 2019-09-20 15:05 勋爵|X-knight 阅读(1) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-20 14:48 勋爵|X-knight 阅读(1) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-19 15:14 勋爵|X-knight 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-08-30 08:18 勋爵|X-knight 阅读(1) 评论(0) 推荐(0)
摘要:Golang语言的Web开发有很多很多的框架可用,这里做个列举。 Beego框架 Beego框架是astaxie的Goweb开发的开源框架。Beego框架最大的特点是由八个大的基础模块组成,如下图所示: 八大基础模块的特点是可以根据自己的需要进行引入,模块相互独立,模块之间耦合性低。 相应的Beeg 阅读全文
posted @ 2019-08-30 08:06 勋爵|X-knight 阅读(2999) 评论(0) 推荐(0)
摘要:Go是比较容易基于net/http来实现中间件的,比如现在要加一个http访问的拦截器,可以对那些需要授权才能访问的接口进行验证。基于Gin框架来实现这个功能,只要注册一个中间件函数即可。 阅读全文
posted @ 2019-08-30 07:29 勋爵|X-knight 阅读(6597) 评论(0) 推荐(1)
摘要:并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题;Go语言作为一个出道以来就自带 『高并发』光环的富二代编程语言,它的并发(并行)编程肯定是值得开发者去探究的,而Go语言中的并发(并行)编程是经由goroutine实现的,goroutine是golang最重要的特性之一,具有使用成本低、消耗资源低、能效高等特点,官方宣称原生goroutine并发成千上万不成问题,于是它也成为Gopher们经常使用的特性。 阅读全文
posted @ 2019-08-20 15:50 勋爵|X-knight 阅读(2254) 评论(0) 推荐(1)
摘要:G-P-M 模型概述 每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量。这个固定大小的栈同时很大又很小。因为2MB的栈对于一个小小的goroutine来说是很大的内存浪费,而对于一些复杂的任务(如深度嵌套的递归 阅读全文
posted @ 2019-08-16 19:24 勋爵|X-knight 阅读(1810) 评论(0) 推荐(4)
摘要:线程的实现模型主要有3种:内核级线程模型、用户级线程模型和两级线程模型(也称混合型线程模型),它们之间最大的差异就在于用户线程与内核调度实体(KSE,Kernel Scheduling Entity)之间的对应关系上。而所谓的内核调度实体 KSE 就是指可以被操作系统内核调度器调度的对象实体,简单来说, KSE 就是内核级线程,是操作系统内核的最小调度单元,也就是我们写代码的时候通俗理解上的线程了。 阅读全文
posted @ 2019-08-16 19:10 勋爵|X-knight 阅读(764) 评论(0) 推荐(0)
摘要:一、redis 简介 redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value类型的数据库,并提供多种语言的API。和Memc 阅读全文
posted @ 2019-08-16 14:34 勋爵|X-knight 阅读(602) 评论(0) 推荐(0)
摘要:一、简介 go语言中的网络编程主要通过net包实现,net包提供了网络I/O接口,包括HTTP、TCP/IP、UDP、域名解析和Unix域socket等。和大多数语言一样go可以使用几行代码便可以启动一个服务器,但是得益于goroutine的配合go实现的服务器拥有强大并发处理能力。 二、socke 阅读全文
posted @ 2019-08-16 14:33 勋爵|X-knight 阅读(465) 评论(0) 推荐(0)
摘要:一、简介 文件操作对于我们来说也是非常常用的,在python中使用open函数来对文件进行操作,而在go语言中我们使用os.File对文件进行操作。 二、终端读写 操作终端句柄常量 os.Stdin: 标准输入 os.Stdout: 标准输出 os.Stderr: 标准错误输出 读写示例: 三 阅读全文
posted @ 2019-08-16 14:30 勋爵|X-knight 阅读(460) 评论(0) 推荐(0)
摘要:一、interface简介 interface(接口)是golang最重要的特性之一,Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。 简单的说: interface是方法的集合 interface是一种类型,并且是指针类型 interface的更 阅读全文
posted @ 2019-08-16 14:29 勋爵|X-knight 阅读(254) 评论(0) 推荐(0)
摘要:一、struct简介 go语言中没有像类的概念,但是可以通过结构体struct实现oop(面向对象编程)。struct的成员(也叫属性或字段)可以是任何类型,如普通类型、复合类型、函数、map、interface、struct等,所以我们可以理解为go语言中的“类”。 二、struct详解 stru 阅读全文
posted @ 2019-08-16 14:27 勋爵|X-knight 阅读(213) 评论(0) 推荐(0)
摘要:一、内置函数 append :追加元素到slice里,返回修改后的slice close :关闭channel delete :从map中删除key对应的value panic : 用于异常处理,停止常规的goroutine recover :用于异常处理,允许程序定义goroutine的panic 阅读全文
posted @ 2019-08-16 14:25 勋爵|X-knight 阅读(269) 评论(0) 推荐(0)
摘要:摘要 本文构建了一个使用工作量证明机制(POW)的类BTC的区块链。将区块链持久化到一个Bolt数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。这篇文章目的是希望帮助大家理解BTC源码的架构,所以主要专注于的实现原理及存储上,暂时忽略了 “分布式” 这个部分。严格来说还不能 阅读全文
posted @ 2019-04-24 08:42 勋爵|X-knight 阅读(2499) 评论(1) 推荐(5)
摘要:Windows下Terminal默认的使用的是系统自带的cmd,功能实在太少,用起来远不如Git Bash来得方利和高效。其实要在Goland的Terminal中使用Bash设置起来也很简单,设置位置在Settings > Tools > Terminal > Shell_path 这里是设置为:" 阅读全文
posted @ 2019-04-23 18:40 勋爵|X-knight 阅读(3315) 评论(0) 推荐(1)
摘要:1.BoltDB简介 Bolt是一个纯粹Key/Value模型的程序。该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速,可靠的数据库。 BoltDB只需要将其链接到你的应用程序代码中即可使用BoltDB提供的API来高效的存取数据。而且BoltDB支持 阅读全文
posted @ 2019-04-22 23:27 勋爵|X-knight 阅读(10633) 评论(1) 推荐(2)
摘要:1. 安装GO 安装go语言包: 下载完成后,解压至/usr/local 目录下: 2. 配置go语言环境变量 进入.bashrc 配置环境变量: 在最后面加入如下代码: 保存,退出。 使环境变量生效: 查看版本号后没问题,说明配置成功。 3.注意事项: 1.GOPATH路径与GOOROOT相同,会 阅读全文
posted @ 2018-08-23 14:29 勋爵|X-knight 阅读(7822) 评论(0) 推荐(2)
该文被密码保护。
posted @ 2018-08-02 21:09 勋爵|X-knight 阅读(3) 评论(0) 推荐(0)