패스트캠퍼스 27

백준 No.10282 해킹 - JAVA

문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 싲가한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면 b가 감연되면 그로부터 일정시간 뒤 a도 감염되고 만다. 이때 b가 a를 의존하지 않는다면 a가 감염되더라도 b는 안전하다. 최흉최악의 해커 yum3이 해킹한 컴퓨터 번호와 각 의존성이 주어질 때, 해킹당한 컴퓨터까지 포함하여 총 몇 대의 컴퓨터가 감염되며 그에 걸리는 시간이 얼마인지 구하는 프로그램을 작성하시오 2 3 2 2 2 1 5 3 2 5 3 3 1 2 1 2 3 1 8 3 2 4 주의할 점 - 계속 풀어봐도 해킹 당한 노드는 3개가 나왔는데 문제에 함정이 있었다.... 이때 b가 a를 의존하지 않는다면, a가 감염..

알고리즘 2023.02.24

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

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 - ChunkListener, StepListener

이 예제는 Chunk기준으로 Lsitener을 구현했다. 다른 Step, Job도 크게 구현하는게 다르지 않다 ChunkPracListener 클래스 작성 ChunkListener을 implement해서 구현해서 Step에 등록해주면 된다. - beforeChunk >> 정크 시작전 - afterChunk >> 정크 끝난 후 - afterChunkError >> 에러날 경우 모두 ChunkContext를 매개변수로 받아서 StepExecution과 같이 Step 정보를 받아 활용할 수 도 있다. Step에서 listener을 등로해주면 정상작동한다. 정크 사이즈가 10이므로 10번마다 위에서 설정한 before과 after가 실행되는 것을 볼 수 있다. StepListener도 Step에서 등록하는데 같..

Spring Batch 2022.12.28

Spring Batch - JPA 데이터 읽기

JPA 데이터를 읽으려면 EntitiyManagerFactory가 필요하다 처음에 EntityManager 주입받을 떄 @PersistenceContext로 주입받았던 기억이 있어 생성자 주입이 아닌 이 방식으로 주입하려 하다 에러가 계속났었다. 생성자 주입방식을 했어야 했던게 결국 맞았었다. jobBuilderFactory, stepBuilderFactory, entityManagerFacotry 를 주입받는다. Job Step JpaPagingItemReader를 사용하여 데이터를 읽어들였다. 여기서는 pageSize를 설정할 수 있는데 분명 위에 Step에서도 chunkSize를 설정하기에 어떤 사이즈를 정하는 건지 알기 어려워 콘솔에 결과로 알게 되었다! 일단 JpaPagingItemReader를..

Spring Batch 2022.12.26

Spring - Session

Session 서로 관련된 요청을 묶은 것이고 요청은 모두 독립적이다 -> 요청들끼리는 공통적인 부분이 없고 독립적이다. Request 가 들어오면 Server는 Request 자체를 구분할 수 없다. 즉 매번 들어온 Request는 새로운 Request라고 생각하는 것이다. 하지만 Session을 통해 이 Request를 공통적인 부분을 만들어 묶을 수 있다. 처음 요청이 들어오면 Sever는 JSESSIONID쿠키(SessionID)가 없는 경우 새로운 SessionID(중복되지 않는 값) 을 만들어 Response (Set- Cookie)를 통해 브라우저에 발급한다. 여기서 중요한 건 각 브라우저마다 새로운 ID를 만들어준다는 것이다. 한 피시 안에서 브라우저 여러창을 띄어서 요청을 날리면 각 브라..

Spring 2022.12.26

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