백엔드(37)
-
Java 애플리케이션 SIGSEGV (Segmentation Fault) 오류 해결하기
⚠️ 어느 날 회사에서 코드를 작성하다가 빌드를 돌린 순간..! jdk가 빌드 되는 과정에서 오류가 발생했습니다. 에러 메시지를 보면 Java Virtual Machine (JVM) 외부(native code)에서 문제가 발생했고, JVM이 예상하지 못한 동작을 수행하면서 SIGSEGV (Segmentation Fault) 가 발생, 결국 프로세스가 강제 종료되었다는 내용입니다. 오늘은 이 오류의 원인과 해결 방법에 대해서 작성해 보겠습니다! ## A fatal error has been detected by the Java Runtime Environment:## SIGSEGV (0xb) at pc=0x00000000000207d6, pid=1, tid=7## JRE version: OpenJDK ..
2025.02.23 -
Spring boot API 프로젝트에 FCM 적용하기
대부분의 프로젝트에서 푸시 알림 기능은 필수 요소로 자리잡고 있으며, 많은 개발자들이 이를 구현하는 경험을 갖게 됩니다. 특히 모바일 앱이나 웹 애플리케이션에서는 Firebase Cloud Messaging(FCM)을 활용해 사용자에게 실시간으로 메시지를 이용하여 정보를 전달하는 것이 보편적입니다.이번 글에서는 Spring Boot API 프로젝트에 FCM Admin SDK 을 적용해 푸시 알림 기능을 구현하는 과정을 자세히 알아보도록 하겠습니다. API를 적용하는 가장 첫번째 방법은 바로 문서 확인이죠?! 문서를 먼저 확인해보고 옵시다!! 앱 서버 전송 요청 작성 | Firebase Cloud Messaging4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견..
2025.02.15 -
[Database] SubQuery 종류
많은 개발자들이 SQL 쿼리를 작성할 때 서브 쿼리를 자주 사용합니다. 서브쿼리는 사용되는 위치에 따라 다양한 명칭으로 불리기도 합니다.저는 보통 특별한 명칭을 사용하기보다는 그냥 서브 쿼리라고 부르는 편인데요, 오늘은 서브 쿼리의 종류에 대해 알아보려 합니다. 🤔 # 서브쿼리 (SubQuery)다른 SQL 쿼리에 포함된 쿼리로 메인 쿼리의 일부로 작동 괄호로 감싸져서 사용SELECT, INSERT, UPDATE, DELETE의 WHERE, FROM, HAVING, SET 절, EXISTS 연산자 등 다양한 구문에서 사용 가능별칭 사용 가능 서브 쿼리는 메인 쿼리와 분리되어 가독성이 향상되지만 서브쿼리가 많거나 복잡해지는 경우 서버에 부하를 줄 수 있음 # 사용 위치에 따른 서브쿼리 명칭사용위치명칭SE..
2024.07.14 -
[Database] 데이터베이스 index(인덱스) 알아보기
데이터베이스를 설계/운영할 때 데이터 조회 속도를 향상하기 위해 인덱싱을 사용하는데요! 이번 게시글에서는 데이터베이스의 인덱스란 무엇인지 또 이것의 장/단점은 무엇인지 알아보려고 합니다🔥 # 인덱스 데이터베이스에서 특정 컬럼에 대한 검색 성능을 향상하는 데 사용되는 데이터 구조 데이터베이스가 레코드를 검색할 때 전체 테이블을 스캔하는 대신 인덱스를 사용하여 더 빠른 검색이 가능 # 인덱싱 인덱싱은 인덱스를 생성하고 유지하는 프로세스 주로 검색 및 정렬 작업을 최적화하기 위해 사용 # 인덱싱의 장점과 단점 👍 장점 검색 속도 향상 : 데이터를 검색/조회하는 데 걸리는 시간이 줄어들어 효과적인 데이터 검색 작업 수행 정렬 속도 향상 : 데이터가 이미 정렬된 상태이기 때문에 이미 정렬된 상태의 데이터를 활용하..
2024.03.02 -
Spring boot에 Swagger 적용하기
이번 게시글에서는 SpringDoc과 Swaager를 이용하여 API 문서를 생성하는 방법에 대하여 알아보려고 합니다. 저는 Spring security가 적용되어있는 환경을 기준으로 적용하였습니다. # build.gradle 의존성 추가하기 dependencies { implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' } # Open API Bean으로 등록하기 @Configuration public class SwaggerConfig { @Bean public OpenAPI api() { OpenAPI openAPI = new OpenAPI() // 보안 관련 .addSecurityItem(new SecurityRequir..
2024.02.23 -
인터페이스와 추상클래스의 차이
자바에서 다형성을 구성하는 데 사용되는 것이 바로 인터페이스와 추상클래스인데요 비슷한 것 같은 인터페이스와 추상클래스! 어떤 점이 다르기에 구분해서 사용하는지에 대하여 알아보겠습니다. ✏️ # 추상클래스 abstract 키워드를 이용하여 선언된 클래스나 내부에 추상 메서드를 한 개 이상 포함한 클래스 (일반메서드도 포함을 할 수 있음) 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스 추상클래스의 추상메소드는 실체클래스에서 무조건 상속을 받아 재정의 해야 한다.(오버라이딩 필수) 직접 인스턴스를 생성 할 수 없음 단일 상속만 허용 클래스간의 연관 관계를 구축하는 것에 초점 인스턴스화할 수 없음 예시 코드 abstract class Shape { abstract void draw(); void disp..
2024.02.04