인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
디자인 패턴/OOP

💠 완벽하게 이해하는 SRP (단일 책임 원칙)

단일 책임 원칙 - SRP (Single Responsibility Principle) 단일 책임 원칙(SRP)는 객체는 단 하나의 책임만 가져야 한다는 원칙을 말한다. 여기서 '책임' 이라는 의미는 하나의 '기능 담당'으로 보면 된다. 즉, 하나의 클래스는 하나의 기능 담당하여 하나의 책임을 수행하는데 집중되어야 있어야 한다는 의미이다. 실생활의 물체로 SRP 원칙을 이해하려고 해보면, 아래 그림과 같이 가위, 커터칼, 드라이버를 따로따로 사용하느냐, 하나의 다용도 공구로 합쳐 다재다능하게 사용하느냐에 따른 차이로 볼 수 있다. 어찌보면 다용도 공구가 공간의 절약도 있을테고 사용하기 좋을것 같지만, 사용이 아닌 코드를 설계하는 입장에서는 이는 단일 책임 원칙을 위반하는 모습이 되어 마이너스 적인 요소로..

category_image
인파_
2022.11.07
(0)
Mark Up/HTML

🏷️ 메타(meta) 태그 종류 & 사용법

​메타태그(meta tag) 란 하이퍼텍스트(Hyper text) 생성 언어 HTML 문서의 맨 위쪽에 위치하는 태그(tag)로 HEAD 태그 사이 또는 뒤에 있어도 되지만 반드시 BODY 태그 앞쪽에 위치해야 한다. 브라우저와 검색 엔진을 사용할 수 있도록 웹 문서의 정보를 포함하고 있다.​ 메타태그(meta tag)는 웹페이지(Web page)의 요약이므로 상당히 중요하다고 할 수 있다. 메타태그 속성에는 http-equiv, name, content 3가지 속성이 있다. http-equiv ="항목명" ​ - 웹 브라우저 서버에 명령을 내리는 속성 - name 속성을 대신해 사용할수 있음 - html 문서가 응답 헤더와 함께 웹 서보로 부터 웹 브라우저에 전송되었을때만 의미를 가짐 - content..

category_image
인파_
2022.11.04
(0)
디자인 패턴/GOF

💠 싱글톤(Singleton) 패턴 - 꼼꼼하게 알아보자

Singleton Pattern 싱글톤 패턴은 디자인 패턴들 중에서 가장 개념적으로 간단한 패턴이다. 하지만 간단한 만큼 이 패턴에 대해 코드만 던져주고 끝내버리는 경우가 있어, 어디에 쓰이는지 어떠한 문제가 있는지 제대로 알지 못하고 얼렁뚱땅 넘어가버리는 것이 많아 보인다. 이번 시간에는 기술면접의 단골 질문이면서 간단하지만 결코 간단하지 않은 디자인 패턴의 싱글톤 패턴에 대해 꼼꼼하게 알아가 보는 시간을 가져보자. 싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말한다. 우리가 전역 변수라는 걸 만들어 이용하는 이유는, 똑같은 데이터를 메서드마다 ..

category_image
인파_
2022.11.04
(0)
Amazon Cloud/EFS

[AWS] 📚 S3 / EBS / EFS 스토리지 서비스 비교

S3 vs EBS vs EFS 스토리지 비교 EBS, EFS, S3 모두 데이터를 저장하는 파일 저장 공간 서비스임에는 같다. 하지만 각각 서비스 특징과 성능에 따라 사용 용도를 분별할 필요가 있다. 데이터 시점에서 보면 EBS는 볼륨 기반이며, S3는 객체 기반, 그리고 EFS는 파일 기반 저장 서비스이다. 이 세가지 파일 저장 스토리지의 특징을 살펴보는 시간을 간단히 가져보자. EFS (Elastic File Storgae) AWS 클라우드 서비스와 온프레미스 리소스에서 사용할 수 있는 간단하고 확장 가능하며 탄력적인 완전 관리형 탄력적 NFS 파일 시스템 NFSv4(Network File System) 프로토콜 사용 VPC 내 EC2 인스턴스는 직접 액세스 할 수 있음 On-premise 서버는 D..

