전체 글 43

[스프링 부트 핵심 가이드] 03. 개발 환경 구성

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 책에서 구성한 개발 환경 Windows 10 64-bit 인텔리제이(IntelliJ) Ultimate JDK 11(1.8 버전 이상) 스프링 부트 2.5.6~2.5.8 MariaDB 10.6.5 메이븐(Maven) 이번 글에서는 전체 설치 과정을 다 적지 않고 JDK 환경변수 설정하는 부분과 인텔리제이 설치 시 옵션 선택하는 부분에 대해서만 작성한다. 자바 JDK 설치 시 환경변수 설정 JDK를 다운 받으면 환경변수를 추가해야 한다. (.msi파일로 자바를 설치하면 자동으로 환경변수에 추가된다고 한다.) 환경변수를 추가하기 위해서 우선 [제어판] → [시스템 및 보안] → [시스템] 으로 이동한다...

[스프링 부트 핵심 가이드] 02. 개발에 앞서 알면 좋은 기초 지식

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 2.1 서버 간 통신 애플리케이션 하나에 여러 기능을 넣어 개발하지 않고, 애플리케이션을 기능별로 나눠서 개발하는데 이를 '마이크로서비스 아키텍쳐(MSA; Microservice Architecture)'라고 한다. 이렇게 기능별로 구분해서 독립적인 애플리케이션을 개발하게 되면 각 서비스 간에 서로 통신해야 하는 경우가 발생한다. 이러한 통신을 '서버 간 통신' 이라고 한다. 서버 간 통신은 한 서버가 다른 서버에 통신을 요청하는 것을 의미하고, 한 대는 서버, 다른 한 대는 클라이언트가 되는 구조이다. 다양한 통신 방식이 존재하지만 가장 많이 사용되는 방식은 HTTP/HTTPS 방식이다. 2.2 ..

[스프링 부트 핵심 가이드] 01. 스프링 부트란?

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 1.1 스프링 프레임워크 스프링 프레임워크란? 자바 언어를 이용해 엔터프라이즈급 개발(기업 환경을 대상으로 하는 개발)을 편리하게 만들어주는 오픈소스 경량급 애플리케이션 프레임워크. 스프링이 애플리케이션 개발에 필요한 기반을 제공해 주기 때문에 개발자는 비즈니스 로직 구현에만 집중할 수 있다. 스프링의 특징 1.1.1 제어역전(IoC ; Inversion of Control) 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부(스프링 컨테이너 혹은 IoC컨테이너)에 위임한다. 즉 객체의 관리를 컨테이너에게 맡겨 제어권이 넘어간 것을 제어역전이라 한다. 이를 통해 의존성 주입, 관점 지향 ..

[이코테] 개인적인 정리 글 (2주차)

지난 글에서 작성했지만 문제는 일단 안 풀리면 넘기고 진행했다. 처음에 계획을 잡았을 때는 페이지 수만 보고 괜찮을 것 같다고 생각했었고 지난주까지는 그래도 예제와 실전문제 조금이었는데 이번 분량은 문제가 엄청 많아서 힘들게 진행했다. 못 푼 문제가 푼 문제보다 압도적으로 많다. 다음엔 풀지 못한 문제들도 잘 풀 수 있도록 공부!! ◎ 순차탐색 - 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 - 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용 - 시간 복잡도 : O(N) ◎ 이진탐색 - 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘 - 탐색 범위를 절반씩 좁혀가며 데이터를 탐색 - 한번 확인할 때마다 확인하는 원소의 개수가 절반씩 ..

[메서드 정리] HashSet

◎ add 새로운 객체를 저장한다 HashSetset = new HashSet(); set.add("A"); System.out.println(set); ◎ addAll(Collection c) 주어진 컬렉션에 저장된 모든 객체들을 추가한다. HashSetset = new HashSet(); set.add("A"); ArrayListlist = new ArrayList(); list.add("철수"); list.add("영희"); list.add("민수"); list.add("철수"); list.add("민수"); set.addAll(list); System.out.println(set);//[A, 철수, 민수, 영희] ◎ clear 저장된 모든 객체를 삭제한다 HashSetset = new HashSe..

