스레드란 ? 컴퓨터 세계에서 동시에 여러가지 일을 병행해서 하는 멀티태스킹은 프로세스 기반과 스레드 기반 두 가지 유형으로 나뉜다.프로세스 기반의 멀티 태스킹은 미디어 프로그램 , 인터넷 브라우저, 메신저 프로그램 등을 동시에 실행하는 작업이고 프로세스 기반의 멀티태스킹에서는 병행처리 단위가 프로세스 이다.스레드 기반의 멀티 태스킹은 하나의 프로세스 내에서 여러 작업을 병행하는 것이고 워드 사용시 문서 편집과 동시에 프린트 작업을 할 수 있는데 하나의 프로그램 내에서 동시에 실행되는 작업 단위는 스레드라고 한다. 프로세스 기반 프로세스가 생성될 때마다 새로운 메모리 영역을 할당받고 프로세스 실행에 필요한 시스템 자원 또한 새롭게 할당 받음 스레드 기반 하나의 프로그램 내에서 병행되기 때문에 프로세스에서 ..
MVC? MVC(Model - View - Controller)는 소프트웨어 공학에서 사용되는 디자인패턴이고, 스프링에서도 이를 웹 모듈로 지원한다. Model 모델은 애플리케이션의 정보나 데이터 등 뷰가 필요한 데이터를 담는다. View 뷰는 사용자에게 보여지는 화면을 모델의 데이터를 사용해 렌더링한다. Controller 컨트롤러는 요청을 위임해서 비즈니스 로직과 데이터를 모델에 담아 뷰로 넘겨준다. 뷰와 모델은 서로는 모르지만 양쪽을 둘다 아는 컨트롤러는 통해 소통하며, 데이터와 비즈니스 로직 사이의 동작을 관리하고, View 와 Model은 서로 직접 소통이 아닌 Controller를 통해 소통한다. Spring Web MVC 구조 DispatcherServlet? Client에서 WAS를 통해 ..
프로젝트를 진행하며 자바와 외부 API의 소통을 하려면 자바에서 사용하는 객체를 전송하는게 아닌 API서버에서 원하는 정보를 보내줘야한다. 그러면 객체를 자바 외부로 전송하려면 어떻게 해야할까? Java I/O처리는 정수, 문자열, 바이트 단위의 처리만 지원하기 때문에 복잡한 객체의 내용을 네트워크 상으로 전송하기 위해서는 변환처리가 필요한데(Object - > byte) 이를 직렬화라고 한다. 역직렬화는 변환된 바이트 형태를 다시 객체로 변환 시키는 것이다. 시스템 적으로 본다면 JVM의 힙, 스택 메모리에 있는 클래스 인스턴스를 바이트 형태로 변환하는 것이 직렬화이고, 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM에 올리는 것을 역직렬화라고 한다. 자바 직렬화의 조건 Primitive 타입이..
자바를 사용하면 메모리 해제를 가비지 컬렉터가 해준다고 알고 있긴하지만 정확히 언제, 어떻게 되는지에 대해서까지 알지는 못했다. 힙에 올라간 인스턴스를 해제하는 거긴할텐데... 어떻게 안쓰는지 확인하고 해제되는지 알아보도록 하자. Garbage 판단 GC는 객체를 유효한 참조가 존재하면 Reachable, 참조가 없다면 Unreachable로 구분한다. 이 상태는 Root Set(Stack, Method, Native Stack)과 참조 관계로 판단한다. 방금 설명한 Root Set과 Reachable 유무로 Garbage Collector의 작동원리를 설명하면 1. Root Set으로부터 Heap 영역으로의 참조가 있는 Reachable 객체를 찾는다 > Mark 2. UnReachable객체를 Hea..
공부한 내용 정리한 포스팅입니다. 틀린내용 피드백 언제든 부탁드립니다. 리플렉션 API? 요약하자면 1. 실행중인 자바 프로그램이 자체적으로 검사하거나 프로그램 내부의 속성을 조작할 수 있기 해주는 API 2. 리플렉션을 사용하면 동적으로 로드되는 Class의 속성을 가져와서 사용한다. 3. 다른 언어에 없는 기능이다. Class Class 1. Class의 인스턴스는 실행중인 Java 애플리케이션의 클래스 및 인터페이스를 나타낸다. 2. 생성자는 없지만 클래스가 로드되고 define Class Loade의 메소드 호출에 따라 JVM에 의해 자동으로 생성된다. 런타임에서 활용할수 있는 방법은 세가지다. 1. 클래스.class 2. Class.forname(className, true, currentLoa..
새롭게 생각난 약간의 아이디어와 백엔드 기초를 버무려 보려고 프로젝트를 시작하기전에 프로젝트 명세서를 작성합니다. 1. 프로젝트 주제 인터넷의 익명성이 주는 단점 중에 하나는 남이 쓴 부정적인 글에 상처를 받을 수 있다는 점이라고 생각했고, 기본적인 CRUD 기능을 가진 커뮤니티에 댓글 작성 시 글의 내용을 네이버 감정분석 API를 이용해 긍정, 중립, 부정 태그를 매겨 사용자가 원하는 감정범위의 댓글을 볼 수 있는 댓글감정 필터링 서비스를 추가해 구현한다. 2. 개요 프로젝트명 : Emotion Community 개발 인원 : 1명 개발 기간 : 2022.12.26 ~ 2023.1.27, 추가적으로 리팩터링 진행 예정 주요 기능 : 게시판 - CRUD, 페이징 처리, 검색 사용자 - 회원가입, 로그인,..