Language

Language/Golang

고루틴은 왜 경량화된 스레드라고 얘기할까?

golang에 대해 접하고 좀더 나아가 고루틴이라는 것을 알고 써보게 되면 한번씩 경량화된 쓰레드라는 문구를 꼭 보게 됩니다. A goroutine is a lightweight thread managed by the Go runtime. 하지만 왜 경량화된 것인지 무심코 넘어가기 마련인데요. 이번 글에서는 그 부분에 대해 살펴보고자 합니다. 본문에 들어가기 앞서 몇 가지 짚고 넘어가야 할 것이 있는데요. 먼저 위에서 말씀드린 고루틴은 OS에서 나오는 스레드랑은 1:1로 매칭되진 않습니다. 그 내용은 뒤에서 좀 더 나올 것이라 우선 이 정도만 언급하고 넘어가겠습니다. 그리고 경량화된 스레드라고 했을 때는 그 비교 대상이 있어야겠죠. 무엇과 비교했을 때 가볍다라고 할 수 있을 것이니까요. 본문에선 많이 쓰..

Language/Java

JVM(Java Virtual Machine)

JVM JVM(Java Virtual Machine)은 쉽게 말하면 '자바를 돌리기 위한 기계'라고 생각하시면 됩니다. 우선 JVM까지 가기 전에 저희가 짠 자바코드가 어떻게 실행되는지 알아봅시다. 출처 : http://www.ntu.edu.sg/home/ehchua/programming/java/j1a_Introduction.html 자바로 코드를 자면 Java Compiler에 의해 컴파일이 됩니다. 이를 통해 .java 파일이었던 것이 .class파일로 바뀌는데요. 이는 바이트코드로 바꿔주는 과정입니다. 저희가 짠 코드와 기계가 이해하는 코드의 중간 언어라고 볼 수 있습니다. 그리고 이 바이트코드가 JVM를 통해 기계가 이해하는 언어로 되는 것입니다. 사실 JVM만으로는 실행시킬 수 ..

Language/Java

제네릭(Generic)

자바에서 Collection을 사용하다보면 안에 Element의 타입을 종종 보곤하는데요. 이 부분을 '제네릭'이라고 합니다. 그럼 이 제네릭을 왜 쓰는 것일까요? 다음과 같은 사용자가 만든 클래스가 있다고 생각해봅시다.1 public class CastingDto implements Serializable { private Object object; public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } } 그리고 몇 개의 객체를 생성해보겠습니다. public class GenericSample { public static void main(String..

Language/Java

예외처리

예외처리 오늘 수업시간에 '예외처리'와 관련하여 배웠습니다. 이때까지 미션을 진행해오면서 이에 관한 깊은 이해없이 예외처리를 사용해왔었는데요. 오늘 Pair 프로그래밍에서 주어진 미션들을 해결해 나가면서 여러모로 많은 것들을 배울 수 있는 시간이었습니다. 미션 순서대로 하나씩 정리하면서 개념도 추가적으로 설명하겠습니다. 미션1. PointTest에서 Point에 대한 exception테스트를 추가한다. x, y 값이 0미만, 24초과에 대한 에러 테스트를 추가한다. 첫번째 미션은 JUnit4를 사용하는 테스트코드에서 예외발생했을 때 어떻게 테스트하는지입니다. 간단하게 테스트 코드에서 @test이라는 Annotation옆에 (expected = 예외명.class) 붙여주면 됩니다. 이 부분은 문법적인 내용..

Language/Java

enum

enum 오늘 수업시간에 리팩토링을 통해 enum, 익명 클래스, 람다(lamda)의 개념을 배울 수 있었습니다. 하지만 오늘 주제가 enum인 만큼 enum 위주로 정리해보도록 하겠습니다. 먼저 리팩토링 할 코드입니다. import java.util.List; public class FigureFactory { Figure getInstance(List points) { if (points.size() == 2) { return new Line(points); } if (points.size() == 3) { return new Triangle(points); } if (points.size() == 4) { return new Rectangle(points); } throw new IllegalArg..

Language/Java

인터페이스(Interface)

인터페이스(Interface) 오늘 수업시간에는 인터페이스에 대해서 다루었습니다. 인상 깊었던 내용, 그리고 기억해둘 내용 중점으로 정리하겠습니다. 인터페이스가 뭘까요? 사전적 의미로 아래와 같은 뜻이 있습니다. 서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어 주는 부분. 또는 그런 접속 장치. 실생활에서 찾아볼 수 있는 흔한 예로 콘센트가 있는데요. 콘센트는 서로 각기 다른 것(전기와 전자기기) 사이에서 연결하게 해주죠. 또 자바에서도 찾아볼 수 있는데요. Connection.java라는 클래스입니다. 이 클래스는 DB와 프로그램 사이에서 서로를 연결해주는 역할을 합니다. 왜냐하면 수많은 DB의 종류가 있고 수많은 프로그램이 있는데 이 각기 다른 연결을 따로따로 Custom화하면 너무나 많은..

Brad Lee
'Language' 카테고리의 글 목록