공부 기록 40

[객체 지향] JAVA _ interface , abstract

interface interface 키워드 사용 static final 변수 사용 가능 => 내부의 모든 필드는 public static final 상수, 모든 메소드는 추상 메소드 public 접근제어자 사용 가능 상속 키워드 : implements 다중 상속 가능 => 클래스에 다중 구현 지원, 인터페이스끼리는 다중 상속 지원 내부의 모든 메서드는 public abstract로 정의 (defalut 메소드 제외) 공통 기능이 필요할 때 마다 추상 메서드를 정의해놓고 구현하는 식 => 각 클래스의 목적에 맞게 기능을 구현 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용 객체간의 결합도를 낮춤 abstract abstract 키워드 사용, 하나 이상의 추상 메소드를 갖고 있는 클..

[객체 지향] JAVA _ 접근 제어자, static, 객체와 클래스

접근 제어자 => 클래스, 변수, 메서드 등의 접근 가능한 범위를 지정하는 데 사용 객체 지향의 특징인 '정보 은닉'을 위해 제공되는 기능, 접근 권한을 구체화 할 수 있음 public 외부로 공개되며, 해당 객체를 사용하는 프로그램 어디에서나 직접 접근할 수 있음 protected 부모 클래스에 대해서는 public처럼 취급되고, 외부에서는 private멤버처럼 취급 같은 클래스, 같은 패키지, 자식클래스(다른패키지)에서 접근 가능 default 접근 제어의 기본값, 같은 클래스, 같은 패키지에 속하는 멤버만 접근 가능 private 외부에 공개되지 않고, 직접 접근할 수 없는 클래스 멤버 => 해당 객체의 public 메소드를 통해 접근 해당 멤버를 선언한 클래스에서만 접근 가능 접근제어자 같은 클래..

박싱 vs 언박싱 , 타입 캐스팅

박싱, 언박싱 박싱 : 기본 타입의 데이터를 해당 기본 타입의 래퍼 클래스(Wrapper class)으로 변환하는 과정 언박싱 : 래퍼 클래스의 객체를 원시타입의 값으로 변환하는 과정 오토박싱: 자동으로 변환이 일어나는 것 ex) int Integer Integer boxInt=new Integer(9); Integer autoBoxInt=8; int unboxingInt=boxInt.intValue(); int autoUnboxing=boxInt; 원시 타입과 참조 타입간의 전환이 필요한 상황에서 객체 지향적 프로그래밍 기능을 활용하기 위해서 사용 원시타입(기본타입)의 경우 모두 메모리에 직접 값을 저장하므로 효율적이지만 모든 특징을 활용하기 어려움 참조타입의 경우 메모리에 참조 주소를 저장하여 메모리..

인코딩 vs 디코딩 , 직렬화(serialization)

인코딩 디코딩 정보를 변환하거나 해독하는 프로세스 1) 인코딩(Encoding) 데이터를 특정 형식이나 코드로 변환하는 과정 (코드화, 암호화, 부호화) =사람이 인지할 수 있는 형태의 데이터를 약속된 규칙에 의해 컴퓨터가 사용하는 바이너리코드로 변화하는 과정 텍스트를 비트로 변환하거나, 이미지나 음성을 특정형식으로 압축하는 등의 과정 주로 문자열을 특정 인코딩 방식을 명시하여 사용 getBytes(), URLEncoder.encode(),,, 데이터 호환성 향상, 보안 강화 , 데이터를 압축하여 저장공간 절약 및 전송시간 단축 ex) 문자열 -> 이진코드 , 모스부호, UTF-8, ASCII,,,, 2) 디코딩 인코딩된 데이터를 원래의 형태로 복원하는 과정 (복호화, 역코드화) = 사람이 이해 할 수 ..

JVM (자바 가상 머신)

JVM(Java Virtual Machine) 자바 가상머신, 자바 어플리케이션을 실행하는 가상 머신 자바와 OS사이의 중개자 역할, OS에 구애받지 않고 독립적으로 작동이 가능하도록 함 인터프리터와 JIT컴파일러를 통해 바이트 코드를 각 운영체제에 맞는 기계어로 해석시켜 실행 메모리 관리, 가비지 컬렉션을 수행 가비지 컬렉션 (Garbage Colleciton) : 유효하지 않은 메모리인 가비지를 정리하여 메모리를 정리하는 것 스택기반 => 독립적으로 사용할 수 있도록 1) Class Loader (클래스 로더) 클래스파일을 Runtime Data Area의 메서드 영역으로 불러오는 역할 2) Execution Engine (실행 엔진) 클래스 파일을 실행 가능하도록 해석 3) Runtime Data ..

런타임 vs 컴파일 타임 / 컴파일러 vs 인터프리터

