• S.O.L.I.D 原则在 Go 中的应用

    Posted by : lon.y@qq.com on 2017年7月6日

    前言 由于自己最近灵感枯竭,所以我决定翻译一篇别人的文章 O(∩_∩)O~。作为一个一直想学 Go,但想了好久还没入门的人,我挑了篇写 Go 的文章,顺便帮自己熟悉一下 Go。原文是 Dave Cheney 根据自己 GolangUK 的演讲所整理的,全文以 SOLID 原则为线路,讲述了什么样的 Go 代码才算是好代码,当然 SOLID 原则也适用于其他语言。 英文原文比较长,由我和 Kevin 合译。 世界上有多少个 Go 语言开发者? 介个世界上有多

    阅读全文...

  • 我用 Go 语言做了一个红白机模拟器

    Posted by : lon.y@qq.com on 2017年7月4日

    译注:Family Computer(简称 FC)是任天堂(Nintendo)公司发行的家用游戏主机。日版 FC 机身以红色和白色为主,因此在华人圈中又有“红白机”的俗称;欧美版 FC 在欧美则称 Nintendo Entertainment System(简称 NES)。 (游戏截图) 最近我编写了一个 FC 模拟器。制作这样一个模拟器主要是出于兴趣以及为了从中学习 FC 的工作原理。在这个过程中我学到了很多有趣的知识,于是写下这篇文章同诸位分享我所学到

    阅读全文...

  • 使用Golang快速构建WEB应用

    Posted by : lon.y@qq.com on 2017年7月4日

    1.Abstract 在学习web开发的过程中会遇到很多困难,因此写一篇类似综述类的文章。作为路线图,从web开发要素的index出发,来介绍golang开发的学习流程以及Example代码。在描述中多是使用代码来描述使用方法不会做过多的说明。最后可以方便地copy代码来实现自己的需求。 本文适应对象: 对web开发有一定经验的人 能够灵活使用ajax的人(至少懂得前后分离) golang web 开发有一定了解,至少略读过一些golang web开发的书

    阅读全文...

  • Go语言内幕(5):运行时启动过程

    Posted by : lon.y@qq.com on 2017年7月4日

    启动过程是理解 Go 语言运行时工作原理的关键。如果你想继续深入了解 Go,那么分析启动过程就非常重要。因此第五部分就着重讲解 Go 运行时,特别是 Go 程序的启动过程。这一次你会学到如下的内容: Go 语言启动过程 大小可变的栈是如何实现的 TLS  的实现机制 请注意这篇博客中会有很多汇编代码,你需要提前了解一下这方面的知识(Go 汇编器快速入门请参考这里)。让我们开始吧! 寻找入口点 首先需要找到启动 Go 程序后执行的第一个函数。为了找到这个函数

    阅读全文...

  • Go语言内幕(1):主要概念与项目结构

    Posted by : lon.y@qq.com on 2017年7月4日

    这个系列博客主要为那些对 Go 基本知识已经有一定了解,又希望对其内部细节进行更深一步地探索的人准备的。今天这一篇主要分析 Go 源代码的基本结构以及 Go 编译器的某些内部细节。读完这篇博客后,你会得到下面三个问题的答案: 1. Go 源代码结构是什么样子的? 2. Go 编译器是如何工作的? 3. Go 语言中的结点树的基本结构是什么样的? 让我们开始吧 每当开始学习一门新编程语言的时候,你总是可以找到大量的 “hello world” 教程、新手指南

    阅读全文...

  • Go 反射实践及剖析

    Posted by : lon.y@qq.com on 2017年7月4日

    Go struct拷贝 在用Go做orm相关操作的时候,经常会有struct之间的拷贝。比如下面两个struct之间要拷贝共同成员B,C。这个在struct不是很大的时候从来都不是问题,直接成员拷贝即可。但是当struct的大小达到三四十个成员的时候,就要另辟蹊径了。 type A struct { A int B int C string E string } type B struct { B int C string D int E string }

    阅读全文...

  • Go并发编程基础

    Posted by : lon.y@qq.com on 2017年7月4日

    本文是一篇并发编程方面的入门文章,以Go语言编写示例代码,内容涵盖: 运行期并发线程(goroutines) 基本的同步技术(管道和锁) Go语言中基本的并发模式 死锁和数据竞争 并行计算 在开始阅读本文之前,你应该知道如何编写简单的Go程序。如果你熟悉的是C/C++、Java或Python之类的语言,那么 Go语言之旅 能提供所有必要的背景知识。也许你还有兴趣读一读 为C++程序员准备的Go语言教程 或 为Java程序员准备的Go语言教程。 Go允许使用

    阅读全文...

  • Go语言六周年,2016年初发布Go 1.6

    Posted by : lon.y@qq.com on 2017年7月4日

    2009年11月10日,Go 语言作为开源项目正式发布。从那开始,已经有超过 780 位贡献者,提交了 30,000 个 commits 到项目的 22 个代码仓库。Go 的生态系统也在不断壮大,在 GitHub 已经有超过 90,000 个 Go 代码库。同时,线下活动也在很积极的展开,在世界各地都有 Go 会议和用户组。 Go 在 8 月份发布了 Go 1.5 版本,这是 Go 发布以来最重大的版本,因为实现了自举,可以使用 Go 编译 Go。Go 1

    阅读全文...

  • Golang的方法集继承规则示例

    Posted by : lon.y@qq.com on 2017年7月4日

    本篇通过具体示例来展现 Golang 机制中 methods set 的继承规则。 0x00 简单method的规则 首先,我们声明示例的基本操作结构体。 type Cat struct{ Name string Color string } 我们声明了一个 Cat 的 type,在它的基础上我们声明一个Meow的method: func (c Cat) Meow() { fmt.Println("Name:", c.Name, "Color:", c.C

    阅读全文...

  • Go 中的锁源码实现:Mutex

    Posted by : lon.y@qq.com on 2017年7月4日

    上一篇文章《当我们谈论锁,我们谈什么》 中我提到了锁,准确地说是信号量(semaphore, mutext是semaphore的一种)的实现方式有两种:wait的时候忙等待或者阻塞自己。 //忙等待 wait(S) { while(Svalue--; if (S->value < 0) { add this process to S->list; block() } } 忙等待和阻塞方式各有优劣: 忙等待会使CPU空转,好处是如果在当前时间片内锁被其他进程

    阅读全文...

  • 1(current)
  • 2
  • 3