자바의 정석 12

자바의 정석 16

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 16 네트워킹 1. 네트워킹 네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다. 자바에서 제공하는 java.net패키지는 네트워크 어플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다. 1.1 클라이언트/서버 서버는 서비스를 제공하는 컴퓨터아기 클라이언트는 서비스를 사용하는 컴퓨터가 된다 서버에 접속하는 클라이언트의 수에따라 한서버거 여러 가지 서비스를 제공하기도 하며 하나의 서비스를 여러대의 서버로 제공하기도 한다. 서버기반 모델 P2P 모델 - 안정적인 서비스의 제공이 가능하다. - 공유 데이터의 관리와 보안이 용이하다. - 서버구축비용과 관리비용이 든다 -서버구축 및 운용비용..

자바의 정석 2023.08.31

자바의 정석 13장

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 13 지네릭스,열거형,애너테이션 1.프로세스와 쓰레드 프로세스란 실행중인 프로그램을 뜻하며 보조기억 장치에 적재되어있는 프로그램이 메모리에 적재되어 cpu를 통해 실행되고 있는 상태이다. 쓰레드는 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이다 모든 프로세스는 최소 하나의 쓰레드가 존재하며 둘이상의 쓰레드를 가진 프로세스를 멀티쓰레드 라고한다. 멀티태스킹과 멀티 스레딩 우리가 사용하는 윈도우나 유닉스등 대부분의 OS 는 멀티테스킹을 지원하여 여러개의 프로세스가 동시에 실행될 수 있다. 이는 이와 마찬가지로 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것이다. 하나의 코어는 한개의 ..

자바의 정석 2023.08.28

자바의 정석 12장

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 12 지네릭스,열거형,애너테이션 지네릭스 1.1 지네릭스란 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 제네릭스의 장점 1.타입 안전성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 1.2 지네릭 클래스의 선언 제네릭을 사용할땐 Object 대신 클래스 옆에 타입변수 를 붙여주면 된다. class Box { T item; void setItem () {this.item = item;} T getItem() { return item;} } 지네릭 클래스가 된 클래스의 객체를 생성할 때는 참조변수와 생성자에 탑입변수 대신 사용될 실제 타입..

자바의 정석 2023.08.27

자바의 정석 11장

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 11 컬렉션 프레임웍 1. 컬렉션 프레임웍 컬렉션 플레임웍은 LIST,SET,MAP등을 통해 다수의 데이터를 다루는 데 필요한 다양하고 풍부한 클래스들을 제공해준다. 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용벙르 익히기에도 편리하고 재사용성이 높은 코드를 작성할 수 있다. 1.1 컬렉션 프레임웍의 핵심 인터페이스 1. List 순서가 있는 데이터의 집합,데이터의 중복을 허용한다. 구현 클레스 : ArrayList,LinkedList,Stack,Vector 등 메소드 :add() ,get(), indexOf(), listIterator(), remove(), set(), sort()..

자바의 정석 2023.08.22

자바의 정석 10장

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 10 날짜와 시간 & 형식화 1. 날짜와 시간 1.1 Calendar와 Date Date 와 Caledar는 날짜와 시간을 다룰 목적으로 20년이 넘게 사용되어온 클래스이다. 하지만 Date와 Calendar는 아래오 같은 단점이 있다. 1. API가 현실의 사회 제도, 과학, 역사적 문제와 복잡하게 얽혀 있음 2. Calendar와 Date는 불변 객체가 아님 3. 오류에 둔감한 시간대 ID 지정 등 다양한 단점이 발견되었다. 이를 해결하기위해 자바 1.8버전 이후 java.time을 사용하고 있다. 2. 형식화 클레스 2.1 DecimalFormat 숫자를 형식화 되는데 사용되는 클레스로 숫자 데이터를 정수,부동소..

자바의 정석 2023.08.21

