Git의 저장공간 working directory: 작업을 하는 공간 stage: 임시로 저장하는 공간 repository: 실제로 저장하여 기록하는 공간 working directory 작업을 하는 공간 로컬 저장소에 접근하여 실제로 파일 생성 및 수정하는 공간 untracked VS tracked git이 모든 파일을 관리한다면 시스템에 부하 가능성이 있다. 따라서 git은 요청받은 파일들만 추적 관리를 한다. git은 tracked 파일과 untracked 파일을 나누어서 추적 관리를 하는데, 이렇게 함으로써 시스템 부하를 줄이고 효율적으로 관리할 수 있다. untracked working directory에 파일이 생성된 직후의 상태 git이 파일을 추적하지 않는 상태 .gitignore에 있는 ..
type error error 타입은 비정상적인 상태를 나타낸다. Go는 try-catch-finally처럼 예외처리를 할 수 있는 구문이 없다. 대신 error 타입 값으로 에러 상태를 표현하고 처리를 한다. Go 에서는 Error() string 메서드를 가지고 있다면 에러로 사용될 수 있다. 위는 내장 타입이다. type error은 Error() string를 가지고 있다. 내장 인터페이스 타입인 error은 에러 상황을 나타내는 인터페이스 이고, 에러가 없다면 nil 값으로 나타낸다라고 적혀 있다. 위에는 에러 타입의 한 종류이다. PathError은 Error() string 메서드를 가지고 있다. Go에서 함수나 메서드의 마지막 반환 값으로 에러 상태를 리턴하는데, 에러가 발생하지 않았다면 ..
CORS Cross-Origin Resource Sharing의 약자 리소스를 제공한 도메인이 현재 요청하려는 도메인과 다르더라도 요청을 허락해 주는 웹 보안 방침 위키피디아: 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조 mozilla: 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제 쉽게 말하자면 도메인(웹 서비스에서 컴퓨터를 식별하는 호스트명)이 다르더라도 리소스에 접근할 수 있게 하는 것이다. 프론트엔드의 주소가 localhost:3000이고 백엔드 주소가 localhost:8080일 때 프론트엔드에서 요청을 보낸다고 ..
유닉스의 명령어에는 파이프(기호: | )가 있다. 파이프를 사용하여 쉘 명령어를 연결하면, 프로세스의 결과를 다른 프로세스에 전달하는 것이 가능하다. Go의 기본 라이브러리로 io.Pipe()가 제공된다. io.Pipe()는 *PipeReader과 *PipeWriter을 리턴하고 이를 사용하여 유닉스 스타일로 파이프 라인을 생성할 수 있다. *PipeWriter과 *PipeReader은 서로 연결되어 바로 결과가 전달된다. 파이프는 구조화 되지 않는 바이트 스트림이다. 따라서 파이프를 사용하면 데이터의 포맷을 선택하고 직렬화 및 역직렬화를 거쳐야하기 때문에 더 많은 가능성이 발생할 위험이 있다. 채널은 Go의 스트림이기 때문에 포맷이 정해져 있고 직렬화도 손쉽기 때문에 더 단순하다. 아래는 파이프라인을 ..
타임아웃 시간이 오래 걸리는 작업에 select문을 사용하여 타임아웃 기능을 쉽게 구현할 수 있다. time.After은 채널을 리턴한다. 이 채널은 인자로 받은 시간이 지난 뒤 리턴한 채널로 실제 시간을 전달한다. select를 사용하여 done 채널과 timeout 채널 case로 done 채널이 timeout 채널보다 먼저 data를 보내면 제 시간 안에 작업이 완료 된 것, 아니면 시간 초과가 난것이다. 타임아웃이 난 작업을 처리를 해 줘야 한다. 시간 초과가 발생했을 때 아무처리도 안할 수 있지만, 만약 작업이 리소스를 많이 사용한다면 작업을 종료하는 것이 좋다.
Go에는 고루틴과 채널 외에도 sync 패키지를 사용하여 병행 프로그래밍이 가능하다. sync 패키지에는 공유 메모리를 제어하는 뮤텍스(mutex), sync/atomic 패키지에는 원자성을 보장할 수 있는 연산이 있다. sync.Mutex 뮤텍스는 공유 데이터를 보호하기 위해 사용한다. 뮤텍스 구조체는 Lock, Unlock 함수를 제공한다. func (m *Mutex) Lock(): 뮤텍스 잠금 func (m *Mutex) Unlock(): 뮤텍스 잠금 해제 임계 영역(critical section)의 코드를 실행하기 전에는 뮤텍스의 Lock() 메서드로 잠금을 하고, 실행한 후에는 Unlock() 메서드로 잠금을 해제한다. 임계 영역 병렬 컴퓨팅에서 둘 이상의 스레드가 동시에 접근해서는 안 되는 영..
https://sdardew-valley.tistory.com/entry/Go-%EB%B0%B0%EC%97%B4-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EC%8A%A4 [Go] 배열 & 슬라이스 Go는 데이터의 시퀀스를 다루기 위해서 배열과 슬라이스 타입을 사용할 수 있다. 배열: 길이가 고정된 시퀀스 슬라이스: 길이가 가변적인 시퀀스 배열과 슬라이스 비교 배열 슬라이스 길이가 고 sdardew-valley.tistory.com Go의 배열과 슬라이스는 위의 내용을 참고하시면 됩니다! 위의 코드는 정상적으로 실행되는 코드이다. main 함수의 numbers와 multiply의 파라미터 numbers 모두 슬라이스 타입이다. numbers의 모든 값이 factor의 배수만큼 거진 것을 확인할 수..
고루틴과 채널은 병행 처리를 위해서 사용되는 방법이다. 병행 처리 동시에 2개 이상의 작업이 실행되는 것 고루틴 (goroutine) Go 프로그램 안에서 동시에 독립적으로 실행되는 흐름의 단위. 스레드와 비슷한 개념. 고루틴과 스레드의 차이점 킬로바이트 정도의 아주 적은 리소스에서 동작 적은 리소스에서 동작하여 한 프로세스에 수천, 수만 개의 고루틴을 동작시킬 수 있음 정보를 공유하는 방식이 아닌 서로 메시지를 주고 받는 방식으로 동작 Lock으로 공유 메모리를 관리할 필요가 없음 고루틴을 생성하는 방법 go f(x, y) 고루틴에서 f(x, y)가 실행된다. func main() { fmt.Println("main 함수 시작", time.Now()) go long() go short() time.Sl..
브라우저 주소창에 주소를 입력하면 브라우저는 HTTP GET 요청을 주소에 해당하는 서버로 전송한다. 프론트엔드가 있는 웹 서비스라면 HTML 파일을 보내준다. 받은 HTML파일은 다음과 같은 두 단계를 거쳐 HTML 파일을 브라우저에 보여준다. 1. 파싱 2. 렌더링 파싱 파싱은 렌더링의 전처리 단계이다. 파싱 단계에서는 다음과 같은 일을 한다. 1. HTML을 트리 형태인 DOM 트리로 변환 2. IMAGE, CSS, SCRIPT와 같은 리소스 다운로드 3. CSS는 CSSOM 트리로 변환 4. 자바스크립트를 인터프리트, 컴파일, 파싱 및 실행 렌더링 파싱 후 렌더링 단계를 거친다. 렌더링은 다음과 같은 일을 한다. 1. 내용인 DOM 트리와 디자인인 CSSOM 트리를 합쳐 렌더 트리 생성 2. 노드..
throw와 throws 모두 예외 처리와 관련된 키워드이다. 이 두 키워드는 사용하는 상황에서 차이가 난다. throw throw는 예외를 발생시킬 때 사용한다. 만약, 이름을 입력을 받았을 때 문자열에 아무것도 입력이 되지 않았을 때를 생각해보자. if (name.length == 0) throw RuntimeException("Name is empty."); 위와 같이 이름의 길이를 검사하고, 길이가 0인 경우 예외를 발생시키면 된다. throws private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); private static final BufferedWriter bw = new Bu..
- Total
- Today
- Yesterday
- DGS Framework
- Kotlin In Action
- github
- postman collection
- 코틀린
- hashcode
- postman
- 확장 함수
- git
- solidity
- python3
- string
- 코딩테스트
- pm.expect
- postman tests
- Squash and merge
- 1차 인터뷰
- 2차 인터뷰
- Basic Type
- java
- Kotlin
- mysql
- squash merge
- Python
- 주생성자
- downTo
- graphql
- 네이버 2022 공채
- pm.test
- go 특징
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |