728x90

41.
chgrp: 파일이나 dir 소유그룹 변경
chmod: 파일이나 dir mode 변경
-R: 해당 dir 및 하위 dir까지 변경


42.
fsck: file system check, 파일 시스템을 검사하고 수리하는 명령어
e2fsck: linus file system인 ext2, ext3, ext4를 검사하고 수리하는 명령어로 현재 리눅스 배포판에서 fsck 명령 실행 시 실제 사용되는 명령
mkfs: make file system, 새로운 파일 시스템을 만듦
xfs_repair: xfs file system의 검사 및 복구


43.
fdisk: disk partitioning status 확인


44. chmod 명령어
u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정
+,-,=   : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
r,w,x   : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
s        : Setuid, Setgid
t         : Sticky bit, sticky bit 적용 시 dir 소유자나 파일 소유자 또는 super-user가 아닌 사용자들은 파일을 삭제하거나 이름을 변경할 수 없음
* g+t /dir 사용 X


45. quota
edquota: 사용자나 그룹에 quota 설정 시 사용하는 명령어
repquota: report quota, 사용중인 quota 확인
xfs_quota: xfs file quota 설정 및 확인


46. 
userquota: 개별 사용자의 쿼터를 제한할 수 있는 속성


47.
uid: User Identifier
gid: Group Identifier, user가 속한 Main Group
groups: user가 속한 모든 그룹(Main Group + Sub Groups)
* sub Group에 속하여 얻은 권한은 sub Group에 속함

# id ihduser
uid=1009(ihduser) gid=1010(project) groups=1009(ihduser), 1010(project) 
# ls -ld /project
drwxr-xr-x, 2 root project 6 Apr 6 10:22 /project
# chmod 3070 /project
project dir에서 ihduser가 file 생성 시, 해당 file의 group 소유권: project

cf. 권한 value

setUID(4), setGID(2), stickyBit(1)
read(4), write(2), execute(1)


48.
Unix Kernel base OS: QNX
Linux Kernel base OS: webOS, GENIVI, Tizen


50. Cluster
High Performance Computing Cluster (BeoWulf Cluster): HPC, 고계산용 클러스터
: 고성능의 계산 능력을 제공하기 위한 목적으로 사용
Linux Virtual Server: LVS, 부하분산 클러스터
: 서버에 접근하는 이용자가 많을 때 서비스의 부하를 분산하기 위해 사용
High Availibilty Cluster: HA, 고가용성 클러스터
: 지속적인 서비스를 제공하기 위해 사용


51.
Docker: 가상 머신처럼 독립된 실행환경을 만들어주는 것으로, 운영체제를 설치하 것과 유사한 효과를 낼 수 있음
그러나 실제 운영체제를 설치하지 않기 때문에 설치 용량이 적고 실행 속도가 빠름
Xen: 반 가상화(Para Vertualization) 하이퍼 바이저(HyperVisor)
KVM: Kernel-based Virtual Machine, linux kernel 기반으로 만들어진 전가상화 오픈소스 하이퍼 파이저

VirtualBox: 단일 장치에서 여러 운영 체제를 실행하고 클라우드에 쉽게 배포할 수 있는 오픈 소스 가상화 소프트웨어
* 가상화: CPU 등 물리적 자원들을 여러 개의 논리적인 자원으로 나누거나 다수의 물리적인 자원을 하나의 논리적인 자원으로 통합하여 서비스하는 기술
* 전가상화: 다양한 게스트 OS를 수정없이 사용 가능

* 반가상화: 게스트 OS는 하이퍼바이저에 하드웨어의 제어를 요청하여 동작하며, 상대적으로 높은 성능을 보이나 게스트 OS의 수정이 필요

* HyperVisor: Virtual Machine Monitor/Manager, 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼

 

 

52.

Hadoop: 대량의 자료를 처리할 수 있는 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크

NoSQL: Not Only SQL, 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술

R: 무료 프로그래밍 환경으로 주로 통계 분석에 사용

Anisible: 자동화 도구를 이용하여 인프라의 상태를 코드로 작성(Instrastructure as a code)하고 이를 모든 서버에 배포함으로써 특정 환경을 동일하게 유지할 수 있도록 돕는 소프트웨어

 

 

