| 
| 
 
TA的每日心情|  | 开心 2019-11-8 00:00
 | 
|---|
 签到天数: 10 天 [LV.3]偶尔看看 
 永久VIP 
 
	积分521 
 | 
 
 发表于 2019-11-5 22:34:04
 1103 浏览  1 回复 
[Golang]
掌握GO语言并发编程(Mastering Concurrency in Go)PDF扫描版
 
| 本帖最后由 scourglass22 于 2019-11-5 23:09 编辑 
 
 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
 
 下载地址:
 
 
 
 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
| 
 
TA的每日心情|  | 开心 2022-5-28 23:39
 | 
|---|
 签到天数: 111 天 [LV.6]普通吧粉 
 永久VIP 
 
	积分9578 
 | 
 
 发表于 2021-1-17 14:20:21 |  |  |  |
 
|  |  |  
|  |  | 登录或注册 
官方QQ群825348618(程序员教程吧互助群) 
扫一扫快速加入
 
程序员教程吧-更新最快的IT教程网    本站资源源自互联网收集及网友分享-如有侵权请发邮件到admin@cxyjc8.com联系删除!
 |