728x90
반응형

Java 8

[스프링부트] 스프링캐시 Spring Cache 설정 및 속도 비교

서론특정 데이터들을 반복적으로 호출하고 있는 코드가 있었다. 현재까지는 2천 개보다 조금 많은 수준의 데이터를 가지고 있었지만, 앞으로 훨씬 더 많은 데이터가 들어갈 예정인데 단순히 조회를 위한 데이터임에도 여러 곳에서 데이터를 호출해야하기 때문에 캐시 도입을 결정하였다. 캐시를 설정하는데에는 여러 방법이 있지만 스프링부트로 백엔드를 개발하고 있기 때문에 스프링에서 제공해주는 스프링 캐시를 사용하기로 하였다. 본론1. 캐시 메모리에 저장할 데이터 정의@Datapublic class SomeDataCache { private T someData; private LocalDateTime expirationDate;}2. 캐시 설정 파일 정의@EnableCaching@Configurationpubl..

Java 2023.09.04

[스프링부트] 코드 실행 시간 측정

서론프로젝트를 진행하면서 이중 for문을 사용하는 코드를 짜는 스스로가 너무 싫어서 코드 실행 시간을 확인해볼 필요성을 느꼈다. 본론두 가지 방법이 있다는 걸 확인했다. 첫 번째는 자바를 배울 때 사용해서 기존에 알고 있던 방법이었다.long startTime = System.currentTimeMillis();// 실행 코드long stopTime = System.currentTimeMillis();System.out.println("코드 실행 시간: " + (stopTime - startTime)); 두번째는 스프링에서 제공하는 stopwatch 방법이다.StopWatch stopWatch = new StopWatch();stopWatch.start();// 실행 코드stopWatch.stop();S..

Java 2023.03.27

[Java] Linux-centOS7에 openJDK 11 설치하기

1. 설치 가능한 JDK를 확인 아래 명령어로 설치 가능한 JDK를 확인한다. yum list java*jdk-devel 2. 다운받을 버전의 자바를 설치해준다. 지금은 11을 설치할 것이므로 다음과 같은 명령어로 설치한다. yum install java-11-openjdk-devel.x86_64 3. 설치 확인 javac -version 자바 버전이 나온다면 정상 설치된 것이다. 4. 자바 경로 설정 다음 명령어로 심볼링 링크를 찾아준다. readlink -f /usr/bin/javac 경로가 나올 것인데, 마지막의 /bin/javac를 제외한 부분을 복사해둔다. 아래 명령어로 설정을 열어준다. vim /etc/profile 가장 아래에 다음과 같이 적어준다. export JAVA_HOME=(복사한 경..

Java 2022.08.29

[스프링부트] 어노테이션(Annotation) 정리

@RestController- 컨트롤러를 JSON을 반환하는 컨트롤러로 만들어 줌 @GetMapping("/path")- HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어 줌. URI는 http://localhost:8080/path가 된다 @RunWith(SpringRunner.class)- 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자(SpringRunner)를 실행- 즉, 스프링부트 테스트와 JUnit사이의 연결자 역할 @WebMvcTest- 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션- 선언할 경우 @Controller, @ControllerAdvice 등을 사용할 수 있음- 단, @Service, @Compon..

Java 2022.06.25

자바 입출력: Scanner vs BufferedReader

처음 자바를 배울 때는 키보드에서 입력받기 위해 Scanner를 사용했다. 그리고 혼자 공부를 시작하면서 BufferedReader를 더 많이 사용하기 시작했다. 그런데 막상 그 차이점은 잘 모르고 단순히 BufferedReader가 더 효율적이라는 말에 쓰기 시작했다. 그래서 두 가지를 비교해보았다. 1. Scanner java.util 패키지 키보드에서 입력받는 대로 바로 처리 엔터와 스페이스로 구분 -> 공백 입력 불가 원하는 타입으로 받을 수 있음 import java.util.Scanner; Scanner scanner = new Scanner(System.in); int n; n = scanner.nextInt(); 2. BufferedReader java.io 패키지 키보드의 입력을 버퍼에 ..

Java 2022.02.26

자바의 특징과 구조

1. 자바의 특징 운영체제에 독립적: 자바로 작성된 코드는 JVM(Java Virtual Machine) 위에서 실행되기 때문에 운영체제에 구애받지 않고 코드를 작성하고 실행할 수 있다. 눈에 너무도 익숙한 그 문장 Write once, run anywhere 객체지향언어: c++은 엄밀하게 말해서 객체지향언어가 아닌 객체지향지원언어라고 할 수 있다. 왜냐하면 객체를 이용하지 않고도 코드를 작성할 수 있기 때문이다. 그러나, 자바는 모든 것이 객체에서 시작해서 객체에서 끝나는, 말 그대로 '객체지향언어'이다. 비교적 배우기 쉽다: 자바의 정석에서는 이를 자바의 특징으로 내세우고 있는데, 사실 이건 사람 바이 사람이기 때문에 특징으로 볼 수 있는지 의문이 든다. 객체 지향의 사실과 오해를 보면 자바 개발자..

Java 2022.02.25

이클립스 vs 인텔리제이

처음 자바를 배울 때는 이클립스를 통해 배웠다. 그리고 Spring을 배우기 시작하면서 인텔리제이를 사용하기 시작했다. 그리고 인텔리제이를 사용해 보기 전에 안드로이드 스튜디오를 사용해보았는데 인텔리제이를 사용하기 시작하면서 안드로이드 스튜디오가 인텔리제이를 기반으로 만들어졌다는 것을 알게 되었다. 1년 전 학교에서 고작 한 학기 배운 자바를 다시 자세히 파보려 하는데 어떤 툴이 좋을지 고민하다가 알아보게 된 내용을 정리해보려고 한다. 이클립스 무료 자동 완성, 코드 추천 빈약 HTML, CSS, JS 코드 작성할 때 지원이 미약 Spring 개발 시 인텔리제이보다 번거롭고 어려움 특히 Lombok 설치 번거로움 전자정부 프레임워크는 공식적으로 이클립스 개발 환경을 지원함 인텔리제이 유료(무료 버전, 학..

Java 2022.02.25

자바 8 vs 자바 11

결론: 자바 11에서 몇 가지 기능이 추가되었지만 프로젝트 등에서는 안정성을 위해 자바 8을 사용하는 것이 좋다 자바 8 (출처: 스프링 입문을 위한 자바 객체 지향의 원리와 이해) Interface Default and Static Methods Lambda expressions // 람다식 미적용 코드 public class NoLambda{ public static void main(String[] args){ Runnable r = new Runnable(){ public void run(){ System.out.println("Run!!"); } } } } // 람다식 적용 코드 public class UseLambda{ public static void main(String[] args){ R..

Java 2022.02.25
728x90
반응형