53.

linux에서 dns에 설정되지 않아 특정 domain에 접근하지 못하는 경우가 있는데,

이 때 /etc/hosts에서 domain을 등록해주면 domain 연결이 가능

 

 

54.

/etc/host.conf: 특정 도메인에 대해 IP 주소 값을 찾을 때, 주소 값을 어디에서 찾을 것인가를 결정하는 파일

# cat /etc/hosts.conf
multi on
order hosts,bind

// hosts: /etc/host
// bind: DNS를 의미, /etc/resolv.conf에 정의된 네임 서버

/etc/resolv.conf: 사용하고자 하는 네임 서버를 지정하는 파일, 도메인 네임 서비스를 어디서 받을 것인가를 정의해 놓은 파일

어떤 PC로부터 DNS 서버에게 도메인 주소를 IP 로 달라는 질의를 받은 경우, /etc/resolv.conf에 정의된 네임 서버에 쿼리를 보냄

 

 

55. FTP service

Port no. 20: File Transfer

Port no. 21: FTP Control

 

 

56.

SSH: 패킷을 암호화하여 안전한 원격 로그인을 지원하고 원격 shell, 원격 복사, 안전한 파일 전송 등을 지원

telnet: 네트워크 호스트와 포트에 연결이 가능한지 확인할 수 있는 명령어

NFS: Network File System, 네트워크로 연결된 다른 컴퓨터의 파일 시스템을 내 컴퓨터로 마운트하고 공유하여 상대방의 파일 시스템 일부를 자신의 dir처럼 사용하는 프로토콜

FTP: File Transfer Protocol, 원격 네트워크에서 또는 원격 네트워크로 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜

 

 

57.

Opera: Opera SW에서 개발한 웹 브라우

Safari: Apple에서 개발한 웹 브라우저

Chrome: Google에서 개발한 웹 브라우저

FireFox: Mozilla 재단에서 개발한 자유 SW

 

 

58.

SNMP: Simple Network Management Protocol, 서버 및 디바이스로부터 리소스 및 상태 등 정보를 수집하여 관리할 수 있게 하는 프로토콜

SMTP: Simple Mail Transfer Protocol, 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고받을 때 사용되는 프로토콜

IMAP: Internet Mail Access, 메일을 수신할 때 사용하는 프로토콜

서버에 직접 접속하여 직접 메일을 확인하는 방식으로 서버에 이메일이 그대로 남아있어 반복적으로 이메일을 확인할 수 있음

POP3: Post Office Protocol, 메일을 수신할 때 사용하는 프로토콜

이메일 서버에 도착한 메일을 client PC로 직접 다운로드하는 형식으로 다운로드와 동시에 이메일 서버의 이메일 삭제

 

 

59. LAN 구성 방식

망(Mash)형: 장애 발생 시 우회 지점이 많으므로 다른 시스템에 영향이 적음

그러나 설치 비용이 많이 들고  장애 발생 시 고장 지점을 찾기 쉽지 않음

링(Ring)형: 호스트 수가 늘어나도 네트워크 성능에 영향력이 적

버스(Bus)형: 하나의 긴 케이블에 네트워크 상의 모든 장치를 연결하는 형태로 호스트 수가 증가하면 처리 능력이 급감함

성(Star)형: 중앙 전송 제어 장치가 고장나면 네트워크 동작 불

 

 

60.

UTP: Unshielded Twisted Pair, 알루미늄으로 차폐되지 않은 상태로 두 쌍씩 꼬여있는 형태

STP: Shielded Twisted Pair, 알루미늄으로 차폐된 상태로 두 쌍씩 꼬여있는 형태

Fiber Cable: 광 케이블

 

 

 

 

61.

C class 네트워크 대역에서 서브넷 마스크 값을 255.255.255.192로 설정했을 때 생성되는 서브 네트워크 개수

256-192=64

256/64=4

 

 

62.

ip: ip 관련 정보 조회 및 설정, 라우팅 테이블*** 정보 출

ss: Socket Statistics, linux system의 소켓 및 네트워크 상태를 조회할 수 있는 명령어

arp: Address Resolution Protocol, 연결하려는 시스템의 MAC 주소* 표시

ifconfig: network interface와 관련된 정보를 조회하거나 수정

