분류 전체보기
-
[Network] URL? URI? URN?Network Basis 2022. 4. 6. 18:06
URI에 대한 공식스펙 (https://www.ietf.org/rfc/rfc3986.txt) URI, URL, URN 에 대해 명확히 알고 계시나요? 필자도 명확하게 몰라도 여태 지장없이 코딩을 해왔었는데 사실 한번쯤은 명확히 정리하고 싶었습니다. (저는 명확하게 정리안하면 제 뇌가 기억을 안하더라구요 😩) 가시죠..!! URI (Uniform Resource Identifier) URI 는 URL과 URN을 포함하는 상위개념이다. 영어 뜻을 그대로 해석해보자면, 리소스를 구분하는 통일된 규약 정도로 볼 수 있겠다. 아래는 포함관계를 보여주는 밴다이어그램이다. URL과 URN URL (Uniform Resource Locator) 리소스를 구분하는 규약(URI) 중 리소스가 있는 위치를 기준으로 구분하는..
-
[IntelliJ] Test 실행 속도 빠르게 하는법IDLE/IntelliJ 2022. 4. 2. 10:33
코드 수준에서 테스트를 빠르게하는 방법이 아닌 IDE(IntelliJ) 수준에서 빠르게 하는 방법이다. JUnit 테스트를 실행 했을 시, 아래와 같이 'Test worker' 를 목격하게 된다면 이 글의 방법을 참조하시길 바란다. 문제원인 및 해결방법 IntelliJ는 Java로 바로 실행하는게 아닌, Gradle 을 통해서 실행하는 것을 Default 옵션으로 채택하고 있다. Preference -> build -> Gradle 에서 아래와 같이 Build and run using 과 Run tests using 을 Gradle (Default) 에서 IntelliJ IDEA 로 변경해주자
-
[Network] 통신 프로토콜의 발전에 대한 간략 정리글 (IP, TCP/UDP, HTTP)Network Basis 2022. 3. 29. 19:23
이 글은 각 통신 프로토콜이 어떠한 필요에 의해 만들어졌는지 간단하게 역사를 되짚어 보는 글입니다. 자세한 정보들은 해당 포스팅에서 얻은 키워드로 검색하시길 바래요 :D 아래는 각 계층에서 데이터를 어떻게 가공하는지 이해를 돕기위하여 제가 직접 만들었습니다 😏 사실 위 그림의 각 계층에서 Data에 추가되는 정보들은 흐름의 이해를 돕기 위해 간략히 표현한 것이며, 실제로는 더 다양하다. OSI 7 Layer & TCP/IP 모델 설명글 보러가기 글이 거의 리팩토링 되듯이 계속 수정하면서 난잡하게 정리되어있긴 합니다 ㅠㅠ... (추후 정리예정) [Network] 네트워크 통신의 기본 구조 ( OSI 7 Layer, TCP/IP) # OSI 모델 (Open Systems Interconnection) - 1..
-
[설계이론] Project Structure - 프로젝트 구성을 어떻게 설계해야 할까? (패키지 분리기준)Computer Basis/디자인패턴 및 설계이론 2022. 3. 27. 22:08
이 글은 김영한(우아한Tech)님의 '배달의민족 마이크로서비스 여행기' 세미나 영상과 76K의 Star 를 받은 'nodebestpractices' 를 참고하여 필자의 주관을 담아 정리한 글입니다. 따라서 이 포스팅을 보고 참고만 하시고 맹목적으로 보시지 않으셨으면 좋겠습니다. 가장 일반적인 프로젝트의 구성 아래는 인터넷강의를 보면 가장 일반적으로 목격되는 프로젝트의 구조이다. 왼쪽은 김영한님의 강의용 프로젝트 구성이고, 오른쪽은 필자의 첫 Spring 프로젝트의 구성이다. 이러한 방식으로 프로젝트를 구성했을 때, 하나의 비지니스컴포넌트(예를 들면 '주문(Order)')에 변경사항이 생기게되면 주문(Order)과 관련된 파일들을 수정해야하는 경우가 생길 수 있는데, 그 파일들이 각각 다른 패키지(폴더)에..
-
[Java/OS] 세마포어(Semaphore)에 관하여프로그래밍 언어/Java 2022. 3. 18. 08:26
이전에 OS와 시스템프로그래밍을 공부할 때 임계영역, 세마포어, 데드락, 뮤텍스락 등 배운적이 있는데 기억이 흐릿해져 다시 한번 정리하고자 한다. 사실 재밌는 옛날이야기를 찾아 신나서 포스팅 하는 것이기도 하다. ㅋㅋㅋㅋㅋ 세마포어(Semaphore)의 유래 Semaphore 는 깃발이라는 뜻이다. (!!!) 옛날 기찻길에서 깃발 표식으로 파란색이 걸려있으면 지나가도 되고 빨간색이면 다른기차가 지나간 후에 통과하라는 표시였다고 한다. 그리고 이 깃발이 Semaphore라고 한다. (매 우 흥 미 롭 잖 아 !!) 세마포어와 뮤텍스(Mutex) 세마포어는 2개이상의 프로세스(또는 쓰레드)가 공유자원에 대한 접근을 제어하는 변수 뮤텍스는 딱 2개의 프로세스(또는 쓰레드)가 공유자원에 대한 접근을 제어하는 변..
-
[Java] ThreadLocal 이 필요할 때 (feat. Thread, Thread-Safe, OS, Spring Security)프로그래밍 언어/Java 2022. 3. 15. 13:54
ThreadLocal 오직 한 쓰레드에 의해 읽고 쓰여질 수 있는 쓰레드만의 독립적인 로컬변수 ThreadLocal이 필요할 때 보통 프로세스 내부 자원을 쓰레드들은 공유하게 되는데, 아무처리를 해두지 않으면 쓰레드들은 순서없이 프로세스의 내부자원에 접근하게 된다. 여기서 변경이 생긴다면 그 뒤의 쓰레드들은 변경된 데이터로 작업을 하게 되는데 여기서 생각지 못한 동작을 하게 될 가능성이 많다. 이러한 점을 해결하기 위해 세마포어와 뮤텍스(=이진세마포어)라는 개념이 있지만, 공유변수가 아닌 오직 쓰레드만의 로컬 변수를 사용하고 싶을 때는 ThreadLocal을 사용하게 된다. ThreadLocal의 사용예시 (Spring Security Context Holder) Spring Security에서 Cont..
-
[디자인패턴] 싱글톤패턴을 쓰는 이유와 주의할 점Computer Basis/디자인패턴 및 설계이론 2022. 3. 15. 13:08
싱글톤패턴 애플리케이션 시작 시 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 생성하는 디자인 패턴 그리고 계속 그 하나의 인스턴스로 작업을 처리한다. 싱글톤 패턴을 쓰는 이유 고정된 메모리 영역(데이터영역)에 한번의 new로 인스턴스를 할당하여 사용하기 때문에 메모리 효율성 증가 전역 인스턴스의 특성상 어디서나 접근가능하기에 데이터 공유에 용이 인스턴스가 절대적으로 한개만 존재하는 것을 보증하고 싶을 경우 사용한다. (멀티쓰레드 환경에서 두개이상이 생겨날 수 있는데 이는 싱글톤 패턴이 아니다.) 이미 생성된 객체이므로 객체로딩시간이 줄어들어 성능이 좋아지는 장점도 있다. 싱글톤 패턴 사용 시 주의할 점 싱글톤 객체가 여기저기서 너무 많이 참조된다면 다른 클래스들 간의 결합도가 같이..