profile
구준희 하자

[JAVA] HashMap 은 어떻게 동작할까

본 포스트는 NAVER D2 - Java HashMap은 어떻게 동작하는가?를 참고해 HashMap가 어떻게 충돌 가능성을 줄이는지에 대해 구체적으로 다룰 것이다.HashMap과 HashTable은 둘 다 '키에 대한 해시 값을 사용해 값을 저장하고 조회하며 키-값 쌍

2022년 7월 27일
·
0개의 댓글
·

multi-threaded?

들어가기 전 multithread의 instruction 처리에 대해서 concurrency 인지 parallel 인지에 대해 명확한 이해가 없었다. multithread 이면 단순히 parallel(병렬적)하게 instruction을 처리한다고 생각했다. 문득 생

2022년 7월 26일
·
0개의 댓글
·

[Spring Security] JWT 필터 적용 (2)

이전에 JWT 도입 과정 글을 작성했지만, 내용이 모호하고 로직이 쓸데없이 복잡한 것 같아서 조금 간소화해보고자 했다. 캡스톤 프로젝트에서 만들었던 API Server를 리팩터링 하면서 진행한 내용이다.JWT를 구현하느라 여기저기 돌아다니며 힘들게 구현했고, 미천하지만

2022년 7월 17일
·
0개의 댓글
·

[JAVA] Integer Caching

바야흐로, 11번가 1차 면접에서 받았던 질문 중 가장 기억에 남는 질문이었던 Integer의 caching 기능에 대해서 알아보고자 한다.다음과 같이 127 값을 갖고 있는 두 개의 Integer 객체를 비교했을 때, 결과는 어떻게 될까? 처음 이 질문을 접했을 때,

2022년 7월 13일
·
0개의 댓글
·
post-thumbnail

Spring AOP

Aspect : APP내 여러 곳에 흩어져있으며 Cross-Cutting 기능에 초점을 맞춘 코드/기능을 말한다. 여러 객체에 공통적으로 적용되는 관심 사항을 말한다.JoinPoint : 프로그램이 실행 중일 때 발생하는 메서드 실행/생성자 호출/필드 값 수정과 같은

2022년 7월 12일
·
0개의 댓글
·

[Network] 4. Link Layer

network-layer 에서는 32bit의 IP 주소를 사용했지만, LAN에서 통신하기 위해서 물리적인 MAC address를 사용한다.MAC address는 NIC ROM(Network Interface Card)에 있고, 16진수의 48bit를 사용한다. e.g)

2022년 6월 29일
·
0개의 댓글
·

[Network] 3. Network Layer

Network Layer 네트워크 계층의 목적은 transport segment를 수신자에게 보내는 것이다. 데이터를 보낼 때 transport layer로부터 segment를 받아서 datagram으로 캡슐화를 한다. 모든 host, router에 network l

2022년 6월 27일
·
0개의 댓글
·

[Spring] Spring DB 접근 기초

TCP/IP를 사용해 DB와 커넥션을 연결한다.Server는 DB로 SQL을 전달하는데, DB마다 커넥션 연결/ SQL 통신 방법이 모두 다르다는데 문제가 있다. JDBC(Java Database Connectivity)는 자바에서 DB에 접속할 수 있도록 하는 자바

2022년 6월 21일
·
0개의 댓글
·

[Network] 2. Transport Layer

Transport services & protocols app process 간의 logical communication을 제공 delay 보장이나, minimum badnwidth 같은건 보장하지 못함 transport vs network layer network

2022년 6월 21일
·
0개의 댓글
·

[Network] 1. Application Layer

client-server architecture server always-on server 영구적인 IP를 가짐 data가 군집되어 있는 center client server와 소통, 서로 직접적으로 소통하지 않음 동적으로 IP를 할당받음 P2P

2022년 6월 18일
·
0개의 댓글
·

[Network] 0. 기본

