전체 글 132

MongoDB 이용하기

파이썬을 기준으로 작성된 글이다. 우선 MongoDB에 DB를 생성했다면, 아래와 같은 창이 뜰 것이다. 1. 빨간 원으로 표시한 Connect를 누른다. 누른다면 아래와 같은 창이 뜰 것이다. 2. 맨 위에있는 Connect to your application에 있는 Drivers를 누른다. 3. 위의 붉은 동그라미에 Driver에서 사용할 언어(java, python 등)를 선택하고 Version 에서는 언어의 버전을 선택한다. 4. 아래의 붉은 동그라미의 코드를 복사한다. from pymongo import MongoClient client = MongoClient('application code 입력') db = client.dbsparta 5. 이후 위 코드의 application code 입력..

카테고리 없음 2023.06.02

모던 자바 알아보기(람다, 스트림, Optional)

모던 자바란 Java 8 이상의 버전을 가리키며, 새로운 기능들을 포함한 자바의 현대적인 개발 스타일과 패러다임을 의미한다. 모던 자바의 개선 사항들은 코드의 가독성, 유지보수성, 생산성, 성능 등을 향상시키고, 개발자들이 더 효율적으로 자바 애플리케이션을 개발할 수 있게 한다. 이전 버전의 자바와 비교했을 때, 다음과 같은 주요 개선 사항들이 있다. 1. 람다 표현식 (Lambda Expressions): 함수형 프로그래밍을 위한 기능으로, 익명 함수를 간결하게 표현할 수 있다. 코드의 간결성과 가독성을 향상시킨다. 2. 스트림 API (Stream API): 컬렉션 데이터를 처리하기 위한 선언적인 방식을 제공한다. 병렬 처리와 메서드 체이닝 등을 통해 데이터 처리를 효율적으로 수행할 수 있다. 메서드..

Java 2023.05.30

쓰레드의 상태

쓰레드의 상태 상태 Enum 설명 객체생성 NEW 쓰레드 객체 생성(new()). start() 메서드 호출 전 상태 실행대기 RUNNABLE 실행 가능한 상태 실행 Running 실행중인 상태(start()메서드가 호출된 상태) 일시정지 WAITING 다른 쓰레드가 통지(notify)할 때까지 기다리는 상태 일시정지 TIMED_WAITING 주어진 시간 동안 기다리는 상태 일시정지 BLOCKED 사용하고자 하는 객체의 Lock이 풀릴 때까지 기다리는 상태 종료 TERMINATED 쓰레드의 작업이 종료된 상태

Java 2023.05.30

동기화(synchronized)