[메서드 정리] LinkedList

◎ boolean add(Object o) / void add(int index, Objcect element) 지정된 객체를 LinkedList의 끝에 추가, index가 있으면 해당 index에 element 추가 LinkedList list = new LinkedList(); list.add("A"); list.add("B"); list.add("C"); list.add(2,"D"); System.out.println(list);//[A, B, D, C] ◎ addAll(Collection c) / addAll(int index,Collection c) 주어진 컬렉션에 포함된 모든 요소를 LinkedList의 끝에 추가한다. index가 있을 경우 해당 index에 추가 LinkedList list..

[메서드 정리] HashMap

◎ clear 저장된 모든 객체 제거 HashMap map = new HashMap(); map.clear(); ※ HashMap을 초기화 할 때 clear() vs new HashMap() 중 어느 것을 써야할까? - 일반적으로 new HashMap()을 사용하는 것이 유리 clear()는 내부적으로 해시 버킷 등을 다시 할당하고 원래 상태로 돌리는 작업을 수행하기 때문에 상대적으로 오버헤드가 크다. 따라서 새로운 인스턴스를 생성하는 new HashMap()이 일반적으로는 더 빠르다. (상황에 따라 clear()가 빠른 경우가 있지만 일반적으로는 느리다.) ◎ clone 현재 HashMap 복사 HashMap map = new HashMap(); map.put("철수",1); HashMap map2 =..

[이코테] 개인적인 정리 글 (1주차)

'이것이 취업을 위한 코딩테스트다'를 읽고 알고리즘 별로 정리하려는 계획을 세웠다. 책에 적힌 공부법을 보니 하루 3시간씩 한달에 걸쳐 공부하는 방법을 추천한다고 적혀있었다. 자바의 정석 때도 그랬지만 계획을 너무 타이트하게 잡아서 많이 후회하기도 했다. 그래도 일단 한번 다 읽고 다시 회독하겠다는 마음으로 우선 문제를 30분동안 고민해보고(원래는 30분안에 코드도 작성해야 한다.) 만약 못풀겠다 싶으면 다음 회독 때 풀 것을 기약하며 일단 넘어갔다. (그렇지 않으면 빠르게 완독하지 못할 것 같다.) 원래 예정은 알고리즘 별로 글을 따로 만들까 생각했지만 생각보다 책 내용이 개념적인 설명보다는 예제와 풀이 위주로 구성되어 있어서 책 내용만으로 별도의 글을 적을 경우 내용이 많이 부실하지 않을까 생각하여 ..

[메서드 정리] ArrayList

◎ add ArrayList 마지막에 객체를 추가한다. 성공하면 true 반환. 매개변수 앞에 인덱스를 매개변수로 넣을 경우 해당 인덱스에 두번째 매개변수값을 저장한다. ArrayList list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); //list = {A,B,C,D} list.add("2,A"); //list={A,B,A,D} ◎ clear ArrayList를 완전히 비운다. ArrayList list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); int size = list.size(); //size = 4..

[메서드 정리] StringBuffer & StringBuilder

◎ append 매개변수로 입력된 값을 문자열로 변환하여 StringBuffer(StringBuilder)인스턴스가 저장하고 있는 문자열의 뒤에 덧붙인다. StringBuffer sb = new StringBuffer("aaa"); StringBuffer sb2 = new StringBuffer(10.0f); sb.append(sb2); //sb = "aaa10.0" ◎ capacity / length StringBuffer(StringBuilder)의 버퍼 크기를 알려준다. length는 버퍼에 담긴 문자열의 길이를 알려준다. StringBuffer sb = new StringBuffer(50); sb.append("aaa"); int a = sb.capacity(); //a=50 int b = sb...