일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- ddd
- dataframe
- 백준
- 자바
- 다익스트라
- dfs
- 헥사고날 아키텍처
- 포트앤어댑터 아키텍처
- java
- 세그먼트 트리
- springboot
- disjoint set
- docker
- pandas
- 스프링
- 데이터 flow
- BFS
- 문자열
- DP
- 파이썬
- 위상정렬
- series
- JPA
- 알고리즘
- spring security
- Redis
- 이펙티브 자바
- 비트마스크
- UML
- equals
- Today
- Total
목록전체 글 (95)
코딩못하는사람
https://www.acmicpc.net/problem/19584 19584번: 난개발 이 사실은 대회에 참가하고 있는 여러분들만 알고 있는 사실이다. 방금 외계인들이 지구를 정복했고 서울시청과 서울시의회를 장악했다. 이들은 인간들이 통근과 통학으로 고통받게 하려고 대 www.acmicpc.net 1.접근 문제의 예시 그림을 보고 고민을 해보면 X축의 값은 필요없고 Y축으로 압축해서 누적합이 가장 큰 곳을 구하면 된다는 생각을 할 수 있다. 통행량을 계속 증가시켜주기 위해서 구간에 대해서 세그먼트 트리도 생각해보고 여러가지 생각해보았지만 y축으로 정렬하여 존재하는 모든 y축을 돌면서 시작지점에는 +,종료지점에는 -를 해주는 방식을 생각했다. 2.풀이 누적합을 어떻게 구할지 생각하는게 중요한 문제이다. ..
JWT Token(JSON Web Token)이란? JWT란? JSON Web Token (JWT) 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달해줍니다. 여기서 자가수용적인 방식은 JWT를 사용하는 가장 큰 이유가 됩니다. JWT을 사용하지 않는 이전 인증방식들은 서버에서 접속한 회원의 세션정보를 유지하고 있어야하는 구조였습니다. 그에 따라서 클라이언트가 늘어날수록 서버 자원의 낭비가 심해지는 구조를 가지고있었습니다. 하지만 JWT토큰은 클라이언트에 대하여 무상태(stateless)로 유지하기때문에 훨씬 이상적인 구조입니다. JWT의 핵심내용을 동작 방식과 함께 살펴보겠습니다. 회원 인증 정보 교류 Stateless 동작 방식 ..
[아이템1] 생성자 대신 정적 팩터리 메서드를 고려하자 클라이언트가 클래스의 인스턴스를 얻기 위해서는 보통 public 생성자를 사용했다. 하지만 다른 방법으로 public static 팩토리 메소드를 사용해서 해당 클래스의 인스턴스를 만드는 방법도 있다. public static 팩토리 메소드의 장점 1. 이름을 가질 수 있다. BigInteger.probblePrime를 보자. 기존 생성자로 BigInteger()을 사용하는 것 보다 BigInteger.probblePrime()를 사용하면 만드려는 인스턴스 객체의 특성을 더 알아보기 쉽게 묘사할 수 있다. 2.호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 불변(immutable) 클래스인 경우나 매번 새로운 객체를 만들 필요가 없는 경우에 미..
처음 웹서비스 제작할때는 생산성을 위해 Spring Data JPA를 사용하여 자동으로 쿼리문을 만들었다. 하지만 API하나하나 수행될때마다 연관된 쿼리가 너무 많이 수행되서 공부한 내용을 바탕으로 성능개선을 해보고자 한다. 이번에 제작한 웹서비스에는 회원간 메세지 기능이 있다. 메시지 엔티티에는 보내는회원과 받는회원이 회원 엔티티를 각각 1:1 단방향 연관관계로 가지고있다. SpringDataJPA를 통해서 처음 만들어낸 Repository 메서드를 보자. public interface MessageRepository extends JpaRepository { List findBySentMember(Member member); List findByReceivedMember(Member member); ..