일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- mysql
- GC
- redis
- IntellJ
- JPA
- gradle
- OS
- Stream
- 스트림
- 토비의 스프링 정리
- Real MySQL
- jvm
- list
- Collection
- 스프링
- 토비의 스프링
- MSA
- Kotlin
- 자바 ORM 표준 JPA 프로그래밍
- Stack
- 이스티오
- 쿠버네티스
- SpringBoot
- thread
- K8s
- Java
- 보조스트림
- 백준
- spring
- 자바
- Today
- Total
목록분류 전체보기 (152)
인생을 코딩하다.
자바 초심자 입장에서 은근히 간과할 수 있는 내용일수도 있다고 생각하여 글을 작성해보았습니다. 저 또한 자바 성능 튜닝 이야기를 처음 읽었을때 "앗 차!" 했던 내용이였습니다. 혹시나 자바를 처음 시작하신 분들에게 도움이 되었으면 하는 마음에 이 글을 바칩니다. 보통 가장 많이 쓰는 for문 public static void example(List numbers) { for (int i = 0; i < numbers.size(); i++) { .... } } 만약 numbers의 size가 10만 이라고 가정하면, 위의 코드는 불필요한 size()메서드를 10만번 반복 하는 것입니다. public static void example(List numbers) { int numbersSize = number..

요즘 읽기 좋은 코드, 헙업할 때 좋은 코드란 뭘까에 관해 많이 고민중이고.. 공부하려고 하는중인데 그래서 디자인 패턴에 관해 정확히 알아둬야 겠다는 생각이 들어 공부하고 지식 공유합니다. 디자인 패턴이란 진짜 간단히 말하면 알아보기 쉽게, 즉 효율적인 의사소통을 위한 코드? 그러한 방법들을 몇 가지의 일종의 패턴으로 분류해 놓은 것 또 템플릿 메소드 패턴이란 디자인 패턴 중 하나 템플릿 메서드를 공부하기 전에, 추상 클래스,추상 메서드에 관해 모른다면 먼저 공부해보시길 바라며... 템플릿 메서드란? 프레임워크에서 설계를 할 때, 흔하게 사용되는 방법 중 하나 - 어떤 작업을 처리할 때 일부분을 서브 클래스로 캡술화(Aihyungil.java, ManualHyungil.java)하여 전체 일을 수행하는 ..

방향성 및 동기부여를 위해 유튜브에서 이동욱님의 개발자가 되기까지의 과정 동영상을 보다가 유튜브 알고리즘에 의해 JetBrains korea 채널의 동영상을 시청하게 되었습니다. 거기서 얻은 인텔리제이 편하게 쓰는 팁 중 하나입니다. 변수, 메서드명 작성할 때, 파파고로 번역해서 작성하시는 분들 많으시죠? 이제 귀찮게 그럴 필요 없습니다. settings - Plugins Install 한 후 인텔리제이 재시작을 합니다. 클래스를 만들고 실험해봅니다. Alt + 1 / 괄호에 모르고 Alt를 또 적었는데... 원래 Option을 적으려고 했는데.. 실수로... 맥 Option 윈도우 Alt 팝업창 Alt + 2 번역 후 Replace 맘에 드는거 고르면 됩니다. Alt + 3 번역창 달달하네~~

요즘 공부하면서 이론이 많이 부족하다고 느꼈고, 이론 공부가 정말 중요하다는 생각을 많이 했다. 그러다가 SpringBoot와 Spring 차이를 대강 알고만 있었지, 누가 물어보면 정확히 말을 하지 못할 것 같아서 유튜브, 구글링 등을 통해 이론 학습을 좀 해보았다. 궁금해서 스프링 공식 문서를 살펴보다가, docs.spring.io/spring-framework/docs/current/reference/html/overview.html#overview-spring Spring Framework Overview The term "Spring" means different things in different contexts. It can be used to refer to the Spring Framew..

@ExceptionHandler를 이용해서 메소드마다 예외처리를 해주다보니 같은 에러를 처리할때 마다 중복된 코드를 쓰게되었다. 중복된 코드를 쓰다보니 코드도 길어지고 유지보수 할 때 불편한 점이 많았다. 스프링 프레임워크의 큰 장점중에 하나가 AOP인데 중복된 코드를 쓴다는 것은 AOP에 어긋난다는 생각이 들었다. 그래서 나는 재사용성을 높여 중복된 코드를 없애 객체 지향적인 코드를 구현하고 싶었고, (메서드는 한 가지 일만 해야하기 때문에) 에러를 한 곳에서 처리해서 controller 전역에 적용되는 예외처리 구문을 만들어야겠다는 생각을 하였다. 그래서 공부하던 중 ControllerAdvice annotation의 @ControllerAdvice와@RestControllerAdvice을 알게되었고..

흔히 알려진 스프링의 장점들 중 하나인 AOP란 것이 있다.'관점 지향 프로그래밍' 이라고 한다. AOP에 관해 공부하던 중, 갑자기 내가 만든 메소드들에 성능을 측정해보고 비교해 보고 싶었다.그래서 AOP를 이용하여 메소드들의 성능을 측정해 볼 수 있다는 것을 알게되어서 구글링을 통한 학습을 하였고 AOP를 적용해서 2개의 메소드에 시간을 시간을 측정해보았다. LogExecutionTime.java와 LogAspect.java는 Controller.java와 같은 패키지에 생성했다. bulid.gradle에 dependancy를 추가해줘야 한다 implementation 'org.springframework.boot:spring-boot-starter-aop' @Target로 어노테이션을 메서드에 사용..

예외처리 할 떄, Controller에서 이런식으로 try { } ~ catch { } 문으로 처리를 해주면 Status가 200으로 떠서 클라이언트에서는 이 정보가 처리가 된 것인지, 안 된 것인지 알기가 어렵기 떄문에 곤란하다. 위를 보면 Headers, Content type, Body에 아무 것도 들어오지 않아서 어떻게 처리가 되었는지 알 수가 없다. 그래서 조금더 나은 방법으로, @ExceptionHandler를 지정해준다. @ExceptionHandler같은 경우는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다. 인자로 캐치하고 싶은 예외 클래스를 등록해준다. @ExceptionHandler를 이용해서..

예외를 처리할 때 로그를 활용하는 것 이외에 checked exception을 unchecked exception으로 변경해서 던져야 하는 경우가 있었다. 이를 자바에서는 RuntimeException 클래스를 상속받아서 할 수 있다. @Transactional public void modify(Long id, String name) { // 이름 정보만 받아서 해당로직에 업데이트 Person person = personRepository.findById(id).orElseThrow(() -> new RuntimeException("아이디가 존재하지 않습니다")); person.setName(name); personRepository.save(person); } orElseThrow(() -> new R..