* MAC 주소: Media Access Control Address, 인터넷을 할 수 있는 이더넷** 기반 기기에는 모두 다 하나씩 할당되어 있는 고유한 ID

** Ethernet: 근거리 장비간 통신 표준

*** Routing Table: 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용

 

 

63.

mii-tool: Media Independent Interface Tool, network interface 연결상태 확인

ethtool: Network interface의 HW적인 설정값을 확인하거나 변경할 수 있는 명령어

 

 

64.

Ethernet Card 장착 시, 나타나는 장비명

CentOS v7 이전: eth0, eth1 ...

CentOS v7 부터: enp0s3

 

 

65. ssh 명령어

-p: 변경된 포트 번호로 접속하기 위해 사용되는 SSH 명령어 옵션

 

 

66.

SAMBA: 유닉스 계열 운영체제와 윈도우 운영체제 간의 자료 및 하드웨어를 공유하게 해줌

초기 - SMB(Server Message Block) protocol 사용

현재 - CIFS(Common Internet File System) protocol 사용

 

 

67. Open System Interconnection 7 Layer

1계층: 물리 계층, 전송받은 데이터를 전기 신호(비트)로 변환하는 계층 // 리피터

2계층: 데이터 링크 계층, 네트워크 계층에서 받은 데이터를 프레임이라는 논리적인 단위로 구성하고 필요한 정보를 덧붙여 물리 계층으로 전송 // 브리지

3계층: 네트워크 계층, 데이터를 패킷 단위로 분할하여 전송하며 데이터 전송과 경로 선택에 관한 서비스 제공 // 라우터

4계층: 전송 계층, 송신 프로세스와 수신 프로세스간의 연결기능을 제공하고 안전한 데이터 전송을 지원

5계층: 세션 계층, 응용 프로그램간의 통신을 관리하기 위한 방법과 동기화를 유지하는 서비스 제공

6계층: 표현 계층, 송신자와 수신자가 서로 다른 표현방식을 사용하는 경우에 번역을 통해 서로 이해할 수 있도록 함

7계층: 응용 계층, 응용 프로그램과 연계하여 사용자에게 편리한 환경을 제공

 

 

68. IPv4 Class

A class: 0.0.0.0 ~ 127.255.255.255

B class: 128.0.0.0 ~ 191.255.255.255

C class: 192.0.0.0 ~ 223.255.255.255

 

 

69.

IEEE: LAN 전송규격과 처리에 대한 표준 정립

ICANN: Internet Corporation for Assigned Names and Numbers, IANA 업무를 현재 ICANN에서 관리

IANA: Internet Assigned Numbers Authority, 인터넷 할당 번호 관리 기관으로 IP address, 최상위 도메인 등을 관

 

 

70. IEEE 표준화

IEEE 802.3: Ethernet

IEEE 802.4: Token Bus

IEEE 802.5: Token Ring

IEEE 802.6: MAN(DQDB: Distributed Queue Dual Bus)

FDDI: Fiber Distributed Digital Interface, 광섬유 케이블을 사용하여 설계된 링 구조의 통신

 

 

71.

서브넷 마스크값: 255.255.255.192

-> 서브 네트워크: 256-192=64, 64*4=256(생성되는 서브 네트워크 4개)

IP address: 192.168.5.150

150-> 서브 네트워크: 128-191에 속함

Gateway: 시작주소+1 = 128+1=129

 

 

72.

LAN cable 규격 대역폭(BandWidth, MHz) 최대 전송속도
CAT-5 100 100Mbps
CAT-5E 100 1Gbps
CAT-6 250 1Gbps
CAT-7 600 10Gbps

 

 

73.

eog: eye of GNOME, 이미지 뷰어

totem: 동영상 플레이어

evolution: 메일, 주소록, 일정 등 개인정보 관리

evince: PDF 뷰어

 

 

75.

Qt: 리눅스에서 X-Window용 GUI program 개발에 널리 쓰이는 개발 프로그램

Xlib: C언어로 작성된 X-Window용 client library로 X 서버와 대화를 해주는 역할

XCB: X protocol C-language Binding, Xlib에서 XCB로 대체됨

GTK: GIMP* ToolKit, 리눅스에서 GUI를 다루기 위한 가장 대표적인 라이브러리

