프로그래밍 공부

전체 글 700

카테고리 설명
프로그래밍 공부하는 블로그
  • 시스템 소프트웨어 빅데이터 분석을 위한 소프트웨어 스택 빅데이터 분석 라이브러리 Mahout 또는 Spark MLib 마지막 병렬처리 맵리듀스 프로그램 위로 분산파일시스템 하둡분산파일시스템 위로 운영체제 리눅스 가장 밑 데이터 처리는 위에서 밑으로 내려가는 순서로 데이터가 분산된다. 운영체제 윈도우에서 빅데이터 처리가 힘든 이유? [ 내생각 ] 윈도우에서의 라이브러리는 추가가 힘들기 때문? 오픈소스로 인한 법적분쟁이 따로 일어나지 않기 때문? [ 윈도우 = 단일 사용자를 위해 만들어진것. ] 다중사용자가 가능하지만, 윈도우는 여러명의 사용자가 동시에 접속할 수 없기 때문, 윈도우는 마우스 전용으로 만들어진 인터페이스 로 마우스 추적이 필요하지만, 리눅스는 터미널로 키보드만으로 접속과 다루기가 가능하다. ..

  • 우분투를 설치하고 사용하는것은 새로운 컴퓨터에 설치하여 사용 할 수 있지만, 윈도우 내부에서 가상머신을 사용하여 새 컴퓨터가 아닌 기존 운영체제 내부에서도 새 운영체제를 구동시킬 수 있습니다. https://www.virtualbox.org/ Oracle VM VirtualBox Welcome to VirtualBox.org! News Flash New July 19th, 2022VirtualBox 6.1.36 released! Oracle today released a 6.1 maintenance release which improves stability and fixes regressions. See the Changelog for details. New April 19th, 2022VirtualBo..

  • 네트워크 - 원격지의 컴퓨터와 데이터를 송수신하는 것을 네트워크라고 부른다. - 자바에서는 서버 프로그래밍을 할 수 있는 도구들과 클라이언트 프로그래밍을 할 수 있는 도구들을 제공한다. - 제공되는 도구들을 이용해 입출력 스트림을 추출하고 추출한 스트림을 통해 데이터를 송수신하면 된다. 용어 - 서버 : 서비스를 제공하는 프로그램이다. 클라이언트가 요구하는 데이터를 클라이언트로 전송하는 역할을 한다. - 클라이언트 : 서비스를 받는 프로그램이다. 서버가 보낸 데이터를 바탕으로 사용자가 서비스를 이용할 수 있도록 구성해주는 역할을 한다. - IP : 컴퓨터 시스템이 가지고 있는 주소이다. 전 세계 의 컴퓨터는 전부 아이피 주소를 가지고 있다. 아이피 주소가 공인 아이피일 경우 다른 컴퓨터가 쉽게 접근해서 ..

    JAVA

    JAVA Network NEW

    2022.08.14
    댓글
  • ObjectStream - 메모리상에 존재하는 객체를 송수신 할 수 있는 필터 스트림이다. - 필터 스트림이므로 기본 스트림이 필요하다. 객체 직렬화 - 메모리 상에 존재하는 객체를 출력할 수 있는 형태로 만드는 것을 가르켜 직렬화 라고 부른다. - 직렬화 하지 않은 객체를 스트림을 통해 입출력 할 수 없다. - 자바에서는 직렬화 하기 위해 Serializable 이라는 인터페이스를 구현하면된다.

    JAVA

    JAVA ObjectStream NEW

    2022.08.14
    댓글
  • 2 바이트 입출력 스트림 - 주로 문자열을 라인 단위로 입출력할 떄 사용한다. - 2 바이트 입출력 스트림을 이용하면 키보드를 통해 입력을 받거나 콘솔로 송출할 때 편하게 할 수 있다. - 사용해야 하는 필터스트림이 좀 많은 편이긴 하나 데이터를 라인 단위로 ㅇ비출력할 수 있다는 편리성을 가지고 있어서 많이 사용하고 있다.

    JAVA

    JAVA 2byteStream NEW

    2022.08.14
    댓글
  • Filter Stream - 기본 스트림 외에 다른 기능을 추가 하고 싶을 때 사용하는 스트림이다. - 필터 스트림을 독립적으로 사용하지 못하고 기본 스트림과의 연결이 반드시 필요하다. - 필터 스트림은 데이터를 송수신 할 수 있는 기능이 없다. - 필터 스트림에 있는 입출력 함수는 직접 데이터를 입출력하는 것이 아니라 연결되어 있는 기본 스트림에 데이터를 전송하고 기본 스트림에서 데이터 송수신을 하게된다. - 필터 스트림은 생성자에 기본 스트림을 받고 있다. 생성자를 통해 기본 스트림이 데이터의 송수신을 직접 담당한다. DataStream - 기본 스트림을 통해 데이터 송수신을 하기 위해서는 바이트 형태의 데이터로 송수신을 하게된다. - 개발자가 직접 송수신할 데이터를 바이트화 시키거나 바이트화 되어 ..

    JAVA

    JAVA 데이터Stream NEW

    2022.08.14
    댓글
