# Language

    Go 테스트 코드 작성하기

    테스트 코드 단계단위 테스트 (Unit Test) : 함수나 메서드 하나하나를 개별적으로 검증핵심 비즈니스 로직 위주로 작성외부 의존성(DB, 네트워크) 없이 메모리에서만 돌기 때문에 수천 개를 실행해도 수 초 내에 끝나도록 해야 함외부 의존성을 모두 Mock으로 대체통합 테스트 (Integration Test) : 데이터베이스, 캐시, 외부 API 등 두 개 이상의 모듈이 서로 잘 맞물려 돌아가는지 확인호출이 불가능한 외부 API 정도만 MockingE2E 테스트 (End-to-End Test) : 실제 사용자 입장에서 전체 시스템 흐름을 검증가장 확실하지만, 실행 속도가 느리고 관리 비용이 높음Mock 데이터가 아닌 실제 환경과 가장 유사한 상태에서 테스트 테스트 단계에 따라 불필요한 요소는 Mock..

    Java 개발자가 공부하는 Go 언어

    Java 개발자가 공부하는 Go 언어1. 런타임 구조: JVM vs Go 컴파일러자바와 Go의 가장 근본적인 차이는 실행 환경에 있음.JVM (Java): "Write Once, Run Anywhere"를 지향함. 소스코드는 바이트코드로 컴파일되며, 실행 시점의 JIT 컴파일러가 이를 기계어로 번역함. 이 과정에서 메모리 오버헤드가 발생하며, 최적의 성능을 내기 위한 'Warm-up' 시간이 필요함.Go Compiler: 하드웨어에 종속적인 네이티브 바이너리를 직접 생성함. 런타임 라이브러리가 바이너리에 포함되어 별도의 설치 과정 없이 파일 하나로 즉시 실행 가능함. 구동 속도가 매우 빠르며 컨테이너 이미지 크기를 최소화하는 데 유리함. 2. 객체 모델: Class vs StructJava Classc..

    [Kotlin] 코틀린 개념 정리

    주제 코틀린 기초 개념 정리 1. 코틀린에 대해 알아보기 1.1 코틀린이란? 1.1.1 코틀린이란? 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어로, 기존 Java 언어나 프레임워크와 함께 작동할 수 있다. 구글에서 지정한 안드로이드 공식 지원 언어이며, 여러 IT 대기업들이 채택한 각광받는 언어 Jetbrains에서 개발하였음 1.2 특징 1.2.1 멀티 패러다임 언어 함수형 프로그래밍과 객체 지향 프로그래밍을 모두 지원하는 멀티 패러다임 언어이다. # 함수형 프로그래밍 - 함수는 일반 값처럼 변수에 저장할 수 있고, 다른 함수의 인자로도 넘길 수 있다 - 불변 객체를 사용하여 프로그램을 작성한다. - 입력이 같으면 항상 같은 출력을 보장하고, 함수 외부의 다른 객체를 건드리지 않는다. (순수함수) ..

    Checked Exception과 Unchecked Exception 이란? 예외 처리 기법

    주제 Checked Exception과 Unchecked Exception Exception별 예외 처리 방법 1. Error 와 Exception 1.1 Error와 Exception의 차이 Error와 Exception은 문제가 생겼다는 점에서 비슷하지만 다른 클래스이다. Error란 시스템이 비정상적일 때 발생하고, 개발자가 미리 예측하거나 대처하기 어렵다 Ex) 메모리 부족(Out of Memory), 스택 오버플로우(StackOverflow) Exception이란 개발자의 실수 혹은 구현한 코드 레벨에서 발생하는 오류로 미리 예측하거나 대처할 수 있다. NullPointerException, FileNotFoundException 등등 1.2 Exception의 종류 Exception의 종류는 ..

    [Java] [Mac] 여러 버전의 Java를 설치/변경하기

    개요 여러 프로젝트를 운영하다 보니 프로젝트 마다 다른 Java 버전을 사용해야 하는 경우가 발생했다. Java의 여러 버전을 설치하고 변경하는 방법을 알아본다. Brew를 통한 Java 여러 버전 설치 Brew를 통해 Java를 간단하게 설치할 수 있다. # openjdk를 설치할 수 있도록 추가 $ brew tap adoptopenjdk/openjdk # 설치 가능한 jdk 검색 $ brew search jdk # Java 설치 $ brew install --cask adoptopenjdk8 $ brew install --cask adoptopenjdk11 $ brew install --cask adoptopenjdk13 Java 설치 확인 / 버전 변경 # 설치된 Java 목록 확인 $ /usr/l..

    [Java 8] Stream 정렬 예제 메모

    import lombok.Getter; import lombok.ToString; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; /** * MyMockTest class. * * Describe here. * * * * History: * damian.lee, 0.0.1, Created at 2022.08.22 * * * @author : damian * @version : 0.0.1 */ public clas..

    양방향 연관관계 매핑을 위한 연관관계 편의 메소드

    양방향 연관관계에서 양쪽 객체의 관계를 모두 채워주기 위한 편의 메소드 한쪽에서만 두 관계를 설정하도록 하는 것이 안전하다. 연관관계 편의 메소드가 위치할 곳은 비즈니스 로직에 따라 다름 김영한 강사 답변1 김영한 강사 답변2 다대일 양방향 관계 뿐만 아니라 일대일 양방향 관계에서도 적용 가능한 메소드 양방향 연관관계 관련 스터디 링크 https://kingpiggylab.tistory.com/340?category=908877 엔티티 매핑 2 (연관관계) 연관관계 매핑 기초 목표 🤔 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 객체가 지향하는 패러다임과 관계가 지향하는 패러다임의 차이를 이해하고 적절하 kingpiggylab.tistory.com 연관관계 편의 메소드가 ..

    [Java] 향상된 for문 콜론 ":" 연산자

    String[] array = {"a", "b", "c"}; for(String s : array){ System.out.println(s); } Java 5부터 지원

    [Java] 2차원 배열 인덱스

    int[][] test = {{1,2,3}, {4,5,6}}; System.out.print(test[1][1]); // 5 출력 //넣은 순서대로 0 번째줄 -> 1번째 줄 쭉쭉 // test[0][0] : 1 // test[0][1] : 2 // test[0][2] : 3 // test[1][0] : 4 // test[1][1] : 5 // test[1][2] : 6

    Random 클래스 이용한 중복 없는 난수 생성하기 ( 1 to 99)

    package com.testpj.test; import java.util.Random; public class test { public static void main(String[] args) { int count = 20; // 난수 생성 갯수 int a[] = new int[count]; Random r = new Random(); for(int i=0; i