메가바이트스쿨 21

SpringSecurity - UsernamePasswordAuthenticationFilter

Spring Security에서 FormLogin 방식으로 로그인 할 경우 먼저 SecurityFilterChain 설정 메소드에서 각종 설정 변경하기 http .formLogin() .loginPage("/login") .defaultSuccessUrl("/")//로그인성공 .failureUrl("/login")//로그인실패 .usernameParameter("email")//html name 설정 .passwordParameter("password")//html name 설정 .loginProcessingUrl("/login/process") //로그인 form action url .successHandler(new AuthenticationSuccessHandler() { @Override publ..

Spring Security 2023.02.15

백준 No.13458 시험감독 - JAVA

문제 총 N개의 시험장이 있고, 각가의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 A명이다. 감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관으,ㄴ 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다. 각각의 시험장에서 총감독관은 오직 1명만 있어야 하고,, 부감독관은 여러 명 있어도 된다. 각 시험장마다 응시생들을 모두 감시해야 한다. 이때 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오 풀이 처음 while문으로 전부 순회하며 푸니 당연하게 시간초과.. 순서 1. 총감독은 한명은 무조건 있어야 하고 그 이상은 존재할 수 없다. 결국 주어진 교실만큼 총감독이 들어감 2. 학생이 100명일 경우 총감..

알고리즘 2023.02.07

백준 No. 1753 JAVA

해당 글은 제가 모르는 부분을 디버깅하며 찾아가는 과정이기에 설명에 부족한 부분이 있을 수 있습니다 문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정정의 번호 K가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수(u,v,w)가 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. 테스..

알고리즘 2023.02.01

Redis - 개념 및 Spring에서 사용

Cache 란? 다음에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해주는 것을 의미한다. 즉 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참고하지않고 Cache에 접근하여 처리할 수 있다. (주로 정적인 데이터를 다룰 때 사용하기 좋다. 주로 Open API 데이터들로 받은 값들은 DML로 바꿀 일이 없기 때문에 Cache로 저장해두는 것이 좋은 방법일 때가 있다) Memcached 란? Memcached는 무료로 사용할 수 있는 오픈소스이며 분산메모리 Cache 시스템이다. DB부하를 줄여 웹애플리케이션의 속도 개선을 위해 사용하며 DB나 API 호출 또는 렌더링 등으로부터 받아오는 데이터를 key-value로 저장한다. 단점 -> InMemory 기반의 시스템이므로..

JPA 2023.01.25

JPA - JPQL ORDER BY

TypedQuery query = em.createQuery("select m from Member m",Member.class"); List members = query.getResultList(); 기존에 Spring에서는 이렇게 EntityManager를 통해 직접 짜서 사용해야했는데 Spring Data JPA 는 확실히 편리해진 것 같다. 주로 @Query("SELECT m FROM Member m"); public List getResultList(); JpaRepository 를 상속한 인터페이스에 위처럼 작성한 뒤 가져다 쓰면 사용이 가능하다. order by를 이용한 정렬 order by를 native query와 동일하게 정렬 순서를 지정할 수 있다. 근데 다른 점은 여기서는 컬럼이 아..

JPA 2023.01.17

Spring Security - 2.7 이후 SecurityFilterChain

기존에는 WebSecurityConfugureAdapter를 상속받아 confugure 메소드를 오버라읻이하는 식으로 시큐리티를 구성했는데 2.7 이후부터는 상속받는 것이 아닌 SecurityFilterChain 을 bean으로 등록하는 형태로 변경되었다. @Configuration public class ProjectConfig extends WebSecurityConfigureAdapter{ @Override protected void configure(HttpSercurity http) throws Exception{ http.httpBasic(); http.authorizeReequests() .anyRequest().authenticated(); } 기존에는 이런식으로 구현했었는데 WebSecu..

Spring Security 2023.01.02

Spring Batch - csv 파일 읽기

ItemReaderPractiConfiguration 클래스를 만들어 Configuration 클래스로 등록하고 JobBuilderFactory와 StepBuilderFactory를 주입 받는다. incrementer 를 설정해 JobParameter를 각각 다르게 하여 동일한 Job을 실행 가능하게 한다. Job 에서 실행할 Step을 생성하는데 INPUT, OUTPUT 둘다 Person이다. (Chunk방식) ItemReader에서 CSV 파일을 읽으려면 FlatFileItemReader 객체를 이용해 읽어야 한다. public FlatFileItemReader csvReader() throws Exception{ DefaultLineMapper lineMapper = new DefaultLineMa..

Spring Batch 2022.12.26

SpringBatch ChunkSize를 JobParameters 로 사용하기

JobParameters느 배치를 실행에 필요한 값을 parameter를 통해 외부에서 주입한다. JobParameters는 외부에서 주입된 Parameter를 관리하는 객체이다. Parameter를 접근하는 방법은 크게 두가지이다. JobParameters 객체를 통해 접근 ((contribution, chunkContext) -> { StepExecution stepExecution = contribution.getStepExecution(); JobParameters jobParameters = stepExecution.getJobParameters(); String param = jobParameters.getString("chunksize","10"); } 다른 방법은 @Value를 통한 접근(..

Spring Batch 2022.12.19

Spring Batch Chunk 기초학습

Batch를 처리할 수 있는 방법은 크게 2가지이다. 1. Tasklet을 사용항 Task기반 처리 - 배치 처리과정이 비교적 쉬운 경우 쉽게 사용한다. - 대량 처리를 하는 경우 더 복잡하다. - 하나의 큰 덩어리를 여러 덩어리로 나누어 처리하기 부적합하다. 2. Chunk를 사용한 chunk(덩어리) 기반처리 - ItemReader, ItemProcessor, ItemWriter의 관계 이해필요하다. - 대량처리를 하는 경우 Tasklet보다 비교적 쉽게 구현가능 - 덩어리로 나누어 수행가능 코드 @Configuration @RequiredArgsConstructor public class Practice{ private final JobBuilderFactory jobBuilderFactory; p..

Spring Batch 2022.12.19

JPA - 연관관계 Insert Query 줄이기

영화 프로젝트를 하면서 연관관계에 대해 insert를 하는도중 이상함을 느껴 찾아보다가 이상함을 느껴 글을 작성하게 되었다. 좋아요 엔티티는(Like는 예약어라 LikeGood으로 변경했다) 여기서 보면 boxOffice와 member와 ManyToOne으로 연관관계를 맺고있다. 근데 여기서 만약 insert를 해야한다면..? ....? !??! insert 쿼리 한번 하기 위해 연관관계로 되어있는 엔티티들을 영속성컨텍스트에 불러와 저장하는 상태가 되어버렸다. 하지만 DB에 정작 들어가는 값은 엔티티에 PK이다. JPA에서는 객체이지만 DB에서는 PK값만 들어가서 이 부분에서 쿼리를 줄일 수 없을까 찾아봤다. 좋아요 기능은 회원(Member) 그리고 영화(BoxOffcie) 엔티티가 각각 OneToMan..

JPA 2022.12.19