JAVA: 282개의 글
[Java] SimpleCaptcha를 이용한 이미지 보안문자 생성하기 보안문자코드를 사용해야하는데, SimpleCaptcha를 주로 많이 사용하길래 한 번 써봤다. - 스펙 : 전자정부프레임워크 3.8, 자바1.8 1. SimpleCaptcha-1.2.1.jar 파일 다운로드 - 먼저 SimpleCaptcha 홈페이지에 들어가서 Java 버전에 맞는 버전을 다운받자. 참고로 SimpleCaptcha라이브러리를 이용한 CAPTCHA 샘플 프로그램은 JDK 1.6 기반이 가장 최신이라 SimpleCaptcha for Java 6을 다운받았다. 2. 다운로드받은 jar파일을 프로젝트에 추가해준다. 방법1. Spring MVC 프로젝트 구조의 WEB-INF의 lib에 위에서 다운받은 jar 파일을 추가해주었다..
[Java] POI 라이브러리 사용 : 엑셀 다운로드 로직 구현하기 - 의존성 추가 Spring Boot 경우 build.gradle에 Gradle dependency 추가 compile group: 'org.apache.poi', name: 'poi', version: '3.13' Spring 경우 pom.xml Maven dependency 추가 org.apache.poi poi 3.13-beta1 - Haenny 엑셀 다운로드 다음과 같은 두 개의 클래스로 엑셀 다운로드 로직을 구현하였다. 참고로 엑셀에 입력될 데이터는 EgovMap이 아닌 VO List 형태를 전제로 구현하였다. DownloadExcel.java import java.io.IOException; import java.net.URL..
[Java] 특정문자로 문자열 나누기 split 사용방법과 주의점 - 문자열 split("\\") 에러 "Unexpected internal error near index 1 \" 해결방법 먼저 split에 대해 살펴보자. java.lang.String.split() 문자열을 구분해서 사용하고 싶을 때 특정 구분자를 기준으로 나눠 배열에 담아 이용하는 방법이다. 문법 1. split(String regex) - 가장 일반적으로 사용하는 문법으로, 문자열을 구분할 때 사용하는 정규 표현식이 하나의 인수로 들어간다. 2. spilt(String regex, int limit) - 첫번째 인수는 위와 같고, 두번째 인수는 분류할 문자열의 수이다. (예를들어 분류할 문자가 5개인데 limit가 2이면 2개만 분..
[Java] StartsWith/EndWith : 문자열의 시작/끝 부분과 특정 문자열이 일치하는지 확인하기 String.StartsWith 메서드 - 문자열 인스턴스의 시작 부분과 지정한 문자열이 일치하는지를 확인한다. String str = "오늘은 날씨가 추워요, 따뜻하게 입어야해요"; String value1 = "오늘"; String value2 = "날씨"; boolean bool1 = str.StartsWith(value1);// true boolean bool2 = str.StartWith(value2);// false 매개변수(value) - String : 인스턴스의 시작 부분에 있는 부분 문자열과 비교할 문자열 반환 - Boolean : 인스턴스의 시작과 일치하면 true, 그러지 않..
Java는 C언어처럼 포인터가 없어 메모리의 주소와 해당 값을 함께 볼 수 없는 단점이 너무 너무 너무~ 크다 ! Java 문서나 많은 글을 읽어도 메모리의 구조가 어떻게 어떤 흐름으로 돌아가는 지 내가 알고 있는 이 답이 확실한가에 대한 의문도 많이 든다. StringBuffer의 append 메소드를 사용할 때, 어떤 식으로 값이 메모리에 할당되고 흘러가는 지 내가 이해한 바를 정리하고자 한다. StringBuffer sb = nes StringBuffer(); sb.append("a"); sb.append("b"); 단순 참조를 위한 문자열은 String 클래스, 연산이 많은 경우는 가변적으로 문자열을 저장하고 관리하는 StringBuffer 클래스를 사용한다. 위 코드와 같은 경우, 다음과 같은 ..
차이점 String 과 StringBuffer(StringBuilder), 두 클래스 모두 문자열을 담고 연산하는 것인데 차이가 뭐지? 성능이 어떻게 다르지? 궁금했던 분들에게 그 차이점을 스윽 정리해드리고자 한다! 아래 표를 보면 된다 ! String StringBuffer StringBuilder 문자열을 저장하고 관리하는 클래스 immutable (불변) mutable (가변) new 연산을 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다. 문자열 연산을 했을 때, 메모리 공간이 변하는 것이 아닌 새로운 String 객체를 만드는 것이다. 문자열 연산에 있어서 new로 객체 생성을 한번 한 후, 연산이 필요할 때 크기를 변경시켜 문자열을 변경한다 동기화(Synchronized)를 지원..
String 문자열 생성 방식 String str1 = new String("Hello"); String str2 = "Hello"; String str3 = "Hello"; 1. new 이용한 문자열 생성 2. 문자열 리터럴 생성 두 방식의 차이점 두 방식의 가장 큰 차이점은 메모리 영역에 있다. new 연산자를 통해 String을 생성하면 Heap 영역에 존재하게 되고, 리터럴을 이용할 경우 string constant pool이라는 영역에 존재하게 된다. (아래 그림 참고) 똑같은 "Hello" 문자열을 사용하는 데 변수 str2 와 str3은 같은 객체를 바라보지만 new String으로 생성한 str1은 다른 메모리 주소의 객체를 바라보는 것이다. 문자열을 비교해보면, String str1 = ..
Java 버전별 특징들을 찾아보면서 좋은 글이 있어 해당 글을 정리한 포스팅입니다. 따라서 잘못된 내용이 존재할 수 있습니다! 어떤 자바 버전을 사용해야 할까? 최신 Java 버전은 이제 6개월마다 따른다. 수많은 새로운 버전이 출시됨에 따라 기본적으로 다음과 같은 사용 시나리오가 존재 기업의 기존 프로젝트에서는 Java 8을 사용해야 하는 경우가 많음 일부 레거시 프로젝트는 Java 1.5(2004년 출시) 또는 1.6(2006년 출시)에서 중단되기도 함 최신 IDE, 프레임워크 및 빌드 도구를 사용하고 그린 필드 프로젝트를 시작하는 경우 Java 11(LTS) 또는 최신 Java 17 LTS를 망설임 없이 사용할 수 있다. 안드로이드 개발의 특별한 분야가 있는데, 자바 버전은 기본적으로 자바 7에 고..
Google 이란 이름은 무한 신뢰하게 됩니다. Guava 는 그러한 Google 에서 만든 오픈소스 라이브러리입니다. (과일을 이야기 하는 것이 아닙니다.) 가독성 있는 코드를 작성하기 위한 많은 유틸 클래스를 제공합니다. 이하 Guava 를 이용한 간단한 샘플 코드입니다. 추후 계속 업데이트할 예정입니다. 이하 Guava 를 이용한 간단한 샘플 코드입니다. 추후 계속 업데이트할 예정입니다. Test Guava Version com.google.guava guava 12.0.1 1.문자열 length 기준으로 split 하기 String fruits = "사과딸기레몬포도"; Iterable split = Splitter.fixedLength(2).split(fruits); //2자 단위로 split I..
추상 클래스내 함수 구현 처럼 Interface 클래스 내에 함수를 선언 및 구현할 수 있도록 한다. Interface 구현 클래스에서 Override 할 수 있다. 왜? 나왔을까? "하위 호환성" 때문에 등장 인터페이스에 신규 함수 선언시 기존에 상속받아 구현하던 클래스에 모두 빨간불이 들어와 직접 구현을해야하는 상황을 방지하기 위해 등장함. 간단 코드로 보기 public class DefaultClass{ public interface TestInterface { // 선언 후 구현까지 해야한다. default void defaultFunction(){ System.out.println("this is default function"); } } private static class SubClass11..