把时间当作朋友

把时间当作朋友

有些时候,有些事物,从反面描述比从正面描述更为容易。如若先仔细说清楚这本书不是什么,之后对“它究竟是什么”这个问题,可能就不言自明了。

深入解析Go

因为对Go底层的东西比较感兴趣,所以抽空在写一本开源的书籍《深入解析Go》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享对Go语言的内部实现的一些研究。

精通比特币(第二版)

精通比特币(第二版)

比特币不单单是一种数字货币,还是一种给货币及其他很多东西提供基础的信任网络。对“不是货币,而是去中心化信任网络”的领悟。

区块链技术指南

区块链技术指南

区块链是金融科技(Fintech)领域的一项重要基础科技创新。本书希望可以客观探索区块链概念的来龙去脉,系统剖析关键技术和原理,同时讲解实践应用。在开发开源分布式账本平台(超级账本),以及为企业设计方案过程中,笔者积累了一些实践经验,也通过本书分享出来,希望能有助于分布式账本科技的发展和应用。

Go语言博客实践

本书讲述了如何使用Go语言快速搭建一个博客系统。

WebApps in Go

WebApps in Go

This is an easy to understand example based tutorial aimed at those who know a little of Go and nothing of webdev and want to learn how to write a webserver in Go. You will create a to do list application as you advance the chapters.

Go语言圣经(中文版)

Go语言圣经(中文版)

Go语言圣经 《The Go Programming Language》 中文版本,仅供学习交流之用。对于希望学习CGO、Go汇编语言等高级用法的同学,我们推荐《Go语言高级编程》开源图书。

Go简易教程

Go简易教程

Go语言也称 Golang,兼具效率、性能、安全、健壮等特性。这套Go语言教程(Golang教程)通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点。这套教程在讲解一些知识点时,将 Go 语言和其他多种语言进行对比,让掌握其它编程语言的读者能迅速理解 Go 语言的特性。

Go语言高级编程

Go语言高级编程

本书涵盖CGO、Go汇编语言、RPC实现、Web框架实现、分布式系统等高阶主题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员。

给JavaScript程序员的Golang指导书

给JavaScript程序员的Golang指导书

This document compares between two programming languages, Golang (or "Go") and ECMAScript (or "Javascript" / "JS"). The merits of this pairing is the popularity of these languages. That's it. They are not similar, in fact, they are quite different. Javascript is an event driven, dynamically typed and interpreted language, while Go is a statically typed and compiled language.

Go RPC 开发指南

Go RPC 开发指南

本书首先介绍了使用Go官方库开发RPC服务的方法,然后介绍流行gRPC库以及其它一些RPC框架如Thrift等,后面重点介绍高性能的分布式全功能的RPC框架 rpcx。读者通过阅读本书,可以快速学习和了解Go生态圈的RPC开发技术,并且应用到产品的开发中。

Go语言标准库

Golang标准库。对于程序员而言,标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案。以示例驱动的方式讲解Golang的标准库。

一步步搭建物联网系统

全方位解读IOT的技术体系。

SystemTap新手指南

SystemTap允许使用者监控Linux系统当前的运行情况,以便进一步分析。这将有助于运维或开发人员缉查bug或性能问题的罪魁祸首。

操作系统思考

在许多计算机科学的课程中,操作系统都是高级话题。学生在上这门课之前,它们已经知道了如何使用C语言编程,他们也可能上过计算机体系结构(组成原理)的课程。通常这门课的目标是让学生们接触操作系统的设计与实现,并带有一些他们未来在该领域所研究的隐含假设,或者让他们手写OS的一部分。这本书为一些不同的读者准备,并且具有不同的目标。我为欧林工学院中一门叫做软件系统的课程编写了它。

命令行的艺术

熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。

理解Linux进程

理解Linux进程

进程的概念大家都很熟悉,但你是否能准确说出僵尸进程的含义呢?还有COW(Copy On Write)、Flock(File Lock)、Epoll和Namespace的概念又是否了解过呢?本书汇集了进程方方面面的基础知识,加上编程实例,保证阅读后能自如地回答以上问题,在项目开发中对进程的优化也有更深的理解。

Mac 开发配置手册

Mac 开发配置手册

