이번 주 목표
resmemory : posts 작성 2번 되는 문제 해결
PubArt : go 문법 및 모듈화 연습
market : java study
오늘 목표
resmemory : posts 작성 2번 되는 문제 해결
PubArt : go 문법 및 모듈화 연습
market : java study
오늘 한 것
resmemory : posts 작성 2번 되는 문제 해결
PubArt : go 문법 및 모듈화 연습
오늘 스케줄
6:00 기상, 아침 식사, 샤워
6:30 커리어톤 - 최종체크
7:00 PubArt 팀 개발
12:00 점심식사
12:30 강남으로 이동
14:00 커리어톤 출석체크
14:15 결석자 call
14:30 채용 공고 업데이트 (Android/Kotlin 5개, Spring 2개, Node.js 1개, Python 1개, React 1개)
16:00 커리어톤 회의
16:30 귀가
17:30 커리어톤 1차 체크
18:00 산책
19:00 저녁 식사, 휴식
20:00 java 학습
24:00 취침
1. 채널
go는 멀티스레드 언어이기 때문에
비동기 함수를 진행할 때 모든 과정이 끝났는지 확인할 필요가 있다.
확인하기 위해 채널을 쓴다.
Bad : 데드락이 걸리는 예시
Good : 채널을 통해 비동기 함수의 종료를 확인한 예시
2. 멀티스레드와 비동기의 차이
멀티 스레드 - 사람 2명
비동기 - 사람 1명 : 요청 보내 놓고 응답이 올 동안 다른 거 할게 (다른 요청)
3. Mutex 와 defer
Mutex 트랜잭션의 개념, Unlock 될 때까지 Read 또는 Write를 잠금
defer 함수가 다 끝나면 실행 되는 코드
defer 와 return을 함께 쓸 때
1. defer 함수 실행
2. return 문 결과 반환
3. defer 함수 안의 코드 실행
package cache
import (
"net/http"
"sync"
)
var (
cachedMutex sync.RWMutex
cached map[string][]byte
)
type Resource struct {
Key string // 주로 압축 유형이 정의됩니다.
Path string
}
func (r *Resource) WriteWith(w http.ResponseWriter) {
cachedMutex.Lock()
defer func() {
cachedMutex.Unlock()
}() // when called function disposed
cached["hello"] = []byte("hello world")
}
// defer : 함수가 다 끝나면 실행하는 코드
defer func (){
}
4. 브로틀리 압축
br
프론트엔드 정적 리소스 (HTML, CSS, JAVASCRIPT) 를 압축하여 캐싱, 사용.
훨씬 빠르다!
다른 압축 방법 : gzip, deflate
** 정적 데이터(DB에 적재되는 데이터)와 정적 리소스는 다르다
5. http.go 예시
package main
import (
"net/http"
)
type HTTPHandler struct {
http.Handler
}
type Host struct {
handler func(http.ResponseWriter, *http.Request)
}
// 호스트가 여러개면
func (HTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
handleGetRequest(w, r)
} else {
handlePostRequest(w, r)
}
}
func handleGetRequest(w http.ResponseWriter, r *http.Request) {
}
func handlePostRequest(w http.ResponseWriter, r *http.Request) {
}
func main() {
http.ListenAndServe(":8080", HTTPHandler{})
}
6. 모듈화 예시
정리
go는 멀티스레드 언어이기 때문에
비동기 함수를 진행할 때 모든 과정이 끝났는지 확인할 필요가 있다.
확인하기 위해 채널을 쓴다. (데드락이 걸리지 않게 주의)
KPT
Keep
해 보는 것
Problem
노는 것을 좋아하는 것
Try
나는 뽀로로가 아닌 사람이다.
소감
한 해를 잘 보내기 위해 공부를 열심히 하자.
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20240122 (0) | 2024.01.23 |
---|---|
TIL 20240118 (0) | 2024.01.18 |
TIL 20240116 (0) | 2024.01.16 |
TIL 20240115 (0) | 2024.01.15 |
TIL 20240113 (0) | 2024.01.13 |