728x90
반응형

전체 글 131

[Java] 메모리 관리 - 스택, 힙, Garbage Collection

Stack 영역 Heap 영역에 생성된 객체 타입의 데이터들에 대한 참조를 위한 값들이 할당됩니다. 원시타입(Primitive Types) - byte, short, int, long, double, float, boolean, char 타입의 데이터들이 할당됩니다. 원시 타입은 참조값이 저장되는 것이 아니라 실제 값이 저장됩니다. 스택에 있는 변수들은 visibility를 가집니다. 변수 Scope에 대한 개념입니다. 지역변수는 함수 내에 있을 때 Stack 영역에 저장 된 후 함수가 종료되는 시점에 Stack에 저장된 모든 변수들이 pop되어 사라집니다. 각 쓰레드는 자신만의 Stack을 가집니다. Stack 예시 원시 타입 지역변수 저장 public class Main { public static ..

JAVA 2022.07.21

[Java] 제네릭 타입

제네릭 타입 어느 특정 데이터 형식에 의존하지 않고, 하나의 값이 여러 데이터 타입들을 가질 수 있도록 하는 방법 ex) ArrayList => ArrayList 객체명 new ArrayList(); 제네릭 타입은 불공변 제네릭 타입은 하위 객체가 상위 객체의 하위 타입이더라도 호환이 되지 않습니다. 아래와 같이 사용하면 컴파일 오류가 납니다. 이를 불공변 하다고 합니다. ArrayList objectList = new ArrayList(); 제네릭 타입이 불공변하기 때문에 컴파일 타임에서 타입 안전성을 보장해줄 수 있습니다. 제네릭 타입을 사용했을 때 좋은 점 잘못된 타입이 들어왔을 때 컴파일 단계에서 오류를 확인 할 수 있습니다. 제일 좋은 오류는 컴파일 단계에서 알 수 있는 오류이기 때문에 제네릭 ..

JAVA 2022.07.20

[OS] Terminal Usage (2) _ Terminal 명령어

Terminal Usage : 터미널 사용방법 현재 디렉터리 표시 pwd 디렉터리 이동 cd 현재 사용자 확인 whoami 디렉터리 정보 확인 ls [흰색은 파일, 하늘색은 디렉터리] 디렉터리만 출력 ls -d */ 디렉터리의 더 자세한 정보 확인 ls -l [파일의 권한, 소유자, 그룹, 파일크기, 수정일 정보 출력] 가장 최근에 수정된 파일로 정렬 ls -t 가장 사이즈가 큰 파일로 정렬 ls -s 디렉터리 순서를 거꾸로 출력 ls -r 현재 디렉터리 아래의 내용 모두 확인 ls -R 디렉터리 생성 mkdir [디렉터리 이름] 디렉터리 경로 지정 생성 mkdir -p [경로] *경로에 디렉터리가 없다면 자동으로 생성* -p 옵션 디렉터리 삭제 rmdir 경로 [거의 사용하지 않음] -> rm -rf ..

Backend/OS 2022.07.19

[OS] Terminal Usage (1) _ CLI, Terminal, Shell

CLI (Command-line Interface) : 커맨드라인 인터페이스 사용자가 텍스트로 명령어를 입력하면 결과를 텍스트로 화면에 출력해주는 컴퓨팅 인터페이스를 말합니다. 구체적인 프로그램을 가리키는 단어는 아니며, 특정 방식의 애플리케이션 인터페이스에 대한 통칭입니다. MS-DOS나 리눅스 초기의 컴퓨팅 환경은 텍스트 기반의 CLI가 유일한 사용자 인터페이스였습니다. 현재는 GUI(Graphical User Interface)가 더 보펴적으로 사용되고 있습니다. 하지만 개발 환경이나 서버 관리 용도로는 여전히 CLI가 많이 사용되고 있습니다. 그렇기 때문에 서버 개발자가 되기 위해서는 CLI를 이해하고 다룰 줄 알아야한다고 생각합니다. CLI의 장점은 프로세스간 입출력 전달이나 자동화에 최적화가 ..

Backend/OS 2022.07.19

[Spring Boot] Todo 서비스 구현 (3)

