diff --git a/01.0.md b/01.0.md index d9209054..0f87e03a 100755 --- a/01.0.md +++ b/01.0.md @@ -1,12 +1,5 @@ # 1 GO环境配置 -## 目录 - * 1. [Go安装](01.1.md) - * 2. [GOPATH与工作空间](01.2.md) - * 3. [Go命令](01.3.md) - * 4. [Go开发工具](01.4.md) - * 5. [小结](01.5.md) - 欢迎来到Go的世界,让我们开始吧! Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点: @@ -21,6 +14,10 @@ Go试图成为结合解释型编程的轻松、动态类型语言的高效以及 在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。 +## 目录 + +![](images/navi1.png?raw=true) + ## links * [目录]() * 下一节: [Go安装](<01.1.md>) diff --git a/02.0.md b/02.0.md index d4cf03b4..5d4f9fd1 100755 --- a/02.0.md +++ b/02.0.md @@ -1,15 +1,5 @@ # 2 Go语言基础 -## 目录 - * 1. [你好,Go](02.1.md) - * 2. [Go基础](02.2.md) - * 3. [流程和函数](02.3.md) - * 4. [struct类型](02.4.md) - * 5. [面向对象](02.5.md) - * 6. [interface](02.6.md) - * 7. [并发](02.7.md) - * 8. [小结](02.8.md) - Go是一门类似C的编译型语言,但是它的编译速度非常快。这门语言的关键字总共也就二十五个,比英文字母还少一个,这对于我们的学习来说就简单了很多。先让我们看一眼这些关键字都长什么样: break default func interface select @@ -20,6 +10,8 @@ Go是一门类似C的编译型语言,但是它的编译速度非常快。这 在接下来的这一章中,我将带领你去学习这门语言的基础。通过每一小节的介绍,你将发现,Go的世界是那么地简洁,设计是如此地美妙,编写Go将会是一件愉快的事情。等回过头来,你就会发现这二十五个关键字是多么地亲切。 +## 目录 +![](images/navi2.png?raw=true) ## links * [目录]() diff --git a/03.0.md b/03.0.md index b2c1ba4b..8d931692 100755 --- a/03.0.md +++ b/03.0.md @@ -1,14 +1,10 @@ # 3 Web基础 -## 目录 - * 1. [web工作方式](03.1.md) - * 2. [GO搭建一个简单的web服务](03.2.md) - * 3. [Go如何使得web工作](03.3.md) - * 4. [Go的http包详解](03.4.md) - * 5. [小结](03.5.md) - 学习基于Web的编程可能正是你读本书的原因。事实上,如何通过Go来编写Web应用也是我编写这本书的初衷。前面已经介绍过,Go目前已经拥有了成熟的Http处理包,这使得编写能做任何事情的动态Web程序易如反掌。在接下来的各章中将要介绍的内容,都是属于Web编程的范畴。本章则集中讨论一些与Web相关的概念和Go如何运行Web程序的话题。 +## 目录 +![](images/navi3.png?raw=true) + ## links * [目录]() * 上一章: [第二章总结](<02.8.md>) diff --git a/04.0.md b/04.0.md index 754bcd68..7b84acd1 100755 --- a/04.0.md +++ b/04.0.md @@ -1,13 +1,5 @@ # 4 表单 -## 目录 - * 1. [处理表单的输入](04.1.md) - * 2. [验证表单的输入](04.2.md) - * 3. [预防跨站脚本](04.3.md) - * 4. [防止多次递交表单](04.4.md) - * 5. [处理文件上传](04.5.md) - * 6. [小结](04.6.md) - 表单是我们平常编写Web应用常用的工具,通过表单我们可以方便的让客户端和服务器进行数据的交互。对于以前开发过Web的用户来说表单都非常熟悉,但是对于C/C++程序员来说,这可能是一个有些陌生的东西,那么什么是表单呢? 表单是一个包含表单元素的区域。表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。表单使用表单标签(\)定义。 @@ -24,6 +16,8 @@ HTTP协议是一种无状态的协议,那么如何才能辨别是否是同一 表单还有一个很大的功能就是能够上传文件,那么Go是如何处理文件上传的呢?针对大文件上传我们如何有效的处理呢?4.5小节我们将一起学习Go处理文件上传的知识。 +## 目录 +![](images/navi4.png?raw=true) ## links * [目录]() diff --git a/05.0.md b/05.0.md index 3915e259..b3efa4b4 100755 --- a/05.0.md +++ b/05.0.md @@ -6,13 +6,7 @@ Go没有内置的驱动支持任何的数据库,但是Go定义了database/sql 目前NOSQL已经成为Web开发的一个潮流,很多应用采用了NOSQL作为数据库,而不是以前的缓存,5.6小节将介绍MongoDB和Redis两种NOSQL数据库。 ## 目录 - * 1. [database/sql接口](05.1.md) - * 2. [使用MySQL数据库](05.2.md) - * 3. [使用SQLite数据库](05.3.md) - * 4. [使用PostgreSQL数据库](05.4.md) - * 5. [使用beedb库进行ORM开发](05.5.md) - * 6. [NOSQL数据库操作](05.6.md) - * 7. [小结](05.7.md) + ![](images/navi5.png?raw=true) ## links * [目录]() diff --git a/06.0.md b/06.0.md index f59bade0..ad620a3a 100755 --- a/06.0.md +++ b/06.0.md @@ -4,11 +4,7 @@ Web开发中一个很重要的议题就是如何做好用户的整个浏览过 6.1小节里面讲介绍session机制和cookie机制的关系和区别,6.2讲解Go语言如何来实现session,里面讲实现一个简易的session管理器,6.3小节讲解如何防止session被劫持的情况,如何有效的保护session。我们知道session其实可以存储在任何地方,6.3小节里面实现的session是存储在内存中的,但是如果我们的应用进一步扩展了,要实现应用的session共享,那么我们可以把session存储在数据库中(memcache或者redis),6.4小节将详细的讲解如何实现这些功能。 ## 目录 - * 1. [session和cookie](06.1.md) - * 2. [Go如何使用session](06.2.md) - * 3. [session存储](06.3.md) - * 4. [预防session劫持](06.4.md) - * 5. [小结](06.5.md) + ![](images/navi6.png?raw=true) ## links * [目录]() diff --git a/07.0.md b/07.0.md index a6156ddb..3e481477 100755 --- a/07.0.md +++ b/07.0.md @@ -4,13 +4,7 @@ Web开发中对于文本处理是非常重要的一部分,我们往往需要 XML是目前很多标准接口的交互语言,很多时候和一些Java编写的webserver进行交互都是基于XML标准进行交互,7.1小节将介绍如何处理XML文本,我们使用XML之后发现它太复杂了,现在很多互联网企业对外的API大多数采用了JSON格式,这种格式描述简单,但是又能很好的表达意思,7.2小节我们将讲述如何来处理这样的JSON格式数据。正则是一个让人又爱又恨的工具,它处理文本的能力非常强大,我们在前面表单验证里面已经有所领略它的强大,7.3小节将详细的更深入的讲解如何利用好Go的正则。Web开发中一个很重要的部分就是MVC分离,在Go语言的Web开发中V有一个专门的包来支持`template`,7.4小节将详细的讲解如何使用模版来进行输出内容。7.5小节讲详细介绍如何进行文件和文件夹的操作。7.6小结介绍了字符串的相关操作。 ## 目录 - * 1. [XML处理](07.1.md) - * 2. [JSON处理](07.2.md) - * 3. [正则处理](07.3.md) - * 4. [模板处理](07.4.md) - * 5. [文件操作](07.5.md) - * 6. [字符串处理](07.6.md) - * 7. [小结](07.7.md) + ![](images/navi7.png?raw=true) ## links * [目录]() diff --git a/08.0.md b/08.0.md index a42337fb..398cc2f4 100755 --- a/08.0.md +++ b/08.0.md @@ -12,11 +12,7 @@ SOAP是W3C在跨网络信息传递和远程计算机函数调用方面的一个 Go语言是21世纪的C语言,我们追求的是性能、简单,所以我们在8.1小节里面介绍如何使用Socket编程,很多游戏服务都是采用Socket来编写服务段,因为HTTP协议相对而言比较耗费性能,让我们看看Go语言如何来Socket编程。目前随着HTML5的发展,webSockets也逐渐的成为很多页游公司接下来开发的一些手段,我们将在8.2小节里面讲解Go语言如何编写webSockets的代码。 ## 目录 - * 1. [Socket编程](08.1.md) - * 2. [WebSocket](08.2.md) - * 3. [REST](08.3.md) - * 4. [RPC](08.4.md) - * 5. [小结](08.5.md) + ![](images/navi8.png?raw=true) ## links * [目录]() diff --git a/09.0.md b/09.0.md index 25fcdc9a..2da457d1 100755 --- a/09.0.md +++ b/09.0.md @@ -12,13 +12,7 @@ 加密的本质就是扰乱数据,某些不可恢复的数据扰乱我们称为单项加密或者散列算法。另外还有一种双向加密方式,也就是可以对加密后的数据进行解密。我们将会在9.6小节介绍如何实现这种双向加密方式。 ## 目录 - * 1 [预防CSRF攻击](09.1.md) - * 2 [确保输入过滤](09.2.md) - * 3 [避免XSS攻击](09.3.md) - * 4 [避免SQL注入](09.4.md) - * 5 [存储密码](09.5.md) - * 6 [加密和解密数据](09.6.md) - * 7 [小结](09.7.md) + ![](images/navi9.png?raw=true) ## links * [目录]() diff --git a/10.0.md b/10.0.md index 9c4c398e..aeb783fa 100755 --- a/10.0.md +++ b/10.0.md @@ -16,10 +16,8 @@ 在第一小节里,我们将介绍如何设置正确的locale以便让访问站点的用户能够获得与其语言相应的页面。第二小节将介绍如何处理或存储字符串、货币、时间日期等与locale相关的信息,第三小节将介绍如何实现国际化站点,即如何根据不同locale返回不同合适的内容。通过这三个小节的学习,我们将获得一个完整的i18n方案。 ## 目录 - * 1 [设置默认地区](10.1.md) - * 2 [本地化资源](10.2.md) - * 3 [国际化站点](10.3.md) - * 4 [小结](10.4.md) + + ![](images/navi10.png?raw=true) ## links * [目录]() diff --git a/11.0.md b/11.0.md index 66f0ac09..b2d10ed9 100755 --- a/11.0.md +++ b/11.0.md @@ -10,10 +10,8 @@ 长期以来,培养良好的调试、测试习惯一直是很多程序员逃避的事情,所以现在你不要再逃避了,就从你现在的项目开发,从学习Go Web开发开始养成良好的习惯。 ## 目录 - * 1 [错误处理](11.1.md) - * 2 [使用GDB调试](11.2.md) - * 3 [Go怎么写测试用例](11.3.md) - * 4 [小结](11.4.md) + +![](images/navi11.png?raw=true) ## links * [目录]() diff --git a/12.0.md b/12.0.md index a074b376..c8c1c790 100755 --- a/12.0.md +++ b/12.0.md @@ -3,11 +3,7 @@ 本章我们将通过四个小节来介绍这些小细节的处理,第一小节介绍如何在生产服务上记录程序产生的日志,如何记录日志,第二小节介绍发生错误时我们的程序如何处理,如何保证尽量少的影响到用户的访问,第三小节介绍如何来部署Go的独立程序,由于目前Go程序还无法像C那样写成daemon,那么我们如何管理这样的进程程序后台运行呢?第四小节讲介绍应用数据的备份和恢复,尽量保证应用在奔溃的情况能够保持数据的完整性。 ## 目录 - * 1 [应用日志](12.1.md) - * 2 [网站错误处理](12.2.md) - * 3 [应用部署](12.3.md) - * 4 [备份和恢复](12.4.md) - * 5 [小结](12.5.md) + ![](images/navi12.png?raw=true) ## links * [目录]() diff --git a/13.0.md b/13.0.md index a0befe2d..5d4c63f9 100755 --- a/13.0.md +++ b/13.0.md @@ -4,12 +4,7 @@ 通过这么一个完整的项目例子,我期望能够让读者了解如何开发Web应用,如何搭建自己的目录结构,如何实现路由,如何实现MVC模式等各方面的开发内容。在框架盛行的今天,MVC也不再是神话。经常听到很多程序员讨论哪个框架好,哪个框架不好, 其实框架只是工具,没有好与不好,只有适合与不适合,适合自己的就是最好的,所以教会大家自己动手写框架,那么不同的需求都可以用自己的思路去实现。 ## 目录 - * 1 [项目规划](13.1.md)  - * 2 [自定义路由器设计](13.2.md) - * 3 [controller设计](13.3.md) - * 4 [日志和配置设计](13.4.md) - * 5 [实现博客的增删改](13.5.md) - * 6 [小结](13.6.md)  + ![](images/navi13.png?raw=true) ## links * [目录]() diff --git a/14.0.md b/14.0.md index ac25bd71..e3ccad1c 100755 --- a/14.0.md +++ b/14.0.md @@ -4,13 +4,7 @@ 通过本章的扩展,beego框架将具有快速开发Web的特性,最后我们将讲解如何利用这些扩展的特性扩展开发第十三章开发的博客系统,通过开发一个完整、美观的博客系统让读者了解beego开发带给你的快速。 ## 目录 - * 1 [静态文件支持](14.1.md) - * 2 [Session支持](14.2.md) - * 3 [表单及验证支持](14.3.md) - * 4 [用户认证](14.4.md) - * 5 [多语言支持](14.5.md) - * 6 [pprof支持](14.6.md) - * 7 [小结](14.7.md) +![](images/navi14.png?raw=true) ## links * [目录]() diff --git a/images/navi1.png b/images/navi1.png new file mode 100644 index 00000000..92a7669e Binary files /dev/null and b/images/navi1.png differ diff --git a/images/navi10.png b/images/navi10.png new file mode 100644 index 00000000..94935e27 Binary files /dev/null and b/images/navi10.png differ diff --git a/images/navi11.png b/images/navi11.png new file mode 100644 index 00000000..8eb93cb1 Binary files /dev/null and b/images/navi11.png differ diff --git a/images/navi12.png b/images/navi12.png new file mode 100644 index 00000000..5bdbadfa Binary files /dev/null and b/images/navi12.png differ diff --git a/images/navi13.png b/images/navi13.png new file mode 100644 index 00000000..c797033b Binary files /dev/null and b/images/navi13.png differ diff --git a/images/navi14.png b/images/navi14.png new file mode 100644 index 00000000..3d9d38cc Binary files /dev/null and b/images/navi14.png differ diff --git a/images/navi2.png b/images/navi2.png new file mode 100644 index 00000000..d18526ac Binary files /dev/null and b/images/navi2.png differ diff --git a/images/navi3.png b/images/navi3.png new file mode 100644 index 00000000..23495893 Binary files /dev/null and b/images/navi3.png differ diff --git a/images/navi4.png b/images/navi4.png new file mode 100644 index 00000000..1b4df73a Binary files /dev/null and b/images/navi4.png differ diff --git a/images/navi5.png b/images/navi5.png new file mode 100644 index 00000000..55788152 Binary files /dev/null and b/images/navi5.png differ diff --git a/images/navi6.png b/images/navi6.png new file mode 100644 index 00000000..74cab817 Binary files /dev/null and b/images/navi6.png differ diff --git a/images/navi7.png b/images/navi7.png new file mode 100644 index 00000000..2e1c974e Binary files /dev/null and b/images/navi7.png differ diff --git a/images/navi8.png b/images/navi8.png new file mode 100644 index 00000000..7a52d84e Binary files /dev/null and b/images/navi8.png differ diff --git a/images/navi9.png b/images/navi9.png new file mode 100644 index 00000000..7692e113 Binary files /dev/null and b/images/navi9.png differ