* GIMP: GNU Image Manipulation Program, 우분투에서 사용할 수 있는 이미지 편집기

 

 

76.

xset: X-Window(X 서버) 환경 옵션 설정

xauth:  .Xauthority 파일의 쿠키 내용을 추가, 삭제, 리스트를 출력, 쿠키 기반의 인증으로 xhost보다 인증 절차가 강화

xauth [option]

xhost: X-Window 접속할 수 있는 client 지정 또는 해제

xhost [+][-] [IP_address/Domain_Name]

xrandr: X-Window Resize and Rocate, 화면 해상도 변경

* 원격지에 있는 서버를 접속하기 위해 client가 이용하는 명령어: xhost, xauth

 

 

77. Window Manager

GNOME(데스크톱 환경 GUI 시스템): GTK+(Library), eog(Image Viewer), totem(sound or 동영상), GIMP(Image Editor), Nautilus(파일 탐색기), mutter(GNOME3 ver Window Manager), metacity(GNOME2 ver Window Manager)

KDE(K DeskTop Environment, 자유 소프트웨어 데스크톱 환경): Qt(Library), gwenView(imageViewer), Kwin(Window Manager), Dolphin(파일 관리자)

 

 

78. DeskTop Environment

GNOME, KDE, LXDE(유닉스 계열의 운영체제를 위해 개발된 DeskTop 환경), Xface(유닉스 계열의 운영체제를 위해 개발1된 경량 DeskTop 환경)

 

 

79.

시스템 시작 시 콘솔 기반의 텍스트 모드로 부팅이 되도록 설정

: systemctl* set-default multi-user.target(Consol 기반-RunLevel3, Graphical.target: GUI 환경 기반-RunLevel5)

* systemctl: systemd(리눅스 부팅 시 시스템을 초기화하거나, 서비스들을 실행하기 위한 환경을 제공하는 등 서비스를 관리하는 프로세스, CentOS7 이전**: init)을 관리하는 명령어

** CentOS7 이전:  /etc/inittab 문서에서 runlevels 설정을 통한 부팅 환경 변경

 

 

80.

xmodmap: X-Window에서 키보드 키 맵핑 설정 변경(Right Alt -> 한/영 전환 )

xrefresh: X-Window 화면 전체 또는 일부 새로고침

 

728x90
728x90

1. 

lp /etc/passwd: /etc/passwd 출력

lpc: line printer controller, printer or pinter queue 제어

lpstat: line printer state, 큐 상태 출력

lprm: line printer remove, 큐에 대기중인 작업 삭제

 

 

2. 

System V: lp, lpstat, cancel

BSD: lpr, lpc, lpq, lprm

 

 

4.

OSS: Open Sound System, 리눅스 및 유닉스 운영체제에서 사운드를 만들고 캡처하기 위한 인터페이스, Hannu 개발

ALSA: Advanced Linux Sound Architecture, 리눅스에서 기본적으로 지원되지 않는 사운드카드를 잡을 수 있게 지원하는 드라이버, Jaroslav 개발

 

 

5.

IPP: Internet Printing Protocol, 인터넷상에서 원격으로 인쇄하기 위해 사용되는 프로토콜

LPRng: 버클리 프린팅 시스템으로 BSD계열 유닉스에서 사용하기 위해 개발

CUPS: Common Unix Printing System, Apple 개발, HTTP 기반 IPP

PPD: Postscript Printer Description: 전자 문서 형식(파일 형식의 하나)

* IPP: 네트워크상 프린터를 서포트하는 프로토콜,

LPRng, CUPS: 인쇄 서브 시스템,

PPD: 파일 형식

 

 

6.

RAID: Redundant Array of Inexpensive Disks, 여러 개의 하드디스크를 하나처럼 사용하게 하는 기술

RAID0: A, B, C 디스크에 파일을 저장하면 1/3씩 나누어 각각의 디스크에 저장하므로 하나의 디스크만 고장 나도 모든 데이터가 손실됨

RAID1: 데이터를 하드디스크 여러 디스크에 중복하여 저장하는 것으로 데이터 보존에 중점을 둔 방식으로 하나의 하드디스크만 정상이어도 데이터 손실이 없음