category_image
인파_
2022.11.03
(0)
Language/Java

☕ 자바 split / StringTokenizer - 문자열 자르기 비교

자바 문자열 자르기 자바에서 문자열을 자르는데 사용하는 대표적인 클래스가 String 클래스의 split 메서드와 StringTokenizer 클래스가 있다. 이번 시간에는 이 둘의 사용 문법을 알아보고, 둘이 어떠한 차이점이 있는지, 어떨때 어느 것을 사용해야 하는지 알아보자. String 클래스의 split 메서드 String 클래스에서 제공되는 split 메서드는 매개변수 갯수가 다른 2개로 오버로딩 되어 있다. 자바의 split 메서드의 가장 큰 특징은 구분자를 문자로 받는게 아니라 정규식으로 받는다는 점이다. 정규식이 난이도가 있는 부분이긴 하지만 덕분에 다채롭고 섭세하게 문자열을 자를 수 있다는 특징이 있다. public String[] split(String regex); // 반환을 Str..

category_image
인파_
2022.11.03
(0)
Language/Java

☕ 자바 String / StringBuffer / StringBuilder 차이점 & 성능 비교

자바에서는 대표적으로 문자열을 다루는 자료형 클래스로 String, StringBuffer, StringBuilder 라는 3가지 자료형을 지원한다. 위 3가지 클래스 자료형은 모두 문자열을 다루는데 있어 공통적으로 사용되지만, 사용 목적에 따라 쓰임새가 많이 달라지게 된다. 이번 시간에는 String, StringBuffer, StringBuilder 클래스 차이점을 알아보고, 이 3가지 중 어느 상황에서 어느 자료형을 사용하는 것이 이상적이고 성능적으로는 어느것이 더 좋은지 총정리 해보는 시간을 가져보자. StringBuffer / StringBuilder 클래스 StringBuffer / StringBuilder 클래스는 문자열을 연산(추가하거나 변경) 할 때 주로 사용하는 자료형이다. 물론 Str..

category_image
인파_
2022.11.02
(0)
Language/Java

☕ 자바 String 타입 특징 이해하기 (String Pool & 문자열 비교)

여타 대부분의 프로그래밍 언어에서 문자열 이라는 데이터를 저장하기 위해 string 이라는 데이터 타입을 사용한다. 이 string 데이터를 다루는데 있어 특별히 유의해야 할점은 없어보이지만, 자바에서의 string은 특별한 자료형으로 취급되어 여러 유의해야 할 사항들이 존재한다. 단순히 문자열을 다루는 것이지만 이를 어떻게 다루느냐에 따라 어플리케이션의 성능이 차이가 있을 수 있기 때문이다. 이 포스팅에서는 초보부터 중고급까지 짚어야 할 것들을 추려서 간단하게 소개 해볼 예정이다. 자바 String의 특징 String은 객체 자바(Java) 프로그래밍에서 String 은 int 와 char 와 달리 기본형(primitive type)이 아닌 참조형(reference type) 변수로 분류 된다. 즉, ..

category_image
인파_
2022.11.01
(0)
Language/Java (JVM)

☕ 클래스는 언제 메모리에 로딩 & 초기화 되는가 ❓