작성일
2022. 9. 1. 15:32
작성자
WDmil
728x90

시스템 소프트웨어

빅데이터 분석을 위한 소프트웨어 스택

빅데이터 분석 라이브러리 Mahout 또는 Spark MLib 마지막
병렬처리 맵리듀스 프로그램 위로
분산파일시스템 하둡분산파일시스템 위로
운영체제 리눅스 가장 밑

데이터 처리는 위에서 밑으로 내려가는 순서로 데이터가 분산된다.

 

운영체제

윈도우에서 빅데이터 처리가 힘든 이유?

[ 내생각 ] 윈도우에서의 라이브러리는 추가가 힘들기 때문? 오픈소스로 인한 법적분쟁이 따로 일어나지 않기 때문?

 

[ 윈도우 = 단일 사용자를 위해 만들어진것. ] 다중사용자가 가능하지만, 윈도우는 여러명의 사용자가 동시에 접속할 수 없기 때문, 윈도우는 마우스 전용으로 만들어진 인터페이스 로

마우스 추적이 필요하지만, 리눅스는 터미널로 키보드만으로 접속과 다루기가 가능하다.

 

GUI체계의 인터페이스가 리눅스에 비해 더 크고 메모리를 더 잡아먹게됨.

운영체제 자체가 가볍지 않고 헤비할 수 있다. 운영체제가 지원해주는 서비스가 많기 때문,

즉. 윈도우와 리눅스의 차이는 사용자의 편의성 차이로 인한 운영체제의 무겁고 가벼운 차이가 있기 때문이다.

 

[ 요약 ]

운영체제 입장에서 보면 빅데이터 환경에서 보았을 때 윈도우 운영체제는 리눅스에 비해 효율성이 부족하다.

 

분산파일시스템

 

분산형 형태의 파일 시스템이 만들어져 있다. 다중처리 시스템으로 큰 데이터를 N분할로 하여 N개 처리속도만큼 처리를 빠르게 할 수 있다.

하둡분산파일시스템을 이용하여 분산된 형태로 파일데이터를 처리할 수 있게 되었다.

 

병렬처리

 

맵 리듀스 프로그램 = 하둡보다 더 위에서 데이터를 처리하고 싶을 때 . 하둡분산파일시스템에 데이터를 분산하고 다시 모으고 하는 역활을 함.

 

빅데이터 분석 라이브러리

 

병렬 처리를 하면서 데이터의 의미를 도출하고 싶을 때, 처리된 데이터의 의미를 도출할 때 분석 라이브러리를 사용함.

Mahout, Spark MLib 를 이용하여 데이터 안의 가공된 데이터를 이용하여 추가적인 데이터 분석이 가능하다.

 

시스템 소프트웨어

 

소프트웨어 = 컴퓨터 시스템이나 주변기기 등의 하드웨어를 작동시켜 원하는 작업 결과를 얻기 위해 실행되는 프로그램

 

운영체제가 먼저 실행되고 나서 응용프로그램이 실행됨.

- 작업 : 문서작성기, 그림편집기 

 

주변장치를 관리하는 드라이버 프로그램

- 프린터, 인터넷 브라우저

 

소프트웨어의 종류

시스템 소프트웨어 [ System SosftWare ]

- 응용 소프트웨어가 실행될 때 컴퓨터 하드웨어를 효율적으로 사용하도록 Cpu나 메모리 등의 컴퓨터 자원을 배치하고 관리함.

- 드라이버 프로그램

- 인터페이스 프로그램

- 운영체제

종류 : 운영체제 , 컴파일러 , 데이터베이스 , 유틸리티 소프트웨어

 

응용 소프트웨어 [ Appllcation ]

종류 : 문서작성기, 그림편집기 그림판같은것

 

컴퓨터의 발전

 

운영체제의 역할

