• TA的每日心情
    开心
    2019-11-8 00:00
  • 签到天数: 10 天

    [LV.3]偶尔看看

    86

    主题

    11

    回帖

    521

    积分

    永久VIP

    积分
    521
    发表于 2019-11-5 22:34:04 897 浏览 1 回复

    [Golang] 掌握GO语言并发编程(Mastering Concurrency in Go)PDF扫描版

    本帖最后由 scourglass22 于 2019-11-5 23:09 编辑

    1.png

    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]普通吧粉

    17

    主题

    2742

    回帖

    9578

    积分

    永久VIP

    积分
    9578
    发表于 2021-1-17 14:20:21
    掌握GO语言并发编程
    回复

    使用道具 举报

    返回列表
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    登录或注册

    团队

    一匹野马

    官方客服

    陆风-Q:1953128864

    官方QQ群

    825348618(程序员教程吧互助群)

    扫一扫快速加入

    群号652692981

    快速回复 返回顶部 返回列表