지금 시대는 '관계형 데이터베이스(Oracle, MySql)'을 많이 사용한다. 즉, 객체를 관계형 DB에 넣어 관리해야하는데, 여기서 우리는 SQL 굴레에 빠지게 된다. 🤔 그럼 SQL의 문제점은 무엇일까? 1. 무한 반복, 지루한 코드 - crud, 자바 -> 객체, 객체 -> 자바로 무한히 반복해야한다. 결국 관계형 데이터베이스를 사용하면 sql에 의존할 수밖에 없다. 객체와 관계형 데이터베이스의 차이점은 다음과 같다. 1. 상속, 2. 연관관계, 3. 데이터 타입, 4. 데이터 식별 방법 위의 문제를 해결하기 위해서 개발자가 'SQL 매퍼' 역할을 수행해야 한다. 계층형 아키텍처 진정한 의미의 계층 분할이 어렵다. 즉, 객체답게 모델링 할수록 매핑 작업만 늘어난다. 객체를 자바 컬렉션에 저장 하듯..
오늘은 springBoot와 github를 연동한 후 gitignore 파일을 생성해 github에 올리기 불필요한 파일들을 관리해보자. .👇👇 그전에 springboot 프로젝트와 github의 연동이 궁금하다면 다음을 참고하자. (링크) [스프링 부트와 AWS로 혼자 구현하는 웹서비스] 인텔리제이(IntelliJ)와 깃허브(GitHub) 연동하기 오늘은 인텔리제이(IntelliJ)와 깃허브(GitHub)를 연동하는 방법에 대해 포스팅하겠다. 1. 먼저 깃허브(Gtihub)사이트에 접속해 회원가입을 한다. 링크 : https://github.com/ GitHub: Where the world builds so.. dandev.tistory.com 그럼 바로 들어가보자. 1. 우선 intelliJ(IDE..
오늘은 h2 데이터베이스를 생성하는 방법에 대해 알아보자. 1. 우선 h2 데이터베이스의 다운로드 위치로 이동한다. 2. h2 데이터베이스를 실행하고 나면 화면 하단 시작표시줄에 다음과 같은 아이콘이 생성된다. 3. 오른쪽 마우스를 클릭 해 'create a new database'를 클릭한다. 4. database 이름을 입력하고 'create' 버튼을 누른다. create 버튼 클릭 후 'database was created successfully.'라는 말이 나오면 성공한 것이다. 👉 그럼 이제 h2 데이터베이스 생성은 끝났고 데이터베이스에 연결을 진행해보자. 1. h2 데이터베이스 실행 후 url과 비밀번호를 입력 하고 '연결 시험' 버튼을 클릭해보자. 2. 다음과 같이 '시험 성공'이라는 말이 ..
🤔 Stack ✔ LIFO(Last In First Out) 마지막에 저장된 것을 먼저 꺼냄. 저장(push), 추출(pop) 🤔 Queue ✔ FIFO(First In First Out) 제일 먼저 저장한 것을 먼저 꺼냄. 따라서 LinkedList가 적합함!! 저장(offer), 추출(poll) 다음의 예제를 통해 스택과 큐에 대해 이해하자. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Ex11_4 { static Queue q = new LinkedList(); static final int MAX_SIZE = 5; // Queue에 최대 5개까지만 저장 public static ..
다음의 포스팅을 꼭 같이 읽어볼 것을 적극 권장한다. (링크1) (링크2) 이름 특징 Iterator 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스 ListIterator Iterator에 양방향 조회기능 추가(List를 구현한 경우만 사용가능) Enumeration Iterator 구버전 다음과 같이 컬렉션 클래스에 대해 iterator()를 호출하여 Iterator를 얻은다음 반복문, 주로 while문을 사용해서 컬렉션 클래스의 요소들을 읽어온다. import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class P413 { public static void main(String[] args) { ..
🤔 컬렉션 프레임워크(collections framework) : 데이터를 저장하는 클래스들을 표준화한 설계 - 컬렉션(다수의 객체를 다루기 위한 표준화된 프로그래밍 방식) - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - java.util 패키지에 포함. jdk 1.2부터 제공 🤔 컬렉션(collection) : 다수의 데이터, 데이터 그룹 - 여러 객체(데이터)를 모아 놓은 것 🤔 프레임워크(framework) 표준화된 체계적인 프로그래밍 방식 🤔 컬렉션 클래스 : 다수의 데이터를 저장할 수 있는 클래스 (예 : Vector, ArrayList, HashSet) 🤔 라이브러리와 프레임워크 ✔ 라이브러리 : 공통으로 사용될만한 유용한 기능을 모듈화하여 제공 ✔ 프레임워크 : 단순히 기능뿐..
🤔 Comparator와 Comparable이란? ✔ 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스 ✅ Comparable : 기본 정렬기준을 구현하는데 사용 ✅ Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬할 때 사용 public interface Comparator { int compare(Object o1, Object o2); // o1, o2 두 객체 비교 boolean equals(Object obj); // equals를 오버라이딩하라는 뜻 } public interface Comparable { int compareTo(Object o); // 주어진 객체(o)를 자신과 비교 } ✔ compare()와 compareTo()는 두 객체의 비교 결과를 반환하도..
🤔 Arrays란? ✔ 배열을 다루기 편리한 메서드(static) 제공 ✅ 배열의 출력 - toString() ✅ 배열 복사 - copyOf(), copyOfRange() ✅ 배열 채우기 - fill(), setAll() ✅ 배열의 정렬과 검색 - sort(), binarySearch() (이진탐색은 정렬되어있을 때만 가능하므로 정렬 먼저 하고 binarySearch() 사용 해야 한다.) int[] arr = {3, 2, 0, 1, 4}; int idx = Arrays.binarySearch(arr, 2); // idx=-5 잘못된 결과 (왜냐? 정렬되어 있지 않아서) Arrays.sort(arr); // 배열 arr을 정렬한다. System.out.println(Arrays.toString(arr))..
🤔 Iterator, ListIterator, Enumeration 이란? ✔ 컬렉션에 저장된 데이터를 접근(읽어오기)하는 데 사용되는 인터페이스 ✔ Enumeration은 Iterator의 구버전 ✔ ListIterator는 iterator의 접근성을 향상시킨 것(단방향 -> 양방향) ✔ 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 ✔ 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 🤔 Map과 Iterator ✔ Map에는 Iterator()가 없다. ✔ keySet(), entrySet(), values()를 호출해야한다. Map map = new HashMap(); ... Iterator it = map.entrySet().iterator(); 사용된 ..
필자가 최근에 주로 포스팅하는 hackerrank challenges 포스팅에서도 알 수 있지만 필자는 값을 받아올 때 보통 for문을 많이 사용한다. 그런데 hackerrank에서도 기본 소스 코드에 Iterator를 이용해 값을 받아오는 코드가 많은데 오늘 Iterator를 쓰는 확실한 이유를 알게 되었다!! 다음의 코드를 보자. import java.util.ArrayList; import java.util.Iterator; public class Iterator사용이유 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.ad..
🤔 Stack이란? ✔ LIFO 구조(Last In First Out) 마지막에 저장된 것을 제일 먼저 꺼냄. 저장(push) 추출(pop) 🤔 Queue란? ✔ FIFO 구조(First In First Out) 제일 먼저 저장한 것을 제일 먼저 꺼냄. 🤔 Stack의 메서드 🤔 pop()과 peek()의 차이 ✅ pop()은 맨 위에 값을 꺼내는 것이고 ✅ peek()은 맨 위에 값을 찾는 것이다. 🤔 search() ✅ stack에서 주어진 객체를 찾아 위치 반환하는 메서드 ✅ 못 찾으면 -1 반환 ✅ 배열과 달리 위치 1부터 시작 🤔 Queue 메서드 ✔ offer : 저장 ✔ poll : 추출 🤔 poll()과 remove()의 차이 ✅ remove() : 예외 발생(try-catch로 예외처리)..
🤔 LinkedList 배열의 장단점 ✅ 장점 ✔ 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. ✅ 단점 ✔ 크기를 변경할 수 없다. 크기를 변경해야 할 경우 새로운 배열을 생성 후 데이터를 복사해야 함. 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨. ✔ 비순차적인(중간에 데이터 넣는 것) 데이터의 추가, 삭제에 시간이 많이 걸림. 데이터를 추가하거나 삭제하기 위해 다른 데이터를 옮겨야 함. 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝에서 삭제)는 빠르다. 🤔 LinkedList - 배열의 단점을 보완 ✔ 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결(link) ✔ 데이터의 삭제 : 단 한 번의 참조..
🤔 컬렉션 프레임워크(collections framework) ✔ 컬렉션(collection) - 여러 객체(데이터)를 모아 놓은 것 ✔ 프레임웍(framework) - 표준화, 정형화된 체계적인 프로그래밍 방식 ✔ 컬렉션 프레임웍(collections framework) - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - java.util 패키지에 포함. JDK 1.2부터 제공 ✔ 컬렉션 클래스(collection class) - 다수의 데이터를 저장할 수 있는 클래스(예, Vertor, ArayList, HashSet) 🤔 컬렉션 프레임워크의 핵심 인터페이스 List : 순서 o, 중복 o Set : 순서 x, 중복 x Ma..
오늘은 예외 되던지기와 연결된 예외에 대해 학습하자 🤔 예외 되던지기(exception re-throwing) ✔ 예외를 처리한 후에 다시 예외를 발생시키는 것 ✔ 호출한 메서드와 호출된 메서드 양족 모두에서 예외처리하는 것 백문이 불여일견!! 코드를 통해 확인하자. public class 예외되던지기 { public static void main(String[] args) { try { method(); }catch(Exception e) { // 4. (main 메서드에서 예외 처리됨.) 출력 System.out.println("main 메서드에서 예외 처리됨."); } } static void method() throws Exception { try { throw new Exception(); //..
- Total
- Today
- Yesterday
- Java
- 해커랭크
- 코드
- 풀이
- 강의
- BAEKJOON
- 소스코드
- 챌린지
- 자바
- 개발자
- ORM
- hackerrank challenges
- 그리디
- 정보처리산업기사 공부법
- 정보처리 산업기사
- stack
- LinkedList
- JPA
- 해커랭크 챌린지
- 22 정보처리산업기사
- 22 정보처리 산업기사
- 자바의 정석
- 백준
- 정보처리산업기사
- 해커랭크 자바
- challenges
- 해커랭크 자바 챌린지
- 디버깅
- hackerrank
- queue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |