Mastering Concurrency in Go

Mastering Concurrency in Go pdf epub mobi txt 电子书 下载 2025

出版者:Packt Publishing - ebooks Account
作者:Nathan Kozyra
出品人:
页数:301
译者:
出版时间:2014-7-25
价格:USD 50.99
装帧:Paperback
isbn号码:9781783983483
丛书系列:
图书标签:
  • Go
  • golang
  • 计算机
  • 并发
  • programming
  • 软件工程
  • 计算机科学
  • 程序员
  • Go
  • 并发
  • Goroutine
  • Channel
  • Mutex
  • RWMutex
  • WaitGroup
  • Context
  • 错误处理
  • 性能优化
  • 并发模式
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

作者简介

目录信息

Table of Contents
Mastering Concurrency in Go
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. An Introduction to Concurrency in Go
Introducing goroutines
A patient goroutine
Implementing the defer control mechanism
Using Go's scheduler
Using system variables
Understanding goroutines versus coroutines
Implementing channels
Channel-based sorting at the letter capitalization factory
Cleaning up our goroutines
Buffered or unbuffered channels
Using the select statement
Closures and goroutines
Building a web spider using goroutines and channels
Summary
2. Understanding the Concurrency Model
Understanding the working of goroutines
Synchronous versus asynchronous goroutines
Designing the web server plan
Visualizing concurrency
RSS in action
An RSS reader with self diagnostics
Imposing a timeout
A little bit about CSP
The dining philosophers problem
Go and the actor model
Object orientation
Demonstrating simple polymorphism in Go
Using concurrency
Managing threads
Using sync and mutexes to lock data
Summary
3. Developing a Concurrent Strategy
Applying efficiency in complex concurrency
Identifying race conditions with race detection
Using mutual exclusions
Exploring timeouts
Importance of consistency
Synchronizing our concurrent operations
The project – multiuser appointment calendar
Visualizing a concurrent pattern
Developing our server requirements
Web server
The Gorilla toolkit
Using templates
Time
Endpoints
Custom structs
A multiuser Appointments Calendar
A note on style
A note on immutability
Summary
4. Data Integrity in an Application
Getting deeper with mutexes and sync
The cost of goroutines
Working with files
Getting low – implementing C
Touching memory in cgo
The structure of cgo
The other way around
Getting even lower – assembly in Go
Distributed Go
Some common consistency models
Distributed shared memory
First-in-first-out – PRAM
Looking at the master-slave model
The producer-consumer problem
Looking at the leader-follower model
Atomic consistency / mutual exclusion
Release consistency
Using memcached
Circuit
Summary
5. Locks, Blocks, and Better Channels
Understanding blocking methods in Go
Blocking method 1 – a listening, waiting channel
Sending more data types via channels
Creating a function channel
Using an interface channel
Using structs, interfaces, and more complex channels
The net package – a chat server with interfaced channels
Handling direct messages
Examining our client
Blocking method 2 – the select statement in a loop
Cleaning up goroutines
Blocking method 3 – network connections and reads
Creating channels of channels
Pprof – yet another awesome tool
Handling deadlocks and errors
Summary
6. C10K – A Non-blocking Web Server in Go
Attacking the C10K problem
Failing of servers at 10,000 concurrent connections
Using concurrency to attack C10K
Taking another approach
Building our C10K web server
Benchmarking against a blocking web server
Handling requests
Routing requests
Serving pages
Parsing our template
External dependencies
Connecting to MySQL
Multithreading and leveraging multiple cores
Exploring our web server
Timing out and moving on
Summary
7. Performance and Scalability
High performance in Go
Getting deeper into pprof
Parallelism's and concurrency's impact on I/O pprof
Using the App Engine
Distributed Go
Types of topologies
Type 1 – star
Type 2 – mesh
The Publish and Subscribe model
Serialized data
Remote code execution
Other topologies
Message Passing Interface
Some helpful libraries
Nitro profiler
Heka
GoFlow
Memory preservation
Garbage collection in Go
Summary
8. Concurrent Application Architecture
Designing our concurrent application
Identifying our requirements
Using NoSQL as a data store in Go
MongoDB
Redis
Tiedot
CouchDB
Cassandra
Couchbase
Setting up our data store
Monitoring filesystem changes
Managing logfiles
Handling configuration files
Detecting file changes
Sending changes to clients
Checking records against Couchbase
Backing up our files
Designing our web interface
Reverting a file's history – command line
Using Go in daemons and as a service
Checking the health of our server
Summary
9. Logging and Testing Concurrency in Go
Handling errors and logging
Breaking out goroutine logs
Using the LiteIDE for richer and easier debugging
Sending errors to screen
Logging errors to file
Logging errors to memory
Using the log4go package for robust logging
Panicking
Recovering
Logging our panics
Catching stack traces with concurrent code
Using the runtime package for granular stack traces
Summary
10. Advanced Concurrency and Best Practices
Going beyond the basics with channels
Building workers
Implementing nil channel blocks
Using nil channels
Implementing more granular control over goroutines with tomb
Timing out with channels
Building a load balancer with concurrent patterns
Choosing unidirectional and bidirectional channels
Using receive-only or send-only channels
Using an indeterminate channel type
Using Go with unit testing
GoCheck
Ginkgo and Gomega
Using Google App Engine
Utilizing best practices
Structuring your code
Documenting your code
Making your code available via go get
Keeping concurrency out of your packages
Summary
Index
· · · · · · (收起)

