JAVA 08 패키지의 이해
·
Programming/Java
패키지 선언이 필요한 상황 1. 공간에서의 충돌 - 동일 이름의 클래스 파일을 같은 위치에 둘 수 없다. - 한 디렉토리 안에 이름이 같은 파일을 둘 수 없다. 2. 접근 방법에서의 충돌 클래스 생성을 생각해보자. new 클래스 이름을 생성할 때, 이름이 같으면 어떤 클래스인지 구분이 어렵다. 해결방법 1. 공간 충돌 - 경로를 달리한다. 2. 접근 충돌 - 경로를 이름에 명시한다. 패키지를 선언 1. 클래스 접근 방법 구분 2. 클래스의 공간 구분 패키지 선언 규칙 - 패키지 이름은 모두 소문자로 구성 - 인터넷 도메인 이름의 역순으로 이름을 구성 - 이름 끝에 클래스를 정의한 주체 또는 팀의 이름을 추가
JAVA 07(2) 생성자와 String 클래스
·
Programming/Java
컴파일러는 문자열("Happy")이 보이면 String 인스턴스를 생성해서 해당 문자열을 메소드의 인자에 전달한다. 해당 메소드는 인스턴스의 주소를 반환한다. 좋은 클래스 정의란? 인스턴스 구분을 위해 필요한 정보를 갖는 것이다. 생성자는 초기화를 위한 메소드를 대체한다. 생성자의 이름은 클래스의 이름과 동일하다. 생성자는 값을 반환하지 않고 반환형도 표시하지 않는다. 좋은 클래스는 생성자를 직접 정의한다.
JAVA 07(1) 클래스와 인스턴스
·
Programming/Java
프로그램은 데이터와 기능으로 구성되어 있다. 자바에서 데이터와 기능을 묶을 수 있는 도구를 클래스라고 한다. 클래스(class)는 객체를 만드는 설계도이다. 어느 무리의 객체를 특징 짓는 데에 공통적으로 갖춘 모양을 뽑아서 하나의 틀을 만든 것이다. 이런 과정을 '추상화'라고 한다. 인스턴스(instance)는 클래스를 new 명령문으로 메모리에 생성한 객체이다. 설계도를 통해 독립적인 객체를 만든 것이다. 인스턴스는 모두 메모리 공간을 차지한다.
JAVA 01 자바의 원리
·
Programming/Java
JDK 자바로 개발할 수 있도록 여러 기능들을 제공하는 패키지(키트) 환경변수 설정 환경변수 PATH란? 환경변수는 운영체제가 참조하는 변수이다. PATH는 실행파일을 찾기 위한 폴더들의 모음이다. 자바의 기본도구 javac.exe: 자바 컴파일러(Java Compiler) java.exe: 자바 런처(Java Launcher) - 명령 프롬프트는 path에 등록된 경로를 통해 찾는다. - path에 javac.exe와 java.exe 위치를 등록시킨다. - 환경 변수에 path를 등록한다. - 변수이름 : Path - 변수 값: bin 의 위치 자바의 실행 원리 - 운영체제는 자바 가상 머신(JVM)을 우선 실행한다. 자바 프로그램은 JVM 위에서 실행된다. 따라서, 운영체제는 JVM은 인식하지만 자바..
.gitignore 적용하기
·
Git
프로젝트 작업 시 로컬 환경의 정보나 빌드 정보 등, 원격 저장소에 관리하지 말아야 되는 파일들에 대해 지정하여 원격 저장소에 실수로 올리가지 않도록 관리하는 파일 작성 패턴 - '#'로 시작하는 라인은 무시한다. - 표준 Glob 패턴을 사용한다. - 슬래시(/) 시작하면 하위 디렉토리에 적용되지 않는다. - 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표한한다. - 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다. Example # ignore all .class files *.class # exclude lib.class from "*.class", meaning all lib.class are still tracked !lib.class # ignore all json files whose..
Git-Commit Message Convention
·
Git
유다시티의 커밋 메시지 스타일 가이드 참조 1. Commit Message Structure 커밋 메시지는 제목/본문/꼬리말로 구성한다 type: subject body footer 1.1. Commit Type feat: 새로운 기능 추가 fix: 버그 수정 docs: 문서 수정 style: 코드 포맷팅, 세미클론 누락, 코드 변경이 없는 경우 refactor: 코드 리펙토링 test: 테스트 코드, 리펙토링 테스트 코드 추가 chore: 빌드 업무 수정, 패키지 매니저 수정 1.2. Subject 제목은 50자 넘기지 안혹, ,대문자로 작성하고 마침표 붙이지 않는다. 과거시제를 사용하지 않고 명령어로 작성한다. "Fixed"-->"Fix" "Added"-->"Add" 1.3. Body - 선택사항이기..
Kruskal Algorithm(크루스칼 알고리즘)
·
Algorithm
크루스칼 알고리즘이란? 최소 신장 트리를 구하기 위한 알고리즘이다. 크루스칼 알고리즘은 그리디 알고리즘의 일종이다. 즉, 그래프의 간선을 오름차순으로 정렬한 후, 최소 비용의 간선을 선택한다. 최소 신장 트리 모든 정점을 포함하고 사이클이 없는 연결 선을 그렸을 때, 가중치의 합이 최소가 되는 그래프 Kruskal 알고리즘 동작 1. 그래프 간선들을 가중치의 오름차순으로 정렬한다. 2. 정렬된 간선 리스트에서 사이클이 생성되지 않는 간선을 순서대로 선택한다. 2.1. 가장 작은 가중치를 먼저 선택한다. 2.2. 사이클을 형성하는 간선은 제외한다. 3. 해당 간선을 현재의 MST(Minimum Spanning Tree 최소 신장 트리)에 추가한다. 사이클 생성 여부를 확인하는 방법 추가하고자 하는 간선의 ..
운영체제_6
·
OS
CPU 스케줄링 1. Preemptive vs Non-preemptive - 선점 vs 비선점 1.1. Preemptive 프로세스가 CPU를 점유하고 있는 동안 I/O나 인터럽트가 발생한 것도 아니고 모든 작업을 끝내지도 않았는데, 다른 프로세스가 해당 CPU를 강제로 점유할 수 있다. 즉, 프로세스가 정상적으로 수행 중인 가운데 다른 프로세스가 CPU를 강제로 점유하여 실행할 수 있는 것이다. 1.2. Non-preemptive preemptive의 반대. 한 프로세스가 한 번 CPU를 점유했다면. I/O(프로세스 상태가 실행->대기로 변경되는 경우) 또는 프로세스가 종료될 때까지 다른 프로세스가 CPU를 점유하지 못하는 것이다. 병원=non-preemptive 응급실=premptive 2. Sche..
운영체제_5
·
OS
1. 프로세스 실행 중인 프로그램 1.1 프로세스의 상태 멀티 프로그래밍 시스템 기준 new: 프로그램이 메인 메모리에 할당된 상태 ready: 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 마친 상태 running: CPU가 실제로 프로세스를 실행한 상태 watiting: - 프로세스가 끝나지 않은 시점에서, I/O로 인해 CPU를 사용하지 않고 다른 작업을 실행한 상태. - CPU는 그 동안 다른 ready 상태인 프로세스를 실행한다(해당 프로세스는 running 상태). - I/O 작업이 끝나면 다시 CPU 서비스를 받기 위해 ready 상태가 된다. terminated: 프로세스가 완전히 종료된 상태 타임 쉐어링 시스템 기준 - 멀티프로그래밍 시스템 기준 경로가 1개 추가..
운영체제_4
·
OS
운영체제의 서비스 1. 프로세스 관리 2. 주기억 장치 관리 3. 파일 관리 4. 보조기억장치 관리 5. 입출력 장치 관리 6. 네트워킹 7. 보호 ... 강의에서는 주로 프로세스 관리, 주기억 장치 관리를 다룬다. 1. 프로세스 관리 (Process management) 프로세스란? 메모리에서 실행 중인 프로그램(program in execution) 프로그램은 하드디스크와 같은 보조기억장치에서 아무런 동작을 하지 않는 상태이다. 이를 어떠한 요청에 의해 메인 메모리에 할당하여 CPU를 사용하면서 실행하게 되는데 이를 프로세스라고 부른다. 프로세스의 생성, 소멸 (creation, deletion) 프로세스 활동 일시 중지, 활동 재개 (suspend, resume) 프로세스간 통신 (interproc..