분류 전체보기

· 정보
🚀 Item 11 equals를 재정의하려거든 hashCode도 재정의하라 why❓ equals를 재정의한 곳에서 왜 hashCode도 재정의 해야할까요? equals를 재정의한 곳에서 hashCode를 재정의하지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 HashMap이나 HashSet 같은 컬렉션의 원소로 사용할 때 문제를 일으킵니다. 📌 Object 명세서 equals 비교에 사용되는 정보가 변경되지 않았다면, hashCode 도 변하면 안 된다. (애플리케이션을 다시 실행한다면 이 값이 달라져도 상관 없음) equals가 두 객체가 같다고 판단했다면, 두 객체의 hashCode는 똑같은 값을 반환한다. 논리적으로 같은 객체는 같은 해시코드를 반환해야 한다. equal..
· 정보
❓ C언어도 아닌데 객체 참조를 해제?? C, C++ 처럼 메모리를 직접 관리해야 하는 언어를 쓰다가 자바처럼 가비지 컬렉터를 갖춘 언어로 넘어오면 프로그래머의 삶이 훨씬 편안해집니다. 다 쓴 객체를 알아서 회수해가니 말입니다. 하지만 종종 이것이 메모리 관리에 더 이상 신경 쓰지 않아도 된다고 오해하는 개발자들이 있는데 전혀 아닙니다. 꼭꼭 숨어 있는 문제가 존재합니다. 바로 메모리 누수입니다. 이제부터 우리는 메모리가 누수되는 3가지 경우에 대해서 알아보겠습니다. ✏️ case 1 스택 먼저 아래 스택 코드를 예로들어봅시다. import java.util.Arrays; public class Stack { private Object[] elements; private int size = 0; priv..
· 정보
🎯 Item 6 불필요한 객체 생성을 피하라 ❗️도대체 어떠한 경우에 객체 생성이 불필요 할까❓ 1️⃣ 문자열 객체 생성 먼저 아래 예제를 봅시다. public class Strings { public static void main(String[] args) { String hi = "hi"; String hi2 = new String("hi2"); String hi3 = "hi3"; System.out.println(hi == hi2); // false System.out.println(hi.equals(hi2)); // hi System.out.println(hi == hi3); // true System.out.println(hi.equals(hi3)); // true } } 먼저 hi는 문자열 리..
· 정보
📗 Effective Java - Item 5 5️⃣ 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 ❓ 의존 객체 주입은 무엇일까? 의존성 주입 (Dependency Injection) 의존성 주입을 설명하기 전에 의존 관계에 대해 먼저 알아야 합니다. 의존 관계(Dependency) A가 B에 의존한다 B의 상태가 바뀔 때 A의 영향을 미치는 것을 의존 관계라고 합니다. public class SpellChecker { private static final Dictionary dictionary = new DefaultDictionary(); private SpellChecker() {} public static boolean isValid(String word) { // TODO 여기 Spel..
· 정보
🚀 인스턴스화를 막을려거든 private 생성자를 사용하라 ❓ 왜 인스턴스화를 막을려고 하는 걸까 OOP의 핵심은 코드의 재사용입니다. 이 목적을 위해서 우리는, 일단 어떤 틀의 형태인 클래스를 만들고, 그를 통해 인스턴스를 만들어 사용하는 방식을 사용하기로 했습니다.. 그런데 간혹가다 단순히 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있습니다. 또는 싱글톤 패턴을 사용하고 싶을 때가 있습니다. ❗️ 싱글톤 패턴 싱글톤 패턴은 객체지향 디자인 패턴의 한 종류로, 어떤 클래스의 인스턴스가 단 하나만 생성되어 시스템 어디에서든지 그 인스턴스에 접근할 수 있도록 보장하는 패턴입니다. 이 패턴은 주로 공유 자원에 대한 접근 제어, 로깅, 데이터베이스 연결, 프린터 스풀러 등과 같이 애플리케이션..
· 정보
🚀 Item 1 생성자 대신 정적 팩터리 메서드를 고려하라 생성자 대신 정적 팩터리 메서드를 고려하라 왜 그래야할까요? 먼저 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있습니다. 정적 팩터리 메서드(static factory method)는 인스턴스 생성을 위해 new 키워드를 사용하는 대신, 클래스 내부에 정적 메서드(static method)를 정의하여 객체를 반환하는 디자인 패턴입니다. 다음은 정적 팩터리 메서드의 예시입니다. 여기서는 Boolean 타입의 값을 반환하는 valueOf 메서드를 예로 들 수 있습니다. public class Boolean { private final boolean value; private Boolean(bool..
· CS
🎯 CORS 🎾 CORS 란? 여러분들이 개발을 하다가 외부 API (ex 네이버지도api, 통합 뱅킹 api, 날씨 api)등을 사용할 때가 있습니다 . 이때 특정한 설정없이 사용하면 다음과 같은 에러가 발생합니다. 왜 이런 에러가 발생하고 어떻게 해결할까요?? 이걸 알기전에 CORS부터 알아야합니다. CORS(Cross-Origin Resource Sharing) 말 그대로 출처(Origin)가 다른 자원들을 공유한다는 뜻입니다. 쉽게 말하자면, 다른 출처(ex. 네이버지도 api , 날씨 api)의 자원에 접근해서 리소스를 사용한다는 뜻입니다. 그렇다면 출처가 다르다의 판단 기준은 무엇일까요? 이를 알기 위해서는 먼저 출처에 대해서 알아보겠습니다. 우리가 흔히 알고 있는 URL에서 도메인만 뜻하는 ..
· CS
🎯 쿠키와 세션 1. 🍪 쿠키란? 쿠키는 웹사이트가 나중에 검색할 수 있도록 웹 브라우저 내에 저장되는 웹사이트의 데이터 조각입니다. 쿠기는 사용자가 특정 웹사이트로 돌아왔음을 서버에 알리는 데 사용됩니다. 사용자가 웹사이트를 다시 방문하면 쿠키는 정보를 제공하고 사이트가 선택한 설정과 타켓 콘텐츠를 표시할 수 있도록 합니다. 흔히 웹 상에서 이야기하는 쿠키란 HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 불리며, 웹 브라우저에서 이용하는 정보 파일을 말합니다. 쿠키라는 단어의 어원은 1994년 넷스케이프 한 개발자가 유닉스 프로그래머들이 프로그램 수신 후 변경하지 않고 반환하는 데이터의 패킷을 '매직 쿠키'라고 부르는 것에서 유래했습니다 2. 🍪 쿠키가 저장하는 것들 이 작은 데이터 파일에 어떤걸 저장..
· CS
📖 로드밸런싱 1️⃣ 로드밸런싱은 무엇이고 왜 필요 할까? 데이터가 방대해지면서 아무리 좋은 서버라고 해도 이를 수용하는데 있어 무리가 있습니다. 그에 따라 규모가 큰 서비스를 제공하는 회사의 경우 여러 대의 서버를 두고 동일한 데이터를 저장하여 수많은 트래픽을 효과적으로 분산합니다. 수 많은 트래픽을 여러 대의 서버로 분산해줄 수 있는 기술이 없다면 트래픽은 결국 한대의 서버로 집중 될 것입니다. 그렇게 된다면 서비스 속도가 엄청나게 느려질 것이고 최악의 경우 서버가 마비되어 서비스 자체를 제공할 수 없게 될 것입니다. 이러한 경우에 대비하여 여러 대의 서버로 트래픽을 분산 시켜줄 무엇인가가 필요한데 이 기술이 바로 로드 밸런싱입니다. 이렇게 로드 밸런서를 사용하면 수백만명 의 사용자를 동시에 처리하고..
개발자성장기
'분류 전체보기' 카테고리의 글 목록 (2 Page)