성능향상 - 빅데이터에서 엄청난 향상이 이루어짐

자원관리 - 연결된 형태의 노드를 고려해야 하기에 분산환경으로 메커니즘이 바뀜

자원보호 - 

HDD 의 데이터보호방법 = 복사본을 3개 만들어버림

사용자인터페이스제공

 

메인메모리 관리

프로그램과 프로세스의 차이점

프로그램 = 저장장치에 보관되어있는 실행주체

프로세스 = CPU에 올라와서 실행되고있는 데이터

분산환경에서는 데이터의 사이즈가 메인메모리의 사이즈보다 엄청 큰 것이 발생할 수 있다.

 

저장장치 관리

노드로 분리하여 데이터를 하드디스크 하나가 아닌 노드별로 여러개의 하드디스크에 데이터를 저장하게됨.

이유 = 하나가 날라가도 다른 노드를 가져와서 데이터를 복원할 수 있기 때문.

 

시스템 호출 [ System Call ]

 

운영체제는 인터럽트로 시작해서 인터럽트로 끝나게된다. 즉, 시용자나 응용프로그램이 하드웨어에 직접 접근하지 못하게 막음으로써 컴퓨터 자원을 보오하게 된다. 운영체제에게 어떠한 작업을 지시할때 시스템 콜을 사용한다.

유닉스

1960년대 컴퓨터는 고가였기 때문에 여러명이 동시에 운용할 수 있는 운영체제 개발.

소스코드를 공개하여 많은사람이 개선함. 여기서 리눅스가 파생됨

 

리눅스

1991년 리눅스 토르발스가 유닉스 호환커널을 만들고 대중에게 공개

 

특징

다중 플랫폼 [ Multi - Platform] 지원

다양한 하드웨어 장치 지원

네트워크 기능 제공

이식성이 뛰어남

- c언어 기반으로 프로그래밍을 하여 포팅이 용이함

다중사용자 동시에 사용할 수 있는 환경 제공

다중 작업 환경 제공

트리 형태의 계층적 구조로 된 파일 시스템

풍부한 소프트웨어 개발환경 제공

강력한 네트워킹 기능 제공

 

프로세스의 상태

일괄처리 작업

한 번에 작업을 1개만 처리하는 시스템

시분할 작업

CPU가 1개인 컴퓨터에서 여러 프로세스를 동시에 실행시키는 것처럼 보이기 위해 CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분함.

분산형 시스템에서는 애초에 물리적으로 분리되어 있기 때문에 그냥 분할하여 데이터를 처리하게된다.

 

메인메모리 관리

 

폰 노이만 구조를 이용하여 작업을 하게됨.

메모리 = 유일한 작업공간

모든 프로그램은 메모리에 올라와야 실행이 가능하다.

 

마스터 노드 , 슬레이브 노드 로 구성되어 있으며, 마스터 노드가 데이터를 받아서  균일하거나 균일하지 않거나 의 차이로 데이터를 분류하여 하드웨어 리소스를 재분배하여 데이터를 처리하게 슬레이브 노드에게 시키게됨.

위 이미지에서는 하나의 CPU를 여러개처럼 데이터처리를 하는것을 시분할 시스템을 이용하여 데이터를 처리하였으나,

리눅스 시스템에서는 분산환경으로 인해 도마가 여러개인 효과를 발휘할 수 있다. 즉, 데이터의 처리과정이 다양하게 빠르게 처리된다.

 

저장장치 관리

[ 이후 수정함 ]

728x90
작성일
2022. 9. 1. 14:02
작성자
WDmil
728x90

우분투를 설치하고 사용하는것은 새로운 컴퓨터에 설치하여 사용 할 수 있지만, 윈도우 내부에서 가상머신을 사용하여 새 컴퓨터가 아닌 기존 운영체제 내부에서도 새 운영체제를 구동시킬 수 있습니다.

https://www.virtualbox.org/

 

Oracle VM VirtualBox

Welcome to VirtualBox.org! News Flash New July 19th, 2022VirtualBox 6.1.36 released! Oracle today released a 6.1 maintenance release which improves stability and fixes regressions. See the Changelog for details. New April 19th, 2022VirtualBox 6.1.34 releas

www.virtualbox.org

위 사이트의 경로로 버추얼 박스를 설치가 가능 합니다.

버추얼박스 실행 모습

버추얼 박스는 리눅스 기반의 운영체제나 윈도우를 하나 더 구동할 때 가상머신을 이용하여 운영체제 내부에서 다른 운영체제를 구동시킬 수 있게 해주는 프로그램 입니다.

 

