전체 글 47

[Java] - 쓰레드(Thread)의 사용

쓰레드란 무엇인가? 쓰레드가 무엇인지에 대해서 검색하면 프로세스 내에서 실행되는 흐름의 단위라고 나온다. 기본적으로 하나의 프로세스 당 최소 한개의 쓰레드를 가진다. 즉, 이 말은 하나의 프로세스 내에 여러 쓰레드를 가질수도 있다는 것을 뜻한다. 자바에서 쓰레드를 구현하는 방법에는 두가지가 있습니다. Thread Runnable 둘의 차이는 Thread를 클래스라서 extends를 이용해서 상속 받아야 되지만 Runnable은 인터페이스 이기 때문에 implements를 이용해서 삭속 받는다는 것이다. Thread 클래스를 상속 받아서 구현하면 다른 클래스를 상속 받을수 없지만 Runnable 인터페이스를 상속 받으면 동시에 다른 클래스도 상속 받을수 있다는 장점이 있다. 둘 모두 예시를 통해 확인해보자..

[Java] - 싱글턴 패턴 (Singleton Pattern)

싱글턴 패턴이란? 하나의 인스턴스만 가진 클래스를 정의하고, 해당 인스턴스를 다른 클래스에서 사용할수 있게 하는 디자인 패턴을 뜻한다. 즉, 클래스의 인스턴스는 한번만 생성되어야 하며, 생성된 객체는 모든 다른 클래스에서 사용될수 있다. 찾아보니 Spring framework에서 기본 객체 운영방식이 싱글턴 패턴이라고 하네요. 자바를 공부하면서 꼭 알아둬야 되는 디자인 패턴 같습니다. 언제 사용하는가 시스템 상에서 단 한번 객체를 생성하고 여러 곳에서 공유해 사용하고자 할 때 적용방법 생성자의 접근 제어자를 private으로 명시해 외부에서 객체 생성하는 것을 막는다. private static 멤버변수 차원에서 클래스 로딩시점에 자신의 생성자를 이용해 객체를 생성하고 주소값을 저장한다. public s..

[Java] - JDBC를 사용하여 데이터베이스 연결 (오라클db)

JDBC ( Java Database Connectivity ) JDBC는 자바에서 데이터베이스에 접속할수 있도록 도와주는 API 입니다. 자바에서 데이터베이스에 접속하기 위해선 컴퓨터에 데이터를 관리하는 소프트웨어인 DBMS(Database Management System)이 설치되어 있어야 합니다. 예를 들면, mariadb, 오라클db, mysql 같은 것들이 DBMS 프로그램들입니다. 참고로 제 컴퓨터에는 오라클db가 설치되어 있습니다. 만약 오라클db가 설치되어 있지 않다면, 아래 링크에서 다운 받으시면 됩니다. * 다운 받기 위해서는 오라클에 회원가입이 필요합니다. https://www.oracle.com/database/technologies/xe-downloads.html ㅇ JDBC (..

[프로젝트] - 멀티 스레드를 활용한 채팅 프로그램 (Java)

오늘은 자바를 공부하면서 소규모 프로젝트로 멀티 스레드를 활용한 다중 클라이언트 채팅 프로그램을 만들어 보았습니다. 채팅 프로그램의 작업 흐름 서버 쪽에서 SeverSocket을 생성 클라이언트 쪽에서 해당 IP에 Socket을 생성 서버쪽에서 접속하려는 클라이언트를 accept()하고 리스트에 클라이언트 저장 클라이언트가 작업 요청 (채팅 프로그램이니 작업은 메세지 전송) 서버 쪽 스레드에서 요청을 처리 응답을 클라이언트에게 반환 받은 메세지를 리스트에 있는 모든 클라이언트들에게 전달 이유는 단체 채팅방에 있는 모든 유저는 채팅을 보낸 유저의 채팅을 볼수 있어야 하기 때문 package step6; import java.io.BufferedReader; import java.io.IOException;..

Toy Project 2021.04.04

[SQL] - Grant, Revoke (Data Control Language/ DCL)

SQL SQL은 Structured Query Language의 약자로 데이터 베이스에 있는 정보 검색을 용이하게 하는 프로그래밍 언어 입니다. SQL은 크게 3종류로 나뉘어 집니다. Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL) 오늘은 목록에서 첫번째인 데이터 정의 언어 (DCL)에 대해서 알아보겠습니다. 데이터 제어 언어 (Data Control Language) 데이터 제어 언어는 데이터베이스에서 데이터에 대한 접근을 제어하는 언어 입니다. GRANT - 유저에게 데이터베이스에 대한 권한을 부여 GRANT role_name TO user WITH ADMIN OPTION; GRANT ..

