[객체지향프로그래밍] 자바 데이터 베이스 관리 프로그래밍 실습
·
전공/객체지향프로그래밍
프로젝트 소개 오늘은 제가 최근에 진행한 자바 실습 프로젝트에 대해 소개하려고 합니다. 이 프로젝트는 데이터베이스의 생성, 조회, 수정, 삭제 등의 작업을 효율적으로 처리하는 시스템을 개발하는 것이 목표입니다. 프로그램의 테스트 케이스로는 도서 관리 시스템을 작동시켜 보았습니다. 프로젝트 구조 및 파일 설명 프로젝트는 다음과 같은 구조로 이루어져 있습니다. src/database 폴더: 데이터베이스 관련 파일들을 포함하는 폴더 TableImpl.java: 테이블 구현을 담당하는 클래스 Table.java: 테이블 인터페이스를 정의한 클래스 JoinColumn.java: 조인할 칼럼을 나타내는 클래스 Joinable.java: 조인 가능한 엔티티를 나타내는 인터페이스 Database.java: 데이터베이스..
[Linux] 리눅스 네트워크
·
전공/리눅스시스템관리
네트워크 기초 TCP/IP 프로토콜 프로토콜: 컴퓨터와 컴퓨터 사이에 데이터를 어떻게 주고받을 것인지를 정의한 통신규약 인터넷은 TCP/IP라는 프로토콜에 따라 통신 주소 컴퓨터의 주소: MAC 주소, IP 주소, 호스트명 MAC주소 하드웨어를 위한 주소 MAC 주소는 네트워크 인터페이스 카드(랜 카드)에 저장된 주소로 기본적으로 네트워크 인터페이스 카드가 만들어질 때 부여 MAC 주소는 각 하드웨어를 구별하는 역할을 수행 MAC 주소는 : 이나 - 으로 구분되는 여섯 개의 16진수로 구성되며 총 48bit 앞의 세 자리는 제조사 번호, 뒤의 세 자리는 일련변호 제조사 번호는 국제 표준 기구 중 하나의 IEEE에서 지정 IP 주소 IP 주소는 1바이트 크기의 숫자 네 개로 구성되므로 총 4바이트 TCP/..
[Linux] 리눅스 사용자 관리
·
전공/리눅스시스템관리
사용자 계정 관련 파일 /ect/passwd 파일 사용자 계정 정보가 저장된 기본 파일 로그인 ID: 사용자 계정의 이름 x: 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목(현재는 /etc/shadow에 암호 저장) UID: 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호 - 일반적으로 0~999번과 65534번은 시스템 사용자를 위한 UID로 예약 - 일반 사용자는 UID 1000번부터 할당(root 계정은 0번) GID: 그룹 ID를 나타낸다. 리눅스에서 사용자는 무조건 한 개 이상의 그룹에 소속 설명: 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보를 기록 홈 디렉터리: 사용자 계정에 할당된 홈 디렉터리의 절대 경로 로그인 셸: 사용자의 로그인 셸을 지정 /..
[Linux] 리눅스 소프트웨어 관리
·
전공/리눅스시스템관리
우분투 패키지의 개요 우분투 리눅스는 데비안 계열의 패키지를 지원(deb 형식 패키지) 우분투 패키지의 특징 바이너리 파일로 구성되어 있어 컴파일 불필요 패키지의 파일이 관련 디렉터리에 바로 설치됨 패키지를 삭제할 때 관련된 파일을 일괄적으로 삭제 가능 기존에 설치한 패키지를 삭제하지 않고 바로 업그레이드 가능 패키지의 설치 상태 검증 가능 패키지에 대한 설치 정보 제공 해당 패키지가 의존하는 패키지가 무엇인지 알려줌, 의존성이 있는 패키지를 미리 설치하거나 apt-get 명령으로 자동 설치 우분투 패키지의 카테고리 main 우분투에 의해 공식적으로 지원되며 자유롭게 배포 가능 restricted 우분투에 의해 지원되나 완전한 자유 라이선스 소프트웨어는 아님 universe 리눅스에서 사용할 수 있는 대..
[Linux] 리눅스 부팅 프로세스
·
전공/리눅스시스템관리
리눅스 시스템의 부팅 바이오스 단계 바이오스는 PC에 장착된 기본적인 하드웨어의 상태를 확인한 후 부팅장지를 선택하여 부팅 디스크의 첫 섹터에서 512B를 로딩 512B를 마스터 부트 레코드(MBR)라고 하며 디스크의 어느 파티션에 2차 부팅 프로그램(부트 로더)이 있는지에 대한 정보가 저장되어 있음 메모리에 로딩된 MBR은 부트 로더를 찾아 메모리에 로딩하는 작업까지 수행 부트 로더 단계 부트 로더는 일반적으로 여러 운영체제 중에서 부팅할 운영체제를 선택할 수 있도록 메뉴를 제공 우분투에서는 부트 로더로 GRUB를 사용 부팅할 때 GRUB 메뉴를 출력하려면 /etc/default/grub 파일을 수정해야 함 GRUB_TIMEOUT_STYLE=hidden 앞에 #을 추가, GRUB_TIMEOUT=0을 1..
[Linux] 리눅스 파일시스템과 디스크관리
·
전공/리눅스시스템관리
리눅스 파일 시스템 종류 리눅스에서 지원하는 다양한 파일 시스템 파일 시스템 기능 msdos MS-DOS 파티션을 사용하기 위한 파일 시스템 iso9660 CD-ROM, DVD 표준 파일 시스템이며 읽기 전용으로 사용 nfs Network File System으로 원격 서버의 디스크를 연결할 때 사용 ufs Unix File System으로 유닉스의 표준 파일 시스템 vfat 윈도 95, 98, NT를 지원하기 위한 파일 시스템 hpfs HPFS를 지원하기 위한 파일 시스템 ntfs 윈도의 NTFS를 지원하기 위한 파일 시스템 sysv 유닉스 시스템V를 지원하기 위한 파일 시스템 hfs 맥 컴퓨터의 hfs 파일 시스템을 지원하기 위한 파일 시스템 특수 용도의 가상 파일 시스템 파일 시스템 기능 swap ..
[컴퓨터구조] #13~14 추가 사설 문제
·
전공/컴퓨터구조
문제 가상메모리의 정의와 역할에 대해 설명하세요. 가상 메모리 시스템 주소와 페이지 부재(fault)에 대해 설명하세요. 페이지 테이블과 Context Switching(문맥 교환)에 대해 설명하세요. 가상메모리 성능개선 방법에 대해 설명하세요. RAID의 정의와 종류에 대해 설명하세요. SISD, MIMD, SIMD, SPMD의 차이점에 대해 설명하세요. 하드웨어 멀티스레딩과 Fine-garines에 대해 설명하세요. UMA와 NUMA의 차이점에 대해 설명하세요. GPU 구조와 GPGPU(General Processing GPU)에 대해 설명하세요. Clustering/Warehouse 개념과 특성에 대해 설명하세요. 정답 가상메모리는 운영체제/하이퍼바이저와 HW의 지원이 필요한 기술로, 물리메모리보다..
[컴퓨터구조] #11~12 추가 사설 문제
·
전공/컴퓨터구조
문제 캐시(Directed Mapped)의 정의와 캐시 접근 방법에 대해 설명하세요. 캐시의 실패율과 블록사이즈와의 관계에 대해 설명하세요. 캐시의 성능을 높이기 위한 방법에 대해 설명하세요. 신뢰성/가용성의 정의와 MTTF 개선 방법에 대해 설명하세요. 에러 검출 방법에 대해 설명하세요. 가상머신의 정의와 하이퍼바이저 유형에 대해 설명하세요. 전가상화와 반가상화의 차이점에 대해 설명하세요. 컨테이너 기반 가상화의 정의와 도커의 특징에 대해 설명하세요. 클라우드와 가상화의 관계에 대해 설명하세요. 클라우드 서비스의 종류와 SPU 모델에 대해 설명하세요. 정답 캐시(Directed Mapped)란 캐시 메모리 참조를 메모리 주소를 사용해서 직접 지정하는 방식을 의미합니다. 블록 주소를 전체 캐시 블록 수로..
[컴퓨터구조] #9~11 추가 사설 문제
·
전공/컴퓨터구조
문제 해저드(Hazzard)의 정의와 유형에 대해 설명하세요. 데이터 해저드의 발생 원인과 해결 방법에 대해 설명하세요. 버퍼의 정의와 사용 이유에 대해 설명하세요. CPU 성능 향상을 위한 슈퍼스칼라와 하이퍼스레드에 대해 설명하세요. 파이프라인 분기의 정의와 분기 비용을 줄이기 위한 방법에 대해 설명하세요. 예외의 정의와 파이프라인에서의 예외 처리 방식에 대해 설명하세요. 명령어를 통한 병렬성과 병렬성을 높이기 위한 방법에 대해 설명하세요. 메모리 계층 구조와 지역성의 원리에 대해 설명하세요. 캐시와 버퍼의 차이점에 대해 설명하세요. 플래시 메모리의 종류와 Wear Leveling에 대해 설명하세요. 정답 해저드(Hazzard)는 명령어가 파이프라인에서 정상적으로 실행되지 않는 상황을 의미합니다. 이로..
[컴퓨터구조] #14 병렬프로세서
·
전공/컴퓨터구조
Sclability 시스템의 리소스를 증가/추가시켜 계속 성능 및 용량이 증가하는 상황 - Scale-Up 워드 크기 증가 클럭 스피드 증가 멀티 코어 멀티 프로세서 멀티 보드 멀티 랙 멀티 데이터센터 멀티코어 여러 개의 코어를 가진 프로세서 Multi-core 공유 메모리 프로세서 - SMP(Shared Memory Processor) ILP(Instruction-level Parallellism)의 도움으로 코어 일부 활용 모든 코서/CPU를 사용하려면 OS/Program 지원 필요 -> 고난도 - 병렬성을 높이려면 전체적인 프로그램의 구조 변경 필요 Scaling - Strong Scaling: 문제의 크기 고정해서 성능 증가 - Weak Scaling: 프로세서의 수에 비례해서 문제 크기를 증가 ..