Back to the Basic/Java
Hash(with. HashMap) - Why Hash?
Hash(with. HashMap) - Why Hash?
2022.06.03Introduction 이전 글에서 equals() 메서드를 오버라이딩 하면 반드시 hashCode() 메서드도 오버라이딩 해줘야 된다고 했다. 그렇다면 hashCode()는 왜 오버라이딩 해야 하는지 알아보기 전에 해시(Hash)에 대해서 정확히 알고 있어야 된다는 생각이 들어 따로 해시 함수에 대해서만 정리하려고 한다. 근데 해시 함수가 왜 중요한데? 해시 함수에 대해서는 개발자라면 어디선가라도 들어봤을 것이고 논란의 여지가 없는 주제이기도 하다. 하지만 실제 해시 함수를 사용하는 상황이 오게 되면 어떤 상황에서 어떻게 사용해야 하는지 헷갈리기도 하고 암호화와 사용해야 될 상황을 혼동하는 경우도 많이 보았다. 다음은 실제 회사에서 동료 개발자들과 했던 대화 내용이다. 개발자 A : 백엔드에서 유저에 ..
Java에서의 동등성? 동일성?
Java에서의 동등성? 동일성?
2022.06.03Java에서의 동등성? 동일성? Introduction C와는 다르게 Java는 Pointer(주소)에 대한 정보가 내부적으로 숨겨져 있기 때문에 비교에 있어서 차이가 난다. 언어적인 부분에 있어서 포인터를 숨김으로써 얻을 수 있는 장점도 있었지만 주소의 비교와 값의 비교에 있어서 구분을 해줘야 하는 직관을 포기할 수 밖에 없었다는 생각이 이 부분을 살펴보면서 들게 되었다. 그리고 어느 순간 동일성에 대해서 동등성 설명을 하고 동등성에 대해서 동일성으로 말하는 실수를 자주 저지르는 것 때문에 이번에 한국어로도 제대로 정리해야겠다 싶어 정리하게 되었다. Class Type, Primitive Type Java 세계에서는 두 가지 타입이 있다. Class Type과 Primitive Type! 타입에 따라 ..
Concurrency Condition[1](feat. thread, process) - 컴퓨터가 바라보는 상태란?
Concurrency Condition[1](feat. thread, process) - 컴퓨터가 바라보는 상태란?
2022.01.13Concurrency Condition[0](feat. side effect) - 상태를 가진다는 것 Concurrency Condition[1](feat. thread, process) - 컴퓨터가 바라보는 상태란? Introduction 지난 포스팅에서 상태를 가지므로써 Side Effect가 생길 수 있고 그에 따라 Race Condition이 발생하는 부분을 살펴보았다. 이번 포스팅에서는 컴퓨터가 우리가 말하는 "상태"를 어떻게 다루길래 이런 문제가 생기는가에 대해서 컴퓨터 구조와 OS 관점에서 살펴보려고 한다. CPU always work! 게임하는 도중에 CPU가 지금 어떤 연산을 하고 있는지, 크롬으로 쇼핑몰에 들어가 쇼핑을 할 때 CPU가 어떤 일을 수행하고 있는지 모르는 것처럼 우리가 평..
Concurrency Condition[0](feat. side effect) - 상태를 가진다는 것
Concurrency Condition[0](feat. side effect) - 상태를 가진다는 것
2022.01.13Introduction 동시성 문제를 말하면 항상 나오는 레이스 컨디션을 무엇인지는 설명할 수 있어도 왜 생기는지 본질적인 이유를 알지 못하는 것 같아 왜 생기는지를 컴퓨터 구조부터 언어 측면까지 정리해보려고 한다. 이번 글에서는 특히 상태를 갖는다는 것이 Race Condition에 어떤 영향을 주는지까지 정리하려 한다. Concurrency bug(동시성 문제) 동시성 문제란 우리가 동시성을 사용함으로써 발생하는 문제들을 말한다. 그럼 여기서 동시성이란 프로그램이나 알고리즘의 단위가 순서에 관계없이 혹은 부분적으로 실행되는 능력을 말한다. 자세히 설명하면 concurrent unit이라고 말하는 단위의 병렬 실행을 허용하여 multi-processor, multi-core 시스템의 성능을 향상시켜주기..