Database/SQL 2021.03.31

[SQL] - Insert, Delete, Update, Select (Data Manipulation Language/DML)

SQL SQL은 Structured Query Language의 약자로 데이터 베이스에 있는 정보 검색을 용이하게 하는 프로그래밍 언어 입니다. SQL은 크게 3종류로 나뉘어 집니다. Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL) 오늘은 SQL에서 데이터를 조작하는 언어인 Data Manipulation Language (DML)에 대해서 알아보겠습니다. 데이터 조작어 (Data Manipulation Language) 데이터 조작어는 데이터베이스 안에 있는 테이블의 데이터를 검색, 등록, 삭제, 갱신 하는데에 사용 됩니다. 1. INSERT INSERT는 테이블 안에 새로운 데이터를 삽..

Database/SQL 2021.03.29

[SQL] - Create, Drop, Alter (Data Definition Language/DDL)

SQL SQL은 Structured Query Language의 약자로 데이터 베이스에 있는 정보 검색을 용이하게 하는 프로그래밍 언어 입니다. SQL은 크게 3종류로 나뉘어 집니다. Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL) 오늘은 목록에서 첫번째인 데이터 정의 언어 (DDL)에 대해서 알아보겠습니다. 데이터 정의 언어 (DDL) 데이터 정의 언어 (DDL) 는 말 그대로 SQL에서 데이터를 정의하는데에 사용되는 언어들입니다. DDL에는 CREATE, DROP, ALTER가 있는데요. CREATE는 데이터 테이블을 생성하는데에 사용 됩니다. 그럼 CREATE를 이용해서 고객들의 id..

Database/SQL 2021.03.25

[자바/Java] - 문자열 (String)

문자열 (String) 자바에서 문자열을 나타낼때 사용하는 객체는 String 입니다. String을 사용하여 문자열을 사용하고 싶다면, String str = "Hello World"; 이렇게 사용하시면 됩니다. String 객체를 사용하여 "Hello World"라는 문자열을 str에 할당한 코드 입니다. Method String에서 자주 사용되는 함수들을 알아보도록 하겠습니다. startsWith()는 문자열이 지정한 문자로 시작하는지 확인하는 함수 입니다. 아래의 경우 만약 str이 "M"으로 시작한다면 true를 반환하고 그렇지 않다면 false를 반환 합니다. String str = "Melon"; boolean startswith = str.startsWith("M"); System.out...

[자바/Java] 오버라이딩 (Overriding)

오늘은 자바의 오버라이딩에 대해서 공부 해봤습니다. 오버라이딩이란? 조상 클래스로부터 상속 받은 메소드의 내용을 자식 클래스에서 변경하는걸 뜻 합니다. 오버라이딩의 조건 오버라이딩 하는 메소드의 이름이 같아야 한다. 메소드의 매개변수(parameter)가 같아야 한다. 메소드의 리턴 타입도 같아야 한다. 그럼 어떤 경우에 오버라이딩이 사용 되는지 알아 보도록 하겠습니다. Point라는 클래스인데요. 일직선에서 한 점을 뜻하는 클래스 입니다. 여기서 getLocation()이라는 메소드는 일직선에서 점의 위치를 x값으로 나타내고 있는데요. 이 메소드를 오버라이딩 해보겠습니다. 위의 Point 클래스를 상속 받은 Point2D라는 자식 클래스 입니다. Point 클래스가 일직선에서 위치를 나타내는 1차원 좌..

[자바/Java] 오버로딩 (Overloading)

오늘은 오버로딩에 대해 공부해봤습니다. 오버로딩(Overloading)이란? - 보통 하나의 메소드 이름에 하나의 기능만을 구현해야 하는데, 하나의 메소드 이름으로 여러 기능을 구현하고 싶을때 사용합니다. 오버로딩의 조건 메소드 이름이 같아야 한다. 매개변수(parameter)의 개수 또는 타입이 달라야 한다. 오버로딩의 예시 Math 클래스 안에 add라는 메소드를 만들었습니다. 메소드 이름은 같지만 parameter의 개수를 다르게 해서 이 add 메소드는 2개의 숫자를 더하는데에 사용할수도 있고 3개의 숫자를 더하는데에 사용할수도 있게 되었습니다. 여기 메소드 오버로딩이 잘 동작 되는지 확인하기 위해 테스트 코드를 준비 했습니다. 처음 add는 1 과 2 를 더한 값을 리턴하며 두번째 add는 1,..