일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- docker
- 모래시계출력
- instancenotfoundexception
- wan
- 백준
- 포트포워딩 안될때
- 페이로드
- SpringApplication
- jmx
- 우분투
- 네트워크모델
- 배열복사
- 디비버
- 도커
- Decapsulation
- 도커권한설정
- 브로드캐스트
- ubuntu
- dbeaver
- 포트포워딩
- 리눅스계열
- 배열빈도수
- 오름차순
- 배열최소값최대값
- springboot
- javax.management.instancenotfoundexception: org.springframework.boot:type=admin
- 백준1946
- 유니캐스트
- name=springapplication
- 리눅스환경
- Today
- Total
목록전체 글 (68)
다잘하고싶어

배포 관련된 기본 지식은 아래 포스팅 참고하기 2022.10.04 - [프로젝트/배포] - 배포관련 기본 개념 정리 배포관련 기본 개념 정리 - AWS, VOC, EC2 https://22chaechae.tistory.com/4 AWS, VOC, EC2 AWS = 아마존의 클라우드 서비스 클라우드 서비스 : 컴퓨터가 가상의 공간에 있다고 가정하고 자유롭게 쓰는 것. AWS는 IaaS(Infrastru.. 22chaechae.tistory.com 배포순서 1. AWS 가입 후, 데이터베이스 생성하기 2. 생성한 데이터베이스와 인텔리제이 연결하기(스프링부트 빌드하기) 3. 스프링부트와 mysql 연결하기 (서버키면 가상 컴퓨터와 연결된 db에 우리가 만든 테이블이 생성된다.) 4. 우분투 설치 후 접속해서,..

sessionId : 세션Id, JSESSIONID 의 값-> 예) 34B14F008AA3527C9F8ED620EFD7A4E1 maxInactiveInterval : 세션의 유효 시간, 예) 1800초, (30분) creationTime : 세션 생성일시 lastAccessedTime :세션과연결된사용자가최근에서버에접근한시간,클라이언트에서서버로 sessionId ( JSESSIONID )를 요청한 경우에 갱신된다. isNew : 새로 생성된 세션인지, 아니면 이미 과거에 만들어졌고, 클라이언트에서 서버로 sessionId ( JSESSIONID )를 요청해서 조회된 세션인지 여부 세션 타임아웃 설정 세션은 사용자가 로그아웃을 직접 호출해서 'session.invalidate()'가 호출되는 경우에 삭제되..

이전에 직접 만든 세션에서는 적용하지 않았던 기능 -> 특정 시간 사용하지 않으면 세션만료 HTTP세션에서는 위의 기능을 자동으로 지원한다. 기본개념 서블릿이 기본적으로 제공하는 쿠키는 쿠키 이름이 JSESSIONID 이고, 값은 추정 불가능한 랜덤 값이다. Cookie: JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05 //로그인 성공처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성해서 반환 HttpSession session = request.getSession(); //세션에 로그인 회원정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션의 create 옵션 default --> re..