자바의 정석 6장

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 6 객체지향 프로그래밍1 1. 객체지향언어 코드의 재사용성이 높다(상속과 다형성을 이용해 재상용성을 높일 수 있다) 코드의 관리가 용의하다(SRP와 같은 원칙을 사용하여 유지보수가 용이하다) 신뢰성이 높은 프로그래밍을 가능하게 한다. 객체의 개념에 얽매이지 말고 기능적으로 완성한 다음 객체지향적으로 코드를 개선해 나가는 것이 좋다. 2.클래스와 객체 클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다. 클래스의 용도 : 클래스는 객체를 생성하는데 사용된다. 객체의 정의 : 실제로 존재한는것, 사물 또는 개념 갬체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름 객체의 구성요소 속성과 기능 객체지향언어를 공부하..

자바의 정석 2023.06.13

자바의 정석 5장

Chapter 4 배열 1.배열 배열이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다. 만약 1억개 만큼의 데이터를 저장해야 되는 상황이 왔을때 1억개의 변수를 선언해야 되는것은 불가능 하다. 배열을 사용하면 많은 양의 데이터를 다룰 수 있다. 1-1 배열의 선언과 생성 배열의 선언 배열의 선언 방식은 다른 변수 선언과 비슷하다. 원하는 타입의 변수를 선언하고 대괄호를 붙이면 된다. 선언 방식 선언 예 타입[] 변수이름; int[] scores; String[] names 타입 변수이림[]; int scores[] String names[] 배열의 생성 배열을 선언한 후에는 배열을 생성해야 된다. 배열 선언은 참조변수를 위한 공간이 만들어질 뿐이고 값을 저장할 수 있는 공간을 만..

자바의 정석 2023.06.06

자바의 정석 3장

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다. Chapter 3 연산자 1.1 연산자와 피연산자 연산을 수행하기 연산의 대상(피연산자와) 연산을 수행하고 결과를 반환할 피연산 자로 나뉜다. 연산자는(+,-,/,*)와 같은 연산자를 의미하고 피연산자는(변수,상수,리터럴,수식)등을 의미한다. 컴퓨터 구조의 연산자와 피연산자를 생각하면 이해하기 쉬운 것 같다. 1.2 연산자의 종류 연산자는 크게 산술,비교,논리,대입,기타 연산자로 나눌수 있다. 산술 연산자: 기본적인 사친 연산과 나머지 연산을 담당한다(+,-,*,/,%,) 비교 연산자:크고 작음 또는 같고 다름을 비교한다.(>, =, 비교>논리>대입 순의 우선순위를 가지고 있다. 단한 > 이항 > 삼항 순의 우선순위를 가지고 있다...

자바의 정석 2023.06.01

JVM 메모리 구조

JVM(java virtual machine)이란 jvm은 자바를 실행하기 위한 가상 머신의 약자이다. 자바는 os에 종속되지 않는다는 특징이 있는데 JVM이 자바 바이트 코드를 실행할 수 있는 환경을 제공해 준다. 이로 인해 자바는 OS에 관계 없이 독립적이고 어디서든 실행 할수 있게 한것이다.(write once run anywhere) 자바 어플리케이션은 java.c 컴파일러를 통해 Byte cod(.class)이 생성 된다. 1.class loader class loader는 크게 링킹(Linking),로딩(Loding),초기화(initializing) 작업이 이루어 진다. Loading은 .class 파일을 읽어오는 단계로 class loader는 Conpile 시점이 아닌 RunTime 시점에..

자바의 정석 2023.05.30

객체 지향 언어와 절차 지향 언어

절차지향언어 절차지향언어는 프로그래밍 페러다임의 일종으로 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 패러다임이다. 수행되어야 할 연속적인 계산 과정을 순차적으로 진행하는 방식이다(top-down) 컴퓨터의 작업 처리 방식과 유사하기 떄문에 비교적 빠른 실행이 가능하다.' 대표적 언어로는 c언어가 있다, 장점 컴퓨터의 처리구조와 유사하여 실행 속도가 빠르다, 단점 유지보수가 어렵다 실행 순서가 정해져 있어 비효율 적이다 디버깅이 어렵다 객체지향언어 탄생 배경 절차지향 언어의 단점을 보안 하기 위해 나온 패러다임으로 복잡한 알고리즘을 순서도로 나타냄으로 스파게티 코드를 양산하게 되었다. 큰문제를 쪼개어서(top-down) 나누는게 아니라 객체라는 작은 개념을 만든 후 이 문제를 해결하는 (Bott..

자바의 정석 2023.05.30