본문 바로가기
반응형

분류 전체보기468

[OS] 메모리구조 : 메소드, 힙, 스택 정리 JVM이 메모리를 OS에게 요청하면 OS는 메모리를 할당한다. 이때 받은 메모리를 클래스영역,스택영역,힙영역으로 메모리 구조를 나눌 수 있다. ​ 클래스 영역은 프로그램이 실행하기 위해 바이트코드를 로드하는 곳으로 class파일을 찾아서 메모리에 로딩한다. ​스택 영역은 지역변수와 매개변수를 저장한다. 지역변수 : 메소드안에서 선언한 변수 매개볏누 : 메소드를 선언할때 아규먼트로 넣는 변수 이 변수들은 선언된 블록안에서 유효하기 때문에 메소드가 호출되면 저장되고, 메소드가 끝나면 스택에 저장되어 있던 변수를 제거한다. 힙영역은 new로 생성된 인스턴스 변수를 저장합니다. 그리고 JVM이 중단되거나 가비지 컬렉터가 실행되기 전까지 영구적으로 저장됩니다. 스택영역에 주소를 저장하고, 힙영역에 주소에 해.. 2020. 1. 15.
PLSQL 트리거/프로시져/함수차이점 PL/SQL SQL을 확장한 절차적인 언어 오라클에서 제공 쿼리문을 하나씩 수행하는 SQL과 다르게 프로시져, 트리거를 통해 반복적으로 수행할 수 있습니다. 구조 (DECLARE) : 변수,상수,커서, 사용자 지정 예외 선언부 BEGIN : SQL문장, PL/SQL제어문장 (EXCEPTION) : 에러발 생시 수행될 액션 END 프로시저 반복적인 트랜잭션을 수행할 수 있는 PL/SQL블록 SQL뿐만 아니라 IF문이나 WHILE문이등 제어문이나 반복문을 구현가능 DB내에 미리 컴파일되어 저장되므로 필요할떄마다 매번 다시 사용가능 함수 매개변수를 받아서 반복적으로 수행하는 PL/SQL블록 *함수와 프로시져 차이는 리턴값의 유무입니다. 프로시저는 수행하는 절차가 목적이 되어 리턴값이 없으며 함수는 어떠한 결과.. 2020. 1. 14.
[OS] 스레드 vs 프로세스 차이점(+멀티스레드/멀티프로세스) 정리. 프로세스는 실행되고 있는 하나의 프로그램이고, 스레드는 프로세스안에서 처리하고 있는 하나의 작업단위 프로세스는 독립된 자원을 할당받아 사용하고, 스레드는 프로세스 안에서 자원을 공유하면서 실행한다. 프로세스 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 운영체제로부터 시스템 자원을 할당받는 작업의 단위 동적인 개념으로는 실행된 프로그램 프로세스는 각각 독립된 메모리영역(코드,데이터,스택,힙) 을 할당받는다 (자신만의 고유 공간과 자원을 할당받아 사용) 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있다 ​ 스레드 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스의 특정한 경로 프로세스가 할당받은 자원을 이용한느 실행 단위 스레든느 프로세.. 2020. 1. 14.
[OS] 데드락(교착상태) 프로세스가 공유자원을 동시에 할당하려고 할 때 무한정으로 대기하는 상태 언제 발생하는가? 다음과 같은 4가지 조건을 모두 만족하면 교착상태가 발생한다. 1. 상호배제 조건 하나의 프로세스나 스레드만 공유자원으로 가질 수 있다면 다른 자원은동시에 할당할 수 없어서 교착상태가 발생한다. 2. 점유대기 조건 한번 할당하고, 다른 자원을 할당하기 위해서 대기한다면 이때 무한정으로 대기할 수 있어서 교착상태가 발생한다. 3. 비선점 조건 한번 할당 하면, 중단되거나 취소할 수 없다면 다른 자원을 할당하기 위해 기다려야 해서 교착상태가 발생한다. 4. 순환대기 조건 다음 자원을 대기하는데 사이클이 존재한다면, 무한정으로 기다리는 교착상태가 발생한다. 그렇다면 어떻게 예방할수 있는가? 교착상태를 피하려면? 위와 같은.. 2020. 1. 13.
[Java] 문자열클래스 string/ stringbuffer / stringbuilder 정리 srting,stringbuffer,stringbuilder의 공통점은 모두 string문자열을 관리하는 클래스 string클래스는 new연산을 통해 한번 생성하되면 메모리공간은 변하지 않은 불변객체입니다. 그래서 연산이 필요하면 메모리공간을 늘리는것이 아니라 계속해서 인스턴스를 생성하므로 성능이 떨어집니다. 대신 단순하게 읽는 조회연산에선 속도가 빠릅니다. sringbuffer, stingbuilder 클래스는 string과 다르게 연산에 따라 메모리 크기를 변경할 수 있습니다. 멀티스레드 환경에서 동기화가 가능한지에 따라 stringbuffer와 stingbuilder로 구분할 수 있습니다. stringbuffer는 멀티스레드 환경에서 동기화가 가능하지만 stringbuilder는 불가능합니다... 2020. 1. 13.
트랜잭션 특징(ACID) /Rollback /Commit 트랜잭션 데이터베이스의 상태를 변화시키는 하나의 작업단위를 의미합니다. DB의 상태는 딱! 2개 Rollback과 commit만 있음 그래서 두가지 상태를 작업하는 실행단위들 왜 트랜잭션이 필요할까? 왜 DB는 트랜잭션 기준으로 작업을 처리할까? 1. 데이터의 무결성을 유지하기 위해 (즉 부정합을 방지하고자) DB서버에 여러가지 클라이언트들이 동시에 들어와서 작업을 처리하는데 이때 데이터들의 일관성이 깨질수 있다. 2. 직렬화 기능으로 작업을 하나씩 순차적으로 진행하기 위해 하나하나 한번에 하나의 프로세스를 처리하도록 한다. 그런데 이러면 효율이 너무 떨어지기 때문에 트랜잭션이라는 작업단위로 처리하는것. 트랜잭션은 다수의 클라이언트가 사용해서 여러개의 트랜잭션이 동시에 수행될 수 있음(동시성 4가지 특징.. 2020. 1. 12.
[Programming] JAVA(객체지향언어)특징 객체지향언어 특징 1. 상속 : 상위객체가 하위객체에게 필드와 메소드를 물려줘서 상속받아 사용할 수 있는 것 공통적인 내용이 있는 클래스에서 상속받아 사용할 수 있어서 코드의 '재사용'에 용이합니다. ​ 2. 캡슐화 : 외부의 잘못된 사용으로 내부 객체가 손상되지 않도록 접근지정자를 통해 '정보은닉'을 하는것 객체의 필드,메소드를 하나로 묶고 실제 구현한 내용을 감추는 것 높은 응집도와 낮은 결합도를 유지할 수 있도록 설계 *응집도: 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지 나타내는것 *결합도 : 어떤 기능을 실행하는데 다른 클래스나 모듈들에 얼마나 의존적인지 나타내는 것 캡슐화를 통해서 낮은 결합도를 유지할 수 있게됨 ​ 3. 다형성 : 하나의 타입에 여러객체를 대입해서 다양한 기능.. 2020. 1. 12.
[Programming] 오버라이딩(Overriding) Vs 오버로딩(Overloading) 정리 오버라이딩은 상속관계에서 부모클래스의 내용을 자식클래스에서 재정의 하는것입니다. 오버로딩은 같은클래스에서 매개변수,리턴값이 다르지만 같은 이름의 메소드를 정의하는 것입니다. * 오버라이딩(조상에게 받은 메서드의 구현부를 바꿈) 조건 ⓐ 선언부가 같아야 한다(이름 / 매개변수 / 리턴타입) ⓑ 접근제어자를 좁은 범위로 변경할 수 없다. ⓒ 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다. * 오버로딩 조건 ⓐ 메서드의 이름이 같아야 한다. ⓑ 매개변수의 개수 or 타입이 달라야 한다. (리턴타입은 오버로딩 구현과 관계 없다) 오버라이딩 Overriding (영어사전 뜻 : Overide가 무효, 무시, 기각하다 즉, 가장 우선되는) 상속관계에서 부모 클래스에서 정의한 메서드를 자식 클래스에서.. 2020. 1. 12.
728x90