ahlight
개발 저장소
ahlight
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • Java (7)
    • Spring (5)
    • JPA (2)
    • JavaScript (0)
    • Computer Science (12)
      • 디자인패턴, 프로그래밍 패러다임 (1)
      • 네트워크 (4)
      • 운영체제 (4)
      • 데이터베이스 (3)
      • 자료구조 (0)
    • 알고리즘 (1)
    • 프로그래머스 (13)
    • 백준 (94)
    • 서평 (3)
    • 회고 (1)
    • TIL (58)
    • 기타 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 넥스트스텝
  • TDD
  • 클린코드
  • Java
  • 라즈베리파이4 #홈서버 #포트포워딩 #dhcp

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ahlight

개발 저장소

TIL - 0218
TIL

TIL - 0218

2023. 2. 18. 21:05

1. 자바 플레이 그라운드 with TDD, 클린 코드

  • 미학습

2. 혼자서 공부하는 컴퓨터 구조 + 운영체제

* 보조기억장치

  • 하드 디스크(HDD) 

      - 대표적인 보조기억 장치중 하나

      - 자기적인 방식으로 데이터를 저장해 자기 디스크(magnetic disk)라고도 부른다.

     

출처 : https://whitesnake1004.tistory.com/273

      - 플래터 : 실질적으로 데이터가 저장되는 곳. 자기물질로 덮여 수많은 N극과 S극을 저장. 양면 사용

      - 스핀들모터 : 플래터를 회전시키는 부품

      - 헤드 : 플래터에 데이터를 읽고 쓰는 부품

      - 액츄에이터 암(디스크암) : 헤드의 위치 조정

출처 : https://whitesnake1004.tistory.com/273

      - 위 그림처럼 플래터는 한 장이 아닌 여러장을 겹친 상태

      - 섹터 : HDD의 가장 작은 전송 단위

      - 트랙 : 플래터를 동심원으로 나누었을 때 원중 하나

      - 실린더 : 여러겹의 플래터에 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위(원통모양)

      - 디스크암의 이동때문에 연속된 정보를 저장하기에 실린더가 유용(디스크 암을 움직이지 않고 데이터 작성 가능)

      - 탐색 시간 : 찾으려는 데이터가 저장된 트랙으로 헤드가 움직인 시간

      - 회전 지연 : 헤드가 있는 곳으로 플래터를 회전

      - 전송 시간 : HDD와 메모리간 데이터 전송시간

 

  • 플래시 메모리

       - 셀 : 플래시 메모리에 데이터를 저장하는 가장 작은 단위

       - 셀에 몇 비트를 저장하느냐에 따라 SLC, MLC, TLC로 나눌 수 있다.

SLC(Single Level Cell) - 한 개의 셀에 한 개의 비트 저장 가능
- 비트의 빠른 입출력, 용량이 적기에 용량 대비 가격이 높음
- 수명이 길고 고성능
MLC(Multiple) - 한 개의 셀에 두 개의 비트 저장 가능
- SLC보다 큰 용량 , SLC대비 느림, 가격 저렴
TLC(Triple) - 한 개의 셀에 세 개의 비트 저장 가능
- MLC보다 큰 용량, 느림, 저렴

 

      - 페이지 -> 블럭 -> 플레인 -> 다이 (왼쪽에서 오른쪽 순으로 모여 만들어짐)

      - 페이지의 상태는 Free, Valid, Invalid 3개가 존재

      - Free는 데이터가 저장되어 있지 않은 상태

      - Valid는 유효한 데이터가, Invalid는 쓰레기 데이터라고 불리는 유효하지 않은 데이터를 저장

      - HDD와 달리 데이터를 덮어 쓸 수 없다.

      - 데이터를 읽고, 쓰는 단위는 페이지, 삭제 및 수정은 블록 단위로

      - 필요 없는 데이터를 지우기 위해서 가비지 컬렉션이랑 기능을 제공(Valid상태의 페이지들만 새로운 블록에 옮기고 기          존 블록은 삭제)

 

* RAID(Redundat Array of Independent Disks)

  • 정의

      - 보조 기억장치에는 수명이 존재 -> 데이터 저장의 불안전성

      - 한 개의 대용량 보조기억장치 성능 < 여러개의 보통 용량의 보조기억장치 성능

      - 크게 위 두가지 이유로 탄생한 것이 RAID -> 여러개의 보조기억장치를 하나인 논리적 보조기억장치로 사용

     

구분 특징
RAID0 - 여러개의 보조기억장치에 데이터를 분산 시키는 가장 기본적인 방법
- 한 개의 보조기억장치만 고장나도 다른 모든 보조기억장치의 정보를 읽는데 문제가 발생
- 데이터가 스트라이핑되면서 데이터를 읽고 쓰는 속도가 향상
RAID1 - RAID0의 문제의 해결책으로 등장
- HDD에 저장되는 데이터의 복사본을 같이 저장(미러링)
- 데이터는 안전하나, 낭비되는 저장공간이 많아짐 -> 비용증가
- RAID0보다 낮은 속도
RAID4 - RAID1과 달리 전체 복사본 대신 오류 검출,복구를 위한 정보인 패리티 비트를 저장
RAID5 - RAID4에서 패리티 정보 저장시 병목현상이 발생 -> 패리티 정보를 여러 HDD에 분산 저장
RAID6 - RAID5와 기본적인 원리는 같으나 서로 다른 두개의 패리티 정보를 저장해 안정성을 강화
- RAID5보단 느린 성능

 


3. 알고리즘

  • 현대오토에버 코딩테스트
  • 면접을 보게 된다면 복기를 위해 문제 풀이에대해 간략하게 적어보자
  • 1번 -> 아스키코드를 활용한 문자 위치 변경
  • 2번 -> 기준이 되는 문자열과 나머지 문자열 배열의 문자 비교, 문자열 오름차순 정렬 필요
  • ArrayList대신 우선순위큐를 사용, StringBuilder 초기화 sb.setLength(0);
  • 3번 -> int형 배열의 같은 요소를 찾기위해 이분탐색(Arrays.binarySearch)를 이용(시간 복잡도 고려)
  • 두개의 배열에서 구간별 최대값을 찾음. 단,처음과 끝의 예외적인 상황을 고려하여 else if으로 처리
  • Pair class 굳이 안만들어도 됐음 인덱스만 저장해도 충분했음

'TIL' 카테고리의 다른 글

TIL - 0221  (0) 2023.02.21
TIL - 0220  (0) 2023.02.20
TIL - 0217  (0) 2023.02.17
TIL - 0216  (0) 2023.02.16
TIL - 0215  (0) 2023.02.15
    'TIL' 카테고리의 다른 글
    • TIL - 0221
    • TIL - 0220
    • TIL - 0217
    • TIL - 0216
    ahlight
    ahlight

    티스토리툴바