분류 전체보기

프로그래밍/Spring

[Spring] 스프링 프레임워크 들어가기 전, 자바 기초 지식 복습 (Interface, List)

스프링 프레임워크를 다루기 전에 꼭 필요한 자바 개념이 있다. 바로 인터페이스랑 리스트다. 1. 인터페이스란? 자바에서 클래스에 포함하는 메서드의 구체적인 내용을 작성하지 않고, 상수와 메서드 타입만 정의한 것이다. 극단적으로 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것이 바로 인터페이스의 역할이다. 즉, 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 인터페이스를 사용한다. 1.1 인터페이스 구조 인터페이스는 다른 클래스에서 구현하는 것을 전제로 만들어진다. 그 때문에 인터페이스를 선언할 때는 암묵적으로 public abstract 접근 제어자가 붙은 추상 클래스라고 불린다. 인터페이스는 interface 키워드를 통해 선언할 수 있으며, implement..

프로그래밍/Database

[Database] 트랜잭션 (Transaction) + 경쟁하면 생기는 문제점 3가지

1. 트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업단위 (1) 상태 변화 데이터베이스의 상태를 변화시킨 다는 것은 쿼리문을 가지고 데이터베이스에 접근해 수정하고, 삭제하는 것을 말한다. 백엔드 개발을 하면서 crud 작업을 수행하며 이와 같은 작업들이 모두 데이터베이스의 상태를 변화시키게 된다. (2) 작업 단위 작업단위는 프로젝트별, 상황별 정의하기 나름이다. 작업단위 예시 ex) 트랜잭션 : 오늘 날씨에 대한 일기 작성하기 오늘 일기 작성하기라는 작업 단위를 두었다면, 이 하나의 작업단위 내에는 (1) 오늘 날씨 데이터를 가져오기, (2) 일기를 DB에 저장하기 이렇게 두 가지 단위로 나눌 수 있다. 이 (1) (2) 를 수행한 것이 하나의 데이터베이스 상태를 ..

프로그래밍/Spring

[Spring] Spring MVC

1. 스프링 MVC (1) Dispatcher Servlet Dispatcher Servlet에서 모든 요청을 받는다. 수문장 역할 Dispatcher Servlet 은 어디로 요청을 보낼지, Handler Mapping 한테 물어봐야 한다. (요청 핸들러 메서드 호출) Handler Mapping에 대해서 예시를 들면, 도서관에서 책을 찾을 때 도서검색기에서 책을 검색하고 책의 위치를 알 수 있다. 여기서, 도서검색기는 Handler Mapping과 비슷한 역할이다. 책의 위치를 알고 그 위치대로 내가 찾으러 가면 되니까!! (2) Controller Dispatcher Servlet 이 Handler Mapping을 통해 해당되는 컨트롤러를 받아오면, Dispatcher Servlet 이 요청을 실제..

프로그래밍/Spring

[Spring] 스프링 프레임워크란?

1. 프레임워크란? 소프트웨어나 애플리케이션 개발을 간단하게 해주는 뼈대 자주 쓰일 만한 기능을 모아 놓은 유틸(클래스)들의 모음이다. 즉, 기본적인 설계나 필요한 라이브러리는 알아서 제공해주고, 개발자는 만들고 싶은 기능을 구현하는데 집중하라는 취지에서 만들어진 것! 1.1 프레임워크 장단점 장점 • 효율적 프레임워크가 개발에 필요한 최소한의 기능을 제공하기 때문에 자신이 모든 기능을 작성할 필요가 없고, 애플리케이션 개발에 필요한 시간과 비용을 줄일 수 있다. • 유지보수 프레임워크를 사용하면 코드가 보다 체계적이여서유지보수에 안정적이다. 단점 • 프레임워크에 있는 코드를 습득하고 이해하는데 시간이 걸린다. 2. 프레임워크 vs 라이브러리 개발자가 구현하고자 하는 기능을 쉽게 제공해줄 수 있다는 점에..

