본문 바로가기
320x100
728x90

Java44

Java 회전된 문자열인지 확인하기 회전된 문자열은 string이란 문자열이 있을 때, string이란 문자열의 요소를 회전시켰을 때, ingstr 다음과 같은 문자열을 만들 수 있냐? 이런 문제다. 위 ingstr은 str이 우측으로 가면 되기 때문에 만들 수 있는 문자열이다. 이 처럼 특정 값을 회전시켰을 때, 값을 만들 수 있는지 판별하는 코드이다. public class Main { public static void main(String[] args) { String s = "string"; //원본 문자열 String cycled = "ingstr"; //타겟 문자열 System.out.println(isCycled(s, cycled)); } public static boolean isCycled(String origin, Str.. 2022. 1. 30.
Log4j 보안 이슈 2021년 12월 11일부로 Log4j에서 보안 취약점 이슈가 발견되었다. Log4J의 log4j-core에서 발견된 이슈인데, 2.x ~ 2.14 버전까지 발생하는 이슈라고 한다. mvnrepository에서 보면 2버전만 있는데, 해당 버전 모두 보안 이슈가 발생하여 2.15 버전으로 업그레이드하는 것을 권장한다. 위키 백과에 따르면 자바 디렉토리 관련 인터페이스인 JNDI에서 발생했다고 밝혀지며, user-agent나 기타 다른 헤더에 해커의 원격 코드 URL을 넣게 되면 JNDI가 해당 URL을 출력하는 과정에서 실행하게 되어 원격코드 실행 발생한다고 한다.(RCE => Remote Code Excute) 다행히 우리 회사의 프로젝트는 Spring 기반 프로젝트는 logback을 사용하고, 보안.. 2021. 12. 13.
spring,java]JPA를 이용한 API서버 기존에 사용하기로 생각만 했던 JPA. 회사에서 작은 웹 크롤링 API 서버를 만들 일이 생겨서 간단하게 사용해봤다. JPA는 Java의 ORM(Object Relation Mapping) 표준 기술로 인터페이스이다. 구현체는 스프링 부트에서는 기본적으로 하이버네이트이다. (바꾸거나 직접 구현할 수 있다.) 참고 JPA는 Java 웹 앱과 JDBC 사이에서 동작하며 개발자가 SQL에 대한 종속성을 낮출 수 있게 해 준다. (다만 JPA의 표준을 따라야 해서 러닝 커브가 있다.) 오늘은 실제 사용한 코드를 보며 설명을 이어간다. 과거엔 xml로 설정을 했었지만 spring boot에선 간단하게 사용이 가능하다. 일단 JPA 사용을 하기 위해 implementation 'org.springframework... 2021. 11. 30.
spring,java]스프링 Quartz 스케줄러 사용하기(배치) 오늘은 프로그램이 특정 작업을 반복하는 배치(스케줄링)란 무엇인지 알아보고 간단한 예제를 통해 사용법을 알아본다. 회사에서 특정 시간마다 반복 작업으로 로그를 확인해서 로그에 이상이 있다면 Slack에 알림을 보내는 작업을 해야했다. 이렇게 되면 매 시간마다 로그를 확인하는 작업이 필요했고, 그 결과에 따라 알림 여부를 발송한다. 이러한 요구사항을 확인한 난 Spring Batch와 Quartz가 떠올랐다. 하지만 Spring Batch가 없어도 Quartz만으로 배치 모듈을 만들 수 있어서, Quartz만 쓰기로 했다. 참고 : 배치란? 쿼츠 공식 사이트 들어가기 전에 개발환경은 이러하다. Java 11 Spring boot 2.5.3 gradle 7.1.1 implementation 'org.spri.. 2021. 8. 18.
300x250
320x100