본문 바로가기
728x90

전체 글240

[JAVA] 18 - 3. 채팅 서버, 클라이언트 구현 채팅 서버 구현 목표 : 채팅 서버 구현 코드를 보면서 스레드풀(ExecutorService), ServerSocket, Socket들이 어떻게 사용되는지 이해한다. 서버 클래스 구조(ServerExample.java) public class ServerExample extends Application {//javaFX 메인 클래스로 만들기 위해 APPlication 상속 ExecutorService executorService;//스레드풀인 ExecutorService 필드가 선언 ServerSocket serverSocket;//클라이언트의 연결을 수락하는 ServerSocket 필드가 선언 List connections = new Vector();//연결된 클라이언트를 저장하는 List 타입의 co.. 2022. 3. 30.
[JAVA] NullPointerException 처리방법 1. NullPointerException NullPointerException은 실제 값이 아닌 null을 가지고 있는 객체/변수를 호출할 때 발생하는 예외이다. String str = null; System.out.println(str.toString()); *이럴 때 예외가 발생하는게 null에는 toString이 없기 때문이다. 문제는 프로그래밍을 하다보면 해당 변수에 null이 들어있는지, 아닌지를 구분하기가 어렵다는 점이다. 그래서 NullPointerException 처리 방법으로 크게 세 가지가 있다. *일반적으로 NPE(NullPointerException)로 표시한다. 2. 처리방법 2.1. Try-Catch String s = null; try { s = s.toUpperCase();.. 2022. 3. 30.
[JAVA] 18 - 2. 네트워킹 18.6. 네트워크 기초 네트워크(network) 는 여러 대의 컴퓨터를 통신 회선으로 연결한 것을 말한다. 18.6.1. 서버와 클라이언트 컴퓨터가 인터넷에 연결되어 있다면 실제로 데이터를 주고받는 행위는 프로그램들이 한다. 서비스를 제공하는 프로그램을 일반적으로 서버(server)라고 부르고, 서비스를 받는 프로그램을 클라이언트(client)라고 부른다. 인터넷에서 두 프로그램이 통신하기 위해서는 연결을 요청하는 역할과 연결을 수락하는 역할이 필요하다. 클라이언트는 서비스를 받기 위해 연결을 요청하고, 서버는 연결을 수락하여 서버스를 제공해준다. 서버는 클라이언트가 요청(request) 하는 내용을 처리해주고, 응답(response) 을 클라이언트로 보낸다. 18.6.2. IP 주소와 포트(Port).. 2022. 3. 29.
[Linux] 환경변수 환경변수란? 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임으로 쉘에서 정의되고 실행하는 동안 프로그램에 필요한 변수를 나타낸다. 1. 동작 범위에 따른 환경 변수 1.1. 로컬 환경 변수 현재 세션에서만 동작하는 환경변수 1.2. 사용자 환경변수 특정 사용자에 대해서만 정의된 환경변수로 로컬 터미널 세션 또는 원격 로그인 세션을 사용하여 로그인할 때마다 로드된다. *관련 파일은 특정 사용자의 홈 디렉토리에 존재하는 파일로 .bashrc, .bash_profile, bash_login, .profile 등이 있다. 1.3. 시스템 전체 환경변수 해당 시스템에 존재하는 모든 사용자가 사용할 수 있는 환경변수로 시스템 전원이 켜져있고 모든 사용자가 로컬 또는 원격으로 로그인할 때마다 .. 2022. 3. 29.
[Linux] 리눅스 파일 구조 1. 파일 구조 ls -l : 명령어로 파일 목록 출력했을 때 보이는 화면 형식: {파일유형} : {파일권한} : {링크수} : {소유 계정} : {그룹명} : {파일크기} : {마지막 변경 일자} : {파일명} ex) d : rwxrwxr-x : 2 : jaekyung : jaekyung : 4096 : 3월 8 09:12 : Downloads ls -l 명령어로 보는 파일 구조 2. 파일 유형 -: 파일 d: 디렉토리 b: 블록 디바이스 c: 문자 디바이스 l: 링크 3. 허가권 r: 읽기 허가- 파일 내용을 읽을 수 있는지 결정 w: 쓰기 허가- 파일을 작성하거나 지울 수 있는지 결정 x: 실행 허가- 파일을 실행할 수 있는지 결정 r w x r w x r w x user user user grou.. 2022. 3. 28.
[Linux] 리눅스 단축키 및 명령어 정리 1. 리눅스 단축키 1.1. 터미널 실행 관련 단축키 터미널 실행 : Ctrl + Alt + T 새로운 탭으로 터미널 실행 : Ctrl + Shift + T 새로운 창으로 터미널 실행 : Ctrl + Shift + N 탭으로 실해된 터미널 종료 : Ctrl + Shift + W 현재 터미널 종료 : Ctrl + Shift + Q 터미널 내에서 문자열 검색 : Ctrl + Shift + F 1.2. 터미널 내에서의 단축키 복사하기 : Shift + Ctrl + C 붙여넣기 : Shift + Ctrl + V 화면 Clear : Ctrl + L 콘솔 이동 : Alt + 좌/우 방향키 실행 중인 프로그램 중지 : Ctrl + C 실행 중인 프로그램 일시 정지 : Ctrl + Z 일시 정지된 프로그램 다시 실행 .. 2022. 3. 28.
[JAVA] 18 - 1. IO 기반 입출력 및 네트워킹 18.1. IO 패키지 소개 자바에서 데이터는 스트림(Stream)을 통해 입출력되므로 스트림의 특징을 잘 이해해야 한다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데, 데이터는 역시 출발지에서 나와 도착지로 들어간다. 18.2. 입력 스트림과 출력 스트림 프로그램이 데이터를 입력받을 때에는 입력 스트림(InputStream)이라고 부르고, 프로그램이 데이터를 보낼 때에는 출력 스트림(OutputStream)이라고 부른다. 입력 스트림의 출발지는 키보드, 파일, 네트워크상의 프로그램이 될 수 있고, 출력 스트림의 도착지는 모니터, 파일, 네트워크상의 프로그램이 될 수 있다. *해당 스트림은 프로그램을 기준으로 나타난다는 것을 알아두자. 자바의 기본적인 데이터 입출력(IO : Input/Out.. 2022. 3. 25.
[JAVA] JavaFX JavaFX란? 크로스 플랫폼에서 실행하는 리치 클라이언트 애플리케이션(Rich Client Application)을 개발하기 위한 그래픽과 미디어 패키지를 말한다. 데스크톱뿐만 아니라 임베디드 장비에서 실행하는 UI 애플리케이션을 개발할 수 있도록 가볍고 풍부한 UI를 제공하는 것을 목표로 한다. (Swing보다 가볍고 강력해짐) 변화 AWT > Swing > JavaFX *멀티 스레딩과 서버와의 통신 기능은 자바 표준 API를 사용하면서 JavaFX에서 재공하는 풍부한 UI 기능을 활용할 수 있다는 점이 가장 큰 장점이다. 2022. 3. 25.
[Linux] vim/vi 명령어 vim 명령어 vim은 vi IMproved의 약자입니다. vi에디터를 업그레이드 시킨 것으로 생각할 수 있습니다. vi 명령어 vi는 텍스트 편집에 필요한 최소한의 기능만을 가지고 있어서 사용하기 불편한 점이 있습니다. (문법 강조 기능x) 이에 반해 vim은 여려 편리한 기능들이 추가되어 있습니다. *리눅스에는 vim에디터만 설치되어 있습니다. 결과적으로 vim으로 입력하나 vi로 입력하나 똑같은 기능을 한다는 것을 의미합니다. vi 편집기 구조 vi 편집기는 명령 모드, 입력 모드, 마지막 행 모드로 총 3가지 모드를 가지고 있습니다. 1. 명령 모드 처음 vi 명령어로 vi에 들어가면 명령 모드 상태입니다. 방향키를 이용하여 커서 이동이 가능하며 명령 모드에서 사용할 수 있는 명령어들이 있습니다... 2022. 3. 25.
728x90