책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 프로그래밍 언어 기타
· ISBN : 9791161752082
· 쪽수 : 776쪽
· 출판일 : 2018-10-16
책 소개
목차
1장. Go 언어와 운영 체제
__이 책의 구성
__Go 언어의 역사
__Go 언어를 배우는 이유
__Go 언어의 장점.
____그렇다면 Go 언어는 완벽한가?.
____godoc 유틸리티.
__Go 코드 컴파일하기
__Go 코드 실행하기
__Go 언어의 두 가지 규칙
____사용하지 않을 Go 패키지는 임포트하지 말 것
____중괄호 작성 스타일을 따를 것
__Go 패키지 다운로드하기
__유닉스 stdin, stdout, stderr
__화면에 출력하기
__표준 출력 사용하기
__사용자로부터 입력 받기
__:=와 =
____표준 입력으로부터 읽기
____커맨드라인 인수 다루기
__에러 출력
__로그 파일 작성하기
____로그 수준
____로그 기능
____로그 서버
____로그 파일로 정보를 보내는 Go 프로그램
____log.Fate( )
____log.Panic( )
__Go 언어에서 에러 처리하기
____error 데이터 타입
____에러 처리하기
__참고 자료
__연습 문제
__요약
2장. Go 언어의 내부 살펴보기
__Go 컴파일러
__가비지 컬렉션
____삼색 알고리즘
____Go 언어 가비지 컬렉터의 구체적인 작동 방식
____언세이프 코드
____unsafe 패키지
____unsafe 패키지에 대한 또 다른 예제
__Go에서 C 코드 호출하기
____같은 파일에 작성한 C 코드 호출하기
____다른 파일에 작성한 C 코드 호출하기
____C 코드
____Go 코드
____Go 코드와 C 코드 합치기
__C 코드에서 Go 함수 호출하기
____Go 패키지
____C 코드
__defer 키워드
__panic 함수와 recover 함수
____panic 함수만 사용하기
__두 가지 유용한 유닉스 유틸리티
____strace
____dtrace
__Go 환경 파악하기
__Go 어셈블러
__노드 트리
__go build에 대해 좀 더 자세히 살펴보기
__Go 코딩에 참고할 만한 조언
__참고 자료
__연습 문제
__요약
3장. Go 언어의 기본 데이터 타입
__Go 언어의 루프
____for 루프
____while 루프
____range 키워드
____Go 언어의 for 루프 예
__Go 언어의 배열
____다차원 배열
____Go 언어에서 제공하는 배열의 단점
____Go 언어의 슬라이스
____슬라이스에 대한 기본 연산
____슬라이스는 자동으로 확장된다
____바이트 슬라이스
____copy( ) 함수
____다차원 슬라이스
____슬라이스에 대한 다른 예제
____sort.Slice()로 슬라이스 정렬하기
__Go 언어의 맵
____nil 맵에 저장하기
____맵은 언제 사용해야 할까?
__Go 언어의 상수
____상수 생성자 iota
__Go 언어의 포인터
__날짜와 시간 다루기
____시간 다루기
____시간 파싱하기
____날짜 다루기
____날짜 파싱하기
____날짜와 시간 포맷 변경하기
__참고 자료
__연습 문제
__요약
4장. 합성 타입 사용법
__합성 타입
__구조체
____구조체에 대한 포인터
____new 키워드 사용법
__튜플
__정규 표현식과 패턴 매칭
____정규 표현식에 관련된 몇 가지 이론
____간단한 예제
____심화 예제
____IPv4 주소 매칭하기
__스트링
____룬이란?
____unicode 패키지
____strings 패키지
__switch문
__파이값 상당히 정확히 계산하기
__Go 언어로 키/값 스토어 만들기
__참고 자료
__연습 문제
__요약
5장. 자료 구조로 Go 코드 개선하기
__그래프와 노드
__알고리즘 복잡도
__Go 언어에서 이진 트리 만들기
____Go 언어로 이진 트리 구현하기
____이진 트리의 장점
__Go 언어에서 해시 테이블 만들기
____Go 언어로 해시 테이블 구현하기
____검색(lookup) 기능 구현하기
____해시 테이블의 장점
__Go 언어에서 연결 리스트 만들기
____Go 언어에서 연결 리스트 구현하기
____연결 리스트의 장점
__Go 언어에서 이중 연결 리스트 만들기
____Go 언어에서 이중 연결 리스트 구현하기
____이중 연결 리스트의 장점
__Go 언어에서 큐 만들기
____Go 언어에서 큐 구현하기
__Go 언어에서 스택 만들기
____Go 언어로 스택 구현하기
__container 패키지
____container/heap 사용법
____container/list 사용법
____container/ring 사용법
__난수 생성하기
____랜덤 스트링 생성하기
__참고 자료
__연습 문제
__요약
6장. Go 패키지에 대해 잘 알려지지 않은 사실
__Go 패키지
__Go 언어의 함수
____익명 함수
____여러 값을 리턴하는 함수
____함수의 리턴값에도 이름도 붙일 수 있다!
____포인터를 매개변수로 받는 함수
____포인터를 리턴하는 함수
____함수를 리턴하는 함수
____함수를 매개변수로 받는 함수
__Go 패키지 직접 만들기
____Go 패키지 컴파일하기
____사설 변수와 함수
____init() 함수
__표준 Go 패키지에 대한 코드 읽기
____net/url 패키지의 소스 코드 살펴보기
____log/syslog 패키지의 소스 코드 살펴보기
__Go 패키지 잘 만드는 방법
__syscall 패키지
____fmt.Println()의 구체적인 실행 과정
__텍스트와 HTML 템플릿
____텍스트 출력 생성하기
____HTML 출력하기
____기본적인 SQLite3 커맨드
__참고 자료
__연습 문제
__요약
7장. 리플렉션과 인터페이스
__타입 메소드
__Go 언어의 인터페이스
__타입 어써션
__인터페이스 직접 정의하기
____Go 인터페이스 사용하기
____인터페이스와 데이터 타입에 대한 switch문 작성법
__리플렉션
____리플렉션에 대한 간단한 예제
____리플렉션에 대한 좀 더 심화된 예제
____리플렉션의 세 가지 단점
__Go 언어에서 OOP하기
__참고 자료
__연습 문제
__요약
8장. 유닉스 시스템에게 작업 지시하기
__유닉스 프로세스
__flag 패키지
__io.Reader와 io.Writer 인터페이스
____버퍼를 이용하는 파일 입출력과 버퍼를 이용하지 않는 파일 입출력
__bufio 패키지
__텍스트 파일 읽기
____텍스트 파일을 한 줄씩 읽기
____텍스트 파일을 한 단어씩 읽기
____텍스트 파일을 한 문자씩 읽기
____/dev/random 읽기
__파일에서 읽고 싶은 만큼 읽기
__바이너리 포맷을 사용하는 이유
__CSV 파일 읽기
__파일 쓰기
__디스크에 데이터를 읽거나 쓰기
__strings 패키지 다시 보기
__bytes 패키지
__파일 접근 권한
__유닉스 시그널 다루기
____두 가지 시그널 처리하기
____모든 종류의 시그널 처리하기
__Go 언어로 유닉스 파이프 다루기
____Go 언어로 cat(1) 유틸리티 구현하기
__디렉토리 트리 탐색하기
__Go 언어에서 eBPF 사용하기
__syscall.PtraceRegs
__시스템 콜 추적하기
__유저 ID와 그룹 ID
__참고 자료
__연습 문제
__요약
9장. Go 언어의 동시성 - 고루틴, 채널, 파이프라인
__프로세스, 쓰레드, 고루틴
____Go 스케줄러
____동시성과 병렬성
__Go 루틴
____Go 루틴 생성 방법
____Go 루틴 여러 개 생성하기
__Go 루틴이 마칠 때까지 기다리기
____Add()와 Done()의 호출 횟수가 일치하지 않으면 어떻게 될까?
__채널
____채널에 데이터 쓰기
____채널에서 데이터 읽기
____함수 매개변수로 지정한 채널
__파이프라인
__참고 자료
__연습 문제
__요약
10장. Go 언어의 동시성 - 고급 주제
__Go 스케줄러 다시 보기
____GOMAXPROCS 환경 변수
__select 키워드
__Go 루틴 만료시키기
____Go 루틴을 만료시키기 위한 첫 번째 기법
____Go 루틴을 만료시키기 위한 두 번째 방법
__Go 채널 다시 보기
____시그널 채널
____버퍼 채널
____닐 채널
____채널에 대한 채널
____Go 루틴의 실행 순서 지정하기
__공유 메모리와 공유 변수
____sync.Mutex
____sync.RWMutex 타입
____Go 루틴으로 메모리 공유하기
__경쟁 조건 발견하기
__context 패키지
____context 패키지를 이용한 좀 더 복잡한 예제
____워커 풀
__참고 자료
__연습 문제
__요약
11장. 코드 테스팅, 최적화, 프로파일링
__11장에서 사용하는 Go 버전
____Go 버전 1.9와 1.10 비교
__베타 또는 RC 버전의 Go 설치하기
__최적화
____Go 코드 최적화하기
__Go 코드 프로파일링
____표준 Go 패키지 net/http/pprof
____간단한 프로파일링 예제
____좀 더 편리한 외부 패키지로 프로파일하기
____Go 프로파일러의 웹 인터페이스
__go tool trace 유틸리티
__Go 코드 테스트하기
____기존 코드에 대한 테스트 코드 작성하기
__Go 코드 벤치마킹하기
__간단한 벤치마킹 예제
____잘못 작성한 벤치마크 함수의 예
__쓰기 버퍼 벤치마킹하기
__실행되지 않는 코드 찾기
__크로스 컴파일
__예제 함수 만들기
__문서 생성하기
__참고 자료
__연습 문제
__요약
12장. Go 언어를 이용한 네트워크 프로그래밍의 기초
__net/http, net, http.RoundTripper
____http.Response 타입
____http.Request 타입
____http.Transport 타입
__TCP/IP에 대해
__IPv4와 IPv6에 대해
__nc(1) 커맨드라인 유틸리티
__네트워크 인터페이스로부터 설정 읽기
__DNS 룩업
____도메인의 NS 레코드 조회하기
____도메인에 대한 MX 레코드 조회하기
__Go 언어로 웹 서버 만들기
____HTTP 서버 프로파일링하기
____Go 언어로 웹사이트 만들기
__HTTP 트레이싱
____HTTP 핸들러 테스트하기
__Go 언어로 웹 클라이언트 생성하기
____좀 더 기능이 풍부한 웹 클라이언트 만들기
__HTTP 연결 타임아웃하기
____SetDeadline 세부사항
__타임아웃 주기를 서버쪽에 설정하기
__또 다른 타임아웃 기법
__와이어샤크와 티샤크
__참고 자료
__연습 문제
__요약
13장. 네트워크 프로그래밍 - 서버와 클라이언트 만들기
__표준 Go 패키지 net
__TCP 클라이언트
____TCP 클라이언트를 약간 변형한 버전
__TCP 서버
____TCP 서버를 약간 변형한 버전
__UDP 클라이언트
__UDP 서버 구현하기
__동시성을 지원하는 TCP 서버
____동시성을 지원하는 TCP 서버의 또 다른 버전
__원격 프로시저 호출
____RPC 클라이언트
____RPC 서버
__로우레벨 네트워크 프로그래밍
____원본 상태의 ICMP 패킷 수집하기
__그 이상이 알고 싶다면?
__참고 자료
__연습 문제
__요약
__찾아보기