프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입은 기본값 타입으로 불립니다. 종류는 크게 정수타입, 실수타입, 불리언타입으로 나눠져있습니다. 정수형에는 byte,short,int,long,char으로 구성되어 있습니다. 어쨰서 정수형에는 종류가 저렿게 많을까요? 그전에 char형에 대해 소개하고 넘어 가겠습니다. char형은 문자코드 값으로 입력되기 때문입니다. 자바에서는 문자코드를 유니코드로 사용한다고 합니다. 메모리에 할당되는 값은 16비트라고 합니다. 유니코드는 0 ~ 65535까지 할당된다고 합니다. 어째서 자바는 유니코드를 사용하는 걸까요? d2.naver.com/helloworld/76650 결국, 다른 언어또한 지원하기 위해 이와 같은 선택을 했다고 할 수 있겠군요. 이제 ..
Java Virtual Machine의 약자로직역하자면 자바 가상 머신이라고 할 수 있다. OS와의 중재자 역할을 한다. 따라서 어떤 OS를 사용하더라도 이식성이 좋다는 장점을 가지고 있다. 따라서,재사용성이 좋다. (최근에 나온 프로그래밍 언어들은 OS 이식성이 좋게 나오는걸로 알고있다.) jvm의 역할은 크게 2가지로 구분이 되어지는데 Garbage collector과 메모리 관리기능이로 구분되어진다. 또 jvm은 스택기반의 가상머신이다. 추가적으로 arm같은 하드웨어는 레지스터기반으로 동작한다. 컴파일하는 방법 컴파일이란 바이트 코드로 만드는 것을 의미합니다. 위에서 JVM은 OS와의 중재자 역할을한다고 하였습니다. 대게 프로그래밍언어는 사람이 읽을 수 있게 설계 되어있습니다.하지만 기계인 컴퓨터는..
더보기 기존 서블릿에서는 자바 코드를 기반으로 [문자열]을 사용해 HTML과 자바스크립트로 화면을 구현했으나, JSP는 이와 반대로 HTML,CSS,자바스크립트를 기반으로 JSP요소들을 사용해 화면을 구현합니다. - 자바 웹을 다루는 기술 中
프로그래밍을 하다보면 이들의 범위에 대해 가끔 헷갈린다. 그래서 그것을 해결하고자 이렇게 작성한다. 흔히들 public과 private는 잘안다. 왜냐하면 당연시하게 명시되었기 때문이다. public은 모두다 허용이고 private는 자기자신만 허용이다. 근데 default랑 protected가 헷갈린다. 분명히 2개다 같은 결과인것 같은데... 두개의 차이점은 패키지의 위치와 상속 관계로 해결할 수 있다. 다만, 같은 패키지에서 상속 관계는 의미가 없다.(그래서 같은걸로 생각하는 것 같다.) 간단하게 코드를 작성해 봤다. public class O { static int i = 1; public static void main(String[] args) { System.out.println(i); } }..
쓰레드는 작업의 한 단위로, 주로 프로세스에서 사용된다. 프로세스는 공장이고, 쓰레드는 일꾼이라고 많은 사람들이 설명한다. 그런데! 이 설명으론느 뭔가가 부족하다. 공장인거 알겠고, 일꾼인거 알겠는데... 멀티 쓰레드는 어떻게 설명하고..., 싱글 프로세스에서 멀티를 쓰는건 어떻게 설명하지... 그래서 곰곰히 생각했다. 어떻게 하면 쓰레드를 더 잘 이해 할 수 있을까? 순간, TV와 리모콘이 떠올랐다. 여기서 TV는 프로세스고 리모콘이 쓰레드라 생각했다. 그랬더니 쓰레드가 조금씩 이해되기 시작했다. 보통은 TV와 리모콘은 한개씩 존재한다. TV가 여러 대일경우에는 프로세스가 여러개라고 생각하면 되고, 리모콘이 여러개라면 쓰레드가 여럿인, 멀티쓰레드라고 생각하면 되었다. 이제 싱글 프로세스 환경에서 쓰레드..
자바를 공부하면서 어렵다고 느끼는게 뭐냐고 물어보면 가장 먼저 제네릭을 떠올릴 것입니다. 물론 람다도 있긴하지만 람다 같은 경우는 몰라도 API를 읽는데는 그리 문제가 되지 않죠. 왜냐하면 람다가 아닌 버전도 알려주기 때문입니다. 람다를 사용하는 이유가 함수형 처럼 사용하기 위해서인데 자바는 함수형 언어가 아니기 때문이죠.. (하지만 람다도 반드시 알아야 하는 것 중 하나죠) 하지만 제네릭 같은 경우는 다릅니다. 이걸 모르면 API를 읽는데 어려움이 있죠. 근데 제네릭이라는게 쉽게 와닿지가 않습니다. 왜냐하면 이걸 굳이 써야 하는지 의문이 들때가 많기 때문이죠. 그래서 곰곰히 생각했습니다. 어떻게 하면 제네릭을 더 잘 이해할 수 있을까? 일단 제네릭에 대한 뜻을 알아 봅시다. 네 일반적이라는 뜻입니다. ..
*주의 : 이 글은 CODE라는 책을 읽고 영감을 받아 작성한 글입니다. 일반적인 프로그래밍 추상화에 대해서는 설명하지는 않습니다. 저는 프로그래밍 추상화와 다른 추상화에 대한 미묘한 차이를 이해하고자 이 글을 작성하였습니다. 이 글을 읽으면 추상화에 대한 대략적인 감을 익힐 수 있을지는 모르겠지만, 프로그래밍 추상화에 대한 이해는 어려울지도 모릅니다. 프로그래밍을 공부하다 보면 추상화라는 단어가 눈에 많이 들어옵니다. 하지만 이 단어가 쉽게 와닿지가 않습니다. 우리가 흔히 알고 있는 추상화는 다음 과 같은 그림들일 것 입니다. 그렇다면 프로그래밍에서는 어떻게 사용될까요? 흔히 우리가 프로그래밍상에서 알고있는 추상화는 구현체가 없는 메소드입니다. 그런데 위 그림과 프로그래밍에서 말하는 추상화는 전혀 다른..
프로그래밍 공부를 하다보면 얕은 복사와 깊은 복사가 나옵니다. 얕은 복사는 값만 복사하고 주소값은 복사하지 않고 값만 복사입니다. 그리고 깊은 복사는 주소값과 값 둘다 복사하는 방법입니다. 그런데 이건 알겠는데 막상 이것을 설명하려고 하면 무엇이 다른지 햇갈릴때가 많았습니다. 얕은 복사, 깊은 복사 이 두개가 있는 건 알겠는데... 뭐가 다른건지... 코드를 봐도 뭐가 다른건지... 제가 자바를 처음 공부했을때 이랬습니다. 사실 지금부터 설명하는 방법이 프로그래밍적으로 봤을때는 맞지 않을 수 있습니다. 하지만 적어도 이해가 될겁니다. 나중에 프로그래밍에는 뭐가 더 추가 되는지도 설명할 예정입니다. 검정 검정 위 두개의 글자를 읽어 보세요. 두개다 검정이라는 글자를 가지고 있습니다. 이제 두개의 단어는 각..
탬플릿? 뭔가 느낌이 일정한 모형 틀을 만들어 놓고, 그 틀을 계속 사용하는 느낌이다. 구글에서 템플릿 관련 이미지를 찾았다. 죄다 ppt관련 이미지 밖에 없었다. 왜 ppt를 만들때 템플릿을 사용할까? 가장 뻔한 이유로는 편하기 때문이다. 어차피 제목 이나 내용빼고는 이미 구현되었기 때문에 우리는 제목과 내용만 추가하면 된다. 물론 내가 발표할 주제와 ppt의 상관관계는 지켜야 하겠지만... 근데... 디자인 패턴에서는 템플릿을 어떻게 사용할까? 사실 이름에는 메소드라는 단어가 숨겨져 있다. 메소드가 있는 이유는 이 패턴은 메소드의 역할이 크기 때문이다. 예를들어 A라는 클래스와 B라는 클래스를 만든다고 가정하자. 근데 A와 B클래스는 공통적으로 사용되는 메소드가 있다. 이 메소드를 한곳에 넣어주면 된..
오랜만에 작성하는 것 같다. 프록시 이후로 9일만에 작성하는데.... 아무튼 빌더 패턴은 객체의 생성을 맡는다. 객체의 생성하면 가장 먼저 떠오르는 패턴은 팩토리 패턴이지만... 팩토리 패턴과는 또 다른 매력으로 다가온다. 사실 빌더 패턴이 만들어진 이유는 정확히 뭔지는 모르지만 하나 확실한것은 간결함과 뚜렷함을 얻을 수 있다. 물론 간결함 같은 경우는 클래스가 굉장히 가벼우면 더 간결하다고 느낄 수 있지만 만 말이다. 아무튼 계속 설명하면.. 첫 번째 이유는 public class Test { private String name; private int age; private String content; private String subject; public Test(String name, int age..
프록시 패턴을 알기전에 프록시라는 단어를 알아야 할듯 싶다. 프록시는 대리라는 뜻을 가지고 있다. 그러면 뭔가 대신해주는 패턴이라는건데 무엇을 대신해준다는 걸까? 예를 들어, 복잡한 일이 있다고 가정하자. 또, 그 일은 혼자서 하기 힘들다고 가정하자. 그러면 그 일을 누군가가 대신해준다면... 일은 더 수월하게 끝낼 수 있을 지도 모른다. IT세상에서는 혼자서 처리하기 힘들다기 보다는 프록시라는 객체가 있기 때문에 더 수월하다는 느낌을 받는다. 즉, 프록시에 도움을 받는 그런 기분을 받는다. 프록시 패턴에는 총 3가지 종류의 패턴이 존재한다. 가상 프록시 패턴, 원격 프록시 패턴, 보호 프록시 패턴 여기서 우리가 알아볼 패턴은 가상 프록시 패턴이다. (물론, 원격이나 보호의 내용이 전혀 다르기 때문에 이..
이 패턴의 가장 큰 특징은 이름에서 부터 알 수 있듯이 싱글 + 톤으로 하나만 존재한다는걸 알 수 있다. 그런데... 프로그래밍상에서는 객체를 여러개 생성할 수 있다. new a, new a 이런식으로요. 근데 이러면 하나가 아니라 두개 이상이 되버리니까 싱글 톤이 아니겠죠? 뭐 당연한 말이겠지만... 사실 싱글톤이라는건 메모리상에 하나만 존재한다는 뜻입니다. 그러니까 객체를 생성하려고 시도하든 뭐하든 메모리상에 하나만 존재하면 싱글톤이라는 겁니다. 근데 문제는 메모리상에는 하나니까 만들어진 객체들은 서로 공유가 됩니다. 왜냐하면 같은 객체니까. 메모리상에 주소값도 똑같기 때문에 같은 객체라고 할 수 있습니다. 또, 이 패턴은 겉보기에는 굉장히 쉽군 할 수 있지만, 사실 까면 또 까보고 싶은 양파같은 매..