전체 글

전체 글

    [Spring] Bean 순환 참조

    [Spring] Bean 순환 참조

    먼저 순환 참조의 정의에 대해 알아보자. 위키 백과에서의 순환 참조 정의는 다음과 같다.- 참조하는 대상이 서로 물려 있어서 참조할 수 없게 되는 현상  위에서 설명한 순환 참조라는 것이 스프링에서도 일어날 수 있을까?: 물론이다.  두 개 이상의 자바 클래스가 서로의 Bean을 주입 받을 때 순환 참조 문제가 발생할 수 있다.  클래스 A -> 클래스 B, 클래스 B -> 클래스 C, 클래스 C -> 클래스 A 순으로 참조할 경우,클래스 A에 대한 Bean을 만들 때, 클래스 A는 클래스 B를 참조하므로, 클래스 B의 Bean을 먼저 생성하고,클래스 B는 클래스 C를 참조하기에, 클래스 C의 Bean을 먼저 생성하고, 클래스 C의 Bean을 생성하기 전에,클래스 C는 클래스 A를 생성하므로 먼저 클래스..

    백준 15649 (N과 M (1))

    import java.io.*; import java.util.StringTokenizer; public class Main { public static int[] arr; public static boolean[] visit; public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.re..

    [Java] java.lang.NoSuchFieldError 에러 조치 방법

    [Java] java.lang.NoSuchFieldError 에러 조치 방법

    프로젝트를 새로 빌드하고 WAS를 구동했을 때 아래와 같은 에러 메시지가 발생했다.. java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’ 구글링해보니 롬복 관련 에러라고 하는데 JDK 버전이 21이상일 경우, 롬복에서 지원하는 않는 버전이라 나오는 오류라고 한다. 하지만 프로젝트에는 JDK 17버전이 잘 설정되어 있는데 무슨 문제일까 싶었다 결국 문제는 SDK 설정을 안했었다.. 21버전으로 되어 있어서 17버전으로 변경하고 다시 빌드하니 잘 실행되었다! 경로 (단축키: Ctrl + Alt +..

    백준 2667 (단지번호붙이기)

    import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { static int N; // 지도의 크기 static int[][] arr; // 입력 받은 단지 static boolean[][] visited; // 단지 체크 static List result; // 단지내 집의 수 모음 static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; static int each = 0; // 단지내 집의 수 public static void main(String args[]) throws IOExce..

    [React] 리액트 라이프 사이클

    [React] 리액트 라이프 사이클

    리액트 라이프 사이클 ​ 컴포넌트의 생명 주기 컴포넌트가 렌더링 되기전 ~ 페이지에서 사라질 때 ​ 라이프 사이클을 다루는 것이란? - 컴포넌트가 마운트, 업데이트, 언마운트 되는 일련의 프로세스를 프로그래머가 통제하는 것 - 생성자를 통해 필요한 메모리를 할당, 객체의 역할이 끝나면 소멸자를 통해 메모리를 반환 ​ 라이프 사이클의 유형 1. 생성될 때(마운트) 2. 업데이트될 때(업데이트) 3. 제거할 때(언마운트) ​ ​ - 리액트에서는 예전 방식인 클래스 방식을 사용하는 것을 지양하고 함수 방식을 사용하는 것을 권장 ​ ​ ​ 함수형 라이프사이클에 따른 useEffect 실행 useEffect(() => { console.log('componentDidMount!'); }, []) useEffect..

    자바스크립트의 동작 원리

    자바스크립트의 동작 원리

    자바스크립트 동작 방식 ​ 자바스크립트는 단일 스레드 방식으로 한 번에 하나의 작업만 처리 가능 ​ 자바스크립트 엔진 V8 구조 ​ Memory Heap 메모리 할당이 일어나는 곳 ​ Call Stack 코드 실행에 따라 스택이 쌓이는 곳(후입 선출 LIFO) ​ 자바스크립트 동작환경(Runtime) ​ Web APIs DOM, AJAX, Timer 등 브라우저에서 제공하는 API ​ Callback Queue 콜백 함수들이 대기하는 곳(선입 선출 FIFO) ​ 호출 스택(Call Stack) 웹 브라우저의 자바스크립트 인터프리터 역할 현재 함수의 동작 및 다음 함수 호출 부분 등을 제어 ​ Event Loop Call Stack이 비워질 때마다 Collback Queue에 대기중인 콜백함수가 있을 경우..

    MariaDB(MySQL) 덤프 떠서 DB 이동하는 법

    DB 덤프 - 데이터베이스의 내용을 외부 파일로 백업하는 과정 - 데이터 베이스의 중요한 정보를 안전하게 보호 가능하며, 장애 복구, 데이터 마이그레이션, 테스트 및 개발 환경 설정 등 다양한 용도에서 사용 가능 // 덤프를 뜰 DB의 이름 확인 mysql -u root - p // 모든 데이터베이스 조회 show databases; // DB덤프 뜨기 mysqldump -u root -p [데이터베이스명] > [파일명].sql // 새로운 DB생성 create database [복구할 DB명] // DB덤프 복구 mysql -u root -p [복구할 DB명] < [저장한 DB명].sql

    [JavaScript] 디바운싱과 쓰로틀링

    디바운싱 - 연속적으로 호출되는 함수들 중에서 처음 or 마지막에 호출되는 함수만 실행하는 방식(함수는 한 번만 실행) - 주로 이벤트 핸들러에 적용 // #1 타이머 예제 let timer; document.querySelector('#input').addEventListener('input', function(e) { if(timer) { clearTimeout(timer); } timer = setTimeout(function() { // 실행할 코드 내용 }, 200); }); // #2 텍스트 입력 예제 function debounce(func, delay) { let timeoutId; return function() { const context = this; const args = argum..