RAID5: 세 개 이상의 하드디스크를 묶는 RAID로 모든 하드디스크에 분배하여 저장하므로 한 개의 하드디스크가 고장 나도 데이터 손실이 없음, Parity 한 개 사용

RAID6: 네 개 이상의 하드디스크 필요로 하며, 모든 하드디스크에 분배하여 저장하므로 한 개의 하드디스크가 고장 나도 데이터 손실이 없음, Parity 두 개 사용

 

 

7. rmp

: RedHat Package Manager, 레드햇 계열의 리눅스 배포판에서 사용하는 프로그램(패키지) 설치 관리 도구

-i: install, pkg 최초 설치 시 사용, 이전 버전이 있을 경우 설치 X

-U(--upgrade): 기존 pkg 업그레이드 시 사용, 기존 pkg가 없을 경우 설치 진행

F(--freshen): 기존 pkg가 있는 경우에만 설치

 

 

8. Source File을 이용한 설치 단계: Source Package: 소스 코드(C언어..등)가 들어 있는 패키지, 컴파일 과정(configure,make,make install 명령어)을 통해 Binary 파일로 만들어야 실행 가능

MySQL: cmake(configure-make 대체) - make install

Apache httpd, PHP, Nmap: configure - make - make install

 

 

9. Linux Package: 리눅스 시스템에서 소프트웨어를 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음

구분 Low Level Tool* High Level Tool**
Debian dpkg apt-get / apt
RedHat rpm yum
openSUSE rpm zypper

* Low_Level_Tool: 실제 pkg의 설치, 업데이트, 삭제 등을 수행

** High_Level_Tool: 의존성 해결, pkg 검색 등의 기능 제공

 

 

10. tar 명령어: 압축 해제

.bz2: jxvf

.xz: Jxvf

.gz: zxvf

compress: Zxvf

 

 

13. 

open SUSE - YaST: Yet another Setup Tool, 리눅스 운영 체제의 설정 및 구성 도구

 

 

14. rpm 명령어

-r: 최상위 dir(root) 지정

-e: erase, pkg 제거

--nodeps: 의존성 관계 무시하고 설치 또는 제거

--force: 기존 pkg 설치 여부 관계없이 강제 설치 또는 제거(--replacepkgs, --replacefiles, --oldpackage 통합)

 

 

15. emacs 편집기 개발자: 리처드 스톨먼

 

 

16. vi 편집기

:% s/^linux/Linux/

%: 처음부터 끝까지

^linux: 줄의 가장 처음

linux$: 줄의 가장 끝

\<linux\>: linux와 정확한 일치

 

 

18. vi 편집기

3yy: 아래 방향으로 3줄 복사

 

 

19. 

pico: 워싱턴 대학에서 유닉스용으로 만든 편집기로 리눅스 초기 배포판에 포함되었음

nano: pico 복제판으로 최근 사용되는 편집

 

 

20. vi 편집기 설정

.exrc: vi 편집기 설정 파일

set nu: 행 번호 출력(:set nu)

 

 

21. process 확인

bg: foreground -> background

fg: background -> foreground

nohup: no hang up, 사용자가 로그아웃하거나 터미널창이 닫혀도 실행

jobs: background로 수행 중인 process 확인

 

 

22. CentOS 최초 process

init: CentOS 7버전 이전에서 모든 프로세스의 시작이 되는 프로세스

systemd: CentOS 7버전부터 모든 프로세스의 시작이 되는 프로세스

 

 

23. process 실행

&: background process로 실행

%: foreground process로 실행

 

 

24. kill 명령어

kill 513: PID 513 process에 15번 signal(Default signal) 전송

 

 

25. process

nice: 실행 예정인 프로그램 우선순위 변경

renice: 이미 실행  중인 프로그램 우선순위 변경

PID가 부여된 경우, 실행 중인 process로 볼 수 있음

 

 

26. background process

Daemon: 리눅스 서버 부팅 시, bg에서 실행되고 있다가 client가 요구하는 서비스를 수행하는 프로그램

Standalone 방식: daemon이 bg에서 항상 실행되고 있다가 client로부터 해당 서비스의 요청이 발생하면 즉각 처리

inetd 방식: 빠른 처리가 필요없고 요구 횟수도 많지 않을 경우 사용