手册内容为「如何让一部全新的 MacBook 快速完成开发环境配置」,主要面向 Web 开发者。其中的指导,在 Mavericks 和 Yosemite 上有效,其他版本系统并未尝试。

你不懂JS:入门与进阶

你不懂JS:入门与进阶

这本书从很高的角度来解释编程的基本原则开始。它基本上假定你是在没有或很少的编程经验的情况下开始阅读 *YDKJS* 的,而且你期待这些书可以透过JavaScript的镜头帮助你开启一条理解编程的道路。

你不懂JS:类型与文法

你不懂JS:类型与文法

在本语言规范中的算法所操作的每一个值都有一种关联的类型。可能的值的类型就是那些在本条款中定义的类型。类型还进一步被分为 ECMAScript 语言类型和语言规范类型

你不懂JS: *this* 与对象原型

你不懂JS: *this* 与对象原型

JavaScript 中最令人困惑的机制之一就是 `this` 关键字。它是一个在每个函数作用域中自动定义的特殊标识符关键字,但即便是一些老练的 JavaScript 开发者也对它到底指向什么感到困扰。

你不懂JS:作用域与闭包

你不懂JS:作用域与闭包

几乎所有语言的最基础模型之一就是在变量中存储值,并且在稍后取出或修改这些值的能力。事实上,在变量中存储值和取出值的能力,给程序赋予了 *状态*。

你不懂JS:ES6与未来

你不懂JS:ES6与未来

如果每次你在JavaScript中遭遇惊诧和挫折时,你的反应都是像某些人习惯的那样将它加入黑名单,那么你很快就会将JavaScript的丰富内涵掏成一个空壳。虽然这部分子集曾经被称为著名的“好的部分”,但我恳求你,亲爱的读者,把它看作是“简单的部分”,“安全的部分”,甚至是“不完整的部分”。这套 *你不懂JavaScript* 系列丛书提出了一个相反的挑战:学习并深刻理解JavaScript的 *全部*, 甚至是而且特别是“艰难的部分”。这里,我们迎面挑战这种趋势:JS开发者总是得过且过地学习“将就够用”的东西,而从来不强迫他们自己去学习这门语言究竟是为何与如何工作的。另外,我们摒弃那些当路途艰难时常见的 *逃跑* 意见。

你不懂JS: 异步与性能

你不懂JS: 异步与性能

如果每次你在JavaScript中遭遇惊诧和挫折时,你的反应都是像某些人习惯的那样将它加入黑名单,那么你很快就会将JavaScript的丰富内涵掏成一个空壳。虽然这部分子集曾经被称为著名的“好的部分”,但我恳求你,亲爱的读者,把它看作是“简单的部分”,“安全的部分”,甚至是“不完整的部分”。这套 *你不懂JavaScript* 系列丛书提出了一个相反的挑战:学习并深刻理解JavaScript的 *全部*, 甚至是而且特别是“艰难的部分”。这里,我们迎面挑战这种趋势:JS开发者总是得过且过地学习“将就够用”的东西,而从来不强迫他们自己去学习这门语言究竟是为何与如何工作的。另外,我们摒弃那些当路途艰难时常见的 *逃跑* 意见。

XORM使用手册(中文版)

xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。xorm的目标并不是让你完全不去学习SQL,我们认为SQL并不会为ORM所替代,但是ORM将可以解决绝大部分的简单SQL需求。xorm支持两种风格的混用。

软件架构模式

应用程序缺乏合理的架构一般会导致程序过度耦合、容易被破坏、难以应对变化,同时很难有一个清晰的版本或者方向性。这样的结果是,如果你没有充分理解程序系统里每个组件和模块,就很难定义这个程序的结构特征。

Java响应式编程

响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。

现代C++编程

现代 C++** (本书中均指 C++11/14/17/20) 为传统 C++ 注入的大量特性使得整个 C++ 变得更加像一门现代化的语言。现代 C++ 不仅仅增强了 C++ 语言自身的可用性,`auto` 关键字语义的修改使得我们更加有信心来操控极度复杂的模板类型。同时还对语言运行期进行了大量的强化,Lambda 表达式的出现让 C++ 具有了『匿名函数』的『闭包』特性,而这一特性几乎在现代的编程语言(诸如 Python/Swift/... )中已经司空见惯,右值引用的出现解决了 C++ 长期以来被人诟病的临时对象效率问题等等。

