본문 바로가기

java

Robocode 마스터의 비밀: Robocode 전략 출처 : http://www.ibm.com/developerworks/kr/library/j-tipstrats.html Gladiatorial League의 기원에 대해 알아보고, 다양한 움직임 전략 레벨, 슈팅, 정보 모으기 등을 설명합니다. 본 자료는 2002년 5월 IBM developerWorks journal에 실린 기술자료, "Cloak and turret: Learn secrets from the Robocode masters"의 내용입니다. Gladiatorial League 필자가 Robocode를 알게 되었을 때, 어떤 로봇이 가장 으뜸인지를 가려내는 공식적인 대회는 없었다. 그나마 존재했던 토너먼트도 새로운 버전의 로봇들이 속출하면서 바로 구식이 되어버렸다. 필자가 로봇을 개발하는 동..
Robocode 마스터의 비밀: 상대편의 움직임 추적하기 출처 : http://www.ibm.com/developerworks/kr/library/j-movement/index.html 타겟팅(targeting) 알고리즘에는 한계가 있습니다. 예견하기 어려운 움직임 패턴이 언제나 있기 때문입니다. 자신의 로봇이 상대편에 맞게 최상의 움직임 알고리즘을 선택하도록 하는 방법을 설명합니다. 이 글에서는 과거의 성능의 기반으로 움직임 상태를 선택하는 기술을 설명한다. 가능한 간략한 예제가 될 수 있도록, 본 예제에서는 장기적인 데이터의 영속성은 무시하기로 했다. 이 글에서는 코드에 대한 개요만 제공한다. 클래스나 메소드에 대한 상세한 설명이 필요하다면 소스 코드 문서를 참조하라. 전체 소스 코드는 참고자료 섹션을 참조하기 바란다. 수학 유틸리티 클래스 일반적으로, 로..
Robocode 마스터의 비밀: 로보코드 마스터들이 주는 힌트, 팁, 조언 출처 : http://www.ibm.com/developerworks/kr/library/j-robotips/index.html 로보코드 전문가들이 자신들이 로봇 전투에서의 성공의 비밀을 나눕니다. Factored wall avoidance (한글) 코너에 갇히거나 원하는 이동 방향에서 너무 많이 벗어나지 않으면서, 로봇과 벽 사이의 간격을 유지하는 알고리즘을 만드는 것은 어려운 일입니다. 이에 대한 한 가지 간단한 솔루션으로, factored wall avoidance가 있습니다. 이 글에서, David McCoy가 이 기술을 구현하는 방법을 설명합니다. 반 중력 움직임 (한글) 반 중력 움직임(Anti-gravity movement)은, 여러 가지 변형된 형태들 중에, 대부분의 로보코더(Robocod..
Robocode 마스터의 비밀: Factored wall avoidance 출처 : http://www.ibm.com/developerworks/kr/library/j-fwa/index.html 코너에 갇히거나 원하는 이동 방향에서 너무 많이 벗어나지 않으면서, 로봇과 벽 사이의 간격을 유지하는 알고리즘은 간단히 만들 수 없는 것 같습니다. 한 가지 간단한 솔루션으로, Factored wall avoidance가 있습니다. 이 글에서, David McCoy가 이를 구현하는 방법을 설명합니다. With a few additions to the bot we built in "상대편의 움직임 추적하기"에서 구현했던 로봇에 몇 가지를 더 추가하여, 기존의 움직임 알고리즘 또는 문제가 많은 움직임 알고리즘에 Factored Wall Avoidance를 추가할 수 있다. Factored ..
Real-time Java, Part 2: 컴파일 기술 비교 Real-time Java, Part 2: 컴파일 기술 비교 Real-time Java ™ 시리즈, 두 번째 글에서는 자바 언어의 네이티브 컴파일과 관련한 문제점들을 설명합니다. 동적 (Just-in-time) 또는 정적 (Ahead-of-time) 컴파일 단독으로는 모든 자바 애플리케이션들의 요구 사항들을 맞출 수 없습니다. 필자는 다양한 실행 환경에서 이 두 개의 컴파일 기술들을 비교하고 서로 어떻게 보완되는지를 설명합니다. 자바 애플리케이션 성능 문제는 개발 커뮤니티에서 가끔씩 뜨거운 논쟁을 불러 일으킨다. 이 언어는 애플리케이션 이식성(portability)이라는 중요한 목표를 지원하도록 인터프리팅 되었기 때문에 초기 자바 런타임은 C와 C++ 같은 컴파일 된 언어 보다 훨씬 낮은 성능 레벨을 제..
Real-time Java, Part 1: 실시간 시스템에 자바 사용하기 Real-time Java, Part 1: 실시간 시스템에 자바 사용하기 Real-time Java™ 시리즈 첫 번째 기술자료에서는, 자바를 사용하여 실시간 성능 요구 사항들에 부합하는 시스템을 개발하는 주요 문제점들을 다룹니다. 실시간 애플리케이션 개발이 의미하는 바가 무엇인지, 실시간 애플리케이션의 요구 사항을 맞추기 위해 런타임 시스템들이 어떻게 다루어져야 하는지를 설명합니다. 필자는 표준 기반 기술들을 결합하여 실시간 자바의 문제점들을 해결하는 방법을 여러분에게 소개합니다. 실시간 시스템에서 자바는 여러 가지 이유로 인해 보급되지 못했다. 여기에는 동적 클래스 로딩 같은 본질적인 자바 언어의 디자인에 내재한 성능 문제, 가비지 컬렉터와 네이티브 코드 컴파일 같은 Java Runtime Enviro..
정적 변수를 선언하는 방법 출처 DefineJava 정적 변수를 선언하는 방법 static을 이용하여 정적 변수를 선언할 떄 대부분 어떻게 사용하는가? public class StaticTest { private static int SIZE= 10; private static int[] myStatic = new int[SIZE]; } 대부분 이렇게 사용할 것이다. myStatic이라는 배열을 만들었다. 그렇다면 이 myStatic에 값을 할 당할때 어떻게들 사용하는가? myStatic은 배열이다. 배열에 값을 할당 할때 과연 어떻게 할 수 있을까?(반복문을 이용하는 방법중) 생성자를 만드는 방법도 있을것이고 메인메소드나 기타메소드에서 값을 할당 받는경우도 있다. 가장 쉽게 생각한 방법이 다음과 같은 두가지 방법일 것이다. ex1..
자바의 접근제한자(한정자) 출처 : www.DefineJava.net Public 같은 클래스, 하위클래스, 또는 같은 패키지 내에 있는 어떤 클래스에서도 접근할 수 있습니다. 이 접근 권한은 클래스 또는 객체의 외부 인터페이스를 제공해 줄 때 주로 사용합니다. Private 같은 클래스 내에서만 접근가능 합니다. 다시 말해서, 이 접근 권한으로 지정된 변수 또는 메소드를 다른 객체에서 참조하거나 사용하는 것이 불가능하고, 자신의 클래스 내에 있는 메소드에서만 참조하거나 사용할 수 있습니다. 클래스가 제공하는 기능을 내부적으로 구현할 때 주로 사용하고, 이렇게 함으로써 완벽한 정보은닉이 가능합니다. Protected 자바에서 정의된 클래스들은 기본적으로 하나의 그룹 단위 또는 묶음단위로써 유지되는데, 이를 패키지라 합니다. 다시 ..
생성자 출처 : www.DefineJava.net 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자 역시 매서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지는 않고, 단지 아무 것도 적지 않는다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 클래스이름(타입 변수명, 타입 변수명, ... ) { 인스턴스 생성 시 수행될 코드, 주로 인스턴스멤버의 초기화 코드를 적는다. } Ex class Card { Card() { //..
java.lang.Object 출처 : www.DefineJava.net Object 클래스 java.lang 클래스 Object java.lang.Object public class Object Object 클래스는 클래스 계층 루트입니다. 모든 클래스는 슈퍼 클래스로서 Object 를 가집니다. 배열을 포함한 모든 오브젝트는 이 클래스의 메소드를 구현합니다. 도입된 버젼: JDK1. 0 생성자의 개요 Object () 아무것도 하지 않음. 메소드의 개요 protected Object clone () 이 오브젝트의 카피를 작성해 돌려줍니다. boolean equals (Object obj) 이 오브젝트와 다른 오브젝트가 동일한지 어떤지를 나타냅니다. protected Object finalize () 이 오브젝트에의 참조는 이제 없..
Strategy Pattern #2 출처 : www.DefineJava.net 스트래티지 패턴 두번째 시간이다. 우선 저번에 필자가 냈던 문제를 생각해보자~ 1. 개발자는 로봇 게임을 제작중이다. 2. 게임을 더 재밋게 하기 위하여 개발자는 특수기능을 넣을려고 한다. 3. 현재는 특수기능이 "날 수 있는 기능" 밖에 없지만 이후에는 여러가지 기능이 추가 될 수도 있다. 해결방법으로 생각했던 상속을 사용하게 되면 현재 날아다니는 기능은 구현이 가능하나 나중에 특수기능이 더 많이 추가 된다면 문제가 발생한다. 그리고 또 오버라이딩을 한다면 로봇 수가 늘어 나게 될 때 개발자는 죽도록 노가다 코딩을 해야 될 것 이다. 이제 조금 더 쉽게 이 문제를 해결할 수 있는 방법을 생각 해 보자. 필자는 이 문제의 해답은 인터페이스를 잘 사용하므로써 해결..
[Day-2] 처음으로 생성한 나만의 로보코드 출처 URL : http://www.ibm.com/developerworks/kr/library/j-robocode/ 로보코드에 대한 설명이 더 필요할것같아서 자료를 좀더 스크랩해봅니다. 그리고 오늘은... 월요일이라서 엄청나게 졸립습니다!!! ㅋ 일단은 Java를 못하더라도 정독을 해보세요... 번역을 해놓은것이라서 이해가 어려울수도 있습니다. 번역을 통번역을 한건지..아니면 프로그래밍을 모르는 사람이 해놓은것인지...제가 영어실력이 되면 로보코드 포럼가서 자료좀 퍼와보겠습니다.아마도 그때쯤 되면 [Day-100] 정도 되지 않을까요? 총알을 피하고 정확한 공격 작전을 수행하면서 상속, 다형성, 이벤트 처리 및 내부 클래스를 배우는 것이 가능할까? 중독적인 게임광 대상 교육 툴인 Robocode가 전 ..
Spring Framework 출처 : www.DefineJava.net Spring Framework Spring Framework는 2002년에 발간된 Rod Johnson의 저서 "Expert One-on-One J2EE Design and Development"에서 소개된 소스코드와 디자인 패턴들을 다시 정리하면서 2003년 초에 오픈소스로 시작된 프로젝트이다. 스프링의 목적은 J2EE 기반의 Web Applicaion을 쉽게 제작하는 것을 목적으로 하고 있으면서 J2EE 서비스에 종속되지 않고 계층화, 모듈화가 잘 되어 있는 유연한 프레임워크이다. 스프링은 각종 Bean의 생성 하고 관리를 하는 Light Weight 컨테이너로써 다른 프레임워크와 결합에 매우 중요한 역활을 한다. Core 패키지는 프레임워크의 가장 기본적인..
PreparedStatement와 Statement 출처 : http://www.DefineJava.net PreparedStatement와 Statement JDBC를 사용한다면 PreparedStatement(이하 pstmt)와 Statement(stmt)를 사용하게 될것이다. 과연 이둘의 차이점은 무엇일까? 필자도 JDBC쪽을 처음 공부할 때 도대체 "째 둘은 이름은 비슷하고 하는일도 비슷한데 왜 나누어져 있을까?" 이런 의문이 들었었다. 우선 두 객체를 사용하여 Result를 가져오는 방법이다. 소스보기 Connection conn = getConnection(); String query = null; String userId = "admin"; query = "SELECT * FROM USER WHERE USERID=?"; PreparedStat..
Java 소스 파일 분석 처음에 Java를 공부할때 친구랑 둘이서 Study Group를 할때입니다. "Hello World"
[JAVA] 자바 입문 스크랩 출처 URL : http://www.ibm.com/developerworks/kr/java/newto/ Define You : 대학 1학년때 처음 자바를 접하면서 큰 그림을 그려주는 사람은 단 한명도 없었습니다. 프로그래밍에 대해 아무것도 모르는 저는, 그저 JAVA관련 SUN사의 자격증 로드맵을 보면서 그게 큰 그림이라고 생각하였습니다. SUN사에서도 JAVA기술을 관련하여, 첫입문자가 크게 로드맵을 그릴수 있는 페이지는 없었던것같습니다.(아님 제가 못봤거나요~영어가 짧아서...ㅡㅡ;;) IBM에서 Developerworks를 맡은 이상 다 긁어와 볼 생각입니다...물론 거기에 저의 생각도 조금씩 들어갈것같습니다. 어떤 분야를 주로 스크랩할지는 모르겠습니다. 한우물만 파야하는건데 이것저것 관심이..