반응형

언어(Language) 108

[Java] 자바 큐(Queue) 인터페이스 정리

FIFO (First In First Out) 큐(Queue)는 먼저 넣은 객체가 먼저 빠져나가는 선입선출(FIFO : First In First Out) 자료구조이다. 자바의 컬렉션 프레임워크에는 후입선출(LIFO : Last In First Out) 자료구조를 제공하는 스택(Stack) 클래스와 FIFO 자료구조를 제공하는 큐(Queue) 인터페이스를 제공하고 있다. 큐(Queue)를 응용한 대표적인 예시로 BFS(너비 우선 탐색) 알고리즘과 스레드풀(ExceutorService)의 작업 큐이다. 작업 큐는 먼저 들어온 작업부터 처리하는 구조로 되어있다. 큐 (Queue) Queue 인터페이스는 FIFO 자료구조에서 사용되는 메서드를 정의하고 있다. 이를 구현한 대표적인 클래스는 LinkedList이..

[Java] 명령형 프로그래밍과 선언형 프로그래밍의 차이

명령형 프로그래밍 명령형 프로그래밍은 실행할 동작을 구체적으로 명시하는 것으로 컴퓨터가 수행할 명령들을 순서대로 코드로 작성하는 것을 의미한다. 명령형 프로그래밍은 특정 문제를 어떻게(how) 해결할 것인가를 중점으로 프로그래밍한다. 이를 절차적 프로그래밍이라고도 한다. 명령형 프로그래밍 예제 public class Example { public static void main(String[] args){ List numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int sum = 0; for(int number : numbers){ if(number % 2 == 0){ sum += number; } } System.out.println(sum); } } 1부터 10..

[Java] JDBC란 무엇인가? - Java Database Connectivity

JDBC란? JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다. JDBC는 Java 애플리케이션에서 데이터베이스에 접근하기 위해 JDBC API를 사용하여 데이터베이스에 연동할 수 있으며, 데이터베이스에서 자료를 쿼리(Query)하거나 업데이트하는 방법을 제공한다. JDBC 표준 인터페이스 JDBC는 3가지 기능을 표준 인터페이스로 정의하여 제공한다. java.sql.Connection - 연결 java.sql.Statement - SQL을 담은 내용 java.sql.ResultSet - SQL 요청 응답 Spring Data JDBC,..

[Java] 스택 트레이스(Stack Trace) 제대로 알고 읽기

본 내용은 OKKY에서 활동하시는 fender 님의 게시물을 참고하여 작성하였습니다. https://okky.kr/articles/338405 OKKY - All That Developer OKKY는 국내 최대 개발자 지식공유 플랫폼입니다. 개발자에게 필요한 기술 Q&A, 아티클, 커리어, 네트워킹, 취업, IT행사를 지원합니다 okky.kr 스택 트레이스란? 스택 트레이스는 프로그램이 시작된 시점부터 현재 위치까지의 메서드 호출 목록이다. 스택 트레이스는 예외가 발생할 경우 JVM이 어디서 예외가 발생했는지 알려주는 역할을 한다. 스택 트레이스 예시 다음 코드는 강제로 NPE(NullPoniterException)를 발생시키는 코드이다. 대체로 개발을 하게 되면 여러 클래스를 참조하며, 외부 클래스의 ..

[Java] 자바 문자열 시작 문자, 끝 문자 판단 - startsWith(), endsWith()