https://ubuntu.com/desktop

 

Ubuntu PC operating system | Ubuntu

Fast, secure and stylishly simple, the Ubuntu operating system is used by 50 million people worldwide every day.

ubuntu.com

다운로드 링크

우분투 다운로드 링크를 클릭하여 우분투 설치 링크로 들어갈 수 있는데,

LTS버전 설명

설치 링크를 들어가면 ubuntu 22.04.1 LTS버전이 현 상황에서는 가장 최신버전 입니다.

LTS는 우분투에서 5년의 AS보장이 있음으로 LTS버전을 다운로드 해줍니다.

우분투 설치

설치가 끝났으면 버추얼박스의 머신에서 새로만들기를 통해 설치된 우분투 ISO파일을 지정해주면 됩니다.

전문가 모드나 가이드모드로 설정을 진행하여 설치를 할 수 있습니다. 전문가 모드에서는 메모리 크기를 직접 지정해 줄 수 있습니다. 저장공간은 동적할당을 이용하여 데이터를 동적으로 메모리를 더 늘리거나 줄여줄 수 있습니다.

설정에 들어가서

저장소 -> 광학 드라이브를 추가합니다. 에서 

원에 +모양이 들어있는 추가 버튼을 누르고 위에서 설치한 우분투 ISO파일의 경로에 들어가서 열어준 뒤

확인을 눌러주면 됩니다.

 

 

728x90
카테고리
작성일
2022. 8. 14. 20:46
작성자
WDmil
728x90

네트워크

- 원격지의 컴퓨터와 데이터를 송수신하는 것을 네트워크라고 부른다.

- 자바에서는 서버 프로그래밍을 할 수 있는 도구들과 클라이언트 프로그래밍을 할 수 있는 도구들을 제공한다.

- 제공되는 도구들을 이용해 입출력 스트림을 추출하고 추출한 스트림을 통해 데이터를 송수신하면 된다.

 

용어

- 서버 : 서비스를 제공하는 프로그램이다. 클라이언트가 요구하는 데이터를 클라이언트로 전송하는 역할을 한다.

- 클라이언트 : 서비스를 받는 프로그램이다. 서버가 보낸 데이터를 바탕으로 사용자가 서비스를 이용할 수 있도록 구성해주는 역할을 한다.

- IP : 컴퓨터 시스템이 가지고 있는 주소이다. 전 세계 의 컴퓨터는 전부 아이피 주소를 가지고 있다. 아이피 주소가 공인 아이피일 경우 다른 컴퓨터가 쉽게 접근해서 데이터 통신을 할 수 있다. 공유기 등으로 연결되어 사설 아이피를 받았을 경우 외부에서의 접근을 위해서는 다른 방법을 이용해야만 한다.

- 포트 : 하나의 컴퓨터에서 여러 개의 네트워크 프로그램이 동시에 운영될 수도 있다. 각 프로그램 별로 데이터를 올바르게 송수신 할 수 있도록 문의 역할을 해주는 것을 하나씩 할당하게 되는데 이것이 포트이다.

- 소켓 : 하나의 서버에는 수십 수백의 클라이언트가 연결될 수 있는데 이런 클라이언트는 모두 같은 포트에 접속을 하게 된다. 따라서 서버는 클아이언트와 1:1 연결 관계가 필요한데 이러한 연결 관계를 유지 시켜주는 것이 소켓이다.

 

서버 프로그래밍 시나리오

- ServerSocket 객체를 생성한다. 이 때, 사용하고자 하는 포트를 할당 받게 된다.

- 사용자 접속을 대기한다. 접속을 대기하게 되면 일시 정지가 된다.

- 사용자가 접속을 성공하면 Socket 객체가 생성이 된다.

- 생성된 소켓으로 부터 스트림을 추출한다(필요하다면 필터도 사용한다.)

- 데이터를 송수신한다.

- 모든 통신이 끝났으면 네트워크를 종료한다.

 

클라이언트 프로그래밍 시나리오

- Socket 객체를 생성한다. 이 때, 접속할 서버 컴퓨터의 아이피 주소와 포트를 입력한다. 접속에 성공을 하면 소켓 객체가 생성이 된다.

- 생성된 소켓으로 부터 스트림을 추출한다.(필요하다면 필터도 사용한다)

- 추출된 스트림으로 데이터를 송수신한다.