Circuit switching 데이터를 보낼 때 전용 회선을 이용함 일정한 속도를 보장받을 수 있음 e.g) 1Mb/s link를 10명의 user에게 100kb/s로 나눔 FDM 주파수를 범위에 따라 독점적인 사용자를 정함 TDM 주파수를 시간으로 나눠서 독점적

2022년 6월 16일
·
0개의 댓글
·

85. 자바 직렬화의 대안을 찾으라

직렬화는 안전하지 않다. 신뢰할 수 없는 스트림을 역직렬화하면 원격 코드 실행, 서비스 거부 등의 공격으로 이어질 수 있다. 역직렬화 과정에서 호출되어서 위험한 동작을 수행하도록 하는 메서드를 가젯이라고 하는데 이런 가젯을 여러개 사용하는 것을 가젯 체인이라고 한다.

2022년 6월 10일
·
0개의 댓글
·

84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라

여러 스레드가 실행 중이면 OS의 스레드 스케줄러가 어떤 스레드를 얼마나 오래 실행할 지를 결정한다. 정상적인 OS라면 이 작업을 공정하게 수행하지만 구체적인 스케줄링 정책은 OS마다 다를 수 있다. 따라서 잘 작성된 프로그램이라면 이 정책에 좌지우지돼서는 안 된다.정

2022년 6월 10일
·
0개의 댓글
·

[OS] 9. 가상 메모리와 페이지 교체

들어가며 물리적 메모리로의 주소 변환은 OS가 관여하지 않지만, 가상 메모리 기법은 전적으로 OS가 관여한다 Demand Paging 실제로 필요할 때(= 해당 페이지가 요청됐을 때) page를 메모리에 올리는 것 I/O 양 감소 memory 사용량 감

2022년 6월 7일
·
0개의 댓글
·

[OS] 8. 메모리 관리 기법

프로세스마다 독립적으로 가지는 주소 공간각 프로세스마다 0번지부터 시작CPU가 보는 주소는 logical address임 => 실행파일 안의 코드는 동일하기 때문에 CPU는 logical address를 봐야할 필요가 있음메모리에 실제 올라가는 위치가상 메모리의 논리적

2022년 6월 2일
·
0개의 댓글
·

83. 지연 초기화는 신중히 사용하라

지연 초기화란, 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법이다. 그래서 값이 전혀 쓰이지 않는다면 초기화도 일어나지 않는다. 이 기법은 정적 필드, 인스턴스 필드 모두에 사용할 수 있다. 지연 초기화는 주로 최적화 용도로 쓰지만, 클래스와 인스턴스

2022년 6월 1일
·
0개의 댓글
·

82. 스레드 안전성 수준을 문서화하라

한 메서드를 여러 스레드가 호출했을 때 메서드가 어떻게 동작하느냐는 해당 클래스와 이를 사용하는 클라이언트 사이의 중요한 계약과도 같다. API 문서에서 언급이 없다면 사용자는 나름의 가정을 해야만 하고, 지나치게 동기화를 하거나 충분히 하지 못해 심각한 오류로 이어질

2022년 6월 1일
·
0개의 댓글
·

[OS] 7. 데드락

일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태Resource: HW, SW 등을 포함하는 개념I/O device, CPU cycle, memory space, semaphore 등등..데드락은 다음 4가지 조건을 모두 만족해야만 발생한다.Mutual

2022년 6월 1일
·
0개의 댓글
·

[OS] 6. 프로세스 동기화

Race Condition Storage Box를 공유하는 Execution Box가 여럿이면 Race Condition의 가능성이 있음 e.g) Memory CPU : MultiProcessor system e.g) Address Space Proc

2022년 5월 31일
·
0개의 댓글
·

[OS] 5. CPU 스케줄링

CPU 스케줄링 CPU는 I/O burst 와 CPU burst를 연속적으로 반복하게 된다. I/O burst: I/O 작업을 기다리는 시간 CPU burst: instruction 수행 시간 I/O burst 의 발생이 잦아지면서 CPU burst 가

2022년 5월 31일
·
0개의 댓글
·