ZMQ指导教程

ZMQ(ØMQ、ZeroMQ, 0MQ)看起来像是一套嵌入式的网络链接库,但工作起来更像是一个并发式的框架。它提供的套接字可以在多种协议中传输消息,如线程间、进程间、TCP、广播等。你可以使用套接字构建多对多的连接模式,如扇出、发布-订阅、任务分发、请求-应答等。ZMQ的快速足以胜任集群应用产品。它的异步I/O机制让你能够构建多核应用程序,完成异步消息处理任务。

libuv中文教程

本书由很多的libuv教程组成,libuv是一个高性能的,事件驱动的I/O库,并且提供了跨平台(如windows, linux)的API。

编程之法:面试和算法心得

本书涉及面试、算法、机器学习三个主题。书中的每道编程题目都给出了多种思路、多种解法,不断优化、逐层递进。本书第1章至第6章分别阐述字符串、数组、树、查找、动态规划、海量数据处理等相关的编程面试题和算法,第7章介绍机器学习的两个算法—K近邻和SVM。此外,每一章都有“举一反三”和“习题”,以便读者及时运用所学的方法解决相似的问题,且在附录中收录了语言、链表、概率等其他题型。书中的每一道题都是面试的高频题目,反复出现在最近5年各大公司的笔试和面试中,对面试备考有着极强的参考价值。

Android官方培训课程中文版

Google Android团队在2012年的时候开设了Android Training板块,至少已形成大量的课程。这些课程是学习Android应用开发的绝佳资料

C++ Template 进阶指南

模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。它是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。

C的笛卡尔之梦

本书旨在以实验的方式去探究类似 Hello World 这样的小程序在开发与执行过程中的微妙变化,一层层揭开 C 语言程序开发过程的神秘面纱,透视背后的秘密,不断享受醍醐灌顶的美妙。

C Primer

解读const, inline,static, this,pointers, refrence,char*, char[], string, uint8_t, uint16_t, uint32_t, uint64_t,new,delete

C++ 并发编程

本书是基于C++11新标准的并发和多线程编程深度指南。从std::thread、std::mutex、std::future和std::async等基础类的使用,到内存模型和原子操作、基于锁和无锁数据结构的构建,再扩展到并行算法、线程管理,最后还介绍了多线程代码的测试工作。

C语言透视

本书旨在以实验的方式去探究类似 Hello World 这样的小程序在开发与执行过程中的微妙变化,一层层揭开 C 语言程序开发过程的神秘面纱,透视背后的秘密,不断享受醍醐灌顶的美妙。

古典区块链的实现

从2008年比特币的白皮书发布到现在已经过去了十个多年头了,区块链技术本身也因其簇拥者众多, 迅速的进行多次的更新迭代,对于区块链时代的划分,也有着非常多不同的称呼, 例如古典区块链、区块链1.0、第一代区块链等等。

Linux命令行 - 中文版

本文档是The Linux Command Line 一书的中文翻译。

Gitbook 使用教程

本文档指在教读者,使用 Git 和 Markdown 制作精美在线电子书。

CGDB中文手册

CGDB是一款非常优秀的gdb调试器的前端,但是网上的资料匮乏,以至于只有一本英文手册比较详细。为了能够让更多人能够更方便、快速的学习这个工具,于是有了CGDB中文手册

前端开发者手册

前端开发者手册

撰写该手册的目的有两个: 一是为潜在以及正在实践的前端开发人员提供一个包括学习资料和开发工具的专业资源; 二是该手册可以被管理者, CTO, 讲师和猎头用来作为洞察前端开发的实践。

威软实验室前端工程化规范

威软实验室前端工程化规范

这本手册的主要目的是解决现在实验室前端开发中存在的一些问题。比如多人开发时的工作效率不高,代码风格的不统一导致后期代码的维护困难,以及无法准确预估项目开发周期,往往导致开发延期等问题。因此我认为一个统一的流程及代码规范,对我们实验室的项目开发来说是很有必要的。这本手册也可以为以后的实验室前端开发提供一些参考,不至于每一届都从零开始,浪费不必要的时间。

程序员的自我修养

程序员的自我修养

想要成为一个合格的程序员,需要有扎实的基础并且对计算机的发展需要有深入浅出的了解。本系列介绍了成为一个合格程序员的方方面面,从字符编码到常见技术名词,开源协议到计算机发展史,数据结构到代码结构等等。