컴파일타임 개발자가 소스코드를 작성하고 컴파일 과정을 거쳐 실행 가능한 프로그램이 되는 편집과정 소스코드 -> 컴파일 -> 기계어 변환 => 실행가능한 프로그램 Java, C 등의 컴파일 언어는 컴파일 과정이 필요함 Java->컴파일->Java 바이트 코드 -> JVM => 기계어 스크립트 언어(Js, Py 등)은 컴파일 과정이 없이 번역과 즉시 동작됨 컴파일 타임 에러 보통 문법적인 문제로, 문제되는 소스코드를 표시함 syntax에러 타입체크 에러 런타임 컴파일을 마치고 사용자에 의해 실행되어 질 때, 응용프로그램이 동작되는 때(time)을 뜻함 런타임 환경 : 런타임이 일어나기 위해 (시스템 자원을 사용하기 위해) 엑세스 할 수 있도록 해주는 실행 환경 Javascript가 브라우저에서 실행되면 런타..

OOP (객체지향프로그래밍)

OOP (Object-Oriented Programming) 프로그래밍을 여러 개의 독립된 단위 '객체' 드의 상호 작용을 통해 로직을 구성하는 프로그래밍 방법(패러다임) 객체: 속성과 행위를 가진 단위, 대상을 나타내는 단어 클래스를 기반으로 실제로 메모리에 할당된 인스턴스 사람이 인식할 수 있는 사물 또는 개념을 프로그래밍에서 모델링 한 것 상호작용 : 메시지 주고받기, 데이터 처리 등 프로그래밍 패러다임 : 코드를 어떻게 작성할지 결정 절차지향 프로그래밍 : 명령어의 목록, 데이터를 중심으로 필요한 기능을 함수로 구현하는 방식 코드의 재사용성이 높고, 객체의 독립성이 높아 생산성이 향상, 유지보수가 우수함 일상의 언어와 유사하다는 장점으로 인해 모델링이 가능 모델링 과정으로 인해 개발 속도가 느리고..

[네트워크] HTTP

HTTP 1. Hypertext Transfer Protocol, HTML과 같은 하이퍼미디어를 전송하기 위한 애플리케이션 계층 프로토콜 프로토콜(protocol) : 데이터 교환 방식을 정의하는 규칙 체계, 규칙의 집합 애플리케이션 계층: 가장 상위 레이어, 서비스를 제공받고 제공하기 위한 프로토콜 2. 웹브라우저와 웹 서버가 통신을 할 때 사용하는 통신규칙 (Client-Server) 웹브라우저(클라이언트) 웹서버와 통신하여 HTML문서나 파일을 출력하는 GUI기반은 응용 소프트웨어 url을 입력하여 페이지를 요청 웹서버 인터넷을 통해 웹 서비스를 제공하는 컴퓨터의 하드웨어 또는 소프트웨어 HTTP 요청을 받아서 저장된 웹리소스를 클라이언트에 반환 동적 요청이 들어오면 WAS에 요청, 정적인 데이터를..

클라우드(Cloud)

클라우드(Cloud) 가상 컴퓨터, 광대한 네트워크를 통하여 접근할 수 있는 가상화된 서버와 서버에서 작동하는 프로그램과 데이터베이스를 제공하는 IT환경 클라우드 컴퓨팅: 클라우드를 이용하여 컴퓨팅 자원을 사용하는 방법 클라우드 서비스: 클라우드 컴퓨팅을 기반으로 제공되는 서비스, ex) SaaS , PaaS, Iaas : 제어와 책임의 수준으로 분류 Iaas(Infrastructure as a Service) 클라우드를 통해 컴퓨팅, 스토리지, 네트워킹, 가상화와 같은 주문형 인프라 리소스를 조직에 제공 조직이 운영체제, 미들웨어, 가상머신, 앱 또는 데이터를 책임 Paas(Platform as a Service) 클라우드를 통해 애플리케이션을 개발하는 데 필요한 모든 HW 및 SW 리소스를 제공하고 ..

데이터 사이언티스트 & 머신러닝 개발자

머신러닝(Machine Learning) 너무 많아진 데이터를 사용하기 위해 나온 솔루션 컴퓨터(모델)에게 데이터만 넣어줬을 때 우리가 원하는 결과를 예측하는 것이 핵심 인공지능의 하위집합, 클라우드 컴퓨터 시스템이 더 많은 '경험'을 만들며 스스로 지속적인 조정과 향상을 수행하도록 함 => 데이터가 많을수록 더 정확한 결과를 도출 인공지능(Artificial Intelligence) : 인간의 지능을 갖고 있는 기능을 갖춘 컴퓨터 시스템 딥러닝: 인간의 뇌를 형상화한 인공신경망을 머신러닝에 적용한 기술 데이터 사이언티스트 & 머신러닝 엔지니어 데이터를 분석하는 작업을 수행하여 회사에게 인사이트를 제공 데이터를 통계적으로 분석 가공하여 목적에 맞는 결과를 도출 => 모델을 이용 데이터 사이언티스트: 모델..