개요데브코스 팀원들과 웹툰 서비스를 주제로 사이드 프로젝트를 경험했다. 이 프로젝트를 무사히 마치고 나서 다음과 같은 의문이 들었다. "사용자들은 유료 웹툰을 구매하기 위에 쿠키라는 상품을 사용하는데, 만약 동일한 아이디로 다른 사용자가 동시에 유료 웹툰을 구매하면 어떻게 될까?" 이 의문을 해소하고자 포스팅을 작성하게 되었다.[🌐 프로젝트 저장소]❗️ 문제사용 가능한 쿠키가 100개가 있고, 동일한 아이디로 동시에 다른 유료 웹툰을 구매했다고 가정하자. Race Condition (경쟁 상태) : 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태개발 관점으로 보면 두 명의 사용자가 쿠키에 동시에 접근하여 쿠키 갯수를 감소시킬 수 있게 된다. 즉, 쿠키 갯수라는 공유 ..
Activity/데브코스 - 백엔드 엔지니어링
저작권 문제로 단순 강의 & 책 정리 글은 보호합니다!개요 트위터의 제한된 글자수로 인해 짧은 URL 사용이 대중화 되었다. 단축 URL 사용은 해당 URL이 어떤 곳을 가리키는 지는 확인하기 어렵지만, 바이트 수를 줄여준다. 계속해서 단축 URL을 알아가보자. 단축 URL이 실제 URL을 어떻게 확인할까? 단축 URL을 클릭했을 때 발생하는 GET 요청의 응답으로 'HTTP 3XX'가 리턴되고 Location 헤더에 실제 URL 정보가 표시된다. 즉 Body 전체를 응답할 필요없이 'HTTP Header Request'을 지원하는 curl 등을 이용해 반환된 헤더의 Location 정보만 파싱하여 표시해주면 불필요한 리소스를 줄일 수 있게 되는 것이다. 단축 URL 알고리즘 필자의 블로그 주소(hongdosan.tistory.com)를 goo.by에서 단..
개요 백엔드 데브코스에서 마르코님이 진행하는 발표 스터디에서 프록시 패턴을 맡게 되었는데요! 해당 발표를 준비하면서 학습한 내용을 공유하고 싶어서 글을 쓰게 되었습니다. 프록시 패턴 소개 프록시는 직역하면 대리라는 의미를 가지는데요. 직역 그대로 프록시 패턴은 클라이언트가 원래 사용하려는 객체를 직접 쓰는 것이 아닌 대리인을 거쳐 쓰는 패턴이라고 보면 됩니다. 쉽게 말해, 회사 대표를 뵙기 전 비서를 먼저 봐야하는 것처럼, 요청이 왔을 때 항상 프록시가 먼저 받게 되는 것처럼 말이죠! 그림을 보면 프록시와 리얼 서브젝트가 공유하는 인터페이스가 있고 프록시는 리얼 서브젝트를 참조하고 있습니다. 그래서 클라이언트는 해당 인터페이스 타입으로 프록시를 사용합니다! 이처럼 클라이언트가 프록시를 거쳐 리얼 서브젝트..
개요 데브코스에서 Random Bit Flip 액션 일지인 동행 스크럼 활동을 하다가 창현님의 소개로 코다님의 영상을 보게 되어 정리하게 되었습니다. 😊 Process 란? 위 이미지처럼 프로그램(Ex : 코드가 구현된 파일)이 프로세스(Ex : 실행이 되어 무언가가 된 것)가 되면서 총 2가지 일이 발생합니다. 먼저 프로세스가 필요로 하는 재료들이 메모리에 올라가야 합니다. 즉, 메모리 영역을 확보하게 됩니다. 😎 그리고 해당 프로세스의 정보를 담고 있는 PCB(Process Control Block)이 생성과 동시에 함께 만들어 집니다. PCB는 다음과 같은 정보들을 담습니다~ 근데 프로세스 모든 영역이 독립적인 것 같은데, 다른 프로세스와 통신하려면 어떻게 해야 할까요? 대표적으로, 프로세스 간에 ..
소개 및 개요 안녕하세요. 백엔드 데브코스를 진행하게 되면서 싱글톤 패턴에 대해 발표하게 되었습니다. 첫 발표이기도 해서 긴장이 많이 되었지만, 좋은 경험이라 생각하면서 용기를 내었습니다! 싱글톤 패턴 살펴보기 싱글톤 패턴은 한 클래스의 하나만 존재하는 인스턴스에 전역적으로 접근할 수 있는 방법을 제공해야 합니다. 즉, 다음 2가지 목적을 둘 수 있겠죠? 인스턴스를 오직 하나만 제공하는 클래스가 필요. 하나의 인스턴스에 전역적으로 접근할 수 있는 방법을 제공. public static void main(String[] args){ Settings s1 = new Settings(); Settings s2 = new Settings(); System.out.println(s1 != s2); //true }..
JAVA 개발 환경C, C++ 언어와는 다르게, 자바는 JVM(Java Virtual Machine)이 존재하고 자바는 이 JVM 덕분에 OS에 종속받지 않는다. 이 JVM과 자바 API를 포함하고 있는 환경이 JRE(Java Runtime Environment)이다. 하지만, JRE는 실제 개발에 필요한 컴파일러나 디버거 등의 도구는 포함하지 않고 있다. 때문에, 자바 프로그램을 개발하기 위해 JDK(Java Development Kit)가 필요하다. 이 JDK는 JRE를 포함하고 있으며 자바 컴파일러(javac), 인터프리터(java), 아카이버(jar), 문서 생성기(javadoc) 등과 같은 개발 도구를 포함하고 있다. 즉, 자바 프로그램을 실행시키는 데 필요한 모든 도구를 갖추고 있다.[요약]실..