본문 바로가기

분류 전체보기

(26)
[Spring] 스프링 MVC 1편 정리 - 01 📌 웹 서버, 웹 애플리케이션 🌱 웹 서버 (Web Server) 웹 서버는 HTTP 기반으로 동작한다 정적 리소스를 제공하고, 기타 부가기능도 있다 정적(파일) HTML, CSS, JS, 이미지, 영상 e.g. NGINX, APACHE 🌱 웹 애플리케이션 서버 (WAS - Web Application Server) 웹 애플리케이션 서버도 HTTP 기반으로 동작한다 (모든것이 HTTP 라는말 기억!) 웹 서버 기능 + 애플리케이션 로직 수행 e.g. Tomcat, Jetty, Undertow 비슷한데 뭐가 다르지 ? 웹서버는 정적 리소스(파일), WAS는 애플리케이션 로직 이라고 생각하자 둘의 용어 경계가 모호하긴 하다 (웹 서버도 애플리케이션 기능을 어느정도 하고, WAS도 웹 서버의 기능을 제공하기 ..
[java] 형 변환 문자(열) 숫자 String To Int String s = "12345"; int i = Integer.parseInt(s); String s = "12345"; int i = Integer.valueOf(s); Int To String int i = 12345; String s = Integer.toString(i); int i = 12345; String s = String.valueOf(i); 마찬가지로 Double, Float, Long, Short 자료형도 valueOf 함수로 모두 변환이 가능하다. (Casting 하려는 자료형).valueOf(Casting 할 Value) String 이 -12345 일 경우 > -12345 (Integer) String 이 012345 일 경우 > 123..
[Spring]JUnit5 - Exception 테스트 JUnit5는 JUnit4와 다르게 exception test handling 방법이 다르다. JUnit5 @Test public void 중복_회원_예외() throws Exception{ // given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); // when memberService.join(member1); // then assertThrows(IllegalStateException.class, () -> memberService.join(member2)); } JUnit4 @Test(expected = IllegalStateException.c..
[Spring]의존성 주입 방법 의존성을 주입하는 방법 스프링 프레임워크에서 의존성을 주입하는 방법은 무엇이 있을까? @Autowired 를 사용하는 필드 주입이나 수정자 주입 방법보다 생성자 주입을 더 권장하는 이유를 알아보자. 하지만 그전에 스프링 프레임워크에서 사용하는 의존성 주입 방법에 대해서 알아볼 필요가 있다. 우선 등록된 빈을 사용하기 위한 스프링 프레임워크의 DI(Dependency Injection) 방법은 3가지다. 생성자 주입(Constructor Injection) 이번 포스팅의 주제이자 스프링 팀에서도 권장하는 방식이다. 스프링 프레임워크 4.3 버전부터는 의존성 주입으로부터 클래스를 완벽하게 분리할 수 있다. 단일 생성자인 경우에는 @Autowired 어노테이션 조차 붙이지 않아도 되지만 생성자가 2개 이상인 ..
[Spring] H2 DB in memory 설정 테스트 케이스를 위한 설정 테스트는 케이스 격리된 환경에서 실행하고, 끝나면 데이터를 초기화하는 것이 좋다. 그런 면에서 메모리 DB를 사용하는 것이 가장 이상적이다. 추가로 테스트 케이스를 위한 스프링 환경과, 일반적으로 애플리케이션을 실행하는 환경은 보통 다르므로 설정 파일을 다르게 사용하자. test/resources/application.yml을 아래와 같이 작성 spring: # datasource: # url: jdbc:h2:mem:test # username: sa # password: # driver-class-name: org.h2.Driver # # jpa: # hibernate: # ddl-auto: create # properties: # hibernate: ## show_sql: ..
[CS] CS 면접 대비 링크 쩜튜브(유투브 영상) !!필수!! ⭐️⭐️⭐️⭐️⭐️ https://www.youtube.com/channel/UCz6z9z5wrOd2aB090WwYc8Q 쩜님의 실제 다양한 기업의 면접사례를 통한 간접경험 어떻게 준비하면 좋을까에 대한 가이드 한재엽님의 github ⭐️⭐️⭐️⭐️⭐️ https://github.com/JaeYeopHan/Interview_Question_for_Beginner 각종 질문 모음, cs지식 정리 망나니 개발자 기술면접 부분 ⭐️⭐️⭐️⭐️⭐️ https://mangkyu.tistory.com/91 면접보기 전에 쭉 훑으면 매우 좋다 gyoogle 님 tech interview 블로그 ⭐️⭐️⭐️⭐️⭐️ https://gyoogle.dev/blog/ 정말 강추... 모든글 ..
[Algorithm] 서로소 집합 (Union-Find) 서로소 집합 표현 방법 1. Linked List - 같은 집합의 원소들은 하나의 연결 리스트로 관리한다. - 연결리스트의 맨 앞의 원소를 집합의 대표 원소로 삼는다. - 각 원소는 집합의 대표원소를 가리키는 링크를 갖는다. 2. Tree 서로소 집합 연산 Make-Set(x) : 최소 단위 집합 생성 Make-Set(x) p[x] x가 속한 집합의 대표자 찾기 Find-Set(x): if x == p[x] : return x else : return Find_Set(p[x]) Union(x, y) : 두 집합을 합친다(서로 다른 집합일 경우만) Union(x,y): if Find-Set(y) == Find-Set(x) return; p[Find-Set(y)] 특정노드에서의 루트까지의 경로를 찾아 가면..
[Algorithm] 큐 활용 - 마이쮸 큐 java.util.Queue LinkedList 클래스를 Queue 인터페이스의 구현체로 많이 사용 offer poll isEmpty size 마이쮸 문제 import java.util.LinkedList; import java.util.Queue; public class Solution { public static void main(String[] args) { // 마이쮸 나눠주기 시뮬레이션 //1번이 줄을 선다 //1번이 한개의 마이쮸를 받는다 //1번이 다시 줄을 선다 //새로 2번이 줄을 선다 //1번이 두개의 마이쮸를 받는다 //1번이 다시 줄을 선다 //새로 3번이 들어와 줄을 선다 //2번이 한개의 마이쮸를 받는다 //2번이 다시 줄을 선다 //새로 4번이 들어와 줄을 선다 //1번이 ..
[Algorithm] 스택 활용 - 계산기, 브라우저 스택 java.util.Stack push pop peek isEmpty size 계산기 문자열로 된 계산식이 주어질 때, 스택을 이용하여 이 계산식의 값을 계산할 수 있다. 문자열 수식 계산의 일반적인 방법 중위 표기법의 수식을 후위 표기법으로 변경한다. (스택 이용) 후위 표기법의 수식을 스택을 이용하여 계산한다. 피연산자를 만나면 스택에 push. 연산자를 만나면 필요한 만큼의 피연산자를 스택에서 pop하여 연산하고, 연산 결과를 다시 스택에 push. 수식이 끝나면, 마지막으로 스택을 pop하여 출력. e.g. (6 + ((5 * (2-8))/2)) -> 6528-*2/+ -> 65(-6)*2/+ -> 6(-30)2/+ -> 6(-15)+ -> -9 브라우저 웹 브라우저에서 앞으로가기, 뒤로가기를..
[Algorithm] 완전탐색 - 부분 집합 부분 집합 - 집합에 포함된 원소들을 선택하는 것 - 집합의 원소가 n개일 때, 공집합을 포함한 부분집합의 수는 2^n개이다. - 이는 각 원소를 부분집합에 포함시키거나 포함시키지 않는 2가지 경우를 모든 원소에 적용한 경우의 수와 같다. e.g. {1,2,3} 집합의 Power Set 생성 반복문 사용 // 1 : 선택 0 : 비선택 for i in 1 -> 0 selected[1] 0 selected[2] 0 selected[3] 3// 생성된 부분집합 출력 if selected[i 1 then print i 재귀 사용 input[]// 숫자 배열 isSelected[] // 부분집합에 속하는지 여부를 저장한 배열 // cnt : 현재까지 처리한 원소 갯수 generateSubSet(cnt) if (..