Java 8 μ΄νλ‘ interfaceμ λν μ μκ° λͺκ°μ§ λ³κ²½λμλ€. μν© μ΄λ―Έ λ§λ€μ΄μ Έ μλ Interface μ κΈ°λ₯μ μΆκ° νκ³ μΆλ€. νμ§λ§ μ΄ Interfaceλ₯Ό implemnets λ°κ³ μλ class λͺ¨λκ° μ΄ κΈ°λ₯μ ꡬν체λ₯Ό μμ±ν΄μΌλ§ νλ€. default λ©μλ μΈν°νμ΄μ€κ° default ν€μλλ‘ μ μΈλλ©΄ λ©μλλ₯Ό ꡬνν μ μκ² λλ€. -> ꡬν체λ€μ μ€λ²λΌμ΄λ©μ΄ κ°λ₯νλ€. package com.example.demo; public interface UserService { String getName(Long userId); int getAge(Long userId); /** * @implSpec μ΄ κ΅¬ν체λ μ£Όμλ₯Ό λ°ννλ€. * @param userId * @return */ // ..
μ 체 κΈ
πβοΈ κ³μν΄μ μ
λ°μ΄νΈ νκΈ° πβοΈ 1. 곡μλ¬Έμ 2. μ μ¬μ©ν κΉ? 3. λμλ°©μ 4. μμ‘΄μ± 5. Mapper Inteface μμ± 6. Mapper ꡬν체 μ΄ν΄λ³΄κΈ° 곡μλ¬Έμ https://mapstruct.org/documentation/stable/reference/pdf/mapstruct-reference-guide.pdf MapStruct μ μ¬μ©ν κΉ? λ³΄ν΅ DBμμ λ°μ΄ν°λ₯Ό μ‘°ννκ³ μλΉμ€λ¨μμ λ‘μ§μ μ€κ³ νκΈ° μν΄ Entity -> Dto , Dto -> Entity μμ
μ νκ² λλλ° μ΄λ¬ν Mapping μμ
μ ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬κ° λ§μ΄ μ‘΄μ¬νλ€ κ·Έμ€ μλμ λ§ν¬λ₯Ό νμΈν΄λ³΄λ©΄ MapStruct νΌν¬λ¨Όμ€κ° λΉ λ₯Έ κ²μ νμΈν μ μλ€. https://www.baeldung.com/j..
πβοΈ κ³μν΄μ μ
λ°μ΄νΈ νκΈ° πβοΈ λ§μ§λ§ μ
λ°μ΄νΈ 2022/03/29 1. Querydsl μ μ μ¬μ©ν κΉ? 2. μλλ°©μ? 3. μμ‘΄μ± 4. Repository ꡬ쑰 5. Projection μ λν κ³ μ°° ... 6. λμ 쿼리 (BooleanBuilder) 7. ExpressionUtils 8. μ λ ¬ νμ
μ λ°λ₯Έ μ λ ¬ μ²λ¦¬ Querydsl μ μ μ¬μ©ν κΉ? JPA λ₯Ό μ¬μ©νλ©΄μ (@Query ν¬ν¨) μ‘°ν κΈ°λ₯μ λν νκ³κ° μλ€. λμ μΈ μΏΌλ¦¬μΈ κ²½μ°μΈλ° μλ₯Ό λ€μ΄ μ£Όλ¬Έ νμ΄μ§λ₯Ό κ²μ νλ€κ³ νμ λ μΉ΄ν
κ³ λ¦¬ or μνλͺ
or κΈ°μ
λͺ
λ±λ±... μΌλ‘ κ²μ μ‘°κ±΄μ΄ λ¬λΌμ§λ λΆλΆμ΄λ€. κ·Έλμ μ¬μ©νκ² λ κ²μ΄ λ°λ‘ Querydsl νλ μμν¬ μ΄λ€. - νμ
체ν¬κ° λ°λ‘ κ°λ₯νλ€ - μλ° μ½λλ₯Ό κΈ°λ°μΌ..
μ»΄νμΌκ³Όμ μμ μμ±ν΄ μ£Όλ λ°©μμΌλ‘ λμνλ javaλΌμ΄λΈλ¬λ¦¬μ
λλ€. @Value κΈ°λ³Έμ μΌλ‘ λΆλ³κ°μ²΄λ‘ λ§λ€μ΄μ€λ€. classμ μ μΈνλ©΄ μλμ μ΄λ
Έν
μ΄μ
μ΄ κΈ°λ³Έμ μΌλ‘ ν¬ν¨λλ€. @Getter @AllArgsConstructor @ToString @EqualsAndHashCode @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) νμ§λ§ @Setter λ ν¬ν¨λμ§ μλλ€. μλνλ©΄ κΈ°λ³Έμ μΌλ‘ λΆλ³μ±μ 보μ₯νκΈ° λλ¬Έμ setterλ₯Ό μλ΅νλ κ²μ λΉμ°νλ€ @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) λ privateμ΄λ final μ μ¬μ©ν μ μκ² ν΄μ€λ€. μ΅μ’
μ μΌλ‘ @Value ..
HTTP / HTTPS - HTTP : μλ‘ λ€λ₯Έ μμ€ν
λ€ μ¬μ΄μμ ν΅μ μ μ£Όκ³ λ°κ² νλ κ°μ₯ κΈ°λ³Έμ μΈ νλ‘ν μ½(μλ²μμ λΈλΌμ°μ λ‘ λ°μ΄ν°λ₯Ό μ μ‘νλ μ©λλ‘ κ°μ₯ λ§μ΄ μ¬μ©ν¨) λ¬Έμ μ - μλ²μμ λΈλΌμ°μ λ‘ μ μ‘λλ μ λ³΄κ° μνΈνλμ§ μλλ€. - HTTPS : SSL(보μ μμΌ κ³μΈ΅) μ¬μ©, μλ²μ λΈλΌμ°μ μ¬μ΄μ μμ νκ² μνΈνλ μ°κ²°μ λ§λ€ μ μκ² λμμ€λ€. μλ²μ λΈλΌμ°μ κ° λ―Όκ°ν μ 보λ₯Ό μ£Όκ³ λ°μ λ ν΄λΉ μ λ³΄κ° λλλΉνλ κ²μ λ§μμ€. HTTP μ체λ₯Ό μνΈννλ κ²μ΄ μλ HTTP Message Bodyλ₯Ό μνΈννλ€. (μ¦, Headerλ μνΈνλμ§ μλλ€) HTTPS μ¬μ©ν΄μΌνλ μ΄μ 1. μ€κ°μ λ°μ΄ν°λ₯Ό κ°λ‘μ±λ μνΈνλμ΄ μκΈ° λλ¬Έμ μμ νλ€. 2. ꡬκΈμ HTTPS μΉ μ¬μ΄νΈμ κ°μ°μ μ ..
μ€λ λνμ μμ
μ²λ¦¬μ μ¬μ©λλ μ€λ λλ₯Ό μ νλ κ°μλ§νΌ μ ν΄ λκ³ μμ
νμ λ€μ΄μ€λ μμ
λ€μ νλμ© μ€λ λκ° λ§‘μ μ²λ¦¬νλ€. λ³λ ¬ μμ
μ²λ¦¬κ° λ§μμ§λ©΄ μ€λ λ κ°μκ° μ¦κ°λλλ° κ·Έμ λ°λ₯Έ μ€λ λ μμ±, μ€μΌμ€λ§μΌλ‘ μΈν΄ CPUκ° λ°λΉ μ Έ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ λμ΄λλ€. λ°λΌμ μ ν리μΌμ΄μ
μ μ±λ₯μ΄ μ ν λλ―λ‘ μ€λ λ νμ μ¬μ©νμ¬ μ€λ λ μ 체 κ°μκ° λμ΄λμ§ μλλ‘ ν΄μΌνλ€. μ€λ λν μμ± public class ExecutorExample { public static void main(String[] args) { // 1κ°μ μ€λ λλ₯Ό μ¬μ©νλ μ€λ λν μμ± ExecutorService singleThread = Executors.newSingleThreadExecutor(); // μ€λ λλ₯Ό μ ν μμ΄ μ¬..
λ°λͺ¬ μ€λ λ μ£Ό μ€λ λμ μμ
μ λλ 보쑰μ μΈ μν μ μννλ μ€λ λμ
λλ€. κ·Έλ κΈ° λλ¬Έμ μ£Ό μ€λ λκ° μ’
λ£λλ©΄ λ°λͺ¬ μ€λ λλ κ°μ μ μΌλ‘ μλ μ’
λ£λ©λλ€. μ μ© μλ‘λ μλ μ μ₯, κ°λΉμ§ 컬λ ν° λ±μ΄ μλλ° μ΄ κΈ°λ₯λ€μ μ£Ό μ€λ λκ° μ’
λ£λλ©΄ κ°μ΄ μ’
λ£λ©λλ€. λ°λͺ¬ μ€λ λ λ΄μ©μ μμ±ν΄μ€ ν public class DaemonThread extends Thread{ public void save(){ // μλ μ μ₯ } public void run(){ save(); } } λ©μΈ μ€λ λμμ setDaemon μ ν΄μ£Όλ©΄ λλ€. public class mainThread(){ public static void main(String[] args){ DaemonThread daemonThread = new Dae..
μ€λ λλ μ€νλκΈ° μνμ μ€ν μνλ₯Ό λ²κ°μκ°λ©΄μ μμ μ run() λ©μλλ₯Ό μ‘°κΈμ© μ€νν©λλ€. κ·Έ ν λμ΄μ μ€νν μ½λκ° μμ λ μ’
λ£ μνκ° λ©λλ€. μ€λ λ κ°μ²΄ μμ± -> start() -> μ€νλκΈ°(μ€μΌμ€λ§μΌλ‘ μΈν΄) μ€ν -> μ’
λ£ - μ€λ λ μ€μΌμ€λ§μΌλ‘ μ νλ μ€λ λκ° cpuλ₯Ό μ μ νκ³ run() λ©μλλ₯Ό μ€ννλ€ (μ€ν μν) - μ€λ λ μ€μΌμ€λ§μ μν΄ λ€μ μ€νλκΈ° μνλ‘ λμκ° μ μλ€.(μ€νλκΈ° μν) μ΄λ»κ² μ μ΄ν κΉ? 1. μ£Όμ΄μ§ μκ°λμ μΌμ μ μ§ sleep() μ€ν μ€μΈ μ€λ λλ₯Ό μΌμ μκ° λ©μΆ μ μκ² νλ€. Thread ν΄λμ€μ μ μ λ©μλμΈ sleep() μ μ¬μ©νλ€. Thread.sleep(1000) // 1μ΄ -> λ°λ¦¬μΈμ»¨λ (1/1000) λ¨μ * μ£Όμ΄μ§ μκ°μ΄ λκΈ°μ ..
λκΈ°ν λ©μλμ λκΈ°ν λΈλ‘ λ©ν°μ€λ λ νλ‘κ·Έλ¨μμλ μ€λ λλ€μ΄ κ°μ²΄λ₯Ό 곡μ ν΄μ μμ
ν΄μΌ νλ κ²½μ°κ° μλ€. μ€λ λaκ° μ¬μ©νλ κ°μ²΄λ₯Ό bμ μν΄ μνκ° λ³κ²½ λ μ μμ΄μ aκ° μλνλ κ²°κ³Όμ λ¬λΌμ§ μ μκΈ° λλ¬Έμ μ¬μ©μ€μΈ μ€λ λμ μμ
μ΄ λλ λκΉμ§ κ°μ²΄μ μ κΈμ κ±Έμ΄ λ€λ₯Έ μ€λ λκ° μ¬μ©ν μ μλλ‘ ν΄μΌ νλ€. λ¨ νλμ μ€λ λλ₯Ό μ€ννλ μκ³ μμμ λ§λ€μ΄μ£Όλ©΄ λλ€. -> μ€λ λκ° κ°μ± λ΄λΆμ λκΈ°ν λ©μλ λλ λΈλ‘μ λ€μ΄κ°λ©΄ μ¦μ κ°μ²΄μ μ κΈμ κ±Έμ΄ λ€λ₯Έ μ€λ λκ° μμμ μλ μ½λλ₯Ό μ€ννμ§ λͺ»νλλ‘ νλ€. λ©μλ μ€ν μ’
λ£ λλ©΄ μ κΈμ΄ νλ¦°λ€. μ¬μ©λ°©λ²μ μλμ κ°λ€ public synchronized void method(){ // μκ³ μμ } μΌλΆ λ΄μ©λ§ λ§λ€κ³ μΆλ€λ©΄ μλμ κ°μ΄ λΈ..
λ©ν° νλ‘μΈμ€κ° μ ν리μΌμ΄μ
λ¨μμ λ©ν° νμ€νΉμ΄λΌλ©΄ λ©ν° μ€λ λλ μ ν리μΌμ΄μ
λ΄λΆμμμ λ©ν° νμ€νΉμ΄λΌκ³ λ³Ό μ μλ€. λ©ν° μ€λ λλ λ€μν κ³³μμ μ¬μ©λλ€. 1. λμ©λ λ°μ΄ν°μ μ²λ¦¬ μκ°μ μ€μ΄κΈ° μν΄ λ°μ΄ν°λ₯Ό λΆν ν΄μ λ³λ ¬λ‘ μ²λ¦¬νλ κ³³μμ μ¬μ© 2. UIλ₯Ό κ°μ§κ³ μλ μ ν리μΌμ΄μ
μμ λ€νΈμν¬ ν΅μ μ νκΈ° μν΄ μ¬μ© 3. λ€μ ν΄λΌμ΄μΈνΈμ μμ²μ μ²λ¦¬νλ μλ²λ₯Ό κ°λ°ν λ - λ©μΈ μ€λ λ λ©μΈ μ€λ λκ° μμ
μ€λ λλ³΄λ€ λ¨Όμ μ’
λ£λλλΌλ μμ
μ€λ λκ° κ³μ μ€ν μ€μ΄λ©΄ νλ‘μΈμ€λ μ’
λ£λμ§ μλλ€. - μμ
μ€λ λ λͺ κ°μ μμ
μ λ³λ ¬λ‘ μ€νν μ§ κ²°μ νκ³ κ° μμ
λ³λ‘ μ€λ λλ₯Ό μμ±νλ€. (μμ
1) (μμ
2) (νλ‘κ·Έλ¨μμ λ³λ ¬λ‘ μ€νν μμ
μ κ²°μ ) -> λ©μΈμ€λ λ μ€λ λ1 μ€λ λ2 Threadν΄..
userStateλ³΄λ€ λ λ€μν μ»΄ν¬λνΈ μν©μ λ°λΌ λ€μν μνλ₯Ό λ€λ₯Έ κ°μΌλ‘ μ
λ°μ΄νΈ ν΄ μ£Όκ³ μΆμ λ μ¬μ©νλ Hook 리λμλ νμ¬ μν, κ·Έλ¦¬κ³ μ
λ°μ΄νΈλ₯Ό μν΄ νμν μ 보λ₯Ό λ΄μ μ‘μ
κ°μ μ λ¬λ°μ μλ‘μ΄ μνλ₯Ό λ°ννλ ν¨μμ΄λ€.(μλ‘μ΄ μνλ₯Ό λ§λ€ λλ λ°λμ λΆλ³μ±μ μ§μΌ μ£Όμ΄μΌ νλ€) μμ λ‘ μ¬λ¬ μΈνμ μνλ₯Ό μ μ₯ν΄λ΄
μλ€! import React,{useReducer} from 'react'; function reducer(state,action){ retunr{ ...state, [action.name] = action.value }; } μ°μ μμ κ°μ΄ reducer ν¨μλ₯Ό μμ±ν©λλ€. 1. ...stateλ κΈ°μ‘΄μ μλ state κ°λ€μ λ³΅μ¬ μν€λκ²κ³Ό κ°μ΅λλ€. 2. actio..
import React, { Component } from 'react'; class LifeCycleSample extends Component{ state={ error:false, number:0, color:null, } myRef = null; // μ»΄ν¬λνΈλ₯Ό λ§λ€ λ μ²μμΌλ‘ μ€νλλ€. // μ΄κΈ° stateλ₯Ό μ νλ€. constructor(props){ super(props); console.log('constructor'); } // propsλ‘ λ°μ μ¨ κ°μ stateμ λκΈ°νμν€λ μ©λ // μ»΄ν¬λνΈκ° λ§μ΄νΈλ λ, μ
λ°μ΄νΈλ λ νΈμΆ static getDerivedStateFromProps(nextProps,prevState){ console.log('getDerivedStateFrom..