투두를 완료했을 때 다르게 표시하기 위해서 투두의 상태를 추가하였습니다. [TodoStatus.java] package hooyn.todo.domain; public enum TodoStatus { NOT_COMPLETE, ING, COMPLETE } [Todo.java] //필드 추가 //데이터베이스에 저장될 때 String으로 저장되게 하기 위해서 EnumType.String으로 설정하였습니다. @Enumerated(EnumType.STRING) private TodoStatus status; //생성 메서드에서 status NOT_COMPLETE 상태로 설정하였습니다. @Builder private Todo(String title, String content, Deadline deadline){ t..

Project/Todo 2022.07.18

[Spring Boot] Todo 서비스 구현 (1)

프로젝트 구성 도메인을 생성할 때 클래스는 한가지 기능만을 하도록 하는 SRP를 지켰고, 관심사를 분리하여 DIP를 지키기 위해 생각을 하며 코딩했습니다. SRP, DIP에 대한 자세한 설명 [Spring] 객체 지향 설계의 다섯 가지 기본 원칙 - SOLID SOLID 다섯 가지 설계 원칙 단일 책임 원칙(SRP: Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 책임 영역이 확실해지고, 한 클래스의 변경이 다른 클래스의 영향을 미치지 않습 lakelight.tistory.com [Todo.java] package hooyn.todo.domain; import lombok.AccessLevel; import lombok.Getter; import lom..

Project/Todo 2022.07.17

[Internet] What is hosting?

호스팅이 필요한 이유 웹은 클라이언트와 서버가 상호작용하면서 동작합니다. 사용자가 웹 페이지에서 동작을 하면 클라이언트가 서버에게 동작에 대한 요청을 보냅니다. 이 때 서버는 데이터베이스에서 데이터를 찾아 클라이언트가 요청한 데이터를 클라이언트에게 보내주고 클라이언트는 그 데이터를 사용자에게 보여주는 기능을 합니다. 이렇듯 웹을 운영하기 위해서는 자료를 저장해주고 요청에 따른 데이터를 클라이언트에 전달하는 서버가 꼭 필요합니다. 호스팅 서버의 전체 혹은 일부를 이용할 수 있도록 임대해 주는 서비스를 의미합니다. 서버를 관리하기 위해서 24시간 내내 안정적으로 전기를 공급해야하고 안정적인 인터넷 회선을 사용해야하고, 철저한 보안 시스템을 갖추고 있어야 합니다. 따라서 개인이 서버를 관리하기보다 전문 업체의..

Backend/Internet 2022.07.17

[Internet] Browsers and how they work?

브라우저 사용자가 인터넷을 사용할 수 있도록 인터넷 연결을 돕는 프로그램입니다. 브라우저 종류 파이어폭스 모질라에서 만든 브라우저입니다. 보안도 좋고, 신뢰도도 높습니다. 크롬 구글에서 만든 브라우저입니다. 웹 브라우저 중에서 제일 많이 사용되는 브라우저입니다. 마이크로소프트 엣지 마이크로소프트에서 만든 브라우저입니다. 인터넷 익스플로러라는 브라우저가 엣지로 발전하였습니다. 브라우저 주요 기능 사용자가 선택한 자원을 서버에 요청하고 서버에게 받은 데이터를 브라우저에 표시합니다. 자원은 보통 HTML 문서이지만 PDF나 이미지 또는 다른 형태일 수도 있습니다. 자원의 주소는 URL(Uniform Resource Identifier)에 의해 정해진다. 브라우저의 기본 구조 사용자 인터페이스 주소 표시줄, 버..

Backend/Internet 2022.07.16

[Refactoring] 관심사 분리를 통한 DIP 지키기

원래 코드 [기존 Member Service 코드 1] [Spring Boot] Member 서비스 구현 (1) domain/Member.java package hooyn.todo.domain; import lombok.*; import org.hibernate.annotations.GenericGenerator; import org.springframework.security.crypto.password.PasswordEncoder; import javax.pe.. lakelight.tistory.com [기존 Member Service 코드 2] 저장 이렇게 오버라이딩 해서 구현을 할 수 있습니다. */ public UUID save(Member member){ em.persist(member); r..

Project/Todo 2022.07.15
728x90
반응형