目錄(299章)
倒序
- cover
- Title Page
- Copyright
- Go Systems Programming
- Credits
- About the Author
- About the Reviewer
- www.PacktPub.com
- Why subscribe?
- Customer Feedback
- 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
- Downloading the color images of this book
- Errata
- Piracy
- Questions
- Getting Started with Go and Unix Systems Programming
- The structure of the book
- What is systems programming?
- Learning systems programming
- About Go
- Getting ready for Go
- Two useful Go tools
- Advantages and disadvantages of Go
- The various states of a Unix process
- Exercises
- Summary
- Writing Programs in Go
- Compiling Go code
- Checking the size of the executable file
- Go environment variables
- Using command-line arguments
- Finding the sum of the command-line arguments
- User input and output
- Getting user input
- Printing output
- Go functions
- Naming the return values of a Go function
- Anonymous functions
- Illustrating Go functions
- The defer keyword
- Using pointer variables in functions
- Go data structures
- Arrays
- Slices
- Maps
- Converting an array into a map
- Structures
- Interfaces
- Creating random numbers
- Exercises
- Summary
- Advanced Go Features
- Error handling in Go
- Functions can return error variables
- About error logging
- The addCLA.go program revisited
- Pattern matching and regular expressions
- Printing all the values from a given column of a line
- Creating summaries
- Finding the number of occurrences
- Find and replace
- Reflection
- Calling C code from Go
- Unsafe code
- Comparing Go to other programming languages
- Analysing software
- Using the strace(1) command-line utility
- The DTrace utility
- Disabling System Integrity Protection on macOS
- Unreachable code
- Avoiding common Go mistakes
- Exercises
- Summary
- Go Packages Algorithms and Data Structures
- About algorithms
- The Big O notation
- Sorting algorithms
- The sort.Slice() function
- Linked lists in Go
- Trees in Go
- Developing a hash table in Go
- About Go packages
- Using standard Go packages
- Creating your own packages
- Private variables and functions
- The init() function
- Using your own Go packages
- Using external Go packages
- The go clean command
- Garbage collection
- Your environment
- Go gets updated frequently!
- Exercises
- Summary
- Files and Directories
- Useful Go packages
- Command-line arguments revisited!
- The flag package
- Dealing with directories
- About symbolic links
- Implementing the pwd(1) command
- Developing the which(1) utility in Go
- Printing the permission bits of a file or directory
- Dealing with files in Go
- Deleting a file
- Renaming and moving files
- Developing find(1) in Go
- Traversing a directory tree
- Visiting directories only!
- The first version of find(1)
- Adding some command-line options
- Excluding filenames from the find output
- Excluding a file extension from the find output
- Using regular expressions
- Creating a copy of a directory structure
- Exercises
- Summary
- File Input and Output
- About file input and output
- Byte slices
- About binary files
- Useful I/O packages in Go
- The io package
- The bufio package
- File I/O operations
- Writing to files using fmt.Fprintf()
- About io.Writer and io.Reader
- Finding out the third column of a line
- Copying files in Go
- There is more than one way to copy a file!
- Copying text files
- Using io.Copy
- Reading a file all at once!
- An even better file copy program
- Benchmarking file copying operations
- Developing wc(1) in Go
- Counting words
- The wc.go code!
- Comparing the performance of wc.go and wc(1)
- Reading a text file character by character
- Doing some file editing!
- Interprocess communication
- Sparse files in Go
- Reading and writing data records
- File locking in Go
- A simplified Go version of the dd utility
- Exercises
- Summary
- Working with System Files
- Which files are considered system files?
- Logging in Go
- Putting data at the end of a file
- Altering existing data
- About log files
- About logging
- Logging facilities
- Logging levels
- The syslog Go package
- Processing log files
- File permissions revisited
- Changing file permissions
- Finding other kinds of information about files
- More pattern matching examples
- A simple pattern matching example
- An advanced example of pattern matching
- Renaming multiple files using regular expressions
- Searching files revisited
- Finding the user ID of a user
- Finding all the groups a user belongs to
- Finding files that belong or do not belong to a given user
- Finding files based on their permissions
- Date and time operations
- Playing with dates and times
- Reformatting the times in a log file
- Rotating log files
- Creating good random passwords
- Another Go update
- Exercises
- Summary
- Processes and Signals
- About Unix processes and signals
- Process management
- About Unix signals
- Unix signals in Go
- The kill(1) command
- A simple signal handler in Go
- Handling three different signals!
- Catching every signal that can be handled
- Rotating log files revisited!
- Improving file copying
- Plotting data
- Unix pipes in Go
- Reading from standard input
- Sending data to standard output
- Implementing cat(1) in Go
- The plotIP.go utility revisited
- Unix sockets in Go
- RPC in Go
- Programming a Unix shell in Go
- Yet another minor Go update
- Exercises
- Summary
- Goroutines - Basic Features
- About goroutines
- Concurrency and parallelism
- The sync Go packages
- A simple example
- Creating multiple goroutines
- Waiting for goroutines to finish their jobs
- Creating a dynamic number of goroutines
- About channels
- Writing to a channel
- Reading from a channel
- Explaining h1s.go
- Pipelines
- A better version of wc.go
- Calculating totals
- Doing some benchmarking
- Exercises
- Summary
- Goroutines - Advanced Features
- The Go scheduler
- The sync Go package
- The select keyword
- Signal channels
- Buffered channels
- About timeouts
- An alternative way to implement timeouts
- Channels of channels
- Nil channels
- Shared memory
- Using sync.Mutex
- Using sync.RWMutex
- The dWC.go utility revisited
- Using a buffered channel
- Using shared memory
- More benchmarking
- Detecting race conditions
- About GOMAXPROCS
- Exercises
- Summary
- Writing Web Applications in Go
- What is a web application?
- About the net/http Go package
- Developing web clients
- Fetching a single URL
- Setting a timeout
- Developing better web clients
- A small web server
- The http.ServeMux type
- Using http.ServeMux
- The html/template package
- About JSON
- Saving JSON data
- Parsing JSON data
- Using Marshal() and Unmarshal()
- Using MongoDB
- Basic MongoDB administration
- Using the MongoDB Go driver
- Creating a Go application that displays MongoDB data
- Creating an application that displays MySQL data
- A handy command-line utility
- Exercises
- Summary
- Network Programming
- About network programming
- About TCP/IP
- About TCP
- The TCP handshake!
- About UDP and IP
- About Wireshark and tshark
- About the netcat utility
- The net Go standard package
- Unix sockets revisited
- A Unix socket server
- A Unix socket client
- Performing DNS lookups
- Using an IP address as input
- Using a host name as input
- Getting NS records for a domain
- Developing a simple TCP server
- Developing a simple TCP client
- Using other functions for the TCP server
- Using alternative functions for the TCP client
- Developing a simple UDP server
- Developing a simple UDP client
- A concurrent TCP server
- Remote procedure call (RPC)
- An RPC server
- An RPC client
- Exercises
- Summary 更新時間:2021-07-02 18:08:46
推薦閱讀
- Apache Oozie Essentials
- 軟件架構設計:大型網站技術架構與業務架構融合之道
- Learning ArcGIS Pro 2
- 數據結構(Python語言描述)(第2版)
- 區塊鏈:以太坊DApp開發實戰
- Web Application Development with MEAN
- HTML5 and CSS3 Transition,Transformation,and Animation
- 計算機應用基礎案例教程
- Programming Microsoft Dynamics? NAV 2015
- Distributed Computing in Java 9
- Emotional Intelligence for IT Professionals
- Mudbox 2013 Cookbook
- 軟件測試分析與實踐
- C# 7.1 and .NET Core 2.0:Modern Cross-Platform Development(Third Edition)
- Android應用開發攻略
- Web開發新體驗
- Moodle 3.x Developer's Guide
- 零基礎入門Python數據分析與機器學習
- Java編程兵書
- QlikView for Finance
- 深入理解TypeScript
- Erlang編程指南
- UG 12.0數控編程實例教程
- Apache Kafka Cookbook
- Java Web程序設計任務教程(第2版)
- 計算機網絡技術及應用
- Apache Kafka
- C++ 黑客編程揭秘與防范
- Reactive Programming with JavaScript
- AngularJS Directives