본문 바로가기

Language24

Golang panic(패닉)과 recover(복구): Java에서의 try-catch 구문 panic 프로그램 실행 중에 에러가 발생(= 런타임 에러)하여 종료되는 상황을 패닉이라고 표현한다. Java에서의 Exception과 유사한 상황이다. 배열의 범위를 넘어서는 인덱스로 접근하는 상황이 대표적인 예시이다. 패닉이 발생하면 현재 함수를 즉시 멈추고 defer 함수들을 모두 실행한 후 즉시 리턴한다. func main() { fmt.Println(divide(1, 0)) } func divide(a, b int) int { return a / b } panic: runtime error: integer divide by zero 런타임 에러뿐만 아니라 panic 함수를 사용해서 직접 에러를 발생시킬 수도 있다. panic(Error_Message) func main() { panic("Err.. 2019. 9. 10.
[Java] Number와 String 특징 정리 - Primitive, Autoboxing, String, StringBuilder, StringBuffer Java Numbers and String 개발 시 성능에 영향을 줄 수 있으므로 꼭 알아야 할 Number와 String의 특징들을 정리해두었다. Numbers Primitive Type & Boxed Primitive Type Primitive type Wrapper class boolean Boolean byte Byte char Character float Float int Integer long Long short Short double Double Java에는 기본 자료형인 Primitive type과 객체로 제공되는 Wrapper class(=Boxed Primitive Type)가 있다. Primitive에서 Boxed Primitive로의 전환(boxing), Boxed Primitive.. 2019. 9. 8.
Java GC(Garbage Collection) Naver D2에 워낙 잘 설명돼있어서 이 페이지만 읽어봐도 GC에 대해 개념을 잡을 수 있다. 이 포스팅은 그냥 내가 읽기 편하려고 Naver D2 포스팅을 요약 정리한 것이다. (마찬가지로 D2에서 올린 Garbage Collection 튜닝도 매우 유익하다.) Java GC(Garbage Collection) Java에서는 개발자가 코드로 메모리를 명시적으로 해제하지 않기 때문에 Garbage Collector가 더는 필요 없는 객체를 찾아 지우는 작업을 한다. Garbage Collector는 'weak generational hypothesis'라는 두 가지 전제 조건에 의해 만들어졌다. 대부분 객체는 금방 접근 불가능 상태(unreachable)가 된다. 오래된 객체에서 젊은 객체로의 참조는 .. 2019. 9. 7.
Golang defer (지연 호출) 지연 호출은 특정 함수를 현재 함수가 끝나기 직전에 실행하는 기능이다. Java에서의 try, catch, finally 구문에서 finally와 유사한 동작을 한다. func hello() { fmt.Println("Hello") } func world() { fmt.Println("World") } func main() { defer world() // world 함수가 나중에 호출된다. hello() hello() } Hello Hello World 지연 호출할 함수는 여러 개를 선언해도 되며, 이때 실행되는 순서는 LIFO이다. 따라서 맨 나중에 호출한 함수가 먼저 실행된다. func hello() { fmt.Println("Hello") } func world() { fmt.Println("Wo.. 2019. 9. 7.