2022/11 6

20년차 개발자의 실무 개발 노하우를 담은 JAVA 기초 - 내 기준 정리

개요 회사에서 외부강의를 지원하는 컨텐츠가 7개월전인가 생겼는데 그 때 '만만해보이는거 간단히 들어볼까'하고 신청했던 강의이다. 결론부터 말하자면 7장 전까지는 JAVA 기초 뿐만 아니라 통상적인 컴퓨터 언어라면 알아야 하는 내용들을 다루고, 그 이후부터는 JAVA의 특성을 다룬다. 그래서 7장 이후에 내가 몰랐던 내용이나, 아차차 까먹었다 하는 내용들만 간단히 정리 해놨다. 기승전결이 없는 나만 볼 수 있는 정리이다. Section 7 메서드 staic block → static method → static init 순서 자바 변수 메모리 할당 부분 좀더 알아보기 Section 8 상속 모든 클래스는 초기화 전에 상위클래스의 생성자를 호출한다. Section 9 다형성 & 추상화 instanceof O..

서버개발자로 살아남기 - 서블릿(Servlet)에 대해서

개요 현업에서 Spring boot를 사용하고 있기도 하고, 개인적으로 이 프레임웤에 대한 궁금증이 많기 때문에 기초부터 정리하면 좋겠다 라는 생각이 들어 차근차근 하나씩 정리해보려고 한다. Servlet 이란? 서블릿(Servlet)을 간단히 정의하자면 JAVA를 사용하여 웹을 만들기 위해 필요한 기술이다. 웹의 관점에서 본다면 Client의 요청을 처리하고, 이에 대한 결과를 다시 전송하고, Servlet Class의 구현 규칙을 따른다. 일반적으로 Web Server는 정적인 페이지만 제공한다. (Web Server) 만약 사용자가 요청한 시점에, 사용자가 작성한 데이터에 따라 다른 페이지를 보여줘야한다면?(WAS) 즉 **동적인 페이지를 제공해야한다면 서블릿(Servlet)이 필요하다. 예를 들어..

중첩 루프 조인(NESTED LOOPS JOIN)에 대해

NLJ, Nested Loop Join 은 중첩 for문과 같은 원리로 조건에 맞는 조인을 하는 방법이다. NESTED LOOP JOIN은 Driving Table로 한 테이블을 선정하고 이 테이블로부터 where절에 정의된 검색 조건을 만족하는 데이터들을 걸러낸 후, 이 값을 가지고 조인 대상 테이블을 반복적으로 검색하면서 조인 조건을 만족하는 최종 결과값을 얻어낸다. Driving Table , Driven Table Driving Table이란 JOIN을 할 때 먼저 액세스 되어 주도하는 테이블이다. 즉 조인을 할 때 먼저 액세스 되는 테이블을 Driving Table이라 하고, 나중에 액세스 되는 테이블을 Driven Table 이라 한다. 결정 방식은 옵티마이저(효율적인 방법으로 SQL 수행할 ..

서버 개발자로 살아남기 - 멀티 쓰레드 환경에서 Singleton 초기화 - DCL(Double Checked Locking)

Singleton 패턴은 전체 중 하나의 인스턴스만 존재해야 한다. 싱글 쓰레드를 사용하는 경우에는 문제가 되지 않지만, 멀티 쓰레드 환경에서 Singleton에 접근 시 초기화 관련해서 문제가 있다. 아래코드는 단순하게 구현한 멀티쓰레드 환경에서의 Singleton 초기화 방법이다. class Foo { private Singleton instance; public Singleton getInstance() { if(Objects.isNull(instance)) { instance = new Singleton(); } return Singleton; } } 위 코드는 멀티쓰레드 환경에 적합하지 않다. 쓰레드가 getInstance()에 동시에 접근하면 여러번 초기화 되는 문제가 발생하기 때문이다.(상호..

java에서 모니터 사용하기 - synchronized

세마포어는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. QuickSort 알고리즘으로 유명한 C. A. R. Hoare(호어)의 논문에서 처음 등장한 개념이다. 하나의 객체마다 하나의 모니터를 결합할 수 있으며, 모니터와 결합된 객체는 잠금(lock) 기능을 가지고 있어 하나의 쓰레드만 접근 가능한다. 모니터 구조 ![[Pasted image 20221107200903.png]] 위는 모니터 구조를 나타낸 그림이다. 모니터는 공유 자원 + 공유 자원 접근함수로 이루어져 있고, 2개의 큐를 가지고 있다. 각각 mutual exclusion(상호배타) queue, conditional synchroniz..

서버 개발자로 살아남기 - REST API

REST API란? REST는 Representational State Transfer라는 용어의 약자로서 2000년도에 로이 필딩 (Roy Fielding)의 박사학위 논문에서 최초로 소개되었다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 **웹의 장점을 최대한 활용할 수 있는 아키텍처** 로써 REST를 발표했다고 한다. REST의 구성요소 자원(Resource): URI 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다. 자원을 구별하는 ID는 ‘/groups/:group\_id’와 같은 HTTP URI 이다. Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)..

728x90