본문 바로가기
TIL

[TIL] 프로그래밍 언어 / TCP / UDP / 진수 변환 / 데이터 단위 / IntelliJ 단축키 / vi, vim

by thegreatjy 2023. 9. 21.
728x90

CLI, GUI

  • CLI → DOS → 키보드
  • GUI → Window → 마우스

언어

  • 고급언어
    • 사람이 알아듣기 쉬운 언어
    • Java
  • 중급언어
    • C
      • 고급과 저급(포인터 : 메모리애 직접 접근)이 가능
  • 저급언어
    • == 기계어
    • 어셈블리 언어 assembly
      • 기계어와 1:1 대응시켜 코드화한 언어
    • 어셈블러 assembler
      • 어셈블리어로 작성한 프로그램은 어셈블러를 통해 오브젝트 코드(기계어)로 변환하는 과정(어셈블)을 거쳐야 함

LAMP

  • Linux
    • OS
    • Windows-server(NT)로 대체
  • Apache
    • 웹 서버
    • IIS로 대체
    • Apache tomcat(WAS)
  • MySQL
    • DB
    • SQL-Server로 대체
    • Maria DB
  • PHP
    • 서버용 스크립트
    • 서버에서 실행하여 클라이언트에 데이터 전달
    • ASP, ASP .Net로 대체
    • JSP, Spring, SpringBoot
    • 타임리프 → 리액트
  저렴, 중소에서 사용 유료 eGOV
OS Linux Windows-server(NT) UNIX → Linux
웹 서버 Apache IIS Apache tomcat(WAS)
DB MySQL SQL-Server Maria DB
서버용 스크립트 PHP ASP, ASP .Net JSP, Spring, SpringBoot / 타임리프 → 리액트

MEAN 스택

MongoDB MariaDB
Express Tomcat
Angular.js, React, Vue, svelte JSP
Node.js Spring
- js로 풀스택 가능  

진수

16진수 간략함 haxadecimal
10진수   decimal
8진수 신속함 octal
2진수   binary

인터넷

  • 인터넷 = 인트라넷 + 익스트라넷
  • 인트라넷
    • 내부 직원용
  • 익스트라넷
    • 외부용
  • IP
    • 숫자
  • Domain
    • IP를 기억하기 쉽게 문자 형태로 만듦
  • DHCP
    • 동적 IP
  • NIC
    • 고정 IP 신청
  • 홈페이지 운영을 위해서는 고정 IP를 사용해야 함.

www : 프로토콜

ftp : filezilla

telnet : PuTTY

  • DNS
    • Domain Name System
    • 도메인 네임 → IP 주소 변환
  • URL
    • 프로토콜://호스트(서버)주소 [:포트 번호][/파일 경로]
  • 프로토콜
    • 통신규약
  TCP UDP
연결방식 연결형 (패킷 교환) 비연결형 (데이터그램)
전송 순서 순서 보장 순서 보장 X
수신 혹인 수신 확인 수신 확인 X
통신 방식 1:1 통신 1:1, 1:N, N:N 통신
신뢰성 높다 낮다
속도 느림 빠름
  • TCP/IP
    • 컴퓨터들 간에 데이터를 주고받을 수 있도록 하는 표준 프로토콜
    • 전송 데이터의 흐름 제어와 데이터의 에러 유무를 검사
    • 패킷을 추적 및 관리
      • 패킷
        • 네트워크를 통해 전송되는 데이터 조각
        • 네트워크 계층 내의 데이터 단위
        • 네트워크를 통해 전송된 데이터는 패킷으로 분할되고 대상 장치에서 재결합된다
        • 헤더
          • 패킷의 내용, 출발지 및 목적지에 대한 정보를 제공
        • 페이로드
          • 패킷의 본문
          • 실제 데이터
        • 트레일러
          • 패킷의 끝에 도달했다는 신호
    • 연결 지향 방식으로 패킷 교환
      • 3-way handshaking
    • 높은 신뢰성
    • 파일 전송에 사용됨
    • UDP보다 속도가 느리다
  • UDP
    • 비연결형 프로토콜
    • 정보를 주고 받을 때, 신호절차를 거치지 않는다
    • 데이터의 전송을 보장 X
    • 신뢰성이 낮다
    • CheckSum 필드를 통해 최소한의 오류만 검출
    • TCP보다 속도가 빠르다

  • 패킷
  • 데이터그램
  • OSI 7계층
  • ISO
    • 국제 규격
  • KS
    • 국내 규격

중앙집중식 Host - Terminal
분산식 Client - Server
일대일 P2P

데이터 교환 방식

html → xml → json

spring (xml), springboot(.property → .yml)

테스트

종류 설명
알파 회사 내에서 테스트
베타 출시하기 전, 일반인에게 공개

컴퓨터에 hdd 설치 가능한 개수

  • 파티션
    • C: - Z:
    • 하드디스크를 여러 개의 논리적인 영역으로 나누는 작업
    • 운영체제에서는 파티션이 하나의 드라이브로 인식된다.

데이터 용량 단위

데이터 단위

bit nibble (4bit) byte (8bit) word field record file data data bank big data
  • word
    • CPU가 한 번에 처리할 수 있는 데이터 단위
    • CPU는 명령어 실행O, 저장 X, 레지스터가 저장O
    • 따라서 word 크기 == 레지스터 크기
    • 32비트 CPU의 워드는 32비트
  • record
    • DB의 단위
    • DB table에서 가로 행
    • == tuple
  • field = 항목 = item
  • field 가 모여서 record
  • 데이터 통신 속도
    • bps (bit per second)

