Programming/Java \ Spring

    🔥자바스터디🔥 자바의 정석 CH16 네트워킹

    1. 네트워킹(Networking) 네트워킹(networking)이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크(network)를 구성하는 것을 말한다 1.1 클라이언트/서버(client/server) '클라이언트/서버는 컴퓨터간의 관계를 역할로 구분하는 개념이다 서버(server)는 서비스를 제공하는 컴퓨터(service provider)이고 클라이언트(client)는 서비스를 사용하는 컴퓨터(service user)가 된다. 네트워크를 구성할 때 전용서버를 두는 것을 서버기반모델 이라고 하고 각 클라이언트가 서버역할을 동시에 수행하는 것을 P2P모델 이라고 한다 - 서버는 제공하는 서비스의 종류에 따라 파일서버 메일서버, 어플리케이션 서버 등이 있다 1.2 IP주소(IP Address) IP주..

    🔥자바스터디🔥 자바의 정석 CH15 입출력(I/O)

    1. 자바에서의 입출력 1.1 입출력이란? 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것 1.2 스트림(stream) 자바에서 입출력을 수행하기 위해 두 대상을 연결하고 데이터를 운반하는데 사용되는 연결통로 먼저 보낸 데이터를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고 받는다 1.3 바이트기반 스트림 - InputStream, OutputStream 스트림은 바이트단위로 데이터를 전송하며 입출력 대상에 따라 다음과 같은 입출력스트림이 있다. 1.4 보조스트림 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력할 수 있는 기능은 없지만, 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다 // 먼저 기반스트림을 생성한다. FileInputStr..

    🔥자바스터디🔥 자바의 정석 CH14 람다와 스트림

    1. 람다식 1.1 람다식이란? 람다식은 메서드를 하나의 식(expression)으로 표현한 것. - 객체 지향 언어보다는 함수 지향 언어에 가깝다. - 함수를 간략하면서도 명확한 식으로 표현할 수 있도록 해준다. - 메서드를 람다식으로 표현하면 메서드의 이름 및 반환 값이 없어지므로 익명 함수 라고도 한다. - 람다식의 형태는 매개 변수를 가진 코드 블록이지만 런타임 시에는 익명 구현 객체를 생성한다. 1.2 람다식 작성하기 (타입 매개변수) -> { 실행문; ... } ex) - ExFunctionInterfaceTest.java interface ExFunctionInterface { public void method(); } public class ExFunctionInterfaceTest { p..

    🔥자바스터디🔥 자바의 정석 CH13 쓰레드

    13장. 쓰레드 -프로세스 & 쓰레드 프로세스 : 실행 중인 프로그램 프로세스 구성 : 필요한 데이터 & 메모리 등의 자원, 쓰레드 쓰레드 : 실제로 작업을 수행하는 것 ** 쓰레드가 둘 이상이면 멀티쓰레드 프로세스라고 한다. ex) 프로세스 = 공장 , 쓰레드 = 일꾼 이라고 생각하면 이해하기 쉽다. -멀티쓰레딩 장점 단점 - CPU사용률을 향상시킨다. - 자원을 보다 효율적으로 사용 가능하다. - 응답성이 향상된다. - 작업 분리 -> 코드가 간결해진다. - 자원을 공유하는 특성 존재 - 동기화(synchronization), 교착상태(deadlock) 같은 문제들을 고려하면서 프로그래밍 진행 -쓰레드의 구현 & 실행 - Thread클래스를 상속받는다. - Runnable인터페이스를 구현한다. ** ..

    🔥자바스터디🔥 자바의 정석 CH12 지네릭스, 열거형, 어노테이션

    1. 제네릭(Generic) 1.1 제네릭? 제네릭의 정의 - 제네릭(Generic)은 컴파일 시 타입을 체크 해 주는 기능이다. - 또는 타입을 파라미터화 해서 컴파일 시 구체적인 타입이 결정 되도록 하는 것이다. 제네릭의 장점 - 객체의 타입 안정성을 높인다. ※ "타입 안정성을 높인다"는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환 되어 발생할 수 있는 오류를 줄여준다는 뜻이다. - 형 변환의 번거로움을 줄여준다. 1.2 제네릭 클래스의 선언 - 제네릭 클래스를 작성할 때, Object 타입 대신 타입 매개변수(E)를 선언해서 사용한다. ① 예를 들어, ArrayList 클래스는 다음과 같이 정의 되어 있었다. public..

    🔥자바스터디🔥 자바의 정석 CH11 컬렉션프레임웍

    1. 컬렉션프레임워크 1.1 컬렉션 프레임워크의 핵심 인터페이스 - Collection 인터페이스 컬렉션 클래스에 저장된 데이터를 읽고 추가하고 삭제하는 등 가장 기본적인 메소드들을 정의 - List 인터페이스 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용 - Set 인터페이스 중복을 허용하지않고 저장순서가 유지되는 컬렉션을 구현하는데 사용(HashSet, TreeSet 등) - Map 인터페이스 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션을 구현 키는 중복될수 없지만 값을 중복을 허용한다. - Map.Entry 인터페이스 Map에 저장되는 key-value 쌍을 다루기 위해 내부적으로 Entry인터페이스를 정의했다. 1.2 ArrayList - Object 배열을 이용해서 데이터의 ..

    🔥자바스터디🔥 자바의 정석 CH10 날짜와 시간 형식화

    1. 날짜와 시간 1.1 Calendar 와 Date Calendar와 GregorianCalendar - Calendar는 추상 클래스이며, 이를 상속받아 구현한 클래스가 GregorianCalendar(태국 외 모든 국가), BuddihistCalendar(태국) - .getInstance() 를 통해 완성된 객체를 반환하여 사용하거나, (static 메소드) 상속받아 구현된 GregorianCalendar를 이용해서 인스턴스를 반환하여 사용한다. //1. Calendar를 Date로 변환 Calendar cal = Calendar.getInstance(); Data d = new Date(cal.getTimeInMillis()); //Date(long date) //2. Date를 Calendar로..

    🔥자바스터디🔥 자바의 정석 CH9 java.lang패키지와 유용한 클래스

    1. java.lang패키지 1.1 Object클래스 equals(Object obj) - 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려준다. - 주소값으로 비교한다. 값만으로 비교하기 위해서는 오버라이딩하여 재정의하면된다. hashCode() - 해싱기법에 사용되는 해시함수를 구현한 것이다. (다량의 데이터를 저장하고 검색하는데 유용) - 해시함수는 찾고자하는 값을 입력하면 그 값이 저장된 위치를 알려주는 해시코드를 반환한다. toString() - 인스턴스 변수에 저장된 값을 문자열로 표현한다. clone() - 객체 자신의 복사본을 반환한다. - 공변 반환타입(오버라이딩 할때 조상메소드의 반환타입을 자손클래스의 타입으로 변경을 허용)이 가능하다. 얕은 복사와 깊은 ..

    🔥자바스터디🔥 자바의 정석 CH8 예외처리

    1. 예외처리 1.1 프로그램 오류 - 컴파일 에러 : 컴파일 시에 발생하는 에러 - 런타임 에러 : 실행 시 발생하는 에러 - 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 ** 런타임시 발생할 수 있는 프로그램 오류 에러 : 메모리 부족이나 스택오버플로우와 같이 발생하면 복구할 수 없는 심각한 오류 예외 : 발생하더라도 수습될 수 있는 오류 1.2 예외 클래스의 계층구조 모든 예외의 최고 조상은 Exception클래스, Exception 하위에서 가장 많은 자손 클래스를 가지고 있는 예외는 RuntimeException클래스 - Exception클래스들 : 사용자의 실수와 같은 외적 요인에 의해 발생하는 예외 - RuntimeException클래스들 : 프로그래머의 실수로 발생하는 예외 ..

    🔥자바스터디🔥 객체지향 개념을 살려서 스터디관리 프로그램 만들기

    문제 )) 객체지향 개념을 살려서 스터디관리 프로그램 만들기 이미지대로 스터디원의 정보, 참여내역(벌금 차감), 벌금내역 조회, 스터디 관리내역 조회, 스터디 탈퇴 까지 객체지향 개념을 적용하여 프로그래밍하기가 목적이었다. package study; import java.util.Scanner; public class MemberVo { private String member_no; private String name; private String joinDT; private String deposit; public void insert(String member_no) { Scanner sc = new Scanner(System.in); this.setMember_no(member_no); System.o..

    🔥자바스터디🔥 자바의 정석 CH7 객체지향 프로그래밍(상속, 오버라이딩, 제어자, 다형성, 추상클래스, 인터페이스, 내부클래스)

    1. 상속 - 상속 : 기존의 클래스를 재사용하여 새로운 클래스르 작성하는 것 코드를 공통적으로 관리할 수 있기 때문에 유지보수면에서 매우 용이하다. - 구현 : 새로 작성하는 클래스 이름 뒤에 상속 받고자 하는 클래스의 이름을 키워드 extends 와 함께 적어준다. ex) class Child extends Parent{} - 자식클래스는 부모클래스의 모든 멤버를 상속 받는다. (포함한다.) - 생성자와 초기화 블럭은 상속되지 않는다. 멤버(메소드, 필드)만 상속된다. - 자식 클래스의 멤버 개수는 부모 클래스보다 항상 같거나 많다. ** 접근제어자가 private 또는 default인 멤버들은 상속되지 않는다기보다 상속은 받지만 자식 클래스로부터의 접근이 제한되는 것이다. ** 같은 내용의 코드를 ..

    🔥자바스터디🔥 배열과 반복문을 이용한 BINGO 만들기

    빙고 코드 짜기 // 조건 1. 5 * 5 의 정사각형 2차원 배열 2. 모든 요소에 1 ~ 25까지의 숫자 랜덤 초기화 (콘솔에 출력금지) 3. 콘솔에 각 요소좌표 출력 [0, 0] [0, 1] [0, 2] [0, 3] [0, 4] [1, 0] [1, 1] [1, 2] [1, 3] [1, 4] [2, 0] [2, 1] [2, 2] [2, 3] [2, 4] [3, 0] [3, 1] [3, 2] [3, 3] [3, 4] [4, 0] [4, 1] [4, 2] [4, 3] [4, 4] 4. 스캐너로 1~25까지의 숫자 입력 (내 역할 a, 상대방 b로 구분해서) 5. 입력한 숫자의 좌표를 찾아 화면에 좌표대신 숫자 출력 입력한 숫자가 25이고 좌표의 위치가 [2, 2] 라면, [0, 0] [0, 1] [0, ..