본문 바로가기
반응형

Golang38

[Network] HTTP란? 그리고 HTTP 1.1, HTTP 2 Rest API가 HTTP/1.0의 특징과 연관이 있듯 gRPC에 대해 알아보니 HTTP/2.0의 특징과 큰 연관이 있는 듯 하다. 근본이 되는 기술을 공부해 두는게 좋겠지.. 면접에서도 종종 나오는 질문인듯하고. 아자아자! HTTP란? HTTP(Hypher Text Transfer Protocol)란 웹에서 데이터를 주고 받기 위한 프로토콜 즉, 일종의 약속이다. 주로 TCP/IP 전송계층을 사용한다.(Google님이 HTTP를 3.0버전을 UDP를 사용하여 제작했다. 정보를 찾아보니 많은 장점이 있던데 이를 통해 또 어떤 기술이 생겨날지 기대된다.) HTTP의 특징 TCP/IP 전송 계층을 사용하는 애플리케이션 계층의 프로토콜 비연결성 프로토콜 Client 측과 Server측의 request, res.. 2021. 9. 2.
[Go] 고루틴(Goroutine) 알고쓰기(1) - 동시성, 병렬성 프로그래밍 그리고 고루틴 그냥 가져다 쓰면 되는줄 알았는데 공부할게 정말 많은 부분이었다. 간단히 기억하기 위해 포스팅을 하려 했으나 생각보다 모르는 부분이 많았고 공부할 가치가 있다 판단하여 조금 깊게 들여다 보았다. 동시성? 병렬성? 무어의 법칙을 아는가? 인텔의 공동 창업자인 무어가 반도체가 1년에 2배씩 빨라 질 것을 예언하였고 어느 시기까지는 들어 맞았다. 하지만 발열량과 같은 물리적 한계에 부딪혔고 더이상 무어의 법칙이 적용되기 어려운 시기까지 도달하게 됐다. 하지만 컴퓨터와 같은 기기들은 계속해서 빨라졌다. 해답을 찾은 것이다. 바로 반도체 하나의 성능을 높일 수 없으니 여러개의 반도체를 사용하기로...!( 공부하다 재밌어서.. + 연관 있음 ) 동시성 컴퓨터의 코어가 하나(싱글 코어)일 때를 생각해 보자. 우리는 .. 2021. 9. 1.
[Design Pattern] 어댑터 패턴(Adapter Pattern) 어댑터 패턴이란? 어댑터를 다들 아실꺼라 생각한다. 어댑터는 기본적으로 이러한 친구들을 어댑터라 한다. 그렇다면 어댑터 패턴이란 무엇일까? 일반적으로 알고있는 어댑터와 비슷하다 생각하면 편할 듯 하다. 예시를 한번 들어보겠다. 비트코인 지갑을 컴퓨터에 연결할 수 있는 type-A의 USB에 저장해 놓았다. 그런데 나는 맥북밖에 없다;; 5분 뒤 비트코인이 반토막 날 것이라는 엄청난 비밀 정보를 들은 나는 지금 가격에 팔아야 하는데 지갑이 없으니 내가 비트코인을 가지고 있다는 것을 증명할 방법이 없다. 하지만 이를 가능하게 해줄 어댑터 라는 것이 있다. type-A의 USB를 type-C를 사용하는 맥북에 연결을 할 수 있게 해주는 위 사진의 어댑터 말이다. 정말 다행이다. 이렇게 실용적인 기기가 있다니!.. 2021. 8. 26.
[Design Pattern] 싱글톤 패턴(Singleton Pattern) with Golang 싱글톤 패턴이란? 싱글톤 패턴(Singleton Pattern)은 GoF가 정의한 23가지 디자인 패턴 중 생성 패턴에 속한다. 불필요한 객체의 생성을 없애고 단 한 번의 객체 생성으로 전역에서 효율적으로 객체를 사용할 수 있게 돕는 유용한 패턴이라 할 수 있다. 장점 한번의 객체 생성을 통해 그 객체를 재활용하기 때문에 불필요한 메모리를 사용하지 않는다. 처음 객체의 초기화 이후에는 따로 객체를 생성하지 않기에 읽어 들이는 시간이 크지 않다. 전역인 하나의 인스턴스를 사용함으로 써 객체의 데이터를 공유하기가 간편하다. 단점 멀티 쓰레드를 사용하는 작업을 진행할 시에 초기화가 여러 번 일어날 수 있다. 멀티 쓰레드를 사용하는 작업을 진행할 시에 데이터 수정에서 데이터 레이스가 일어날 수 있다. Go에서의.. 2021. 8. 26.
[Algorithm]BOJ_20056_마법사 상어와 파이어볼_Go 문제 링크 BOJ 20056 마법사 상어와 파이어볼 풀이 방법 어느정도 구현 문제에 대한 풀이방법을 깨우쳐 가는듯 하다. 다름이 아니라 해야할 것의 순서를 잘 지키는것.. \1. 맵의 필드에 하나 이상의 파이어 볼이 있을 경우 파이어 볼을 섞는다.(X) 이렇게 생각하는 순간 시간은 총알 같이 사라질것이다.. 모든 파이어 볼을 이동한다. 이동한 파이어 볼은 따로 모아둔다. 모든 이동한 파이어볼을 삭제한다. 모든 필드에 따로 모아둔 파이어볼이 있을 경우 파이어볼이 한 개 일 경우 파이어볼이 두 개 이상일 경우 조건에 맞게 조합한 후 따로 모아둔 필드에서 이동 할 파이어 볼 필드로 옮긴다. 따로 모아둔 파이어 볼을 삭제한다. package q20056 import ( "bufio" "fmt" "os" "str.. 2021. 8. 23.
[Go] Json 활용 방법 JSON이란? JSON은 Key-Value 쌍의 형태로 인간이 보기에 알맞은 형태로 데이터 오브젝트를 표현해주는 표준 포맷이다. Value값에 사용할 수 있는 자료형으로는 수, 문자열, Bool, 배열, 객체, Null이 있다. 직렬화, 역직렬화란? 직렬화란 객체의 상태를 보관이나 전송 가능한 상태로 변환하는 것을 말한다. 직렬화된 상태의 객체를 다시 사용할 수 있는 객체로 변환하는 것을 역직렬화라 한다. GoLang에서 JSON을 사용하는 방법 기본 사용 방법 JSON을 사용하기 위해서는 기본적으로 데이터를 담을 수 있는 객체가 필요하다. 테스트에 객체로 사용할 구조체는 간단한 구조의 jsonTestStructure를 사용한다. type jsonTestStructure struct { TestNum i.. 2021. 8. 12.
반응형