Home
zz9z9
Cancel

왜 equals()와 hashCode()는 함께 오버라이딩 해야할까 ?

들어가기 전 실무에서는 equals(), hashCode() 메서드를 오버라이드 할 일이 별로 없었던 것 같다. 하지만 몇 달 전 간단한 웹 서버를 만들어보는 토이 프로젝트를 진행하던 중, 클라이언트로부터 받은 요청을 유틸 클래스의 메서드를 사용해서 HttpRequest 객체를 만드는 부분에 대한 테스트 코드를 작성했는데 원하는 결과가 나오지 않았...

OS 캐시

OS 캐시 OS에는 디스크 내의 데이터에 빠르게 액세스할 수 있도록 하는 구조가 갖춰져 있다. OS는 메모리를 이용해서 디스크 액세스를 줄인다. 애플리케이션에서 이를 활용한다면 OS에 상당부분을 맡길 수 있다. 이를 가능하게 하는 것이 OS캐시이다. 리눅스의 경우에는 페이지 캐시(page cache...

추상화를 통해 엑셀 생성 로직 리팩토링하기

상황 현재 운영하고 있는 시스템에는, 사용자가 조회한 결과에 대해 엑셀 파일로 다운받을 수 있는 기능을 몇몇 화면에서 제공한다. 엑셀을 만드는 부분은 스프링부트 기반의 백엔드 서버에서 담당한다. 문제는 해당 로직에서 모든 셀에 대한 영역 지정을 하드코딩으로 해주고 있다는 것이다. 예를 들어, 아래와 같은 경우 Title1의 병합 영역을 ‘2번 ...

CDN(Content Delivery Network)

들어가기 전 얼마전 면접에서 ‘화면의 초기 로딩 속도가 느리다면 어떻게 해결할 수 있을까요?’ 라는 질문에 제대로 대답하지 못했던 기억이 있다. 뒤늦게 생각났는데 CDN을 활용하면 어느정도 개선되지 않을까 하는 생각이 들었다. 하지만, CDN에 대해 어렴풋이 알고있어 얘기를 꺼내지 못했다. 이번 기회에 CDN에 대해 잘 정리해보자. CDN이란 ?...

자바에서 파일 읽어오기

들어가기 전 사실 실무에서 자바 코드로 파일을 읽어와서 데이터를 처리하거나 할 일이 없어서, 파일을 다루는 부분에 대한 코드를 작성할 일이 생기면, 그 때 마다 구글링해서 사용했던 것 같다. 최근에 .json 파일에 있는 데이터를 읽어와서 처리해야할 일이 있었는데, 매번 구글링 하는 것 보다 머릿속에 한 번 확실히 정리해야 할 것 같다는 생각이 들...

자바 IO, NIO

Java I/O Input, Output을 나타낸다. In, Out의 기준은 JVM이다. 즉, JVM으로 들어오는 데이터를 다루는 경우엔 Input 데이터를 내보내는 경우엔 Output이다. Stream 기반이다. 한 번에 1byte 또는 그 이상의 byte를 읽는다. 데이터가 캐시되지 않는다. 따라서 ...

try-with-resource 사용시 Socket closed 예외 발생

상황 자바로 만든 간단한 웹 서버에서 404, 500과 같은 에러 페이지 처리를 위해 catch 절 내부에 에러 페이지를 응답하는 로직을 작성했다. 하지만 에러 발생시 에러 페이지가 응답되지 않고 java.net.SocketException: Socket closed가 발생했다. public class HttpServer { ... ...

객체 지향 언어의 특징 - 기능과 책임 분리

해당 글은 최범균 님의 객체 지향 프로그래밍 입문 강의를 듣고 정리한 내용입니다. 기능 기능은 하위 기능으로 분해 가능하다 각각의 기능을 누가 제공할 것인지 결정하는 것이 객체 지향 설계의 기본이다. 기능은 곧 책임이다. 따라서, 분리한 기능을 알맞게 분배해야한다.(책임 분리) ...

객체 지향 언어의 특징 - 다형성과 추상화

해당 글은 최범균 님의 객체 지향 프로그래밍 입문 강의를 듣고 정리한 내용입니다. 다형성과 추상화 다형성 (polymorphism) 여러(poly) 모습(morph)을 갖는 것. 즉, 한 객체가 여러 타입을 갖는 것을 의미한다. 즉, 한 객체가 여러 타입의 기능을 제공 타입 상속으로 다형성 구현 하위 타입은 ...

객체 지향 언어의 특징 - 캡슐화

해당 글은 최범균 님의 객체 지향 프로그래밍 입문 강의를 듣고 정리한 내용입니다. 캡슐화 데이터 + 관련된 기능을 묶는 것 객체가 기능을 어떻게 구현했는지 외부에 감추는 것 구현에 사용된 데이터의 상세 내용을 외부에 감춤 정보 은닉의미 포함 캡슐화를 하지 않는 경우 요구사항의 변경이...