전체 글 58

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) : 인간의 지능을 갖고 있는 기능을 갖춘 컴퓨터 시스템 딥러닝: 인간의 뇌를 형상화한 인공신경망을 머신러닝에 적용한 기술 데이터 사이언티스트 & 머신러닝 엔지니어 데이터를 분석하는 작업을 수행하여 회사에게 인사이트를 제공 데이터를 통계적으로 분석 가공하여 목적에 맞는 결과를 도출 => 모델을 이용 데이터 사이언티스트: 모델..

블록체인

블록체인 비즈니스 네트워크 내에서 정보를 투명하게 공유할 수 있도록 하는 고급 데이터베이스 메커니즘 연쇄적으로 연결된 블록에 데이터를 저장 탈 중앙화 : 정보들이 모두에게 공개 보통의 사이트는 특정 소유자(회사 등)가 정보를 소유하고 있는 중앙화된 정보를 가짐 누구나 db에 접근할 수 있고, 다른 사람의 정보를 볼 수 있음 불변성 : 네트워크의 합의 없이 체인을 삭제하거나 수정할 수 없으므로 시간 순서대로 일관성이 있음=> 조작 불가능, 추적 가능 합의 : 거래 기록을 위한 참여자 동의에 관한 규칙을 설정함, 네트워크 참여자의 과반수가 동의한 경우에만 새로운 거래를 기록할 수 있음 거래 기록 -> 합의 도출 -> 블록 연결 -> 원장 공유 비트코인, 이더리움등 코인 관련 기술은 블록체인을 이용한 기술 블..

임베디드 시스템(Embedded System)

임베디드(Embedded) 시스템 특정 목적을 가지고 만들어진 컴퓨터 시스템을 동작시키는 소프트웨어를 하드웨어에 내장하여 특수한 기능만을 수행하는 컴퓨터 시스템 OS와 응용프로그램들이 롬(플래시)에 이미지 형태로 저장되어 있다가 시동과 동시에 램 디스크를 만든 다음, 램 디스크 위에 OS와 응용프로그램들이 구성되고 구동되는 시스템 응용프로그램: os를 제외한 나머지 소프트웨어 /프로그램 롬(Read Only Memory) : 한번 기록된 정보를 빠른 속도로 읽을 수만 있고 수정할 수 없는 기억장치, 비휘발성 램(Random Access Memory) : 자유롭게 내용을 읽고 쓸 수 있는 기억장치, 주기억장치로 분류, 램이 많으면 한 번에 많은 일을 할 수 있다는 뜻, 휘발성 플래시(Flash Memory..

프론트엔드 & 백엔드

프론트엔드 유저들이 서비스를 이용할 때 사용하는 웹, 앱 등을 의미, 화면에 보여주는 부분 웹 접근= 브라우저에서 프론트엔드 개발자가 만든 웹 프로그램을 다운받아서 보여줌 1. 기초 레이아웃 정적인 데이터 : 서버와 통신하기 전 기초 레이아웃, 고정적으로 보여지는 부분 (HTML,CSS) 2. 데이터 통신과 렌더링 초기 화면을 그려준 후, js코드를 통해 서버에 정보를 요청 받아온 데이터를 렌더링 하여 보여줌 (HTML,CSS) 렌더링 : 화면을 시각적으로 그려주는 작업 3. 라우팅(Routing) 다른 페이지로 이동시켜 주는 기능, 네트워크에서 경로를 선택하는 프로세스 미리 정해진 규칙을 사용하여 최상의 경로를 선택 => 네트워크 장애를 최소화 라우트 : 경로, 라우팅: 경로를 찾아가게 하는 과정, 라..

프로그래밍 언어와 라이브러리

코딩을 한다 = 프로그래밍 언어를 이용한다 1. 언어 기계어 : 0 ,1로 이루어진 명령어, 컴퓨터(os)가 읽을 수 있음 어셈블리어(저급언어) : 기계어에서 숫자를 의미 있는 단어로 바꿔서 사람들이 이해할 수 있도록 만든 언어 프로그래밍언어(고급언어) : 사람이 쉽게 이해하고 작성할 수 있는 언어 2. 컴파일 컴퓨터는 프로그래밍 언어를 읽을 수 없으니 기계어로 번역되어야 한다 => 컴파일한다(빌드한다) 1) 컴파일 언어 코드를 한 번에 컴파일한 후에 실행파일을 만드는 컴파일 방식 컴파일 단계와 실행 단계가 분리되어 있음 => 실행 시 컴파일 과정을 거치지 않기 때문에 실행속도가 빠르지만 규모에 따라 컴파일 시간이 오래 걸릴 수 있음 exe실행파일, 모바일앱 C언어, Java 2) 인터프리터 언어 실행하..