본문 바로가기

전체 글119

프로그래머스 LV2 이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두번째로 풀게된 레벨2 문제이다. 비교적 난이도가 쉬운편으로 정해진 시간내에 풀 수 있었다. 1. 0을 제거한다. 2. 2진변환을 시도한다 3. 값이 1이 될때까지 계속 반복한다. //0의 개수를 센다. private int countZeros(String s){ int zeros = 0; for(char c : s.toCharArray()){ if(c=='0') zeros++; } return .. 2023. 7. 10.
TIL-21 스프링 특강 5회차 개념 0703 인증 : 특정 유저가 시스템에 사용할 수 있는 사람인지 아닌지 판별 인가 : 권한, 내가 Admin 권한이 필요하지만 로그인한 경우 일반유저라면 인증은 됐지만 Admin 인가는 되지 않은 것. HTTP 프로토콜 : 연속성이 없다, 비연결성, 상태가 없다, 쿠키 : 클라이언트에 저장 세션 : 서버에 저장 서버 확장성 때문에 클라이언트에 인증정보 저장을 많이 한다. 서버가 관리하는 방식이 그렇게 크지 않다면 쿠키인증을 할 필요없이 세션방식을 선택하면 된다. Json Web Token(JWT) : 인증이 필요한 정보를 JSON 형태로 관리, 암호화 시킨것, 토큰방식의 인증방식 장점 : 서버측 부하 낮춤, Client, Server가 다른 도메인을 사용할 때 단점 : 구현의 복잡도 증가, JWT에 담은 내용이 .. 2023. 7. 3.
WIL-6 7주차 WIL 시큐리티 인증과정 1. UsernamePasswordAuthenticationToken객체를 생성합니다. 2. AuthenticationManager(인증관리자)에게 넘겨 인증을 시도합니다. 3. 인증관리자는 username을 전달하고 UserDetails를 요청합니다. 4. UserDetailsService에서 username을 전달받아 회원DB와 연동해 회원을 조회합니다. UserDetailsImpl을 로드합니다. 5. 인증관리자는 UserDetailsImpl과 UsernamePasswordAuthenticationToken 객체와 비교하여 인증을 수행합니다. 6. 인증이 완료되면 SecurityContextHolder안의 SecurityContext안의 Authentication객체로써 유저 정보를.. 2023. 7. 3.
TIL-20 JPA, Entity, 영속성 컨텍스트, 트랜잭션 ORM : 객체와 데이터베이스를 맵핑해주는 도구 ORM은 반복적이고 번거로운 애플리케이션단에서의 sql작업을 줄여주기위해 등장한 기술입니다. 즉 객체와 DB의 데이터를 직접 맵핑하는데 쉽게 처리를 해줍니다. JPA는 자바 ORM기술의 표준 명세입니다. JPA가 동작하는 부분 애플리케이션 서버와 JDBC 사이에서 동작이 되고 있습니다. JPA를 사용하면 데이터베이스 연결과정을 직접 개발하지 않아도 자동으로 처리를 해줍니다. Hibernate : JPA를 실제로 구현한 Framwork중 사실상 표준이 Hibernate입니다. 스프링부트에서는 기본적으로 이 Hibernate 구현체를 사용하고 있습니다. Entity 이해하기 Entity : JPA에서 관리되고 있는 클래스, 즉 객체를 의미합니다. 데이터베이스의.. 2023. 7. 2.
스파르타 코딩클럽 미니 프로젝트 - 6 LV2 스프링 JWT 시큐리티 로그인 인증 인가 6/28~6/29 https://github.com/yuio7279/spring-lv2 GitHub - yuio7279/spring-lv2 Contribute to yuio7279/spring-lv2 development by creating an account on GitHub. github.com 1. 발생한 이슈 인증이 허가됐어야 할 url이 허가가 안되고 forbidden 에러가 발생했습니다. http.authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() // resources 접근 허용 설정 .r.. 2023. 6. 29.
TIL-19 스프링 특강 3회차 개념 0628 3계층으로 나누는 이유 SRP 단일 책임 원칙으로 인해 컨트롤러는 라우터의 역할, 서비스는 비즈니스로직, 레포지토리는 데이터관련의 역할만 맡는다. 싱글톤패턴 객체를 한개만 생성하여 공유하여 사용해 코드 재사용성을 높인다. 무상태성 스프링에서는 일반적으로 무상태성을 지향한다. DTO를 제외하고 객체를 만드는 행위를 상태를 유지한다라고 표현한다. 서비스단, 컨트롤러단에서 new Bean하여 객체를 생성하는것을 하지 말아야 한다. 재 사용할수 있게끔 해야한다. RepositoryDto,Entity, new Entity()..생성하는것은 Dto만 존재해야한다. 가비지 컬렉션 사용하지않는 객체가 있다면 자연적으로 소멸한다. OCP 확장에는 열려있고 변경에는 닫혀있다. 메모레포지토리가 변경이되더라도 서비스계층은 영.. 2023. 6. 28.