전체 글(100)
-
[운영체제] 컴퓨터 시스템 (Computer System)
1. 컴퓨터 시스템의 구조 내부 장치 : CPU, 메모리 / 외부 장치 : 네트워크 디바이스, 키보드, 마우스, 모니터, 디스크 외부 장치에서 내부 장치로 데이터를 읽어와(입력, input) 각종 연산을 처리한 후, 그 연산의 결과를 다시 내부 장치에서 외부 장치로 내보내는(출력, output) 방식의 흐름이다. 메모리 및 입출력 장치의 각 하드웨어 장치에는 '컨트롤러'라는 것이 붙어 있다. 이 컨트롤러는 컴퓨터 전체를 제어하는 CPU(중앙처리장치)가 있듯, 각 하드웨어 장치마다 존재하면서 이를 제어하는 작은 CPU라고 볼 수 있다. 운영체제의 역할은 여러 프로그램의 동시에 수행되는 시스템을 위한 것이다. 그리고, 이 프로그램들이 실행되기 위해서는 컴퓨터의 메모리 위에 올라가 있어야 한다. 이러한 자원들..
2022.08.04 -
[JPA] JPA란 무엇인가?
이번 글에서 알아볼 것은 JPA가 무엇인지에 관한 것이다. JPA(Java Persistence API)는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말인 즉슨 실제로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈 소스로는 Hibernate가 있다. JPA에 알아보기에 앞서, ORM은 무엇일까? ORM은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻으로써, ORM 프레임워크는 객체와 테이플을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 객체를 데이터베이스에 저장할 때, 개발자 입장에서는 INSERT SQL을 직접 작성하는 것이 아니..
2022.07.27 -
[Java] 람다와 스트림
1. 람다식(Lambda expression) 람다식(Lambda expression)은 간단히 말해 메서드를 하나의 식(expression)으로 표현한 것이다. 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)' 이라고도 한다. ◆ 람다식 작성 람다식에 선언된 매개변수의 타입은 추론이 가능한 경우는 생략할 수 있는데, 대부분의 경우에 생략 가능하다. 매개변수가 하나뿐인 경우에는 괄호()를 생략할 수 있으나, 매개변수의 타입이 있는 경우에는 생략할 수 없다. 마찬가지로 괄호{} 안의 문장이 하나일 때는 괄호{} 를 생략할 수 있다. ◆ 함수형 인터페이스(Functi..
2022.07.26 -
객체지향 프로그래밍(OOP, Object Oriented Programming)
OOP(Object Oriented Programming) OOP(객체 지향 프로그래밍)이란 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다. 대표적으로 Java와 C#이 객체 지향 프로그래밍 언어이다. 객체 : 세상에 존재하는 모든것, 프로그래밍에서의 객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹 [EX] 컴퓨터(객체) = 데이터(본체, 모니터, 키보드) + 기능(화면, 소리, 입력, 출력) OOP는 코드 재사용성과 생산성의 향상 효과를 볼 수 있고, 유지보수의 편의성 덕택에 협업이 중요하고 규모가 큰 대형 프로젝트에 사용되는 프로그래밍 이론이다. 아래는 OOP의 장점과 단점을 모아놓은 것이다. OOP의 장점 코드 재..
2022.06.29 -
[네트워크] IP fragmentation, reassembly
IP 단편화(fragmentation) network links는 MTU(Max Transfer Size)를 가진다. 링크 계층 프로토콜마다 다른 링크 타입과 MTU를 가지므로 네트워크는 큰 IP datagram을 분할할 필요성이 있다. 이러한 IP datagram을 여러 조각의 datagram으로 쪼개서 전송하고 최종 목적지에서 재결합(reassembly) 된다. IP 헤더를 통해 본래 하나의 datagram이었는지 구분하고 순서를 확인하게 된다. 4000byte datagram을 3개의 datagram으로 쪼개서 전송했다고 하자. 각 datagram은 헤더가 20byte씩을 차지한다. 즉 처음 datagram도 헤더가 20byte를 차지하므로 data field는 3980이다. 또한 MTU는 1500..
2022.06.27 -
[네트워크] DNS
등장 배경 네트워크 안에서 호스트를 식별하기 위한 목적으로 IP 주소를 사용하는데, 사람의 경우 숫자보다 문자를 사용하는 것이 더 편하므로 도메인 이름을 이용해 호스트를 식별한다. 도메인 이름을 사용하는 경우에도 최종적으로 IP 주소를 알고 있어야 상대방과 연결이 가능하므로, 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP 네트워크 서비스인 DNS가 등장했다. DNS란? 정의 TCP/IP 네트워크 상에서 사람이 기억하기 쉽게 문자로 만들어진 도메인을 숫자로 된 IP 주소로 바꾸는 서버를 DNS라고 한다. 포트 번호 UDP와 TCP 모두 53번 포트를 사용한다. DNS 서버에 질의를 보낼 때 UDP를 사용하고, Zone Transfer (영역 전송)과 512 B..
2022.06.26