读后感

评分

第一章的最后一个例子,讲的是一个简单爬虫。 但是作者的代码乱的不行,跑出来的结果还不对。。 真不知道作者是怎么了。 简单说下作者的问题: 1. 代码冗余混乱 2. go中的channel是多个receiver监听一个channel,只能有一个收到这个信息,所以main中的for循环中和evaluateStatus...  

评分

第一章的最后一个例子,讲的是一个简单爬虫。 但是作者的代码乱的不行,跑出来的结果还不对。。 真不知道作者是怎么了。 简单说下作者的问题: 1. 代码冗余混乱 2. go中的channel是多个receiver监听一个channel,只能有一个收到这个信息,所以main中的for循环中和evaluateStatus...  

评分

第一章的最后一个例子,讲的是一个简单爬虫。 但是作者的代码乱的不行,跑出来的结果还不对。。 真不知道作者是怎么了。 简单说下作者的问题: 1. 代码冗余混乱 2. go中的channel是多个receiver监听一个channel,只能有一个收到这个信息,所以main中的for循环中和evaluateStatus...  

评分

由于Goroutine和Channel的存在,并发是golang中很重要的一个卖点,不过作者的语言表达能力似乎欠缺一点,理解起来有点费劲,而且废话有点多。但本书是目前唯一一本比较深入探究Golang并发编程的书。还是有一定的参考价值。  

评分

第一章的最后一个例子,讲的是一个简单爬虫。 但是作者的代码乱的不行,跑出来的结果还不对。。 真不知道作者是怎么了。 简单说下作者的问题: 1. 代码冗余混乱 2. go中的channel是多个receiver监听一个channel,只能有一个收到这个信息,所以main中的for循环中和evaluateStatus...  

用户评价

评分

题材虽好,但作者的写作能力似乎值得怀疑,内容理解起来比较费劲。所用语素也比较口语化。

评分

不推荐,书中有些观点像是已经知道结论后拼凑出来的,不够严谨。代码有些乱,为了说明简单的问题引入太多不相干代码了,让人找不到重点

评分

并无出彩之处

评分

不推荐,书中有些观点像是已经知道结论后拼凑出来的,不够严谨。代码有些乱,为了说明简单的问题引入太多不相干代码了,让人找不到重点

评分

The author is too excited about the Go language to write a book clearly.

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美书屋 版权所有