프로그래밍/Data Structure

해시 테이블 (Hash Table)

1. 해시 테이블 (Hash Table) - 키 (Key), 값 (Value)을 대응시켜 저장하는 데이터 구조 - 키를 통해 해당 데이터에 빠르게 접근이 가능하다. - 해시 맵, 해시 표라고도 한다. - 해싱 (Hashing) 키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정 1.1 해시 테이블 구조 - 키 : 해시 테이블 접근을 위한 입력 값 - 해시 함수 : 키를 해시 값으로 매핑하는 연산 (키 -> 해시 값) - 해시 값 : 해시 테이블의 인덱스 - 해시 테이블 : 키-값을 연관시켜 저장하는 데이터 구조 좋은 Hash Function은 Hash Value에 값을 골고루 분포되어 접근할 수 있게 만들어주는 것이다. 그렇지 않은 경우, 접근하는 쪽에 계속 접근하게 돼서해시충돌이 발생하게..

프로그래밍/Java

배열(Arrays) 정렬 (오름차순, 내림차순)

1. 배열(Arrays) 정렬 배열에서 정렬을 할 때는 import.util.Arrays 을 통해 sort() 를 이용함 1.1 String 배열 정렬 (오름차순, 내림차순) public static void main(String[] args) { String[] str_arr = {"a", "d", "c", "b"}; System.out.println("기존 배열"); for (String s : str_arr) { System.out.print(s + " "); // a d c b } System.out.println(); System.out.println("String 배열 오름차순"); Arrays.sort(str_arr); for (String s : str_arr) { System.out.pr..

프로그래밍/백준

# 10818 - 최소, 최대

문제 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 나는 이 문제를 세가지 방법으로 풀어보았다. 코드 1 - 기준점 잡고 최대, 최소 비교하기 import java.u..

프로그래밍/Java

배열(Array)

배열 (Array) ◾ 같은 타입의 데이터를 하나의 묶음으로 나열한 선형 자료구조 ◾ 연속된 메모리 공간에 순차적으로 저장함 ◾ 배열의 크기가 고정되어 있고, 선언 시 배열의 크기를 정하고 이를 변경할 수 없음 장점 1. 인덱스를 이용해 접근하기 때문에, 검색 성능이 좋음 2. 데이터의 크기가 확정적일 때 배열을 사용하는 것이 메모리나 처리속도 면에서 좋음 단점 1. 자료의 삽입, 삭제에 비효율적 (삽입, 삭제가 이루어질 때마다 배열의 크기를 다시 지정하고 삽입, 삭제 수행해야 함) 2. 배열의 크기를 바꿀 수 없음 배열을 크게 잡을 경우 메모리 낭비 배열은 데이터가 정해져 있을 때, 데이터 삽입 삭제가 적은 경우, 검색 등 이러한 상황에서 쓰는 게 좋다. 시간복잡도 1. 삽입/삭제 배열의 맨 앞에 삽입..

프로그래밍/Java

GET, SET 메서드

🙋‍♀️ 객체 지향 프로그래밍 장단점 1. 장점 • 코드 재사용 용이 - 상속을 통해 코드의 재사용을 높일 수 있음 • 유지보수 쉬움 - 캡슐화를 통해 유지보수가 쉬움 - 절차지향프로그래밍에서는 코드를 수정할 때 일일이 찾아 수정해야 함 - 반면, 객체지향프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 있기 때문에 해당 부분만 수정하면 됨 • 대형 프로젝트에 적합 - 클래스 단위로 모듈화 개발로 업무 분담이 쉬움 2. 단점 • 처리속도가 상대적으로 느림 • 객체가 많으면 용량이 커질 수 있음 • 설계시 많은 시간과 노력 필요 1. 접근 제어 지시자 • private - 같은 클래스 내부에서만 접근 가능 - 외부 클래스, 상속관계의 클래스에서도 접근 불가 • protected -..

dbguswn
'분류 전체보기' 카테고리의 글 목록 (3 Page)