프로그래밍 기초 3

쓰레드와 멀티쓰레드

안녕하세요. 오늘은 쓰레드와 멀티 쓰레드에 관하여 글을 써볼까 합니다. 혹시 이런 Exception을 보신 적이 있나요 ?? main이라는 쓰레드에서 ArrayIndexOutOfBoundsException이 발생한 경우입니다. 쓰레드는 독자적으로 실행 가능단 작업의 최소 단위입니다. 위의 경우 자바의 main이라는 쓰레드를 생성하고 그 안에서 이루어지는 어떤 독자적인 코드의 흐름에 의해서 발생한 예외상황이기 때문에 해당 쓰레드는 Exception과 함께 종료됩니다. 하지만 우리가 알고있는 대부분의(OS라던지, PC 프로그램, 소켓 통신, 애플리케이션) 프로그램은 하나의 쓰레드로만 동작하지는 않습니다. RPG 게임을 한다고 가정해볼까요 ?? 나의 캐릭터는 서버와 통신하고 승인이 되면 게임에 '접속'이 됩니..

static 객체와 일반객체

오늘은 java를 비롯한 많은 프로그래밍 언어에서 사용되는 static이라는 개념에 대해서 정리해보도록 하겠습니다. 여러분들은 언제 static이라는 키워드를 사용하십니까? 저의 경우에는 일반적으로 전역변수를 사용하거나 유일하게 존재해야만 하는 singleton객체를 생성할 때 사용합니다. static키워드를 사용하면 처음에 초기화된 순간부터 메모리의 한 영역에 할당되어 특별한 명령이 없으면(메모리 free명령 등) 프로그램이 종료될 때까지 해당 영역을 차지하게 됩니다. 그래서 이를 변수로 사용하면 한 클래스로 생성된 N개의 객체에서 하나로 통용되는 변수로 사용될 수도 있습니다. 예를들어 휴대폰 공장에서 휴대폰을 만들었다고 가정해봅시다. 휴대폰이라는 클래스로 Phone이라는 클래스가 만들어질 수 있겠죠 ..

[DB] 인덱스, 트랜잭션이란?

학부시절 데이터베이스 수업때 잠깐 배웠던 개념 중 인덱스, 트랜잭션이라는 개념이 있었습니다. 하지만 최근 본 면접에서 관련 질문을 받았는데 대답을 하지 못했습니다...ㅜㅜ 그래서 오늘은 인덱스와 트랜잭션에 대해 간략하게 설명(기록?)해 보도록 하겠습니다. 인덱스에 대한 자료를 찾아본 결과 db에서의 인덱스는 os에서 페이징테이블을 연상시키게 했습니다. 인덱스란 많은 양의 데이터베이스를 순회할 경우, 비용을 최소화시키기 위해 책으로 비유하자면 특정 부분에 책갈피처럼 끼워놓은 부분들의 페이지 번호를 따로 테이블로 정의하는 것이라고 할 수 있을 것 같습니다. RDBMS에서 주로 사용하는 기술로 검색 속도를 높여준다는 장점이 있지만, 인덱스를 저장할 또 다른 파일이 필요하기 때문에 용량이 커진다는 단점이 있습니..