이번 주는 스프링 시큐리티 적용을 하면서 수많은 삽질을 겪게 되었습니다. 트러블슈팅 경험을 정리하기 전에 먼저 스프링 시큐리티의 기초를 먼저 정리해봅시다! Servlet 이란? Servlet 클래스 관계도 Servlet은 인터페이스이며, 이를 상속받은 것이 GenericServlet (추상클래스)입니다. GenericServlet은 다시 상속받은 것이 HttpServlet (추상클래스)입니다. HttpServlet의 service 메소드는 HttpServletRequest를 인자로 받습니다. 이 때의 HttpServletRequest는 ServletRequest 인터페이스의 구현체입니다. HttpServletRequest 의 역할은 결국엔 서블릿 컨테이너에서 HttpServlet의 service(Http..
분류 전체보기
코틀린이 자바로 컴파일될 때, 그 컴파일 방식이 성능에 영향을 미칩니다. 특히 람다를 파라미터로 전달하는 경우에 대해서 자세히 살펴보겠습니다. 코틀린은 람다를 무명 클래스로 컴파일한다 // 람다 - 무명 객체를 메서드를 호출할 때마다 반복 사용 postponeComputation(1000) {println(42)} // 람다를 컴파일한다면? 무명 인스턴스가 생성됨 postponeComputation(1000, object: Runnable { override fun run() { println("hello") } } ) 코틀린은 기본적으로 람다를 무명클래스로 컴파일하지만 항상 새로운 무명 클래스를 생성하는 것은 아닙니다. 위의 경우는 항상 인스턴스가 생성되지만 사실은 아래와 같이 클래스를 한 번만 생성하..
글쓰는 또라이라는 개발자 글쓰기 커뮤니티에 참여하게 되었습니다. 인턴을 하는 동안 꾸준하게 글을 쓰는 습관을 잃지 않기 위해 신청한 활동입니다만. 인턴 한 달 생활해보니 정신이 없어서 ㅋㅋㅋ 글또가 아니었다면 이 글 조차도 쓰지 못했을거 같군요. 글또 9기를 신청한 것이 이번 년 들어 잘한 일 중 하나가 아닐까 싶습니다. 꾸준히 써보는 인턴 회고록은 처음이라 어색하지만 최대한 개인적인 감정은 덜어내고 작성해보도록 합니다. 사실 운이 좋게도 팀 내에서 회고를 하는 시즌이라 회고에 참여해보았습니다. 가끔 동아리에서 회고라는 것을 진행해보았을 땐 특별히 유의미함을 찾진 못하여 회고를 하는 이유에 대한 의문이 들었습니다. 아무래도 플젝 기간이 짧다보니 그 이후의 액션 아이템을 실행할 기회가 없었기 때문입니다. ..
요즘 생활기록부를 모바일로 볼 수 있다는 얘기를 듣고 친구랑 장난삼아 구경해보았다. 그리고 예상치 못한 것을 발견해버렸다. 개발자라는 단어가 무엇인지도 잘 모르던 시절에 진로희망에 소프트웨어 개발자라고 쓴 사태에 대하여 과거부터 현재까지 이르러 생각해보는 시간이다. 하루종일 tv를 보던 중학생은 좋아하는 것을 포기했던 것일까? 사실 나의 어렸을 때 꿈은 (내 기억으로는?) 예능/드라마 PD였다. 토요일 무한도전, 일요일 1박2일, 그리고 월화수목금 드라마를 봐야됐었던 나는 친구가 코어타임에 놀자고 하면 안된다고 단호하게 거절했을 정도로 tv를 사랑했었다. 그래서 자연스럽게 장래희망도 분명 PD였는데 왜 생활기록부에는 예상치 못한 진로희망이 적혀있을까? 나는 좋아하는 것을 포기했던 것일까? 아닌거같다. 나..
JPA N+1 이 무엇인지 그리고 어떻게 최적화하는지 알아보도록 하자! ✔️ JPA N+1 문제란? 다대일 관계 Member와 Team를 정의해봅시다. @Entity @NoArgsConstructor @AllArgsConstructor @Builder @Getter @Setter public class Member { @Id private Long memberId; private String memberName; @ManyToOne private Team team; } @Entity @NoArgsConstructor @AllArgsConstructor @Builder @Getter @Setter public class Team { @Id private Long teamId; private String t..
참고 https://docs.spring.io/spring-framework/reference/testing/spring-mvc-test-framework/vs-end-to-end-integration-tests.htmlMockMvc vs End-to-End Tests :: Spring FrameworkMockMVc is built on Servlet API mock implementations from the spring-test module and does not rely on a running container. Therefore, there are some differences when compared to full end-to-end integration tests with an actual c..
Optional 를 쓰는 이유메소드의 시그니처만 보고도 선택형 값을 기대해야하는지 판단 가능null 에 의한 null pointer exception 발생에 대한 해결책으로 등장Optional.empty()와 null의 차이Optional.empty() : Optional의 싱글턴 인스턴스를 반환하는 정적 팩토리 메서드를 통해 생성됨. 객체 그 자체null : 참조하면 Null Pointer Exception 이 발생Optional.of() 와 Optional.ofNullable() 차이Optional.of(some) : some 이 null이라면 npe가 발생한다.Optional.ofNullable(some) : some이 null이라면 Optional 객체를 만든다.도메인 모델에 Optional를 사..
풀이가 다들 가중치 2배로 하고 실수형 나오는거 막는거로 풀이하시길래.. double 풀이 공유합니다 public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static StringTokenizer st; static int N, M; static List[] adjs; public static void main(String[] args) throws IOException { st = new StringTokenizer(br.readL..
import java.io.*; import java.util.*; public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static StringTokenizer st; static int N; static Stack visit; static List[] adjs; static int[] type; static int[] nums; static int answer = 0; public static void main(String[] a..