개발

개발/자바

checked exception과 unchecked exception

자바 exception에는 checked exception과 unchecked exception 두 가지가 있다. checked exception - 메소드 시그니쳐에서 명시되어 있어야 하고 그 예외를 발생시킬 수 있는 메소드를 호출하는 쪽에서 예외에 대한 처리를 필수적으로 해줘야 한다.(try/catch or throw) - Exception 클래스를 상속받아 만들면 checked exception이 된다. unchecked exception - 메소드 시그니쳐에 명시되어 있을 필요는 없고 그 예외를 발생시킬 수 있는 메소드를 호출하는 쪽에서 예외에 대한 처리를 필수적으로 해줄 필요는 없다. - RuntimeException 클래스를 상속받아 만들면 unchecked exception이 된다. - un..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 2장 스레드 안정성

[자바 병렬 프로그래밍 - 2장 스레드 안정성] 요약 정리 - 스레드 안정한 코드를 작성하는 것은 근본적으로는 상태, 특히 공유되고 변경할 수 있는 상태에 대한 접근을 관리하는 것 - 스레드 안전성은 코드를 보호하는 것이 아닌, 데이터에 제어 없이 동시에 접근하는 것을 막는 것 - 객체를 스레드에 안전하게 만들려면 동기화를 통해 변경할 수 있는 상태에 접근하는 과정을 조율해야함 - 스레드가 하나 이상 상태 변수에 접근하고 그 중 하나라도 변수에 값을 쓰면, 해당 변수에 접근할 때, 관련된 모든 스레드를 동기화를 통해 조율해야함 - 기본 수단은 synchronized 키워드로서 배타적인 락을 통해 보호 기능을 제공함 - 만약 여러 스레드가 변경할 수 있는 하나의 상태 변수를 적절한 동기화 없이 접근하면 그..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 1장 개요

[자바 병렬 프로그래밍 - 1장 개요] 요약 정리 1.1 작업을 동시에 실행하는 일에 대한 간략한 역사 - 병렬 프로그래밍의 중요성 스레드는 멀티프로세서 시스템의 능력을 최대한 끌어낼 수 있는 가장 쉬운 방법 프로세서 개수가 늘어날수록 여러 작업을 동시에 실행하는 일이 더욱 중요함 - 여러 프로그램을 동시에 실행하는 운영체제를 개발하게 된 요인 1. 자원 활용 입출력과 같이 외부 동작 끝나기를 대기하는 경우 자원을 활용할 수 없음 기다리는 동안 다른 프로그램을 실행하도록 하는게 효율적 2. 공정성 여러 사용자와 프로그램이 컴퓨터 내 자원에 대해 동일한 권한을 가질 수 있음 3. 편의성 여러 작업을 처리하는 하나의 프로그램 작성보다 각기 일을 처리하고 조율하는 프로그램을 작성하는 것이 쉽고 바람직함 - 프..

개발

객체 지향 설계 원칙 5가지

나쁜 설계의 경우 다음과 같은 요소들을 가지고 있다. 경직성 : 무엇인듯 하나를 바꿀 때마다 반드시 다른 것도 바꿔야하고 변화의 사슬이 끊이지 않아 시스템 변경이 힘듦.부서지기 쉬움 : 시스템 한 부분을 변경하면 전혀 상관없는 다른 부분에 이상이 생김.부동성 : 시스템이 여러 컴포넌트로 분해되어 있어 다른 시스템에서 재사용하기 힘듦.끈끈함 : 편집-컴파일-테스트 순환을 한 번 도는 시간이 엄청나게 길다.쓸데없이 복잡함 : 괜히 머리를 굴려서 짠 코드 구조가 많다.필요 없는 반복 : 복사/붙여넣기, 중복코드가 많음.불투명함 : 코드 작성 의도가 불분명하다, 코드와 그에 대한 설명에 괴리가 있다. 잘못 관리한 의존 관계가 위 요소들의 원인이다.위와 같은 요소들을 발견하면 다음 원칙들을 이용하여 개선을 해보자..

개발/자바

Mybatis 쿼리 파라미터에서 jdbcType

Mybatis 쿼리 파리미터 프로퍼티 중에 jdbcType가 있는데 항상 헷갈려서 정리해본다. Mybatis 공식 문서에 이렇게 설명되어 있다. jdbcType : 지원되는 타입 목록에서 설명하는 JDBC 타입. JDBC타입은 insert, update 또는 delete 하는 null 입력이 가능한 칼럼에서만 필요하다. JDBC의 요구사항이지 마이바티스의 요구사항이 아니다. JDBC로 직접 코딩을 하다보면 null이 가능한 값에 이 타입을 지정할 필요가 있을 것이다. nulll값을 처리하기 위해 필요한 프로퍼티인데 Mybatis에서 null값에 대한 처리를 하기 위함이아니라 JDBC에서 필요해서 넣어줘야 한다고 되어있다. NULL이면 그냥 NULL로 쿼리를 날리면 될일이지 JDBC는 왜 그것이 필요한지 ..

개발

리눅스 /bin/sh^M: bad interpreter 에러

/bin/sh^M: bad interpreter 서버 작업을 위한 스크립트를 eclipse 에서 작업을 하고, svn에을 통해서 서버에 script를 받고 실행할 경우 발생할 가능성이 있는 /bin/sh^M: bad interpreter 에러. 특별하게 문제없다가 새로운 script에서 발생하면 이건 도대체 잡기가 어렵다. 그냥 봐서는 아 이상한 문자가 들어가서 깨졌다는 의심은 일단 들기 시작한다. 그래서 서버에서 vi 를 통해서 동일한 내용으로 스크립트를 작성하며 정상동작하고 eclipse에서 작업 하면 동일한 문제가 발생할 경우 이부분을 의심해야 한다. 우선 Window 와 Unix/Linux 기반의 text 개행 문자가 다르기때문에 발생하는 경우이다. 이것을 알려면 문제가 되는 파일을 vi 로 열때..

bebeside77
'개발' 카테고리의 글 목록 (14 Page)