본문 바로가기



프로그래밍

[JAVA] Byte code를 통한 메모리 분석 자바강좌를 2회차로 다른분 것을 듣고 있는데, heap과 stack에 관한 내용을 설명해 주시는데 개념적으로 이해가 어려워서 바이트코드로 갈음한 부분을 분석해 보기로 했다. package java_memory_study; public class object_create_and_vars { public static void main(String[] args) { object_create_and_vars var1 = new object_create_and_vars (); object_create_and_vars var2 = new object_create_and_vars (); System.out.println("Heap Memory Address"); System.out.println(var1); Syst.. 더보기
[JAVA] for 문과 While의 성능차이 코드를 작성하다보니 for문과 while문의 성능차이가 궁금해져서 검색해봤는데. 아주 큰 프로젝트가 아니라면 그렇게 차이 있지는 않다는 답변이 많았고, 언어에 따라 컴파일러 의존적이라는 이야기가 많았으며, 특히 최적화 잘된 컴파일러라면 동일한 내용을 가지고 있다고 했다. C나 C++이라면, 디어셈블 해야겠지만 자바는 처음부터 내장된 javap 라는 프로그램을 이용해서 바이트 코드를 얻어 낼 수 있다. 먼저 자바에서 제공하는 기능을 이용해서 측정해보았는데 그 차이가 아주 근소했다. 실행시마다 매번 다른 결과를 보여주었다. 코드가 복잡하면 이해하기 어려우므로 간단한 코드를 새로 작성해서 바이트코드를 열어보기로 했다. 일단 이클립스에서 1부터 10까지 더하는 코드를 각각 for문과 while 문으로 작성해놓았.. 더보기
[JAVA] for 구문에서 i cannot be resolved to a variable 에러 for (int q=2 ; q 더보기
int (integer) 와 float 자료형은 어떻게 다른가? JAVA에서... int 타입과 float타입의 설명을 보면, 실수타입인 float가 정수타입인 int에 비해 더 큰 수를 저장할 수 있다고 설명되어있다. 언뜻보고 지나가면 그렇지 하고 지나갈 수 있는데. 한글의 어려움이 바로 이런 부분인듯 싶었다. 분명히 float가 int자료형보다 큰 범위 값을 저장할 수 있다고 하는데 왜 int형을 float형으로 변환하면 근사치(정밀도가 떨어짐)이 발생하는지 의문이 생겼다. 자료를 아무리 봐도 설명을 봐도 이해가 갈듯말듯 한상태에서 좀더 들어가 보았다. 일단 int 타입 과 float타입은 같은 4바이트를 쓰지만 float 그 4바이트를 부호 2비트 + 지수 8비트 + 가수 23비트로 쓰고 있다. 그러니까 가수23비트부분이 실제로 표현할 수 있는 부분이고 앞에 10비트는 아예 다른.. 더보기
[JAVA] Comparable Vs Comparator intreface Comparable { int compareTo (T o) } Comparable intreface : java.lang안에 존재함. Boolean 제외한 String, Date, File class가 오름차순 정렬됨. 지원되지않는 class의 instance를 TreeSet에 넣으면, exception error가 발생함 java.lang에 존재하는것이므로 따로 import 필요없음 interface Comparator { int compare (T o1, T o2); boolean equals (Object obj); } Comparator interface : java.util에 존재함. import java.util.Comparator; java.util을 임포트 해야 사용할 수.. 더보기
[ubuntu] 20.04 gnome tweaks desktop tab missing Gnome Tweaks -> extension Desktop icons option is here. 더보기
[JAVA] the selection cannot be launched and there are no recent launches 위의 메시지가 나왔을때 구글링해서 나온 해결책 luanch the associated project를 선택하면 해당 프로젝트 뿐만아니라. 현재 워크스페이스에 있는 프로젝트도 한번 스캔해서 실행점검(?)하는것 같습니다. 해당 옵션을 선택하고 실행하면, 이전에 작성한 코드들 중에 warning이 있는 파일들에 대한 안내가 나왔기 때문에 이렇게 추측합니다. 이 상태로 계속 Run 상태로 유지 되어버리고 자동으로 Run이 종료가 안되는경우에 해결하는 방법입니다 다른 프로젝트를 임시로 만든 다음, 동일한 이름의 클래스 파일을 생성해서 다시 원래 프로젝트 패키지 폴더에 그대로 복사합니다. * 소스를 복사하라는게 아니라 클래스 파일을 임시 프로젝트 안에 저장해서 복사합니다. 이제 실행해보면 원래대로 동작할것입니다. 더보기
[JAVA] Syntax error on token "Class", class expected 에러 class 를 작성하는데 위의 에러메시지가 나오면서 작성이 안되었다. 윈도우에서는 같은메시지가 메시지 박스 안쪽에 있어서 캐치가 어려웠다. 에러 상황은 다음과 같다. 윈도우용 이클립스에서는 Syntax error on token "Class", class expected만 표출되기 때문에 무슨소리지 했다. 메시지 박스를 확장하고 나서야 맨 밑에 줄에 해당 내용이 있는것을 확인 할 수 있었다. 우분투에 설치한 이클립스에서는 Class is a raw type. References to generic type Class should be parameterized라는메시지가하단상태바에 즉각 표시되어 알 수 있었다. 해당내용은 Generics에서 보통 다루게 되는데 등으로 사용할 수도 있으나 일반적으로는 라고 .. 더보기