Java: 2차원 배열

2차원 배열 2차원 배열은 일반적으로 알고있는 배열을 여러 개 덧붙인 형태라고 보면 될 것 같네요. 2차원 배열에서는 length 를 어떻게 써야할 지 헷갈릴 수 있는데 2차원 배열의 행과 열 크기가 똑같을 경우 array.length를 사용해도 상관없습니다. 다만 각 행마다 열의 크기가 제각각 다를때가 문제인데 행과 열의 크기가 다른 경우 array.length는 행의 개수를 반환하며 array[row].length는 특정 행의 더보기…

Java 예제: 한글 초성 중성 종성 분리 (자모분리)

  유니코드의 특성을 이용해 자모분리합니다. 예를 들면 ‘간’이라는 글자를 ㄱ, ㅏ, ㄴ 으로 분리하는 예제입니다. 유니코드 한글은 0xAC00 으로부터 초성 19개, 중상21개, 종성28개로 이루어지고 이들을 조합한 11,172개의 문자를 갖는다. 한글코드의 값 = ((초성 * 21) + 중성) * 28 + 종성 + 0xAC00 (0xAC00은 ‘ㄱ'의 코드값) 따라서 다음과 같은 계산 더보기…

Spring: 데이터베이스 연동(Oracle-JDBC 기준), Spring JDBC

XML 선언 이 부분은 데이터베이스의 종류, 사용하는 플랫폼에 따라 달라지므로 사용 환경에 맞는지 확인해봐야 합니다. Spring Boot의 마리아DB(mariadb)기준은 이 글을 참고해주세요. 이 부분은 properties 태그와 dependencies 태그 사이에 추가합니다. <repositories> <repository> <id>oracle</id> <url>http://maven.jahia.org/maven2</url> </repository> </repositories> 이 부분은 dependencies 태그 쌍 내에 추가합니다.   <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>12.1.0.2</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> 더보기…

Spring: 스프링의 어노테이션(Annotations) 사용법

스프링(Spring)에서 어노테이션은 @[어노테이션이름] 이라는 형식으로 특정 클래스, 메소드, 변수의 맨 위에 붙여 쓰며 일반적으로 해당 구역의 기능을 확장하는 역할을 합니다. @Component: Bean을 생성하며(클래스의 인스턴스화), 클래스 코드 바로 위에 붙여 사용합니다. 멤버 필드 내 값은 지정되지 않습니다. 사용 시 클래스 이름의 앞 글자만 소문자만 바꾸고 사용합니다. 예를 들어 VO 클래스의 이름이 더보기…

넥사크로(Nexacro): 데이터베이스에 읽고 쓰기 및 기타

Deploy 수행 Build > Deploy… > Deploy Application >  을 클릭한 다음 경로는 이클립스 동적 웹 프로젝트 폴더의 WebContents 폴더로 설정합니다. 프로젝트에 폼 설정 childframe으로 이동 후 Appearance의 formurl에서 설정합니다. 폼 간 이동 this.toFrmTest_onclick = function(obj:Button, e:nexacro.ClickEventInfo) { this.go(“Base::FrmPortal.xfdl”); } Base 폴더 밑의 FrmPortal.xfdl 파일명의 폼으로 이동합니다. 전역 변수 사용  alert(application.[전역 더보기…

자바 Swing: for문으로 만든 컴포넌트에 접근 + 예제: 틱택토(Tic Tac Toe)

이전 글: Java Swing 예제: 다차원 배열 표시하기 (기초 설정 방법, for문으로 swing 요소 반복 등) for문으로 생성한 컴포넌트에 대한 접근 방법은 다음과 같습니다. 1. 컴포넌트들의 배열을 뽑아 인덱스 번호로 접근하는 방법 JPanel nineRoom = new JPanel(); (…) for(int i = 0; i < 9; i++) { JButton tempButton = new 더보기…

Java 예제: 배열 회전

배열을 회전하여 아래 그림과 같이 나타는 예제입니다. 행렬의 번호가 [1, 1] ~ [5, 5]라고 할 경우, 행과 열의 위치가 바뀌는 것을 [a, b] → [b, a] 로 나타냅니다. 아래 그림처럼 바꾸려면 바뀐 열의 번호는 6 – a 가 되야 하므로 [a, b] → [b, (6-a)] 의 형태로 바꾸는 알고리즘이 필요합니다. PrintArray는 Java Swing 예제: 다차원 더보기…

JSP, Spring: URL을 입력하면 파일이 바로 다운로드되게 하기

주소를 입력하고 엔터를 치면 바로 다운로드가 진행되는 컨트롤러 예제입니다. 만들어진 주소창에 입력해도 되고 자바스크립트의 location.href = 주소 를 사용할 수도 있습니다. This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals 더보기…

Java 예제: URL로부터 파일 다운로드(ReadableByteChannel 이용)

웹브라우저를 통하지 않고 자바 자체에서 파일 다운로드를 하는 예제입니다. Channels는 유틸리티 메소드로 Channel과 Stream에 필요한 작업들을 제공합니다. new Channel(InputStream in)은 인풋스트림(InputStream)을 새로운 ReadableByteChannel(채널)로 만들어주는데, Channel이란 하드웨어 장치, 파일, 네트워크 소켓 또는 하나 이상의 고유 한 I/O 작업을 수행 할 수 있는 프로그램 구성 요소와 같은 엔터티에 대한 열린 연결을 나타내는 것이라고 합니다. 더보기…

Java: 주소에 의한 참조(Call-by-reference)

주소에 의한 참조는 무슨 말일까요? 메모리에 어떤 값을 저장했다면 그 값이 담긴 방(room)과 그 방을 가리키는 주소가 있습니다. Call-by-reference는 주소를 참조(reference)해서 값들을 조작합니다. 메소드 간 통신(값이나 주소를 주고받는 행위)을 한다고 할 때 주소만 넘겨서 서로 주소를 공유하고 값들을 공유해서 조작하는 방법을 뜻합니다. C 언어에서 다루는 포인터(Pointer)에서 연장된 개념이라고 볼 수 더보기…