client 요청 발생 시, xinetd 데몬에 의해 wake up되어 요구하는 서비스를 수행하고 다시 sleep 상태로 전환

 

 

28. 용어

exec: 하나의 process가 다른 process를 실행할 때 호출하는 방법으로 기존 process가 멈추고 새로운 process로 대체됨

fork: 하나의 process가 다른 process를 실행할 때 호출하는 방법으로 기존 process가 새로운 process를 위해 메모리를 할당받아 복사본 형태로 process 실행, 새롭게 생성된 process는 기존 process의 자식 process가 됨

 

 

29. cron: 리눅스(Linux) 계열에서 특정 시간에 특정 작업을 하는 데몬

crontab: cron이 언제 무엇을 하는지 특정 파일에 저장하는 것

분 시간 일 월 요일*

요일: 월(1) 화(2) ... 일(0 or 7)

 

 

30. Signal: 컴퓨터에서 신호, 시그널은 소프트웨어적인 interrupt

컴퓨터 용어에서 인터럽트: 하던 일 A를 중간이 잠시 멈추고 다른일 B를 하고 난 후 다시 A로 돌아와서 멈춘 부분부터 일을 하는 것

ctrl + Z: SIGSTOP 19, process 중단, SIGTSTP와 동일한 기능을 수행하나 무시할 수 없음

ctrl + z: SIGTSTP 20, process 중단

 

 

31.

/etc/shells: 현재 사용가능한 shell 목록 정보가 저장된 파일

 

 

32. shell 개발자

sh($): Bourne Shell, 스티븐 본 

bash(userName@OS:~$):Bash Shell, Linux Shell, 브라이언 폭스

csh(%):C Shell, 빌 조이

tcsh: Tee C Shell 켄 그리어

ksh($):Korn Shell, 데이비드 콘

dash($): Dash Shell

 

 

33. 

~/.bashrc: 지역적 파일, alias, bash가 수행될 때 실행되는 파일

~/.bash_profile: 지역적 파일, bash shell 관련 내용 저장(/etc/bash_profile X)

* /etc/profile: 전역적 파일, 로그인 시 로드되어야하지만 bash와 관계없는 데이터 저장

~/.bash_logout: 사용자가 로그아웃 직전에 실행하는 프로그램에 관한 bash의 지역적인 시스템 설정과 관련된 파일

 

 

34. 

user=lin: 지역변수 선언

USER=lin: 전역변수 선언

echo $USER: 전역변수 USER 호출, promprt 왼쪽 사용

 

 

35.

echo $SHELL: 로그인 shell 확인

 

 

36. ps: Process Status, 로그인 후 사용 중인 shell 확인

chsh -s(--shell): change shell, 특정 shell의 shell 변경

chsh -l(--list-shells): /etc/shells 파일안의 지정된 shell 출력

chsh -u(--help)

chsh -v(--version)

 

 

37.

GB<TB<PB(peta)<EB(exa)<ZB(zeta)<YB(yota)

 

 

38.

quota: 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량과 개수를 제한하는 것

df: disk free, 파일시스템 별로 전체 공간, 사용중인 공간 그리고 여유공간 정보 출력

du: disk use, 특정 파일이나 디렉토리의 디스크 사용량 확인

mount: 물리적 장치를 dir에 연결시켜주는 것(USB 연결 시, 자동 폴더 생성)

#mount | grep /home
/dev/sda3 on /home type xfs (rw, realtime, seclabel, attr2, inode64, usrquota)

 

728x90
728x90

 기본 환경: IDE: Eclipse, Language: Java

 

 

발생 Exception

Java에서 다음 Source Code를 실행할 경우,

package member;

import java.io.Serializable;

public class MemberDTO implements Comparable<MemberDTO>, Serializable { 
	private String name;
	private int age;
	private String phone_num;
	private String address;
	
	public MemberDTO() {}
	
	public MemberDTO(String name, int age, String phone_num, String address) {
		this.name = name;
		this.age = age;
		this.phone_num = phone_num;
		this.address = address;
	}
	
	public void setName(String name) {this.name=name;}
	public void setAge(int age) {this.age=age;}
	public void setPhone_num(String phone_num) {this.phone_num=phone_num;}
	public void setAddress(String address) {this.address=address;}
	