세션 직접 구현 1. 세션 생성 2. 세션 조회 3. 세션 만료 1. 세션 생성 @Component public class SessionManager { public static final String SESSION_COOKIE_NAME = "mySessionId"; private Map sessionStore = new ConcurrentHashMap(); //동시성 문제가 발생할 수 있을 때에는 무조건 ConcurrentHashMap 사용하기 /** * 세션생성 */ public void createsSession(Object value, HttpServletResponse response) { //session id 생성, 값을 세션에 저장 String sessionId = UUID.randomUU..

세션 동작 방식 이해하기 사용자가 아이디, 비밀번호를 넣으면 서버로 데이터가 넘어온다. 서버는 회원저장소에서 데이터와 일치하는 정보가 있는 지 확인한다. (모두 일치한다면) 서버에 세션 저장소를 만들고, 추정불가능한 랜덤값을 (보통 자바에서 지원하는 uuid를 사용) 생성해서 토큰키로 사용한다.(=세션아이디) 값은 회원객체를 저장한다. 즉 세션아이디를 알면 회원객체를 꺼낼 수 있음. (아래 예시표 참고) sessionId value zz011e8e29zi memberA 이후 서버에서 쿠키를 만들어서 웹브라우저에 보내준다(상태유지를 위해서) 쿠키를 보낼 때, 세션아이디를 넘겨준다. 웹브라우저에서는 쿠키저장소에 임의로 만든 랜덤값을 저장한다. 즉, 클라이언트와 서버는 결국 쿠키로 연결되어야 한다. 여기서 중..

쿠키를 사용하면 보안 상 심각한 문제가 발생할 수 있다. 1. 쿠키값은 임의로 변경될 수 있다. 회원1 과 회원2 로 회원가입 한 후, 회원1로 로그인한다. 이때, application 에서 memberId 의 value값을 임의로 5로 변경하면? 변경 후 새로고침하면? 쿠키값은 서버에서 클라이언트에게 보내주는 값이기 때문에 위변조가 가능하다!! 매우 위험함. 2. 쿠키에 보관된 정보는 훔쳐갈 수 있다. 만약 쿠키에 중요한 개인정보나 신용카드 정보와 같은 것이 들어있다면? 이 정보는 웹브라우저에도 보관되고, 네트워크 요청마다 계속 클라이언트에서 서버로 전달된다. 3. 해커가 쿠키를 한번 훔쳐가면 평생 사용할 수 있다. 악의적인 요청을 계속 시도 가능하다. 대안 쿠키에 중요한 값을 노출하지 않고, 사용자별..

쿠키 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저로 전달함. 로그인폼에서 아이디랑 비밀번호를 입력 후 로그인 버튼을 클릭하면 클라이언트(웹브라우저)에서 서버로 전송된다. 서버에서는 회원저장소 안에 회원정보가 존재하는 지를 확인하고, 정보가 존재하면 로그인 성공시킨다(비밀번호도 맞아야함) 이때, 존재하면 쿠키를 만들어서 웹 브라우저에 전달해준다. 즉, 로그인 성공처리과정에서 쿠키를 만들어서 클라이언트에게 전달해줘야한다는 의미. 웹브라우저는 내부의 쿠키저장소라는 곳에서 쿠키를 들고 있는다. 예를 들어 멤버아이디를 넘겨줬다면,(memberId = 1) 이후 웹브라우저는 다른 페이지에 접근할 경우, 전송할 때 항상 쿠키를 포함해서 전송한다. (memberId = 1) - 로그인 아이디 아니..

로그인 로직 구현 _ LoginService public Member login(String loginId, String password) { Optional findMemberOptional = memberRepository.findByLoginId(loginId); Member member = findMemberOptional.get(); if (member.getPassword().equals(password)) { return member; }else { return null; } } optional.get() 하면 안에 있는게 튀어나옴. 없으면 예외터짐. 위의 코딩을 아래와 같이 간단하게 표현할 수 있음 public Member login(String loginId, String password..

//사용자 로그인 아이디로 찾는 방법 public Optional findByLoginId(String loginId) { List all = findAll(); for (Member m : all) { if (m.getLoginId().equals(loginId)) { //멤버의 로그인 아이디가 파라미터로 넘어온 로그인 아이디 값과 같은지 return Optional.of(m); } } return Optional.empty(); //optional 안에 값이 있을 수도 없을 수도 있음. } 위의 코딩을 람다식을 사용하면 public Optional findByLoginId(String loginId) { return findAll().stream() .filter(m -> m.getLoginId()...
풀이방법 1. 시작하는 칸을 큐에 넣고 방문했다는 표시를 남김 2. 큐에서 값을 꺼내고 그 칸의 상하좌우로 인접한 칸에 대해 3번을 진행한다. 3. 해당 칸을 이전에 방문햇다면 아무것도 하지않고, 처음으로 방문햇다면 방문했다는 표시를 남기고 해당칸을 큐에 삽입 4. 큐가 빌 때까지 2번을 반복한다. -> 모든 칸이 큐에 1번씩 들어가므로 이때의 시간복잡도는 칸이 N개 일때 O(N). -> 만약 행이 r개 이고 열이 c개이면 O(rc). (+)시간복잡도 관련 게시글 https://22chaechae.tistory.com/7 [알고리즘] 빅오표기법(Big-O Notation), 시간복잡도, 공간복잡도 빅오표기법 : 주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법 예1) 6N+5 의 경우, 총 소요시..