분류 전체보기
-
MySQL 인덱스에 대해서DB 2021. 4. 8. 15:06
인덱스 - 인덱스란 select의 성능을 향상하기 위해 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것이다. 책의 찾아보기를 보면 내용을 쉽고 빠르게 찾아갈 수 있도록 "ㄱ", "ㄴ", "ㄷ"과 같이 순서대로 정렬되어 있는데, DBMS의 인덱스도 마찬가지로 컬럼의 값을 주어진 순서로 미리 정렬해서 보관합니다. insert, update, delete의 성능이 저하되는 대신 select의 성능을 향상시키는데 조회를 통한 update, delete를 진행할 경우에는 인덱스가 있으면 빠르게 조회를 할 수 있다. 그러므로 많은 양의 데이터를 삭제 및 업데이트 하는 경우에는 인덱스로 지정된 컬럼을 기준으로 진행하는 것을 추천한다. B-Tree 인덱스 - 이름 그래도 데이터를 트리 구조로 저장하는..
-
프로세스와 스레드기타기타기타 2021. 3. 16. 19:38
프로세스 - 프로그램이 실행되어서 돌아가고 있는 상태 즉 컴퓨터가 어떤 일을 하고 있는 상태를 말한다. - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) - code, data, stack. heap의 구조로 되어 있는 독립된 메모리 영역 - 기본적으로 다른 프로세스에 접근할 수 없다. - 동시성, 병렬성 혹은 둘의 혼합으로 사용된다. - 동시성은 프로세스 하나가 일부분씩 진행하는 것 - 병렬성은 코어 여러개가 달려서 각각 진행되는것 (ex. 듀얼코어) 스레드 - 한 프로세스 안에도 여러 갈래의 작업들이 동시에 진행될 필요가 있는데 이런 갈래를 스레드라고 한다. - 스레드는 프로세스 내에서 각각 stack만 따로 할당받고 그 외에는 공유함 자바스레드 - 자바에는 프로세스가 존재하지 않..
-
자바 String 클래스자바 2021. 3. 14. 23:01
한번 생성된 String인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경할 수는 없다. 예를 들어 +연산자를 이용해서 문자열을 결합하는 경우 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String인스턴스가 생성되는 것이다. 연산 시 마다 새로운 문자열을 가진 String인스턴스가 생성되어 메모리 공간을 차지하기 때문에 가능한 한 변경이 가능한 StringBuffer 클래스를 사용하는 것이 좋다. StringBuffer의 비교 - String 클래스와 달리 equals메서드를 오버라이딩 하지 않았기 때문에 값을 비교하기 위해서는 오버라이딩 된 toString()을 호출해서 String인스턴스를 얻은 다음, 여기에 equals메서드를 사용해야 한다. StringBuilder - ..
-
자바 다형성(polymorphism)자바 2021. 3. 14. 16:43
객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 즉 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } voud channelDown() { --channel; } } class CaptionTv extends Tv { String text; void caption() { } } Tv t = new Tv(); CaptionTv c = new ..
-
접근 제어자자바 2021. 3. 14. 14:00
pirvate - 같은 클래스 내에서만 접근이 가능하다. default - 같은 패키지 내에서만 접근이 가능하다. protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다. publid - 접근 제한이 전혀 없다. 접근제어자를 이용한 캡슐화 클래스 내부에 선언된 데이터를 보호하기 위해 접근제어자를 사용할 수 있는데, 데이터가 유효한 값을 유지하도록, 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서 사용된다. public calss Time { public int hour; public int minute; public int second; } 위 클래스의 인스턴스를 생성한 다음, 멤버변수에 직접 접근하여 값을 변경할 경우 hour에 유효한..
-
자바 객체지향자바 2021. 3. 12. 14:12
객체지향이론의 기본 개념 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이라는 것이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상세계를 구현하고 이 가상세계에서 모의실험을 함으로써 많은 시간과 비용을 절약할 수 있다. 객체지향언어의 특징 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인..
-
자바의 변수(variable)에 대해서자바 2021. 3. 10. 14:48
변수 선언 - 메모리의 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 변수이름을 통해 사용할 수 있게 된다. ex)int i; 변수 초기화 - 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수 없는 값'이 남아있을 수 있기 때문에 변수 사용전에 초기화를 해야한다. 클래스변수와 인스턴스변수는 초기화를 생략할 수 있지만 지역변수는 사용되기 전에 초기화를 반드시 해야한다. ex)int i = 1; 기본형 변수와 참조형변수 - 기본형변수는 실제 값을 저장하는 반면, 참조형 변수는 어떤값이 저장되어 있는 주소를 값으로 갖는다. 자바는 C언어와 달리 참조현 변수 간의 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수이다. ex)..
-
JVM(Java Virtual Machine)자바 2021. 3. 10. 13:11
Java Virtual Machine 직역하면 자바를 실행하기 위한 가상 기계(컴퓨터)라고 할 수 있다. 자바 응용프로그램은 JVM(자바가상머신)과 통신하고 JVM은 해당 운영체제가 이해할 수 있도록 변환해서 전달한다. 즉, 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이다. Java 애플리케이션 JVM OS 컴퓨터(하드웨어) 일반 애플리케이션 OS 컴퓨터(하드웨어) 응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 남궁성,『Java의 정석』,도우출판