	public String getName() {return name;}
	public int getAge() {return age;}
	public String getPhone_num() {return phone_num;}
	public String getAddress() {return address;}
	
	@Override
	public String toString() {
		return name		 + "\t"
			 + age 		 + "\t"
			 + phone_num + "\t"
			 + address;
	}

	@Override
	public int compareTo(MemberDTO mDTO) {
		return name.compareTo(mDTO.getName());
	}
	
}
package member;

import java.util.List;
import java.util.Scanner;

import java.util.Comparator;
import java.util.Collections;

public class MemberNameAsc implements Member {

	Scanner scan = new Scanner(System.in);

	@Override
	public void execute(List<MemberDTO> list) {
		
		// Comparable
		Collections.sort(list);
		
		System.out.println("\n이름\t나이\t핸드폰\t주소");
		for(MemberDTO mDTO : list) {
			System.out.println(mDTO + "  ");
		}
		
	} // execute

} // class

java.io.InvalidClassException 발생

 

 

Exception 원인

MemberDTO에서 comparator로 정렬된 파일을, Comparable을 적용시켜 해당 파일을 불러올 경우 발생

(저장할 때 사용한 serialVersionUID과 load할 때 사용한 serialVersionUID이 상이하여 발생)

 

 

해결 방법

사용할 정렬 기준(Comparable, Comparator)으로 파일을 저장한 후 같은 기준에서 해당 파일을 불러와야 함

 

 

참고 자료

📑 컴퓨터 학원 동기

 

728x90
728x90

 기본 환경: IDE: Eclipse, Language: Java

 

 

발생 Exception

Java에서 다음 Source Code를 실행할 경우,

package io;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;

public class ObjectMain {
	public static void main(String[] args) throws IOException {
		PersonDTO pDTO = new PersonDTO("홍길동", 25, 185.3);
		
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("result.txt"));
		oos.writeObject(pDTO);
		oos.close();
		
	}
}

java.io.NotSerializableException 발생

 

 

Exception 원인

입출력 처리 시, Object(객체)는 파일이나 네트워크로 전송이 되지 않음

객체를 byte[]화하여, 전송해야 함(Serializable)

 

 

해결 방법

Object type인 PersonDTO class에서 Serializable interface 구현

package io;

import java.io.Serializable;

public class PersonDTO implements Serializable { // abstract method X

	private String name;
	private int age;
	private double height;

	public PersonDTO(String name, int age, double height) {
		this.name = name;
		this.age = age;
		this.height = height;
	}
	
	public void setName(String name) {this.name = name;}
	public void setAge(int age) {this.age = age;}
	public void setHeight(double height) {this.height = height;}
	
	public String getName() {return name;}
	public int getAge() {return age;}
	public double getHeight() {return height;}
	
}
package io;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;

public class ObjectMain {
	public static void main(String[] args) throws IOException {
		PersonDTO pDTO = new PersonDTO("홍길동", 25, 185.3);
		
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("result.txt"));
		oos.writeObject(pDTO);
		oos.close();
		
	}
}

/*
Result
Name: 홍길동
Age: 25
Height: 185.3
*/

 

728x90
728x90

 기본 환경: IDE: Eclipse, Language: Java

 

 

발생 Exception

Java에서 다음 Source Code를 실행할 경우,

public class StrFormat {
    
    public static void main(String[] args) {
        double d = 2.3;
        System.out.println(String.format("%.2d", d));
    }

}

⭐ java.util.IllegalFormatPrecisionException: 2 발생

 

 

Exception 원인

String.format: %d: 10진수 int type

int type data format으로 doubloe or float type data로 표현하고자 함

 

 

해결 방법

1. 실수 type data format으로 변경

public class StrFormat {
    
    public static void main(String[] args) {
        double d = 2.3;
        System.out.println(String.format("%.2f", d));
    }

}

/*
Result
2.30
*/

 

2. 정수 type data format에 맞추기

: (cast) double type data -> int type

: int data 표현 방식으로 변경

public class StrFormat {
    
    public static void main(String[] args) {
        double d = 2.3;
        System.out.println(String.format("%02d", (int) d));
    }

}

/*
Result
02
*/
728x90