728x90
[Java] 자바 웹 프로그래밍 Next Step 3장 index.html 응답하기 요구사항 1단계 http://localhost:8080/index.html로 접속했을 때, webapp 디렉토리의 index.html 파일을 읽어 클라이언트에 응답한다. InputStream을 한 줄 단위로 읽기 위해 BufferedReader를 생성한다. BufferedReader.readLine() 메서드를 활용해 라인별로 HTTP 요청 정보를 읽는다. HTTP 요청 정보 전체를 출력한다. 헤더 마지막은 while(!"".equals(line)) {} 로 확인 가능하다. line이 null 값인 경우에 대한 예외 처리도 해야 한다. 그렇지 않을 경우 무한 루프에 빠진다. 해결방법 public void run() { log.debug("New Client Connect! Connected IP : {}..
썸네일 [springboot] IntelliJ 스프링부트 프로젝트 세팅 시 invalid source release: 11 오류 인프런에서 김영한님의 스프링 입문 강의를 듣고 따라하는데 다음과 같은 오류가 났다 강의에서 자바 11버전을 사용하는데 기존에 내거에서는 1.8로 세팅이 되어 있어서 나는 오류였으며 오른쪽 상단의 톱니바퀴 모양의 세팅에서 Project Structure 클릭 1) project 에서 11버전 세팅 2) SDKS 에서 11버전으로 세팅 Settings 에서 Gradle JVM 11버전으로 세팅해주니 오류가 해결되었다 또 위에 Build and run using 과 Run tests using이 Gradle로 되어있으면 gradle을 타고 켜지느라 느리므로 IntelliJ IDEA로 변경해준다
[JavaScript] F12 개발자모드 창에서 console 탭 time, timeEnd JavaScript 콘솔 창에서 console.time("start"); for(var i=0;i
문자열 계산기 3단계 구현 및 리팩토링 4번째 조건인 쉼표 외에 세미콜론으로 구분자 추가 5번째 조건인 "//" 와 "\n" 사이에 커스텀 구분자를 지정했을 경우 추가 package calculator; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringCalculator { int add(String text) { if(isBlank(text)) { return 0; }; return sum(toInts(split(text))); } private boolean isBlank(String text) { return text == null || text.isEmpty(); } private String[] split(String text) { M..
문자열 계산기 구현 및 리팩토링 2단계 연습일 때 극단적으로 리팩토링을 해보기 package calculator; public class StringCalculator { int add(String text) { if(isBlank(text)) { return 0; }; String[] numbers = split(text); int totalNumbers = sum(numbers); return totalNumbers; } private boolean isBlank(String text) { return text == null || text.isEmpty(); } private String[] split(String text) { String[] numbers = text.split(","); return numbers; } private ..
문자열 계산기 1단계 구현 및 리팩토링 package calculator; public class StringCalculator { int add(String text) { //1번 조건 if(text == null || text.isEmpty()) { return 0; } if(text.contains(",")) { //3번 조건 String[] numbers = text.split(","); for(String st : numbers) { totalNumbers += Integer.parseInt(st); } return totalNumbers; } //2번 조건 return Integer.parseInt(text); } } 기능은 돌아가지만 여기서 멈출 것이 아니라 리팩토링 생각하기! 먼저 배열이 한 개 일 때도 split이 잘 반환되는..
[Java] String 날짜 LocalTime 으로 변환하기 , 날짜 타입 변경 Text '2023-08-10 00:00:00' could not be parsed, unparsed text found at index 10 날짜를 파싱 하려니 다음과 같은 에러가 떴다 LocalDateTime date = LocalDateTime.parse("2023-08-10 00:00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd") 원인은 내가 파싱하고자 하는 날짜는 초까지 있는데 날짜까지만 노출하려 해서 데이터 타입이 맞지 않아서였다 나는 초까지 있는 날짜로 받아 온 타입을 날짜타입인 string으로 변경하고 싶었고 현재 날짜도 받아 비교하려 했다 LocalDateTime date = LocalDateTime.parse("2023-08-10 00:00:00",D..
[Java] StringUtils 을 사용하여 특정 값으로 시작하는지 끝나는지 확인하는 방법 Spring에서 지원하는 StringUtils를 활용하여 startsWithIgnoreCase / endsWithIgnoreCase 사용 시 특정 값으로 시작하는지 끝나는지를 확인할 수 있다 StringUtils.startsWithIgnoreCase("JAVA", "JA"); //true StringUtils.startsWithIgnoreCase("JAVA", "AB"); //fasle StringUtils.endsWithIgnoreCase("JAVA", "VA"); //true StringUtils.endsWithIgnoreCase("JAVA", "AB"); //fasle 예제 사용 StringUtils.startsWithIgnoreCase(linkUrl, "https"); 다음과 같이 반환이 되므로 ..
썸네일 [Java] 자바 인터페이스(Java Interface)의 정의, 특징, 사용 예제 인터페이스란 Java에서 인터페이스는 구현 클래스가 준수해야 하는 일련의 메서드 및 상수를 정의하는 클래스의 청사진입니다. 구현 세부 사항을 지정하지 않고 클래스가 따라야 하는 계약을 지정합니다. 인터페이스 특징 추상화: 인터페이스를 사용하면 구현 세부 정보를 지정하지 않고 메서드 계약을 정의할 수 있습니다. 이는 인터페이스가 내부 작업을 노출하지 않고 클래스가 수행해야 하는 작업에 대한 높은 수준의 보기를 제공하므로 추상화를 촉진합니다. 다중 상속: 단일 슈퍼클래스에서만 상속할 수 있는 클래스와 달리 클래스는 여러 인터페이스를 구현할 수 있습니다. 이를 통해 클래스는 여러 소스에서 동작 및 기능을 상속할 수 있으므로 코드 재사용 및 유연성이 용이해집니다. 다형성: 인터페이스는 서로 다른 클래스의 개체가..
썸네일 [Java] JDK와 JRE의 개념과 차이, Java 버전별 특징과 차이(Java 8,11,17) 자바를 설치 시 jdk와 jde 가 있어 둘 중 뭐를 설치해야 할지 헷갈릴 수 있다. 그렇다면 이 둘의 차이점은 무엇일까? JDK와 JRE는 어디에 사용할까? JDK(Java Development Kit) 및 JRE(Java Runtime Environment)는 Java 응용 프로그램을 개발하고 실행하기 위해 Oracle에서 제공하는 두 가지 소프트웨어 패키지입니다. JDK란? JDK(자바 개발 키트)는 Java 응용 프로그램을 개발하는 데 필요한 모든 것을 포함하는 소프트웨어 패키지입니다. 여기에는 Java 소스 코드를 바이트코드로 컴파일하는 Java 컴파일러(javac)가 포함됩니다. 또한 Java 프로그램을 실행하는 데 필요한 JVM(Java Virtual Machine)도 포함됩니다. 또한 JD..
썸네일 [Java] Java Stream의 정의와 주요 기능, 예시 Java Stream 정의 Java Stream은 Java 8에 도입된 강력하고 기능적인 API로 데이터 수집을 효율적이고 표현적으로 처리할 수 있습니다. 컬렉션에 대한 작업을 수행하는 선언적이고 파이프라인 기반 접근 방식을 제공하여 데이터 조작 및 변환을 위한 깨끗하고 간결하며 읽기 쉬운 코드를 더 쉽게 작성할 수 있습니다. Java Stream의 주요 기능 - 컬렉션 처리: 스트림은 목록, 배열 또는 집합과 같은 데이터 요소 컬렉션을 처리하는 데 사용됩니다. 필터링, 매핑, 정렬 및 축소와 같은 이러한 컬렉션에 대한 작업을 효율적으로 수행하는 방법을 제공합니다. - 기능적 프로그래밍: 스트림은 람다 식 및 기능적 인터페이스와 같은 기능적 프로그래밍 개념을 활용하여 간결하고 표현적인 코드를 허용합니다...
썸네일 [Java] 오버로딩(Overloading)과 오버라이딩(Overriding)의 정의/차이/사용예제/사용이유 메소드 오버로딩(Overloading)의 정의 메서드 오버로드를 사용하면 동일한 클래스 내에서 이름은 같지만 매개 변수 목록이 다른 여러 메서드를 정의할 수 있습니다. 컴파일러는 메서드에 전달된 인수의 수, 유형 및 순서에 따라 호출할 메서드를 결정합니다. 오버로딩의 핵심 사항 다음은 메서드 오버로딩에 대한 몇 가지 핵심 사항입니다. 1. 오버로드된 메서드는 이름은 같지만 매개변수 목록(매개변수의 번호, 유형 또는 순서)은 달라야 합니다. 2. 메소드의 반환 유형은 메소드 오버로딩에서 역할을 하지 않습니다. 3. 오버로딩을 사용하면 다양한 입력으로 유사한 작업을 수행하는 다양한 방법을 제공할 수 있습니다. 4. 오버로드된 메서드를 사용하여 코드 가독성을 높이고 프로그래머에게 편의성을 제공할 수 있습니다...
반응형