목록공부공부 (33)
이숭간 공부기록
이글을 작성하게된 계기 과제진행중 팀원분들께서 jdbc드라이버 설정과 관련하여 에러가 발생했다. jdbc드라이버를 직접 다운받아서 외부라이브러리로 넣어주는것이 일반 자바프로젝트에서는 가능했는데 그래들 프로젝트에서는 해당방법이 적용되지않았다 (드라이버를 외부라이브러리로 넣어주었음에도 불구하고 찾을수없다는 오류가 발생) 따라서 왜 이런현상이 발생했는지 이해하기위해 그래들과같은 빌드툴과 JDBC에 대해서도 좀더 정확이 이해해보고자한다. 잠깐, JDBC란 무엇인가?? JDBC란 자바에서 데이터베이스를 다루기위한 Java API로 제공되는 인터페이스이다. JDBC가 있기때문에 우리는 사용하는 디비에 관계없이 동일한 방식으로 디비에 접근/조작이 가능한것이다. 이게바로 인터페이스의 역할이니까! JDBC가 인터페이스라..
해시테이블이라는 자료구조에 대해 알고싶으면 다음 글을 참고해주세요! (https://esoongan.tistory.com/134) 해시테이블을 공부하면서 내부적인 해시펑션을 통해 나온 해시값이 충돌했을때 이를 어떻게 처리하는지를 알게되었다. (추가메모리를 사용해 연결리스트로 값을 이어주거나 빈공간을 활용해 남은공간에다 값을 저장함) 그런데 어떤 블로그에서 자바의 해시맵같은경우 키값이 중복되는경우 이전값을 덮어써버린다는것을 보았다. 읭? (글을 작성한 시점에서 다시 보니 저기서 말한 키값은 해시값이 아닌 해시함수를 통과하기전 진짜 '키값'을 말한것인데 아주 잘못이해했다^^) 어쨌든 이 기회에 해시맵에 동작과정과 내부적인 해시함수는 어떻게 이루어져있는지에 대해 공부해보고자 한다. 네이버 기술블로그의 [Jav..
entity나 Dto객체에 값을 넣어줄때 롬복의 빌더 애노테이션(@Builder)을 종종 사용하곤 하는데 완벽히 이해를 하지 못한것같아 정리해보았다! 빌더패턴이란? 디자인패턴중 하나로, 생성과 표현의 분리(?)란다. 쉽게 말해 생성자에서 인자가 많을때 고려해볼수있는것이 빌더패턴이다. 빌더패턴 이전에 먼저 "점층적 생성자패턴"에 대해 알아보자 0. 점증적 생성자패턴 클래스를 설계하다보면, 필수로 받야할 인자들이 있고 선택적으로 받야할 인자들이 있다. 이때 필수적으로 값이 있어야할 멤버변수를 위해 생성자에 매개변수를 넣는다. 또한 선택적 인자를 받기위해 추가적인 생성자를 만든다. 이러한 상황을 Effectivce Java 2/E에서 점층적 생성자 패턴이라고 한다. 이런 설계에서의 단점이 있는데 인자들이 많아..
프록시 패턴이란? 디자인패턴중 하나로, 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스를 의미한다. 먼저 프록시라는 용어를 이해하고 넘어가보자. 0. 프록시 라는 용어의 의미 소프트웨어 기술에서 종종 등장하는 '프록시'의 용어를 정리하고 넘어가자. 프록시는 어디서 많이 주워들었다. 리버스프록시,프록시서버, lazy전략에서 사용되는 프록시객체, 프록시패턴 등등 프록시란 '대리'라는 의미로 프록시에게 어떤 일을 대신 시키는것이다. 예를 들어 보안분야에서, 보안상의 이유로 서버를 외부에 노출시키지 않기 위해 서버와 클라이언트단 중간에서 접점을 담당하는 서버를 보고 프록시서버라고 부른다. 프록시서버가 궁금하다면 다음글을 읽어보자. (https://brownbears.tistory.com/191) 1. 프록..
Object클래스의 메소드에 대해 알아보자! Object클래스? java.lang패키지에 속하는 클래스로 자바 클래스의 최상위 클래스에 해당한다. 우리가 클래스를 선언할때 명시적으로 extends를 사용해서 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object클래스를 상속한다. 즉 모든 자바의 클래스는 Object클래스의 자식이거나 자손인것이다. equals() _ 객체비교 함수 매개변수 타입은 Object이다. 모든객체가 매개값이 될수 있음을 의미한다. 모든 객체는 Obejct타입으로 자동타입변환 될 수 있기때문 String객체의 equals()메소드가 객체의 번지수가 아닌 논리적인 데이터값을 비교할 수 있었던 이유는 String클래스가 Object의 equals()메소드를 오버라이딩..
1. 멀티스레드에 대해 알고있는가? ( 왜 멀티스레드에서 스레드마다 '스택'만 따로 할당받는지, 공유되는 영역(힙,코드, 데이터)은 어디인지 ) 2. 스프링의 싱글톤에 대해 알고있는가? ( Bean에 대해 알고있는지, Bean의 Default 스코프에 대해 알고있는지 ) 3. JVM의 메모리 영역에 대해 알고있는가? ( Method Area, Heap, Stack, PCRegister, Native Method Stack) JVM의 Method Area : static키워드 , 클래스에 대한 메타데이터 정보 위와 같은 내용을 알고 있다면 글을 이해하는데 더 도움이 될것이라고 생각한다. 우리가 보통 스레드간 공유를 생각하면 가장먼저 동기화를 떠올린다. 운영체제에서 주구장창 배운것이 동기화,, lock 이기..