前端知识总结

前端知识总结

对前端HTML、CSS、JS等基础知识做的整理和小结,以及一些相关面试问题的总结。是前端人员入门必备,同时也可以根据自己的情况查漏补缺。

Think in Java

Think in Java

本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。

Python进阶

Python进阶

本书作者的行文方式有着科普作家的风范,--那就是能将晦涩难懂的技术用比较清晰简洁的方式进行呈现,深入浅出的风格在每个章节的讨论中都得到了体现:每个章节都非常精简,5分钟就能看完,用最简洁的例子精辟地展现了原理;每个章节都会通过疑问,来引导读者主动思考答案;每个章节都引导读者做延伸阅读,让有兴趣的读者能进一步举一反三;每个章节都是独立的,你可以挑选任意的章节开始阅读,而不受影响.

Linux内核揭密

Linux内核揭密

从工业需求角度出发,注重效率和实用性,是帮助内核研发及调试、驱动开发等领域工程师正确认识并高效利用Linux内核的难得佳作!作者是腾讯公司资深的Linux内核专家和存储系统专家,在该领域工作和研究的10余年间,面试了数百位Linux内核工程师,深知学习Linux内核过程中经常遇到的困惑,以及在工作中容易犯的错误。基于这些原因作者撰写了本书。本书出发点和写作方式可谓独辟蹊径,将Linux内核分为两个维度,一是基础部分和应用部分,二是内核架构和内核实现,将两个维有机统一,深入分析了Linux内核的文件系统、设备驱动的架构设计与实现原理。

gRPC入门指导

本书是segmentfault上连载的 Golang gRPC实践 系列文章的重新整理版本,简单调整了目录结构,完善了原有的部分内容并重新整理了示例代码,计划介绍更多的gRPC实践及生态的用法和多语言支持。内容中的示例代码都放在项目 go-grpc-example 内,如无特殊说明,内容的源码的目录说说明将以此项目为根目录。

Golang算法 - Leetcode

Golang算法 - Leetcode

这本书将会对 Leetcode 上的算法题进行分析和讲解,主要使用 Go 解题。

使用Golang构建Web应用

使用Golang构建Web应用

Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。这本电子书从配置Golang开发环境开始,一步一步教您完成网站的搭建。

Golang零基础入门

Golang零基础入门

Golang入门必看。从环境配置,到基本语法,再到使用内置的库操作文件,访问网络。

Echo Web框架

Echo Web框架

Golang编写的Web框架Echo,是一个高性能,可扩展的极小框架。本书为Echo这个框架的指导书,通过Echo这个框架,我们可快速的开发Web网站。

Flutter 实战

Flutter 实战

Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验。

Rust 中文教程

Rust 中文教程

Rust拥有众多优点,包括高性能,高可靠,开发效率高等优点。本文档为《The Rust Programming Language》的中文翻译。

Kotlin 中文教程

Kotlin 中文教程

本书是 Kotlin 语言官方文档的参考(reference)部分的中文翻译。至自 2017 年 5 月中旬起,本书已全部完成。

Markdown入门教程

Markdown入门教程

Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者 HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。本电子书可以做为您学习使用Markdown的参考书。

声明脚本文件

脚本文件一般不需要编译,直接被解释器解释执行,所以需要标识执行,以便当系统执行脚本时,判断是哪一类脚本,从而选择对应的解释器。本文收集了若干种脚本语言的声明方式。

Gradle插件开发手册

Gradle构建工具是任务驱动型的构建工具,并且可以通过各种Plugin插件扩展功能以适应各种构建任务。对应Android项目的Gradle插件就是Android Gradle Plugin。本文是Google官方的Android Gradle Plugin使用指南翻译,以方便我大天朝开发者学习。

Java代码规范

Java代码规范

这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。

ECMAScript 6 入门

ECMAScript 6 入门

本书覆盖 ES6 与上一个版本 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码。本书为中级难度,适合已经掌握 ES5 的读者,用来了解这门语言的最新发展;也可当作参考手册,查寻新增的语法点。如果你是 JavaScript 语言的初学者,建议先学完《JavaScript 语言入门教程》,再来看本书。

跟我一起写Makefile

makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。