- 데이터 송수신이 완료가 되면 연결을 종료한다.

 

서버 코딩 법
클라이언트 코딩법
코딩 마무리 후 cmd로 실행해 보았을 때 이러한 실행결과가 나온다.

728x90

'JAVA' 카테고리의 다른 글

JAVA ObjectStream  (0) 2022.08.14
JAVA 2byteStream  (0) 2022.08.14
JAVA 데이터Stream  (0) 2022.08.14
JAVA Stream  (0) 2022.08.14
JAVA HashTable  (0) 2022.08.14
카테고리
작성일
2022. 8. 14. 20:16
작성자
WDmil
728x90

ObjectStream

- 메모리상에 존재하는 객체를 송수신 할 수 있는 필터 스트림이다.

- 필터 스트림이므로 기본 스트림이 필요하다.

 

객체 직렬화

- 메모리 상에 존재하는 객체를 출력할 수 있는 형태로 만드는 것을 가르켜 직렬화 라고 부른다.

- 직렬화 하지 않은 객체를 스트림을 통해 입출력 할 수 없다.

- 자바에서는 직렬화 하기 위해 Serializable 이라는 인터페이스를 구현하면된다.

 

글자를 쓰고 읽어올 수 있으나 객체 직렬화를 시켜줘야 한다.

 

728x90

'JAVA' 카테고리의 다른 글

JAVA Network  (0) 2022.08.14
JAVA 2byteStream  (0) 2022.08.14
JAVA 데이터Stream  (0) 2022.08.14
JAVA Stream  (0) 2022.08.14
JAVA HashTable  (0) 2022.08.14
카테고리
작성일
2022. 8. 14. 20:03
작성자
WDmil
728x90

2 바이트 입출력 스트림

- 주로 문자열을 라인 단위로 입출력할 떄 사용한다.

- 2 바이트 입출력 스트림을 이용하면 키보드를 통해 입력을 받거나 콘솔로 송출할 때 편하게 할 수 있다.

- 사용해야 하는 필터스트림이 좀 많은 편이긴 하나 데이터를 라인 단위로 ㅇ비출력할 수 있다는 편리성을 가지고 있어서 많이 사용하고 있다.

 

 

728x90

'JAVA' 카테고리의 다른 글

JAVA Network  (0) 2022.08.14
JAVA ObjectStream  (0) 2022.08.14
JAVA 데이터Stream  (0) 2022.08.14
JAVA Stream  (0) 2022.08.14
JAVA HashTable  (0) 2022.08.14
카테고리
작성일
2022. 8. 14. 19:51
작성자
WDmil
728x90

Filter Stream

- 기본 스트림 외에 다른 기능을 추가 하고 싶을 때 사용하는 스트림이다.

- 필터 스트림을 독립적으로 사용하지 못하고 기본 스트림과의 연결이 반드시 필요하다.

- 필터 스트림은 데이터를 송수신 할 수 있는 기능이 없다.

- 필터 스트림에 있는 입출력 함수는 직접 데이터를 입출력하는 것이 아니라 연결되어 있는 기본 스트림에 데이터를 전송하고 기본 스트림에서 데이터 송수신을 하게된다.

- 필터 스트림은 생성자에 기본 스트림을 받고 있다. 생성자를 통해 기본 스트림이 데이터의 송수신을 직접 담당한다.

 

DataStream

- 기본 스트림을 통해 데이터 송수신을 하기 위해서는 바이트 형태의 데이터로 송수신을 하게된다.

- 개발자가 직접 송수신할 데이터를 바이트화 시키거나 바이트화 되어 있는 데이터를 사용하고자 하는 형태로 변환해야 하는데 이 작업을 해주는 스트림이다.

 

데이터 송수신 메서드

- readXXX : read 메서드가 굉장히 많이 존재하는데 각 타입별로 존재하고 있다. 정수형일 경우 readInt를 사용하면 바이트로 넘어온 데이터를 정수형으로 변환하여 되돌려준다.

- writeXXX : 송신하고자 하는 데이터를 바이트 형태로 변환하여 기본 스트림에게 넘겨준다. 정수형일 경우 writeInt를 사용한다.

 

입력
출력

 

728x90

'JAVA' 카테고리의 다른 글

JAVA ObjectStream  (0) 2022.08.14
JAVA 2byteStream  (0) 2022.08.14
JAVA Stream  (0) 2022.08.14
JAVA HashTable  (0) 2022.08.14
JAVA Vector  (0) 2022.08.14