目錄(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 更新時(shí)間:2021-07-02 18:08:46
推薦閱讀
- 軟件項(xiàng)目管理(第2版)
- Mastering OpenCV 4
- Android底層接口與驅(qū)動(dòng)開發(fā)技術(shù)詳解
- Python算法從菜鳥到達(dá)人
- jQuery炫酷應(yīng)用實(shí)例集錦
- Python計(jì)算機(jī)視覺和自然語言處理
- Angular Design Patterns
- Python Social Media Analytics
- Learning iOS Penetration Testing
- 中小企業(yè)網(wǎng)站建設(shè)與管理(靜態(tài)篇)
- 程序員超強(qiáng)大腦
- 接口自動(dòng)化測(cè)試持續(xù)集成:Postman+Newman+Git+Jenkins+釘釘
- Learning Network Programming with Java
- 跟著迪哥學(xué)Python數(shù)據(jù)分析與機(jī)器學(xué)習(xí)實(shí)戰(zhàn)
- 一個(gè)APP的誕生:從零開始設(shè)計(jì)你的手機(jī)應(yīng)用
- Multithreading with C# Cookbook(Second Edition)
- Python商業(yè)數(shù)據(jù)分析:零售和電子商務(wù)案例詳解(雙色)
- 圖形圖像設(shè)計(jì)與制作(第二版)
- React Components
- Build Applications with Meteor
- Mastering Machine Learning with Spark 2.x
- Java程序設(shè)計(jì)基礎(chǔ)教程
- concrete5 for Developers
- The JavaScript Workshop
- Python:Journey from Novice to Expert
- 產(chǎn)品設(shè)計(jì)程序與方法
- Building a Home Security System with Arduino
- 教孩子學(xué)編程(信息學(xué)奧賽C語言版)
- Java從入門到精通(第4版)
- 游戲服務(wù)器架構(gòu)與優(yōu)化