TOC TOU 경쟁조건TOCTOU(Time Of Check to Time Of Use) 경쟁 조건은 컴퓨터 보안 및 프로그래밍에서 자주 발생하는 일반적인 문제 중 하나이다. 이 문제는 시스템이 두 단계로 나뉘어 수행될 때 발생하는데, 하나는 어떤 조건을 검사하는 단계이고 다른 하나는 그 조건에 기반하여 어떤 동작을 실행하는 단계이다. 각각을 순서대로 1단계, 2단계라 칭하겠다. 만약 이 두 작업 사이에 상태가 변경된다면, 원래의 검사가 무의미해져 프로그램이 예기치 않은 행동 혹은 예외를 발생시키게 된다.발생 상황 예시TOCTOU RaceCondition이 발생하는 상황의 몇 가지 예시를 들어보겠다.1. 파일 시스템 접근보통 파일에 접근하거나 수정할 때, 해당 파일이 존재하는 지 확인하고 접근하게 된다.i..
Java
원활한 프로그램의 작동을 위해서는 예외처리는 필수적이다. 이번 포스팅에서는 자바에서 예외처리를 하는 방법에 대해 알아본다. 예외처리란? 자바에는 에러(Error)와 예외(Exception)가 있다. 에러는 하드웨어적인 문제로 오류가 발생하는 것인데, 개발자의 코드 작성으로는 어쩔도리가 없는 문제이다. 그와 달리 예외는 개발자가 코드로 어쩔도리 있는 문제이다. 예외란 사용자가 잘못 사용하거나, 코드로 인해 발생하는 문제를 말한다. 예외의 종류 자바의 예외에는 체크예외(혹은 일반예외)와 언체크예외(혹은 런타임예외)가 있다. 체크 예외(Checked Exception) 체크 예외는 일반 예외(Exception)라고도 불리며 자바 파일이 컴파일 될 때 체크되는 예외이다. 체크 예외가 있으면 컴파일 할 수가 없으..
들어가며 동일성과 동등성에 대해 본격적으로 들어가기에 앞서 JAVA의 모든 객체의 최고 조상인 Object에 대해 먼저 알아본 뒤, 동일성과 동등성에 대해 알아본다. 모든 객체의 조상 Object 자바의 java.lang 패키지에 포함된 Object는 모든 객체의 조상이다. 보통 자바에서 상속을 하기 위해서는 아래와 같이 작성해야한다. public class TestObject extends Object { ... } 하지만 예외적으로 Object는 모든 객체의 조상이므로 생략하더라도 Object의 자손이 된다. public class TestObject {} public static void main(String[] args) { TestObject testObject = new TestObject()..
ArrayList에는 무슨 타입이 들어갈까? ArrayList에 대해 공부하던 중 문득 궁금한 것이 생겼다. Java 공식 문서(11)에 따르면 ArrayList의 add 메서드는 객체를 매개변수로 받아 ArrayList에 추가한다. 아래의 공식문서에서 알려주는 ArrayList의 모든 add 메서드이다. 보다시피 int값을 index로 받고 객체를 받아 저장하거나, 객체만을 받아 ArrayList에 추가한다. 여기서 하나 궁금증이 생긴다. 객체라는 것은 클래스로 인해 만들어진 인스턴스를 말하는 것이다. 그렇다면 원시타입(primitive type. int, boolean, double, char, long ...)은 ArrayList에 들어갈 수 없는 것인가? 직접 해보기 ArrayList list =..
자바에는 문자열 관련 타입이 여럿 있다.. 하나는 가장 흔히 쓰이고 자주 보이는 String 클래스이고, 나머지는 StringBuffer 클래스와 StringBuilder 클래스이다. 타입과 클래스 타입 얘기를 하다가 갑자기 왜 클래스라고 말하는 지 궁금할 수도 있다. 클래스. 즉 객체는 결국 타입이다. 쉽게 얘기하면 객체는 사용자 지정 타입인 것이다. 그렇다고 객체 == 타입은 아니다. int number = 3; String text = new String("hello"); User user = new User(); 자바에서 변수를 선언할 때는 타입 변수명 = 담길내용의 형식을 따른다. 위의 int, String, User는 타입 자리에 위치한다. 결국 User 객체와, String 객체는 int와 ..