자바 언어를 통해 알고리즘 문제를 풀다 보면 특정 문자열의 시작 문자 또는 끝 문자를 판단해야 할 때가 있다. 이 경우 startsWith() 메서드와 endsWith() 메서드를 활용하면 쉽게 해결할 수 있다. startsWith() startsWith() 메서드는 특정 문자열이 입력받은 문자열로 시작하는 지를 판단하는 메서드이다. 반환 타입은 boolean으로 입력받은 문자열로 시작하는 경우 true, 그렇지 않으면 false를 반환한다. 입력 값이 문자열이기 때문에 공백도 인식하여 문자로 취급하니 이 점을 유의해야 한다. 사용 예제 startsWith(String prefix) public class Test { public static void main(String[] args) { String ..

객체지향 설계 원칙이란 무엇인가? - SOLID란?

결합도와 응집도 결합도(Coupling) 결합도는 클래스 간의 의존성이 낮을수록 결합도가 낮다고 볼 수 있다. 하나의 클래스를 수정하는데 의존하는 다른 클래스를 모두 수정해야 한다면 결합도가 높은 것이다. 따라서 개발함에 있어 낮은 결합도로 개발하는 것이 주된 목표이다. 응집도(Cohesion) 응집도는 비슷한 일을 하는 기능(모듈 내부의 구성 요소)들이 기능적 관련성으로 잘 뭉쳐져 있다면 높은 응집도를 가진다고 볼 수 있다. 하나의 기능을 변경할 때, 다른 곳에서도 변경해야 할 곳이 많다면 응집력이 낮은 것이다. 따라서 개발함에 있어 높은 응집도로 개발하는 것이 주된 목표이다. 즉, 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고, 응집도는 높여야 한다. 객체지향 설계 원칙(SOLID) SOLID는 컴..

[Java] 자바 스택(Stack) 클래스 메서드 정리 및 활용

스택이란? 스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이다. 즉, 데이터를 순서대로 쌓는 자료구조이다. 실생활에서 흔히 접할 수 있는 스택은 프링글스와 같은 원통에 들어가 있는 과자를 떠올리면 이해하기 쉽다. 가장 위에 있는(가장 나중에 들어간) 과자를 먼저 꺼내어 먹는 구조이기 때문이다. 스택은 가장 나중에 들어온 데이터가 가장 먼저 빠져나가는 후입선출(LIFO : Last In First Out) 구조로 되어 있어, 프로그래밍에서 데이터가 입력된 순서대로 처리되는 것이 아닌, 가장 나중에 들어온 데이터를 먼저 처리할 때 사용한다. 스택의 특징 후입선출 (LIFO : Last In First Out) 구조 : 먼저 들어온 데이터가 나중에 빠져..

[Java] 자바 정규 표현식(Regex) 개념 정리 및 활용

Intro 대부분의 웹 서비스에서 회원 가입을 필요로 하며, 회원 가입 시 ID 또는 비밀번호를 설정할 때 특정 조건에 맞추어 입력하라고 요구한다. 예를 들어 비밀번호 입력 시 영문 대소문자를 한 번씩 이상 사용해야 하며, 12자 이상, 특수 문자 1개 이상 포함 등 서비스에서 요구하는 조건에 맞추어야 한다. 서비스 관리자는 이러한 요구사항의 유효성을 어떻게 설정하고 검증하는지는 여러 가지 방법이 있을 것이다. 문자를 하나하나 검사하거나, 모든 조건에 대해 참인 경우 등 다양한 방법이 있겠지만, 문자열 관리를 간편하게 하는 정규표현식도 있다. 정규 표현식(Regex : Regular Expression)이란? 정규표현식은 문자열에서 특정한 규칙에 따른 문자열 집합을 표현하기 위해 사용되는 형식 언어이다...

[Java] 자바 가상 머신(JVM: Java Virtual Machine)이란?

Intro C++과 자바는 인기 있는 객체지향 프로그래밍 언어이다. 하지만 자바는 C++과는 다르게 운영체제에 독립적이라는 큰 차이가 있다. 즉, C++은 운영체제에 따라 새로운 프로그램을 작성해야 하는 반면에, 자바는 소스 코드를 한 번만 작성하면, 어떤 운영체제에서도 코드를 수정할 필요 없이 프로그램을 실행시킬 수 있다. 이렇게 운영체제에 독립적일 수 있도록 도와주는 것이 자바 가상 머신(JVM: Java Virtual Machine)이다. JVM이란? (자바 가상 머신) JVM은 자바 프로그램을 실행시키는 도구로 자바 언어로 작성한 코드들은 JVM이 해석하게 되는 별도의 프로그램이다. 먼저, 프로그램이 실행되기 위해서는 CPU, 메모리, I/O 장치 등 컴퓨터 자원을 프로그램이 할당받아야 한다. 이..

[Java] 자바 스레드 상태 제어 메서드 종류 및 사용법

Intro 스레드를 생성하고 실행시키기 위해서는 start() 메서드를 호출해야 한다. 엄밀히 말하면 start() 메서드는 스레드를 실행시키는 것이 아닌 실행 대기 상태로 만들어주는 메서드이다. 따라서, start() 메서드가 호출되면 해당 스레드는 대기 상태가 되고, 운영체제가 스레드를 실행시킨다. 이는 스레드에는 상태가 존재한다는 것을 알 수 있으며, 이러한 스레드의 상태를 바꿀 수 있는 메서드가 존재한다. 스레드의 상태 제어 메서드 스레드 상태를 제어하기 위한 여러 가지 메서드가 존재한다. 스레드를 실행 대기 상태로 만드는 start(), notify(), interrupt(), yield() 메서드, 실행 중인 스레드를 잠시 멈추는 sleep(), wait(), join() 메서드가 있다. sl..

반응형