분류 전체보기

    [JAVA] M1 jdk, jenv 환경 세팅

    brew 가 3.0.0부터 m1용 brew를 지원하기 시작하면서 설치 경로가 변경되었다. 기존엔 /usr/local에 설치되었지만, 현재는 /opt/homebrew에 설치되기 때문에 환경 설정에 주의해야 한다. jdk 설치 brew install openjdk@11 jdk java development kit의 약자로 자바 개발 키트이다. java로 만들어진 파일을 실행하려면 jre(java runtime environment)가 필요하듯이, java로 개발하기 위해선 jdk가 필요하다. jre와 함께 컴파일러인 javac나 java console, java doc 등을 포함한다. jenv 설치 brew install jenv echo 'export PATH="$HOME/.jenv/bin:$PATH"' ..

    [Spring Security] LoginSuccessHandler와 FailureHandler 호출 원리

    기본적인 인증 책임 구조 SpringSecurity에서 인증은 보통 AuthenticationFilter → AuthenticationManager → AuthenticationProvider 순으로 인증 책임을 위임한다. (UserDetailsService 는 User 정보를 load하는 역할만 수행) Authentication Success 로직 기본적인 Authentication Filter인 UsernamePasswordAuthenticationFilter 를 보면 AbstractAuthenticationProcessingFilter 를 extends 하는 걸 볼 수 있다. private void doFilter(HttpServletRequest request, HttpServletResponse..

    [Spring Cloud] FeignClient Logging 방법 정리

    Feign Client 를 사용하던 중 구현해야 할 사항 중 하나가 모든 요청, 응답에 대한 로깅이었다. 그러면서 알게된 Feign Client Logging 방법 정리 간단하게 interceptor를 사용할까! 하다가 feign의 Logger를 커스터마이징 할 수 있길래 오! 더 간단하지 않을까 해서 사용해보았다. %s %s HTTP/1.1 (%s-byte body) ", request.httpMethod().name(), request.url(), bodyLength); } } @Override protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime) thr..

    [JAVA] 리플렉션과 제네릭은 어떻게 형변환을 자유롭게 해줄까?

    제네릭 제네릭은 타입 세이프를 보장해주는 컴파일 타임 메커니즘, 리플렉션은 런타임 메커니즘이다. 즉, 코드짤땐 type T가 뭔진 모르겠지만 타입 세이프는 보장해주었으면 좋겠어~라고 하면 컴파일러는 type T를 Object로 변환해주어 런타임에 어떤 객체가 와도 동작하게 해준다. 이러한 컴파일 타임엔 타입 세이프를 검사하지만 런타임엔 타입을 제거하는 과정을 거치게 되는데, 이걸 자바에선 type erasure라고 부른다. Type Erasure 동작 과정 generic type들을 모두 Object로 바꾼다. 타입 캐스팅이 필요한 경우 타입을 주입하기도 한다. 다형성을 위해 bridge method들을 생성한다. 리플렉션 이와는 달리 리플렉션은 객체의 클래스들과 인터페이스를 나타내는 Class 인스턴스..

    신입 개발자 면접 스터디 - DB

    정규화 중복을 최소화하게 데이터를 구조화하는 과정 - 1차 정규화: 테이블의 모든 튜플들을 원자값으로 변환 - 2차 정규화: 기본키가 아닌 모든 속성이 기본 키에 완전 함수 종속 - 3차 정규화: 기본키 이외의 다른 컬럼이 그 외 다른 컬럼을 결정할 수 없는 것 키종류 후보키 - 튜플을 유잉ㄹ하게 식별할 수 있는 속성들의 부분 집합, 유일성과 최소성 만족 기본키 - 후보키 중에서 선택한 Main Key, 동일한 값이 중복될 수 없다. 대체키 - 후보키가 둘 이상일때, 기본키를 제외한 나머지 후보키 슈퍼키 - 속성들의 집합으로 구성 된 키, 유일성 만족, 최소성 불만족 외래키 - 참조되는 릴레이션의 기본키와 대응 트랜잭션 데이터 베이스의 상태를 변화시키는 논리적 작업 단위 Atomicity(원자성) - 트..

    신입 개발자 면접 스터디 - OS

    캐시 CPU의 속도와 시스템 메모리의 속도 차이 문제를 해결하기 위한 메모리 CPU안에 포함 일반 메모리에 비해 비쌈 L1 - 보통 8~64KB, 명령어 캐시/데이터 캐시로 분리, Per Core L2 - 보통 64KB ~ 4MB, 명령어/데이터 복합 저장, Per Core L3 - 3~12MB, CPU가 아닌 메인보드에 내장되는 경우가 많음, Miss Rate때문에 잘 사용하지 않음, Per Processor * 캐시메모리의 용량을 늘리기 보다 멀티 레벨인 이유? Access Time 줄임, 프로세서 간 충돌 방지 * LRU 알고리즘: 캐시 알고리즘 중 하나, LinkedList 사용, Map을 사용하여 시간단축을 하는 경우도 있음 지역성 기억 장치내의 정보를 균일하게 접근하는 것이 아닌 특정 부분만 ..