JVM의 클래스 로더 (Class Loader) 자바의 클래스들이 언제 어디서 메모리에 올라가고 클래스 멤버들이 초기화되는지, 원리를 알기위해선 우선 JVM(자바 가상 머신)의 클래스 로더(Class Loader)의 진행 방식에 대해 알 필요가 있다. 특히나 다음과 같이 내부(중첩) 클래스 중에 static 키워드가 붙고 안붙고의 유무에 따른 메모리 로드 차이와 쓰레드에 세이프하다는 등, 이러한 부분은 꽤나 고수준의 지식이기 때문에 글 로만 훑어보고 넘어가기 다반사라 이를 이해하기 위해선 클래스 로더 부터 살펴볼 필요가 있다. class Outer { class Inner { } static class Holder { } } 클래스 로더는 컴파일 된 자바의 클래스 파일(*.class)을 동적으로 로드하고..

category_image
인파_
2022.10.31
(0)
Language/Java (JVM)

☕ 내부 클래스는 static 으로 선언 안하면 큰일 난다

Inner 클래스의 문제점 인텔리제이와 같은 IDE에서 내부 클래스를 선언하여 사용하면 다음과 같이 경고 메세지가 뜰 것이다. (내부 클래스가 외부의 멤버를 참조하여 사용하지 않을 경우) 메세지 내용을 보아하니 내부 클래스를 인스턴스가 아닌 static으로 설정하라는 경고이다. 별거 아닌 경고인줄 알고 무시하기에는, inner 클래스가 가지는 심각한 문제를 보면 마음이 바뀔 것이다. 왜냐하면 inner 클래스는 inner static 클래스보다 메모리를 더 먹고, 더 느리고, 바깥 클래스가 GC 대상에서 빠져 버려 메모리 관리가 안될 수 있기 때문이다. Inner 클래스는 외부 참조를 한다 일반적으로 내부 인스턴스 클래스를 만들기 위해서는 먼저 외부 클래스를 초기화한뒤 내부 클래스를 초기화해야 한다. 이..

category_image
인파_
2022.10.28
(0)
Language/Java

☕ 익명 클래스(Anonymous Class) 사용법 총정리

익명 클래스 (Anonymous Class) 익명 클래스는 내부 클래스(Inner class) 일종으로 단어 그대로 이름이 없는 클래스를 말한다. 익명, 이름이 없다는 것은 별로 기억되지 않아도 된다는 것이며, 나중에 다시 불러질 이유가 없다는 뜻을 내포한다. 즉, 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체라고 보면 된다. (일회용 클래스) 보통 어느 클래스의 자원을 상속 받아 재정의하여 사용하기 위해서는 먼저 자식이 될 클래스를 만들고 상속(extends) 후에 객체 인스턴스 초기화를 통해 가능하다. // 부모 클래스 class Animal { public String bark() { return "동물이 웁니다"; } } // 자식 클래스 class Dog extends Animal { @..

category_image
인파_
2022.10.27
(0)
Language/Java

☕ 내부 클래스(Inner Class) 장점 & 종류 총정리

내부 클래스 (Inner Class) 내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다. 보통 사용자 클래스 자료형이 필요하면, 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용해 왔다. 내부 클래스는 대신 클래스 내에 선언되어 사용되며, 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다. 이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이라고 보면 된다. 내부(in..

category_image
인파_
2022.10.26
(0)
Language/Java

☕ JAVA 업캐스팅 & 다운캐스팅 - 완벽 이해하기

자바의 참조형 캐스팅 하나의 데이터 타입을 다른 타입으로 바꾸는 것을 타입 변환 혹은 형변환(캐스팅) 이라고 한다. 자바의 데이터형을 알아보면 크게 두가지로 나뉘게 된다. 기본형(primitive type) - Boolean Type(boolean) - Numeric Type(short, int, long, float, double, char) 참조형(reference type) - Class Type - Interface Type - Array Type - Enum Type - 그 외 다른 것들 기본형(primitive) 이든 참조형(referece) 이든 하나의 타입이다. 이는 즉, 서로 타입간의 형변환(casting)이 가능하다는 말이다. 기본적으로 자바에선 대입 연산자 = 에서 변수 와 값 서로 ..

category_image
인파_
2022.10.25
(0)