멀티 쓰레드의 경우, 자원을 공유하여 작업하기에 장애나 버그가 발생할 수 있다. 이러한 일을 방지하기 위한 방법이 동기화(synchronized)이다. synchronized(동기화)란? 한 쓰레드가 진행중인 작업을 다른 쓰레드가 침범하지 못하도록 막는 것이다. 동기화를 하려면 다른 쓰레드의 침범을 막아야하는 코드들을 '임계영역'으로 설정하여야 한다. 임계영역 : Lock을 가진 단 하나의 쓰레드만 출입이 가능한 영역 동기화 방법 1. 실행할 메서드 앞에 synchronized를 붙여 임계영역을 지정한다. public synchronized void asyncSum() { //코드 구현 .... } 2. 실행할 코드 묶음 앞에 synchronized를 붙여 임계영역을 지정한다. synchronized(해..

Java 2023.05.30

쓰레드 제어 메소드

쓰레드의 제어 쓰레드의 상태는 위와 같은 그림으로 나타낼 수 있다. interrupt() interrupt()는 일시정지 상태인 쓰레드를 실행대기 상태로 만든다. sleep() 현재 쓰레드를 지정된 시간 동안 멈추게 한다. 자기 자신에 대해서만 멈추게 할 수 있다. try - catch문을 작성하여야 한다. join() 정해진 시간 동안 지정한 쓰레드가 작업하는 것을 기다린다. 시간을 지정하지 않았을 때, 지정한 쓰레드의 작업이 끝날 때까지 기다린다. try - catch문을 작성하여야 한다. join()의 예제 Thread thread = new Thread(task, "thread"); thread.start(); try{ //join의 괄호안에 값(시간)을 입력하지 않았기 때문에 //thread가 ..

Java 2023.05.29

데몬 쓰레드와 사용자 쓰레드, 쓰레드 그룹 및 우선순위

데몬 쓰레드 데몬 쓰레드란, background에서 실행되는 낮은 우선순위를 가진 쓰레드를 칭한다. 보조적인 역할을 담당하며 대표적인 데몬 쓰레드로는 메모리 영역을 정리해주는 GC가 있다. 데몬 쓰레드 생성코드 //쓰레드 생성 Thread thread = new Thread(deamon); //true입력 시 데몬 쓰레드가 됨 //데몬 쓰레드는 사전에 정의된 횟수와 상관없이 메인 쓰레드가 동작 완료 시 종료됨 thread.setDaemon(true); 사용자 쓰레드 사용자 쓰레드는 foreground에서 실행되는 높은 우선순위를 가진 쓰레드를 칭한다. 프로그램 기능을 담당하며 대표적인 사용자 쓰레드로는 메인 쓰레드가 있다. 쓰레드 우선순위와 쓰레드 그룹 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 부..

Java 2023.05.29

싱글 쓰레드와 멀티 쓰레드

싱글 쓰레드 싱글 쓰레드란, 프로세스 안에서 하나의 쓰레드만 실행되는 것을 의미한다. Main 메서드(public static void Main)만 실행시켰을 경우, 싱글 쓰레드라고 한다. Java에서 Main 메서드를 실행하는 쓰레드를 메인 쓰레드 라고 한다. JVM의 메인 쓰레드가 종료되면 JVM도 같이 종료된다. 멀티 쓰레드 멀티 쓰레드란, 프로레스 안에서 여러개의 쓰레드가 실행되는 것을 말한다. 하나의 프로세스는 여러개의 쓰레드를 가질 수 있으며, 이 쓰레드들은 프로세스의 자원을 공유한다 Java의 프로그램은 메인 쓰레드 외에 다른 작업 쓰레드들을 생성하여 여러개의 실행흐름을 만들 수 있다. 멀티 쓰레드의 장점 여러개의 작업을 동시에 수행함으로써 성능이 향상된다. 스택을 제외한 모든 영역에서 메모..

Java 2023.05.29

프로세스와 쓰레드

프로세스란, 프로세서(처리기, CPU)에 의해 처리되는 프로그램(실행중인 프로그램)을 의미한다. OS가 프로그램 실행을 위한 프로세스를 할당할 때, 프로세스 안에 프로그램 Code와 Data, 메모리 영역(Stack, Heap)을 함께 할당해준다. 1. 코드(Code)는 프로그램의 명령어(Instructions)를 포함하는 영역이다. 프로세스가 수행해야 할 특정 작업을 정의하며, Java main 메소드와 같은 코드를 의미한다 2. 데이터(Data)는 프로그램이 실행될 때 초기화되거나 할당되는 데이터들을 저장한다 프로세스가 사용하는 변수(전역 변수, 정적(Static) 변수, 상수(Constants)) 등이 저장된다. 3. 메모리(Memory)는 데이터와 명령어를 저장하는 물리적인 공간이다. 프로세스 실..

Java 2023.05.29

제네릭(Generic) 2

제네릭은 객체의 static 멤버에 사용할 수 없다 타입변수는 인스턴스 변수로 간주되고, 모든 객체에 동일하게 동작해야 하는 static 필드 특성 상 사용할 수 없다. 제네릭의 문법 1. 다수의 타입변수를 사용할 수 있다. public class Generic { //E를 출력타입, 나머지 값들을 입력 타입으로 사용 public E multiTypeMethod(T t, U u) { ... return E; } Generic instance = new Generic(); instance.multiTypeMethodA(longVal, intVal); } 2. 상속과 타입 관계는 그대로 적용된다. ex : 부모 클래스로 제네릭 타입변수를 지정하고, 그 안에 자식 클래스를 넘기는 것은 잘 동작한다 3. 와일드..

Java 2023.05.26