썸네일 [IntelliJ] try-catch등 코드 블럭 자동 완성하는 방법 자동 완성 방법 1. 영역을 지정 후 아래 단축키 입력 - Mac : Option + Command + T (⌥ ⌘ T) - Windows : Ctrl + Alt + T 2. Surround With에서 원하는 코드 블럭을 선택한다. 3. try - catch로 잘 감싸졌다 😊
썸네일 OSI 7 참조 모델 OSI 7 모델이란? 통신 기능의 확장 및 통신기술의 도입을 쉽게 지원하는 다양한 방법 중 프로토콜을 몇 개의 계층으로 나누는 계층화와 참조 모델에는 OSI 7 layer가 있다. OSI 모델은 표준 프로토콜을 사용함으로써 다른 통신 시스템들 간의 상호 호환성을 구현하였으며 두 컴퓨터 응용 프로그램 간의 데이터 전달 과정을 규정한 모델이다. 즉, 서로 다른 컴퓨터가 통신하기 위해서 참조해야 하는 규약을 7단계로 정의한 것이 OSI 7 계층이다. OSI 참조 모델에서 계층을 나누는 목적 - 시스템 간의 통신을 위한 표준을 제공 - 정보 교환을 하기 위한 상호 접속점을 정의 - 관련 규격의 적합성을 조성하기 위한 공통적인 기반 조성 가능 OSI 7 계층의 주요 기능 계층 계층명 설명 주요 장비 프로토콜 종류..
썸네일 🎟인터페이스와 🖼추상클래스의 차이점에 대해 설명해주세요 키워드 추상 메소드란? 🖼추상 클래스란? 🎟 인터페이스란? 🖼추상 클래스와 🎟 인터페이스의 공통점 왜 굳이 🎟 인터페이스를 사용할까? 🖼인터페이스와 🎟 추상 클래스 언제 사용할까? 추상 메소드란? 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추상 메소드입니다. 머리만 있고 꼬리(내용)는 없는 메소드라고 생각하면 됩니다. 🖼 추상 클래스란? 추상 클래스와 일반 클래스는 상속 관계에 놓여있습니다. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용됩니다. 일반 클래스들의 필드와 메소드를 통일하여 일반 클래스 작성 시 시간을 절약할 수 있습니다. 추상 클래스는 단일 상속만 가능하며, 일반 변수를 가질 수 있습니다. 🎟 인터페이스란? 추상 클래스의 하나로, 추상 메소드로만 이루어..
썸네일 결합도에 대해 설명해주세요. 결합도란? 결합도는 두 사람이 붙어 있는 모습을 상상하면 좋다. 손만 잡고 있는지, 팔짱을 끼고 있는지, 포옹을 하고 있는지에 따라서 떨어뜨리기 어려운 느낌! 즉 결합도란, 두 모듈 간의 상호 의존도를 의미하며, 구조적 설계에서 기능 수행 시 모듈 간 최소한의 상호작용을 하여 하나의 기능만을 수행하는 정도를 표현한다. 결합도의 유형 결합도가 낮은 것이 가장 고품질의 모듈이다. 자 -> 스 -> 제 -> 외 - > 공 -> 내 자료 결합도 모듈 간의 인터페이스가 자료 요소로만 구성된 경우 스탬프 결합도 두 모듈이 동일한 자료구조를 조회하는 경우 제어 결합도 내부 논리 조작을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우 외부 결합도 외부로 선언한 변수를 다른 모듈에서 참조할 경우 공통 결합도 여..
썸네일 [Design Pattern] 전략 패턴 - 알고리즘을 모두 바꾸기 😊 해당 포스팅은 꾸준하게 업데이트될 예정입니다. 알고리즘을 분리해서 처리하는 것 - 전략 패턴의 핵심 알고리즘 = 기능 (= 처리방법들을 분리하겠다.) 인터페이스를 통해서 구현함 인터페이스를 사용하는 이유 : 코드의 확장성 용이 전략 패턴은 인터페이스를 통해서 구현한다. 전략 패턴은 기능 위주여야 한다. 독립적인 클래스 (상속이나 위임받은 클래스 사용불가) 같이 보면 좋은 아티클 코드 리팩토링, IF문을 제거하자 (전략패턴) 레거시 코드를 리팩토링하며 얻은 경험을 공유합니다. 스프링부트환경에서 전략패턴을 활용했습니다. medium.com [Design Pattern] 스트래티지 패턴이란 - Heee's Development Blog Step by step goes a long way. gmlwjd940..
CSRF Token이란 CSRF Token이란 CSRF Token은 임의의 난수를 생성하고 세션에 저장한다. 그리고 사용자의 매 요청마다 해당 난수 값을 포함시켜서 전송시킨다. 이후 백엔드에서는 요청을 받을 때 마다 세션에 저장된 토큰값과 요청 파라미터에 전달된 토큰 값이 같은지 검사한다. 💡 전제조건 : 롤에 따라 메뉴 구성을 다르게 한다. 롤과 메뉴를 매핑하는 테이블이 별도로 구성되어 있다. 롤을 가져와야 메뉴를 구성할 수 있기 때문에 로그인 할 때 권한 리스트를 가져와서 세션 정보에 넣어놓는다. header.jsp는 세션이 유효한 접근인지를 파악하기 위함 → 왜? 보안을 위해서 단, 최초 접속화면만 곧바로 통과시킨다. → 로그인을 하지 않은 상태에서 url만으로 main페이지에 접근하려고 하면 session이 생기지 않은..
썸네일 시간복잡도와 공간복잡도란? 복잡도 시스템이나 시스템 구성 요소 또는 소프트웨어의 복잡한 정도를 나타내는 말 시간 복잡도 알고리즘을 수행하기 위해서 프로세스가 수행하는 연산 횟수를 수치화한 것 시간이 얼마나 오래 걸리냐를 나타내는 것이 아니라 연산의 횟수(=실행 횟수)를 수치화한 것이다. 시간 복잡도가 낮을수록 알고리즘의 실행시간이 짧고, 높을수록 실행시간이 길어짐 점근 표기법의 종류 빅오 표기법 : 실행시간이 최악일 때 표기하는 방법 세타 표기법 : 평균 오메가 표기법 : 최상 빅오 표기법 알고리즘의 성능을 수학적으로 표기해주는 것 알고리즘의 시간과 공간 복잡도를 표현할 수 있음 O(1) 입력데이터의 크기와 상관없이, 언제나 일정한 시간이 걸리는 알고리즘 데이터가 증가함에 따라 성능의 변화가 없다 예) 스택의 삽입, 삭제 O(n)..
썸네일 GCD LCM = 유클리드 호제법 유클리드 호제법 최대공약수 gcd(a, b) = gcd(b, a% b) gcd(24,18) = gcd(18,6) = gcd(6,0) 즉 24와 18의 최대공약수는 6이 된다. gcd(30,22) = gcd(22,8) = gcd(8,6) = gcd(6,2) = gcd(2,0) 30과 22의 최대공약수는 2가 된다. 최소공배수를 구할 때는 a, b로 구하는 것이 아니다. 왜냐하면 a와 b의 값은 이미 유클리드 호제법에 의해 변경된 값이기 때문에 a = 6, b = 2이기 때문이다. 따라서 A와 B에 사용자가 입력한 원본의 값을 저장하고 그 값을 활용해야 한다. public class SBF_GCD_LCM { public static void main(String[]args){ // 유클리드호제법 Scanne..
썸네일 직렬화와 역직렬화에 대해 설명해주세요 직렬화와 역직렬화의 핵심! Object를 전송 또는 저장 가능한 형태로 바꾸기 위한 작업 예시 USB 인터페이스 (Universal Serial Bus) Serial : 연쇄, 연속해서 이어지는 어떤 것 = 직렬화 즉, USB는 직선상으로 연속해서 들어오는 데이터를 받아들일 수 있는 인터페이스라는 의미이다. Serialization 직렬화 Object를 연속된 string이나 bytes로 바꾸는 작업 왜 이런 작업을 할까? Object는 메모리에 존재하고 추상적이지만, string과 bytes데이터는 드라이브에 저장도 할 수 있도 통신선을 통해서 전송할 수 있기 때문이다. Objcet는 프로그램 위에 할당된 메모리 위에 존재하고, 프로그램이 종료되면 Object도 자동으로 소멸된다. Deserializa..
썸네일 Spring Framework 실행순서 Tomcat(WAS) 구동 1. Loading Tomcat(WAS)에 의해 web.xml이 loading 된다. 2. Create web.xml에 등록되어 있는 ContextLoaderListener가 자동으로 메모리에 생성된다. ContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현하고 있으며 ApplicationContext를 생성하는 역할을 수행한다. 3. Loading 생성된 ContextLoaderListener는 root-context.xml을 loading 한다. 4. Running root-context.xml에 등록되어 있는 Spring Container를 구동한다. root-context.xml을 따로 설정하는 이유? 스프링 프레임워크..
썸네일 페이지 교체 알고리즘 페이지 교체 알고리즘이 어디에서 발생하는지는 하단 포스팅 참고! 페이징과 세그먼테이션에 대해 설명해주세요 먼저 페이징 기법과 세그먼테이션 기법은 가상 기억장치 구현 기법으로 주기억장치의 부족한 용량 문제를 해결하기 위해 보조기억장치를 주기억장치처럼 사용할 때 쓰인다. (= CPU를 속인다.) 페 seongeun-it.tistory.com 페이지 교체 알고리즘은 페이지의 부재(Page Fault)가 발생했을 때 가상 기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용 중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법이다. 페이지 부재란? CPU가 엑세스한 가상 페이지가 주기억장치에 없는 경우를 의미한다. 페이지 부재가 발생하면 해당 페이지..
썸네일 [Algorithm Jobs] 소수 판별 package com.practice; import java.util.Scanner; public class Pre_10 { public static void main(String[]args){ // 소수 판별 // n / 1 = n // n / n = 1 // 이렇게 두 경우만 소수이고, n / 2 = x ... 이렇게 나눠 떨어지는 경우는 소수가 아니다. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 1부터 n를 제외하고 반복문을 돌려서 n/i로 나눠 떨어지는 경우 N를 출력 == 소수가 아니다. String str = ""; int cnt = 0; for(int i=2;i cnt 증가 7%2 != 0 7%3!= 0 7%4!= 0 7%5..