인프런 워밍업 클럽 BE 1기 - 1주차 발자국

인프런 워밍업 클럽 BE 1기 - 1주차 발자국

학습한 내용

Java

컴파일: 인간이 이해하기 쉬운 언어를 기계어(바이트 코드)로 번역하는 과정

컴파일러: 컴파일을 하는 프로그램

바이트 코드: 0과 1로 이루어진 코드, 컴퓨터가 이해할 수 있다.

  • 자바의 JVM은 다양한 운영체제에서 바이트 코드를 실행할 수 있도록 중간 단계 역할을 한다.

  • 따라서 JVM만 운영체제별로 존재한다면, 하나의 바이트 코드로 각각의 운영체제에서 실행 할 수 있다.

JVM

  • 자바 바이트 코드를 실행하는 가상머신

  • 바이트 코드를 읽고 검증 및 실행한다.

  • Java 외에 다른 언어에서도 사용된다.

     

JRE

  • 자바 애플리케이션 실행 환경

  • JVM의 실행환경 구현

     

JDK

  • 컴파일러, 디버그 등을 포함하는 자바 개발 도구

     

    Build

  • 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 SW 가공물로 변환시키는 과정

     

    빌드 과정

    1. 소스 코드를 컴파일한다.

    2. 테스트 코드를 컴파일 한다.

    3. 테스트 코드를 실행한다.

    4. 테스트 코드 리포트를 작성한다.

    5. 기타 추가 설정한 작업들을 진행한다.

    6. 패키징을 수행한다.

    7. 최종 SW 결과물(Artifact)을 만들어 낸다.

실행

  • 작성한 코드(혹은 테스트 코드)를 컴파일 후 실행해 보는 과정

  • 독립 SW 가공물이 생성될 수도 있고, 생성되지 않을 수도 있다.

  • 인터프리터 언어의 경우, 컴파일 과정이 필요 없다.

빌드 툴(Build Tool)

  • 빌드 과정을 자동으로 처리 해주는 프로그램

  • 외부 소스 코드(외부 라이브러리) 자동 추가, 관리

빌드란 단순히 실행하는 것과 다르다.

빌드 과정 자동화와 외부 라이브러리 관리를 위해 빌드 툴이 사용된다.

네트워크(Network)

여러 컴퓨터나 장치들이 서로 데이터를 주고받을 수 있도록 연결된 시스템

  • IP: 네트워크 상에서 각 장치를 구별하기 위해 사용되는 고유의 식별 번호

  • 도메인 이름: 외우기 어려운 IP 주소 대신, 사람이 읽을 수 있는 이름으로 대체할 수 있는 별칭

  • 포트: 하나의 IP 주소 내에서 특정 프로그램이나 서비스를 식별하기 위해 사용되는 숫자

HTTP(Hypertext Transfer Protocol)

인터넷에서 데이터를 주고받기 위한 표준 프로토콜

  • 프로토콜(Protocol): 통신을 위한 규칙과 약속

규칙

  • HTTP Method: 요청을 받는 컴퓨터에게 요구하는 행위

    • GET: 데이터 요청(쿼리 사용)

    • POST: 데이터 전송(바디 사용)

    • PUT: 데이터 수정(바디 사용)

    • DELETE: 데이터 삭제(쿼리 사용)

  • Host: 요청을 받는 컴퓨터의 정보를

  • Path: 요청하는 자원의 경로

     

    데이터 전달 방법

    1. 쿼리(Query)

       

      • URL에 포함되어 데이터를 전달

      • ?를 통해 쿼리와 Path를 구분한다.

      • 쿼리 사이에는 &를 통해 구분한다.

    2. 본문(Body)

       

      • 별도의 본문을 통해 데이터를 전달

API(Application Programming Interface)

클라이언트와 서버 간의 HTTP 통신을 통해 정해진 약속에 따라 특정 기능을 수행

  • 인터페이스(Interface): 규약, 규칙

JSON(JavaScript Object Notation)

객체를 표현하기 위한 형식(객체 표기법)

용법

  • 중괄호(`{}`)로 묶여 있다.

  • 중괄호 안에, "key": value로 표기한다.

  • 키("key")와 값("value")은 :로 구분된다.

  • 속성(키-값)은 ,로 구분한다.

데이터베이스(Database)

  • 데이터를 구조화 시켜 저장하고, 관리하는 시스템

  • RDB(Relational Database)는 데이터를 표(table) 형식으로 구조화하여 관리한다.

     

    SQL(Structured Query Language)

  • 표 형식으로 구조화된 데이터를 조회, 삽입, 수정, 삭제하는 언어

  • SQL을 통해 데이터베이스와 상호작용

DDL(Data Definition Language)

데이터를 정의하기 위한 SQL

  • 데이터베이스 생성

CREATE DATABASE [데이터베이스 이름];
  • 데이터베이스 목록 조회

SHOW DATABASES;
  • 데이터베이스 삭제

DROP DATABASE [데이터베이스 이름];
  • 데이터베이스 선택

USE [데이터베이스 이름];
  • 테이블 생성

     

    CREATE TABLE [테이블 이름] ( 
      [필드1 이름] [타입] [부가조건], 
      [필드2 이름] [타입] [부가조건], 
      ... 
    
      PRIMARY KEY ([필드 이름])
    );
  • 테이블 목록 조회

SHOW TABLES;
  • 테이블 삭제

DROP TABLE [테이블 이름];

DML(Data Manipulation Language)

데이터 조작을 위한 SQL

  • 데이터 삽입 (생성 - Create)

INSERT INTO [테이블 이름] (필드1이름, 필드2이름, ...) VALUES (값1, 값2, ...)
  • 데이터 조회 (읽기 - Retrieve or Read)

SELECT * FROM [테이블 이름] WHERE [조건];
  • 데이터 수정 (업데이트 - Update)

UPDATE [테이블 이름] SET 필드1이름=값1, 필드2이름=값2, ... WHERE [조건];
  • 데이터 삭제 (제거 - Delete)

DELETE FROM [테이블 이름] WHERE [조건];

수정과 삭제 시, 조건을 지정해주지 않는다면 모든 데이터에 적용되기 때문에 주의해야 한다.

클린 코드(Clean Code)

  • 코드(Code)는 요구사항을 표현하는 언어다.

  • 개발자는 이러한 요구사항을 구현하기 위해 코드를 읽고 작성한다.

  • 코드를 읽는 것은 소프트웨어 개발에서 필수적이며 피할 수 없다.

작성 원칙

  • 함수는 작고 명확하게 작성되어야 한다.

  • 클래스는 하나의 책임만을 가져야 한다.

이유

  • 업 과정에서 다수의 개발자가 동시에 수정할 수 없다.

  • 코드를 읽고, 이해하기 어렵다.

  • 함수의 일부분을 수정하더라도, 수정된 코드가 다른 부분에 영향을 미칠 수 있기 때문에 함부로 수정할 수 없게 된다.

  • 코드의 기능이 커서 테스트가 어렵다.

  • 이로인해 유지보수성이 떨어진다.

회고

지금까지는 Java의 다양한 기능을 사용하는 과정에서 그저 기능들을 활용하는 데 그쳤던 것 같다. 그러나 이번 스터디를 통해 강의를 듣고 미션을 수행하면서 해당 기능들이 등장한 배경과 목적을 공부할 수 있었고, 앞으로 어떻게 공부해야 하는지 배울 수 있었던 1주차 였다.

댓글을 작성해보세요.