[Java] 컴파일 에러와 런타임 에러
2023. 5. 31. 20:57
프로그래밍/JAVA
컴파일 에러와 런타임 에러 컴파일 에러는 프로그래밍 단계에서 발생하며, 컴파일러가 코드를 분석할 때 확인 가능 대부분의 통합 개발 환경 (IDE)에서는 컴파일 에러를 강조 표시하고 오류 메시지를 제공하여 실시간으로 확인할 수 있음 반면, 런타임 에러는 프로그램이 실행 중에 발생하므로 디버깅 도구와 예외 처리를 통해 해결해야 함 런타임 에러는 프로그램의 실행 상태, 데이터 입력, 외부 환경 등 다양한 요소에 따라 발생할 수 있음 컴파일 에러 (Compile Error) 컴파일러는 소스 코드를 분석하고 변환하는 과정에서 발생하는 에러 일반적으로 문법 오류, 타입 불일치, 잘못된 메서드 사용 등으로 인해 발생 컴파일 에러는 소스 코드를 컴파일하기 전에 발생하며, 프로그램이 실행되기 전에 수정되어야 함 컴파일 ..
[Mybatis] #{}와 ${} 차이
2023. 5. 30. 20:28
프로그래밍/Mybatis
Mybatis #{}와 ${} 표기법 일반적으로 #{}을 사용하여 값을 전달하고, ${}을 사용하여 동적인 SQL을 작성하는 것이 안전하고 권장되는 방법임 ${}의 경우 사용자 입력 값을 포함할 때 주의해야 하며, 반드시 값의 이스케이프와 SQL Injection 방어를 수동으로 처리해야 함 #{} 표기법 SELECT * FROM users WHERE id = #{userId} #{} 안에는 자바 객체의 프로퍼티 이름이나 매개변수 이름 적음 #{} 안에 작성된 값은 자동으로 PreparedStatement의 파라미터로 설정되며, 자동으로 값의 타입에 맞게 변환 #{}은 SQL Injection 공격을 방지하기 위해 내부적으로 값을 이스케이프(escape)하여 처리함 ${} 표기법 SELECT * FROM..
[React] 리액트 lazy loading
2023. 5. 26. 20:51
프로그래밍/React
리액트 컴포넌트 lazy loading 방법 lazy loading은 로딩을 바로 하지 않고 지연시켰다가 로딩한다는 의미로 페이지에 그 부분이 보여져야 할 때 로딩하기에 처음 화면을 띄울때 속도를 개선할 수 있음 지연 로딩에는 여러 방법이 있지만 React.lazy 를 활용한 방법을 알아보고자 함 예시 fallback에는 로딩 중일 때 실행될 요소를 넣어줌 import React, { lazy, Suspense } from 'react'; const MyComponent = lazy(() => import('./MyComponent')); function App() { return ( Lazy Loading Example ); }
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkUNlh%2FbtshjenCgm1%2F2aMUYtxTQNelaD9VqxmVG0%2Fimg.png)
[IntelliJ Error] Run되는데 디버깅 모드만 안되는 경우
2023. 5. 25. 20:17
IDE/IntelliJ
Run되는데 디버깅 모드만 안되는 경우 IntelliJ로 spring boot 실행을 할 때 Run은 잘 작동하지만 Debugging 모드만 멈추는 경우가 있음 이런 경우 break point를 모두 풀고 실행해보자 debug탭의 좌측 하단의 View Breakpoints... 를 클릭하여 제거하거나 Mute Breakpoints...를 클릭한 상태로 실행해보기 breakpoint가 있어서 실행 안되는 것은 아니고 인텔리 제이의 버그인 것 같음(내 추측) → breakpoint 있어도 잘 실행됨
[JavaScript] undefined, null 체크
2023. 5. 24. 20:57
프로그래밍/JavaScript
undefined 체크 if (typeof str === 'undefined') {...} null 체크 if (str === null) {...} 값 존재 여부 체크 if (typeof str === 'undefined' || str === null || str === '') { // 값이 없는 경우 실행될 코드 }
[Java Error] class java.lang.Integer cannot be cast to class java.lang.Long 해결 방법
2023. 5. 23. 20:47
프로그래밍/JAVA
class java.lang.Integer cannot be cast to class java.lang.Long 에러 원인 java.lang.Integer 타입을 java.lang.Long 타입으로 캐스팅할 수 없다는 에러 Integer와 Long은 서로 다른 클래스이기 때문에 직접적인 캐스팅은 불가능 나의 경우 직접 캐스팅 할 수 없음에도 캐스팅 하려고 해서 에러 발생 if((Long) obj.get("input")) == longValue) { ... } 해결 방법 JSON 객체에서 가져온 "input" 값이 Number 타입으로 캐스팅 후, 이를 long 타입으로 변환하여 사용 long input = ((Number) obj.get("input")).longValue(); if(input == lo..
[Java] 개선된 Switch문 (Switch Expression)
2023. 5. 22. 20:23
프로그래밍/JAVA
Switch Expression Java 12 버전에 preview에 소개된 Switch Expression은 Java 14 버전에서 표준화 됨 기존의 Switch문과 비교하여 몇 가지 특징이 있음 화살표(->) 연산자 int day = 1; String dayOfWeek = switch (day) { case 1 -> "Monday"; case 2 -> "Tuesday"; case 3 -> "Wednesday"; case 4 -> "Thursday"; case 5 -> "Friday"; default -> "Unknown"; }; System.out.println(dayOfWeek); // 출력: "Monday" 각 case 문의 실행 코드 뒤에 화살표(->) 연산자를 사용하여 실행할 블록을 지정함. ..
[Java] Stream에서 index 사용하기
2023. 5. 19. 20:27
프로그래밍/JAVA
Stream에서 index 사용하기 Stream은 index를 알 수 없지만 AtomicInteger를 사용하여 index 생성하여 사용 가능함 AtomicInteger는 원자적인 연산을 제공하는 클래스임 여러 스레드에서 동시에 접근하는 경우 데이터의 일관성이 보장됨 연산을 통해 증가, 감소, 비교 및 교환 연산 가능 주요 메서드 get() 객체의 현재 값을 반환 set(int newValue) 객체의 값을 주어진 newValue로 설정 getAndSet(int newValue) 객체의 현재 값을 반환하고, 동시에 값을 주어진 newValue로 설정 incrementAndGet() 객체의 값을 1 증가시킨 후, 그 증가된 값을 반환 decrementAndGet() 객체의 값을 1 감소시킨 후, 그 감소된..