본문 바로가기

개발/자바63

스프링 시큐리티) IDE에서 자동 재시작으로 인해 세션 끊기는 현상 해결 application.properties 설정 수정spring.devtools.restart.enabled=false 2024. 10. 10.
자바 8) Stream.of vs Arrays.stream 차이점 (예제 - 배열 더하기) Stream.of 과 Arrays.stream 모두 배열, 컬렉션의 수 만큼 반복 수행하여 어떠한 작업을 수행시킬 때 사용한다. 하지만 약간의 차이점이 존재한다. 내가 찾은 바로는 Primitive type 을 처리할 때 차이가 발생했다. 예를들어 int [] 처리할 때 배열 내 모든 값을 더하는 예제 int[] strArrNum = {1,2,3,4}; sum1 = Arrays.stream(strArrNum).reduce(0,(s, s2) -> s + s2); // 10 //sum2 = Stream.of(strArrNum).reduce(0,(s, s2) -> s + s2); // 에러 주석문에서 에러가 발생한다 - 나는 int[] 배열 을 넘겼는데 Stream.of의 정의를 보게 되면 결국 클래스 형식을.. 2023. 2. 7.
자바 ) Generic (제네릭) 이해하기 Generic(제네릭) 이란? 데이터 형식에 의존하지 않고 여러 데이터 타입을 사용할 수 있도록 함. 장점 중복 코드를 제거하여 재사용성을 높임. 제네릭 타입으로 선언된 클래스에서 타입 별로 생성자 및 getter, setter를 만들 필요가 없음 (재사용성 증가) 1. 클래스에서 사용 MyGeneric 클래스 생성 class MyGeneric { T val; public MyGeneric(T val) { this.val = val; } public T getVal() { return val; } public void setVal(T val) { this.val = val; } } MyGeneric string11 = new MyGeneric("11"); //String MyGeneric int11 = .. 2023. 2. 6.
자바 ) requireNonNull (Feat. Optional) requireNonNull Objects.requireNonNull(변수, "메시지"); 해당 변수가 null일 경우에 즉각적으로 NPE가 발생한다. 보통 Fast-fail를 위해 사용한다 (장애 발생 시점을 즉시 파악하기 위함) - > 디버깅 용이 A객체, B객체가 존재한다. 만약 B객체의 생성자 파라미터로 A객체 타입을 선언 String aaa = null; System.out.println(Objects.requireNonNull( aaa, "what")); 함수 내부 public static T requireNonNull(T obj, String message) { if (obj == null) throw new NullPointerException(message); return obj; } 함수.. 2023. 2. 5.
자바 ) List의 내용을 대문자로 변경 후 List로 저장(feat. Stream) List의 내용을 대문자로 변경 후 List로 저장(feat. Stream) 사용할 람다 함수 stream map collect ## 아래 주석과 같이 (이중콜론)을 이용하여 사용 가능 ## List names = Arrays.asList("Sehoon", "Songwoo", "Chan", "Youngsuk", "Dajung"); List names1 = names.stream() .map(name -> name.toUpperCase()).collect(Collectors.toList()); //.map(String::toUpperCase).collect(Collectors.toList()); System.out.println(names); //[Sehoon, Songwoo, Chan, Youngsuk,.. 2023. 2. 4.
enum 타입의 정적 리소스.class 파일 배열 만들기 (일반식, Stream) 코드 리뷰 (Main) 1. enum타입.values() StaticResourceLocation 은 enum 타입이고 values 함수는 enum 클래스가 갖는 모든 상수 값을 배열의 형태로 리턴 (메소드는 X, 오로지 상수만) 2. Stream.of 배열을 스트림화 3. flatMap () 배열을 1차원으로 평면화 시킴 4. toArray(String[]::new) 스트링 배열화 시키기 import java.util.Arrays; import java.util.stream.Stream; class Main { public enum StaticResourceLocation { CSS("/css/**"), JAVA_SCRIPT("/js/**"), IMAGES("/images/**"), WEB_JARS(".. 2023. 2. 3.
자바8) 두 배열에서 중복 값 제거 (feat. Stream.of) 두 배열을 합쳐 1차원으로 생성(flatmap) 후 중복제거(distinct) 하고 배열로 반환(toArray) String[] test1 = {"Sehoon", "Songwoo", "Chan", "Chan", "Dajung"}; String[] test2 = {"Sehoon", "Sehoon", "Chan", "Dajung", "Dajung"}; String[] aa = Stream.of(test1,test2) .flatMap(x -> Arrays.stream(x)) .distinct() .toArray(String[]::new); for (String s : aa) { System.out.println(s); } 2023. 2. 1.
Rest API 연동 시 Http 상태 코드 400 발생 시 HttpURLConnection 클래스 사용 시에 파라미터 값에 한글이 있어서 발생하는 문제 임으로 아래와 같이 Charset을 "utf-8" 로 지정 후 사용 BufferedWriter bw = new BufferedWriter (new OutputStreamWriter(conn.getOutputStream(), "utf-8")); bw.write(xxxxxxxxx); bw.flush(); bw.close(); BufferedReader br = new BufferedReader (new InputStreamReader(conn.getInputStream(), "utf-8")); 2022. 11. 16.
자바) [Ljava.lang.String; cannot be cast to class java.lang.String getParameterMap()으로 Map으로 파라미터를 전달 받았는데 해당과 같은 에러가 발생하였음. 이유는 아직 정확히 모르겠으나 앞에 L 이라는 문자가 붙은 것으로 보아 배열 형식으로 전달된 것으로 추측 가능하여 String[] 배열 타입으로 형 변환 후 [0] 0번째 배열의 값을 뽑아왔음 unlockedReqMap.put(key, ((String[])reqMap.get(key))[0]); 2022. 8. 8.
java8 ) Stream (in 컬렉션 프레임 워크) Stream 1.8이후부터 추가된 컬렉션 프레임워크 Stream의 특징 컬렉션의 수 만큼 반복 수행하여 어떠한 작업을 수행시킬 수 있음 쉽게말해 Set, Map, List 엘리먼트값 추출 시 for문을 여러번 사용하는 불편함을 없애기 위한 개념이라고 이해할 것 우선 몇가지만 살펴보자 Stream을 사용하면 반환 값도 Stream이기 때문에 List로 바꿔주면 좋음 .collect(Collectors.toList()); collect 함수 내 앞의 원소와 특정 작업을 할 때 사용 (reduce와 비슷) List names = Arrays.asList("Sehoon", "Songwoo", "Chan", "Youngsuk", "Dajung"); System.out.println(names.stream() .m.. 2022. 8. 6.
Java ) 인터페이스를 객체로 만들기 인터페이스를 객체로 만들기 1. Return Type이 void 일 경우 인터페이스 선언 예시는 추상 메소드가 하나 존재하는 클래스 (함수형 인터페이스, @FunctionalInterface) @FunctionalInterface public interface AnimalSound { public void sound(); } 예시 a) 선언과 동시에 구현 필요 AnimalSound as = new AnimalSound() { @Override public void sound() { System.out.println("추상메소드 바로 구현"); } }; as.sound(); 예시 b) 람다식으로 표현 = new 객체 생성 부분을 () -> { } 과 같이 람다식으로 표현 AnimalSound as1 = (.. 2022. 8. 4.
Java ) 함수형 인터페이스(FunctionalInterface) 함수형 인터페이스 (@FunctionalInterface) 구현할 추상 메소드가 하나만 존재하는 인터페이스 함수형 인터페이스는 어노테이션이 붙음 (@FunctionalInterface) 예시 ) IntFunction int 값을 매개변수로 전달받아 결과 값을 Generic 설정한 타입으로 반환하는 메소드를 정의 IntFunction 변수명 = 추상 메소드 구현 람다식을 이용한 String Generic 타입 반환 예제 int 를 String 으로 벼환 50을 전달하여 100+50 연산 후 String 으로 변환 apply( ) IntFunction r = (a) -> a + 100 + ""; String data = r.apply(50); System.out.println(data); 람다식을 이용한 A.. 2022. 8. 3.
Java ) Lambda(람다) 람다식 (Lambda) 자바스크립트에서 처럼 '이름없는 함수', '화살표 함수(arrow function)'를 사용할 수 있는데 이것을 자바에서 람다식이라고 표현 구현할 추상 메소드가 하나만 존재하는 인터페이스만 적용 가능함 (함수형 인터페이스 - ex: Runnable 인터페이스) = new 객체 생성 부분을 () -> { } 과 같이 람다식으로 표현 가능 람다식 미적용 new를 이용하여 Runnable() 구현 new Thread(new Runnable() { public void run() { for(int i=1; i { } 람다식을 이용하여 Runnable() 구현 new Thread(()->{ for(int i=1; i 2022. 8. 2.
(Java) 초기화 블록 ( static {} 등 ) 클래스 초기화 블럭 static { } 클래스 변수의 복잡한 초기화에 사용된다. 클래스가 처음 로딩될 때 한번만 수행. class xxxx{ static { ..... ..... } } 인스턴스 초기화 블록 생성자 보다 먼저 수행된다. 인스턴스 변수의 복잡한 초기화에 사용된다. 인스턴스가 생성될때 마다 수행된다. 단순 중괄호로 묶어서 선언 가능 { .... } class xxxx{ { ..... ..... } } 2022. 6. 12.
(Java) 이클립스에서 스프링 플러그인 설치 이클립스에서 스프링 플러그인 설치 1. Help - Eclipse Marketplace - Spring 검색하여 설치 2. 프로젝트 생성 시 아래와 같이 Spring이 있으면 성공 2022. 6. 4.
반응형