bcd 영어, 숫자 6개
ascii 영어, 숫자, 특수문자 8개
ebcdic 중, 대형 컴퓨터에서 사용  
  • 8bit == 1 byte 이유
  • 아스키 문자 인코딩을 기준으로 1바이트가 8비트가 됐다.
  • 7개 ascii + 1개 parity bit = 8 bit

한글조합 KSSM

초, 중, 종 조합

한글완성 KS

김 → 김 ? → 김

입력 문자가 있는지 탐색 후, 출력

  • ASCII
    • 영어/숫자 1 byte
    • 한글/한문 2byte
    • 1 바이트 = 7비트 + 1비트 parity bit
      • parity bit
        • 오류 탐지
        • 7비트 내에 1이 홀수 개 → 1
        • 7비트 내에 1이 짝수 개 → 0
    • $2^7$개의 문자, 0($2^7$-1), 0127
  • Unicode
    • 전 세계 문자 지원
    • 모든 문자는 2 byte
    • 인코딩 방식
      • euc_kr : 한글, 영어
      • utf-8 : 전세계 문자
      • 컴퓨터가 어떤 글자를 만났을 때 얼만큼씩 읽어야 하는지 미리 말해주는 것

진수 변환

  • 10진수 → 2, 8, 16 진수
  • 2, 8, 16 진수 → 10 진수
  • 2,8,16 진수 ↔ 2,8,16 진수
    • 2진수 → 8진수
      • 2진수 3개씩 8진수 1개로 표현
    • 2진수 → 16진수
      • 2진수 4개씩 16진수 1개로 표현
    • 8진수 → 2진수
      • 1개 숫자를 3자리의 2진수로 표현
    • 8진수 → 16진수
      • 8진수 → 2진수 → 16진수

문제

Q. 24(10)을 16진수로 변환

A. 18(16), 16으로 나눔

Tip. $Math.pow(2, 10)$ = 10^3

Q. 35(8) = 3*8 + 5 = 29(10)

Q. C3(16) = 12*16 + 3 = 195(10)

Q. 101100(2) ⇒ 16진수

A. 2C(16)

Q. 39(10) ⇒ 8진수

A. 47(8)

Q. D4(16) ⇒ 10진수

A. 212(10)

Q. 35(8) ⇒ 2진수

A. 11101(2)

Q. 45(10) ⇒ 16진수

A. 2D(16)

숫자

  • 정수
    • 부호와 절대치
    • 고정소수점
    • 1의 보수
      • 1’s complement
      • 원래 수에서 0과 1 반전
      • 두 번 덧셈을 하여 느림
      • 101의 1의 보수 = 010
      • 첫 번째 비트는 부호 비트
    • 2의 보수
      • 2’s complement
      • 1의 보수 + 1
      • 한 번의 계산이 필요하여 빠름
      • byte 데이터 타입의 표현 범위
        • 1 byte = 8 bit
        • -2^(n-1) ~ 2^(n-1) - 1
  • 실수
    • 소수점 있는 수
    • 부동소수점

코드 표기법

  • 카멜 표기법
    • 첫 글자 소문자, 단어 구분을 대문자로, 낙타 모양
    • 변수, 함수
    • myJavaTest
  • 파스칼 표기법
    • 클래스
    • MyName
  • 스네이크 표기법
    • DB : 대소문자 구분 X
    • my_java_test

Java

GUI : AWT > Swing > FX

import java.util.* : java 기본 기능

import javax.~ : 추가된 기능, 웹 서버 관련

자바 17부터 javax → jakarta

jre(바이트코드 실행만)

jvm

jdk

패키지

  • 도메인의 역순
  • https://www.milkt.co.kr
  • kr.co.milkt
  • 자바 패키지 도메인형
  • 클래스
    • 함수 + 변수의 집합 = 객체
  • 함수
    • 기능
  • 변수
[] 대괄호 배열 같은 속성의 데이터의 집합
{} 중괄호 블럭 코드 블럭
() 소괄호 메서드  

IntelliJ 단축키

단축키 설명
F8 다음 라인 이동
F9 다음 브레이크 포인트까지 진행
Ctrl+Space 기본 코드 자동 완성
Alt+Insert getter, setter, 생성자 자동완성
Ctrl+O 오버라이드 가능 메소드 자동생성
Ctrl+/ 주석처리 //
Ctrl+Shift+/ 주석처리 /* */
ctrl+Alt+i 들여쓰기 정렬
Shift+Enter 아래 행에 라인 추가, 이동
Ctrl+D 현재 라인을 아래 행에 복사
Ctrl+Y 현재 라인 삭제
Shift+F6 이름 일괄 변경
Ctrl+Alt+O 사용하지 않는 import 정리
ctrl+G 이동할 라인 입력
Shift+F10 프로젝트 실행
ctrl+K 커밋
  • vi vs vim
    • text editor
    • vi
      • visual
      • POSIX 스탠다드의 한 부분으로 유닉스 구현
    • vim
      • Vi IMproved
      • Linux에 포함되어 배포됨

Refs
https://www.mireene.com/webimg/linux_tip1.htm

https://sin0824.tistory.com/8

dns

https://it-serial.tistory.com/entry/리눅스-DNS의-진행-과정-설정-Gateway게이트웨이

tcp

https://mangkyu.tistory.com/15

패킷 데이터그램

https://velog.io/@wejaan/Packet

부동소수점

https://code-lab1.tistory.com/184

record

http://wiki.hash.kr/index.php/레코드

728x90