ASAC 웹 풀스택

빌더 패턴은 3가지로 분리되어 호출빌더 정의 -> 필드설정 -> 객체 생성 1. 빌더 정의Member.MemberBuilder builder = Member.builder() 2. 필드 설정builder .name("Aaron") .email("aaron@example.com") 3. 객체 생성Member aaron = builder.build(); 흔히 사용하는 빌드 패턴은 아래와 같이 빌드 정의 + 필드 설정 + 객체 생성이 모두 합쳐진 상태Member aaron = Member.builder(); .email("aaron@example.com") .name("Aaron") .build();  생성자가 아닌 빌더를 통해 객체를 생성하는 이유내가 ..
생성자필요한 형태의 객체에 따라 생성자 만들어서 사용 가능, 객체는 아래 3가지 방법으로 생성할 수 있다.@NoArgsConstructor + + @SetterCustom Constructor@AllArgsConstructor 1. @NoArgsConstructor + @Setter먼저 빈 객체를 생성한 뒤, 필요에 따라 원하는 필드값을 주입하는 방식빈 생성자(@NoArgsConstructor) + 수정자(@Setter) 통한 필드 주입    2. Custom Constructor1. 필요한 필드값만 주입 받는 생성자부분 생성자(@RequiredArgsconstructor) + 수정자(@Setter) 통한 필드 주입   2. DTO (데이터 전달용 객체)를 통한 생성자DTO(Data Transfer Ob..
객체 지향 프로그래밍(Object-Oriented Programming, OOP)객체지향 프로그래밍은 아래 4가지 핵심 개념을 통해 지원캡슐화상속추상황다형성위 4개 핵심 개념은 아래와 같이 분류 가능Class: 캡슐화 + 상속캡슐화(Encapsulation)상속(Inheritance): ExtendsInterface: 추상황 + 다형성추상화(Abstraction): Interface and Abstract Class다형성(Polymolphism): Class의 다형성 + Interface의 다형성Class: 캡슐화 + 상속클래스 = 데이터 + 행위데이터: 필드(Field) 혹은 속성(Attribute)Primitive Type: 값을 담는 그릇, 값이 필수임, 값을 지정하지 않으면 기본값이 들어간다.in..
JVM 구성아래 3가지만 기억Class Loader(로더): 실행을 위한 Bytecode(.class)를 가져온다.Runtime Data Area(메모리): 바이트 코드를 메모리에 얹고Execution Engine(엔진): 구동한다.(바이트코드 -> 기계어)1. Class Loaderjavac(컴파일러)를 통해 컴파일된 바이트코드는 Class Loader가 아래 Runtime Data Area에 적재컴파일 후 생성되는 바이트코드가 엄청 많은데 이걸 메모리에 한번에 올려서 구동하면 메모리 과부화... 그래서 class Loader가 필요한 클래스만 꺼내서 메모리에 올려준다.동적 로딩(Dynamic Loading): 필요한 바이트코드만을 Runtime Data Area(메모리)에 적재3가지 절차를 수행: L..
컴파일 에러와 런타임 에러 (Checked / Unchecked Exception)java는 에러를 자바 프로그램 입장에서의 에러 발생 근원 (source)에 따라 2가지로 구분해 놓음자바 프로그램 "외부" 에서 발생하는 것: (Need to be) Checked Exception충분히 예상 가능한 에러이기에, 복구가 필요한 예외(예외 처리 강제) + 제어할 수 있다.자바 프로그램 "내부 로직" 에서 발생하는 것: Unchecked Exception어떤 상황에서 발생되는지 예측할 수 없어, 어떻게 복구해야할지 전혀 알 수 없다.그래서 로그를 잘 남겨야한다. 그게 Unchecked Exception 처리의 가장 근본, 원칙에러 처리: Try -> Throw -> Catch자바 언어에서는 Try -> Thr..
spring 프로젝트 생성 (Intellij, Gradle)java 17gradle3.3.0의존성 추가Spring Web: 가장 기본적으로 Spring MVC기반의 REST API 혹은 웹 페이지 반환을 위한 Tomcat서버Lombok: 불필요한 java 코드 작성을 최소화하기 위한 어노테이션 기반 코드 자동 생성기Thymeleaf: Spring에서 웹 페이지를 만들어 클라이언트에게 서빙하려 사용하는 서버사이드 템플릿 엔진 JDK(Java Development Kit) 설치 : 모든 개발 및 실행의 근간인 JDK JDK 버전은 상관없는데, 실습에서 사용하고자 하는 language level 이 17이면 된다.Gradle구동을 위한 자바 JDK 자바 버전을 동일하게 설정Intellij에는 2개의 자바 어플..
우리가 Java코드를 작성하면 그것이 어떻게 우리가 사용하는 웹 서버(혹은 프로그램)가 되는걸까?먼저 프로그램이 동작하는 기본 원리를 집자면, 기계어가 머신에서 (해석되어) 실행되는 것이다.컴파일(complie)과정java코드(.java) -> (자바 컴파일러(javac)를 통해) ->  bytecode(.class).java를 컴파일해서 .class로 만들고 .class파일을 jar압축한다. c언어로 보는 컴파일 과정런타임(Runtime) 과정bytecodes(.class) -> (자바엔진(JVM)을 통해) -> 기계어(binary code)Interpreter 인터프리터 = 자바 엔진(JVM)JVM은 JVM을 사용하고 있는 os, cpu에 따라서 바이너리 코드를 만든다. Interllj가 알려주는 컴..
immer: 불변성 객체로 인한 리렌더링 이슈 해결 객체 State 업데이트하기 – ReactThe library for web and native user interfacesko.react.dev 패스워트 컴포넌트 내 useRef 통한 input 태그 타입 변경을 렌더링 없이 적용 한 후 유효성 검증 상태들을 객체로 단일화 하였더니 아래와 같은 문제 발생import { useRef, useState } from 'react'import '@/App.css'function UsernameInput() { return ( Username : )}function PasswordInput() { const [valid, setValid] = useState({ maximum..
Ref: 외부변수 -> 비제어 컴포넌트비제어 컴포넌트: 리액트가 인지하지 못한 변수이기에 Ref 내부 값이 변경 시 리렌더링 X 리액트 리렌더링을 발생시키지 않고 변경 가능한 값을 담는 참조(reference) 생성Ref(외부 변수)를 리액트가 인지할 수 없기에 Ref값의 변동과 리렌더링은 전혀 상관이 없다.라는 의미에서 Ref를 통해 값을 관리하는 컴포넌트를 비제어 컴포넌트라고 부른다.Reference(useRef로 생성한)를 HTML 요소에 연결Reference(useRef로 생성한)는 값을 저장하는 용도로도 사용될 수 있지만 Reference는 기본적으로 리액트에서 DOM 조작을 위해 사용`reference.current` 출력: DOM`document.getElementById` 출력 = DOMf..
hapBday
'ASAC 웹 풀스택' 카테고리의 글 목록 (4 Page)