반응형 Study64 [Algorithm]Programmers_KAKAO_118667_두 큐 합 같게 만들기_Go 문제 설명 풀기 전 생각 1. 큐를 둥글게 이어 붙이면 링(Ring) 형태가 된다. 2. 투포인터를 사용하여 타겟 넘버를 찾는다. ∵ 큐는 Pop과 Push를 이용해 연속된 데이터 처리만을 할 수 있기에 투포인터를 사용해도 된다 판단. 3. 시나리오를 분리하여 큐를 만드는데 필요한 수행 횟수 계산. 시나리오 1. 시작 포인터와 끝 포인터가 같은 큐에 있다. i) 끝 포인터가 큐의 마지막 인덱스 값이다. ii) 끝 포인터가 큐의 마지막 인덱스 값이 아니다. 2. 시작 포인터와 끝 포인터가 다른 큐에 있다. 사용 자료구조 tmpq []int - 링 형태를 직접 구현하기보다 1번 큐, 2번 큐, 1번 큐를 이어 붙여 링 형태로 사용. 코드 package main import ( "fmt" "math" ) fu.. 2022. 8. 26. [Network] HTTP 통신은 Stateless가 맞을까? 의문의 시작 Rest API는 HTTP를 기반으로 하는 Client/Server Side 통신을 도와주는 아키텍처이다. 그렇기에 Rest API는 HTTP 프로토콜의 특징을 그대로 가지고 오며, 명확한 표준은 없지만 HTTP 통신에 대해 비 강제적인 제약을 가해 일반적으로 통용 가능한 규칙을 적용시키기 위해 사용된다고 개인적으로 생각한다. 그리고 이 Rest API를 더 자세히 알기 위해서 나는 HTTP를 조금 더 공부해 보기로 했다. HTTP란? HTTP는 OSI 7 계층(애플리케이션 계층)에서 적용되는 프로토콜이며 ... 생략 ... 특징 Stateless TCP/IP 기반 ... ... 생략 ... HTTP는 Stateless한 특징을 가지고 있고 이 특징으로 인해 client/server 구조에서.. 2022. 8. 21. [Go] Context 패키지 알고쓰기 context를 공부하는 이유 git hub에서 Go를 사용하는 잘 짜여진 프로젝트들은 context를 잘 사용한다. 프로젝트에 엮인 micro service가 많아지면 많아질수록 더 효율적인 스킬처럼 느껴지며 context를 사용하는 부분을 미리 익혀두면 도움이 될 듯 하다. context란? context. 사전적 뜻은 “문맥”이다. 그리고 문맥의 정의는 프로세스 진행 중, 프로세스의 앞 뒤 간 맥락이라 표현할 수 있겠다. Go에서 사용되는 context 또한 크게 다르지 않다. Context는 작업 명세서와 같은 역할로 프로젝트의 앞뒤 흐름을 관찰하고 제어할 수 있게 도와준다. context를 사용하는 이유 context는 다음 작업의 매개변수로 보낼 context를 위해 자식 context를 생성.. 2022. 8. 17. [OOP] 객체지향 설계 5원칙 SOLID (SRP, OCP) SOLID를 공부하는 이유 다른 개발자들은 몇 년의 경험이 쌓여야 잘 이뤄진 객체지향 설계에 대한 필요성을 느낀다 한다. 대부분의 개발자가 그렇게 말하는 것을 보았고 그 말은, 개발자 인생에서 반드시 익혀두어야 하는 개념임은 확실하다 생각했다. 그래서인지 공부를 해 보며 알 수 없는 부분들이 많았다. 굉장히 철학적이고 추상적으로 느껴졌다. 하지만 내용을 알면서 경험하는 것과 그렇지 않은 것은 큰 차이가 있다고 생각하기에 아직 걸음조차 떼지 못한 주니어 개발자이지만 앞으로의 경험을 대비해 지금이 SOLID를 공부하기에 효율적인 시기가 아닐까란 생각이 들었다. SOLID의 탄생 배경 컴퓨터의 연산은 자료구조를 담당하는 memory와 연산을 담당하는 cpu의 합작이다. 초기 이 memory와 cpu의 성능이 .. 2022. 8. 13. [Linux] 가상화 가상화 개요 1) 가상화 배경 1960년대에 가상화 개념이 처음 등장하였지만 하드웨어의 성장으로 2000년대에 이르러서야 주목받음 2) 가상화 종류 서버 가상화 가장 일반적인 가상화 기술 서버를 가상의 머신으로 만들어 사용 CPU나 메모리 등을 논리적으로 나누어 사용하여 리소스 활용률을 높이는 기술 소프트웨어가 필요 네트워크 가상화 네트워크 방화벽과 보안 장비들을 모두 가상머신으로 구현 가능 하나의 통합된 여러 개의 물리적 환경의 장치들을 가상으로 쪼개어 사용 가능 네트워크를 더욱 유연하고 빠르게 제공가능 NFV(Network Function Virtualization), SDN(Software Defined Network)가 있음 스토리지 가상화 디스크 RAID처럼 여러 개의 물리적인 드라이브를 하나의.. 2022. 8. 9. [Go] GC(Garbage Collection) 심화 GC 내가 참조하고 있는 글은 2019년에 Go 1.12v 때, 포스팅 된 글 이므로 최근의 Go와 다를 수 있다. 내가 알기론 STW도 제거하기 위해 시도하고 있다고 들었는데.. 이또한 찾아보아야겠다. GC 과정 GC가 실행될 때, 세가지의 페이즈가 존재한다. 두가지는 STW 방식이고 한가지는 어플리케이션에 지연을 유발하는 동시성 방식이다. 세가지 페이즈는 순서대로 Mark Setup - STW(Stop The World) Marking - Concurrent Mark Termination - STW 이다. 하나씩 살펴보자. Mark Setup - STW 처음 GC가 실행되면 쓰기를 제한하는 튜닝을 하게되는데 이는 GC 고루틴과 어플리케이션 고루틴의 무결성을 위해서이다. 쓰기를 제한하기 위해 모든 고루.. 2022. 8. 5. 이전 1 2 3 4 5 ··· 11 다음 반응형