본문 바로가기



프로그래밍/JAVA

[JAVA] 6코어 이상의 CPU를 사용하면 예제와 다른 결과(순서)가 나올 수 있습니다. AMD 계열 시피유가 코어수가 데스크탑의 경우에는 일반용이 12~16코어에 이르고, 노트북의 경우에도 최대 8코어를 달성하고 있습니다. 인텔의 경우에도 데스크탑 i5는 6코어 12스레드, 노트북 H 고전력 라인업은 6코어 넘어갑니다. 문제는 이런 다중코어의 멀티스레드 때문에 기존 자바 프로그래밍에서 예시로 쓰는 코드들을 그대로 쓰면, 전혀 다른 순서로 결과가 계속 나옵니다. 초보자들은 돌릴때마다 동떨어진 순서 결과에 상당히 난감할 수 밖에 없습니다. 왜 이렇게되지? 자바의 경우 멀티스레드를 애초에 지원하기 때문에, 코어가 너무 많을 경우 영향받는 subclass api가 상당히 많습니다. 그래서 코드를 작동시킬때마다 책이나 강의에 나오는것과 다르게 처리속도가 들쑥날쑥하거나 전혀 다른 결과를 나타낼때가 있.. 더보기
[JAVA] The method print(ArrayList, ArrayList) is undefined for the type 메소드가 샐행 메소드의 내부에 포함되어 일어난 에러였다. 실행메소드 부분을 } 제대로 정리해주니 에러가 사라지고 정상 동작함. 더보기
[JAVA] eclipse 재단 서버 문제로 정상적인 서비스가 되지않음 이클립스 재단 서버가 문제가 발생해서 어제저녁(일요일)부터 정상적인 서비스가 되지 않고, Access Forbidden등의 메시지를 내고있음. 재단측에 따르면 해당 이슈는 해결하였으나 백엔드의 스토리지 싱크 관련으로 13시간정도 소요된다고 밝히고 있습니다. 다운로드등의 전체 서비스는 오늘 오후나 내일 새벽즈음 되어야 정상화 될것으로 보입니다. 더보기
[JAVA] String class indexOf를 이용한 알파벳순서찾기 string class에 여러가지 생성자와 메서드가 들어있는데 그중 indexOf를 사용해보도록 하자. 가장 생각해내기 쉬운게 영어 알파벳에서 몇번째인지 알아내는 것일것이다. 코드를 다음과 같이 작성한다. import java.util.Scanner; public class whichismyInputNextInt { public static void main(String[] args) { String abc = "abcdefghijklmnopqrstuwvxyz"; Scanner sc= new Scanner(System.in); System.out.println("순서를 찾을 알파벳을 입력하십시오"); String scinput= sc.nextLine(); char c = scinput.charAt(0);.. 더보기
[JAVA] static 변수에 관한 의문점 자바를 공부하다가 문득 static변수에 대해 의문이 생기기 시작했다. static인데 이걸 다른 클래스에서 접근해서 바꿀 수 있다는 것부터가 마음에 안들었다. 사실 못바꾸게 할려면 final로 선언하면되는문제인데. 왜 굳이 다른 클래스에서 해당 클래스의 static을 바꿀 수 있는 건지 이해가 되질 않는다. 그리고 드는 근본적인 의문 static은 일종의 "전역변수"에 해당하는데, 프로그래밍에 있어서 전역 변수는 함부로 사용하면 안된다는 무언의 철학이 공공연히 떠돈다. 이것은 fail-safe산업에서 특히 강조되는 부분이기도 한데. 자바에서는 static을 사용해도 특별한 코드 추가 없이 바로 다른 클래스에서 참조 클래스로 호출해서 변경 가능하다는게 충격적이였다. 실제 생성객체이름.클래스 변수 이름 해.. 더보기
[JAVA] 배열 array의 특성에 대하여 자바에서 array (뱨열)의 특성이 몇가지 있는데 그중 한가지가 배열은 생성하면 고정된 값이라는것이다. 배열 값을 수정하려고 외부에서 값을 변경시도하면 다음과 같은 메시지가 나온다. 이 메시지가 모든것을 함축하고 있는데 final field로 선언된 array.length는 바꿀 수 없다는 것이다. 즉, array를 선언해버리면 그 길이 값은 final로 처리해버린다는것이다. 이럴경우에는 배열을 필요한 길이 만큼 새로 생성한 다음 복사해서 배열을 채우는 방법과 ArrayList를 이용하여 애초에 길이를 변경할 수 있게하는 두가지 선택지가 크게 있다고 할 수 있겠다. 더보기
[Java] 반환값 return을 사용하는 경우와 안하는 경우 차이 return 문은 메서드를 호출하면 return문이 코드에 직접적으로 작성되어 있지 않을 경우 컴파일러가 추가하는데, 실제 구현코드는 동일하게는 작성할 수 없으므로, 기능적으로는 같은 동작이나, 처리방식이 약간 다르다. public class returnvalue { int add (int a, int b) { return a+b; } } public class returnvalue2 { int add(int a, int b) { int sum_result = a+b; return sum_result; } } 맨아래 코드는 return 문을 활용한 예시이고, 맨위의 코드는 return문 없이 바로 계산값을 return하게 한 코드이다. 실제 바이트 코드를 들여다보면 동작이 약간 다르다. 계산값을 바로 r.. 더보기
[JAVA] 자바의 변수 선언 특이성 static이 있고 없고 차이 static 으로선언된 변수는 클래스 변수라고 이해하면 쉽다. 클래스 자체는 객체지향의 기본적인 개념에서 많이 다루듯이 설계도 같은것인데, 코드상에서는 static으로 구현되는 변수가 된다. USB메모리를 생산한다고 치면, static 변수로 만들어야 하는것은 크기관련 속성이 될 수 있을것이다. 이를 코드로 구현하면 아래와 같다. static USB_memory width = 500 ; static USB_memory height = 100 ; 그리고 다른 인스턴스는 모델마다 다르게 부여되는 속성을 지정하면 된다. 여기서는 최대 쓰기속도를 모델마다 다르게 만든다고 하고, 이를 코드로 구현하면 다음과 같다. int preformance_Max_Write = 200; int designer_Max_Write.. 더보기