전체 글 177

[자바의 정석] CH10 1,2

1.1 날짜와 시간 1.2. Calendar클래스 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다. - get()으로 날짜와 시간 필드 가져오기 - int get(int field) Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 셋팅됨 int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아낸다. int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 달의 마지막날 - Calendar에 정의된 필드 ... Calendar today = Calendar.getInstance(); // Calendar객체를 생성 System.out.p..

자바 스터디 2023.08.13

[자바의정석] CH14 2.6~2.8

1. collect()와 Collectors() collect()는 스트림의 요소들을 컬렉션으로 변환하거나, 요소들을 그룹화, 집계, 문자열로 결합하는 등의 작업을 수행하는데 사용 됨 ‣ collect()는 Collector를 매개변수로 하는 스트림의 최종연산 (map은 중간연산) Object collect(Collector collector) // Collector를 구현한 클래스의 객체를 매개변수로 Object collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) // 잘 안쓰임 ‣ Collector는 수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스 public interface Collector { Suppli..

자바 스터디 2023.08.05

[자바의 정석] CH13.8 쓰레드의 실행제어

20. 쓰레드의 상태 - NEW : 쓰레드가 생성되고 아직 start()가 호출되지 않은 상태 - RUNNABLE : 실행 중 또는 실행 가능한 상태 - BLOCKED : 동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태) - WATING, TIMED_WATING : 쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시정지상태, TIMED_WATING은 일시정지시간이 지정된 경우를 의미 - TERMINATED : 쓰레드의 작업이 종료된 상태 21. 쓰레드의 실행제어 쓰레드의 실행을 제어할 수 있는 메서드가 제공된다. static 메서드 2개는 자기자신에게만 가능하다. 남을 재울 수 없고 자기를 재울 수 있다고 예시 들어줌 22. sleep() 현재 쓰레드..

자바 스터디 2023.07.30

[Spring Boot] AccessToken, RefreshToken을 이용한 로그인 구현

이번에 팀 프로젝트 로그인 구현 방식으로 JWT를 적용해봤습니다 다른 완성도 높은 방식들도 많지만 아직 완벽히 이해하진 못해서 스스로 이해 가능할 정도 수준으로 구현 했습니다😅 package구조 - 개인 패키지 이름 - config - controller - dto - entity - repository - service - jwt Build.Gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'com.donggram' version = '0.0.1-SNAPSHOT' java { sourceComp..

개발 2023.07.22

[자바의 정석] CH 12 (Generics, Enum, Annotation)

지네릭스 - 컴파일시 타입을 체크해 주는 기능 public class GenericTset{ public static void main(String[] args){ // ArrayList list = new ArrayList(); ArrayList list = new ArrayList(); list.add(10); list.add(20); // list.add("30"); list.add(30); //컴파일 처크 // 컴파일 OK, But 실행시 에러발생 // Integer i = (Integer)list.get(2); System.out.println(list); } } 장점 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. RuntimeException을..

자바 스터디 2023.07.20

[자바의 정석] ch11.9 ~ ch.11.11

TreeSet - 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리 - 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음 각 요소(node)가 나무(tree)형태로 연결(LinkedList의 변형) LinkedList는 다음 요소 1개만 연결 TreeNode는 2개의 노드 연결(Tree를 거꾸로 놓은것과 닮아서 Tree라 함) 이진 탐색 트리(binary search tree) - 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장 - 데이터가 많아질 수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가) 위의 예시에서 만약 5를 추가한다고 하면 1. 7과 5를 비교 2. 4와 5를 비교 총 두번을 비교했는데 데이터가 많아질 수록 비교 횟수가 증가할 것임 TreeSe..

자바 스터디 2023.07.12

[Spring Boot] jwt로 로그인, 회원가입 API 구현

이전 게시글에서 간단히 loginDto에 username을 입력하면 token을 발급하는 부분을 구현해봤습니다! https://changha-dev.tistory.com/160 [Spring Boot] Security + jwt로 인증, 인가 구현하기 스프링 시큐리티에서 JWT 토큰 인증 방식을 사용하기 위해서는 다음과 같은 과정을 거칩니다: 사용자 로그인: 클라이언트에서 사용자의 로그인 정보(예: 아이디와 비밀번호)를 서버에 전송합니 changha-dev.tistory.com 이번에는 이어서 회원가입과 로그인 부분을 추가로 구현해보겠습니다. build.gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.13' id 'io.spr..

개발 2023.07.07

[Spring Boot] Security + jwt로 인증, 인가 구현하기

스프링 시큐리티에서 JWT 토큰 인증 방식을 사용하기 위해서는 다음과 같은 과정을 거칩니다: 사용자 로그인: 클라이언트에서 사용자의 로그인 정보(예: 아이디와 비밀번호)를 서버에 전송합니다. 인증: 서버는 전달받은 로그인 정보를 확인하고, 사용자가 유효한지 확인합니다. 이 단계에서는 사용자의 아이디와 비밀번호를 검증하는 등의 인증 과정이 이루어집니다. 토큰 생성: 인증이 성공적으로 이루어지면, 서버는 사용자를 대표하는 JWT 토큰을 생성합니다. 이 토큰에는 사용자의 식별 정보와 필요한 추가 정보가 포함됩니다. 토큰 전달: 서버는 생성된 JWT 토큰을 클라이언트에게 전달합니다. 일반적으로는 HTTP 응답의 헤더나 JSON 응답의 일부로 토큰이 포함됩니다. 토큰 저장: 클라이언트는 받은 토큰을 안전한 곳에 ..

개발 2023.07.06

session, cookie, jwt 관계 및 정리

jwt 로그인 방식을 공부하는 도중에 session에 대해 알게 되었고 jwt 사용할 때 session을 안쓰는 이유에 대해 궁금해서 이 참에 용어 정리하려고 합니다 //SecurityConfig.class 의 SecurityFilterChain 메서드 중... //session 사용하지 않음 .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) SessionCreationPolicy.ALWAYS - 항상 세션 생성 SessionCreationPolicy.IF_REQUIRED - 필요시 생성(기본) SessionCreationPolicy.NEVER - 생성하지 않지만, 기존에 존재하면 사용 SessionCre..

개발 2023.07.01

[자바의 정석] CH 9(Math ~ Objects)

Math 클래스 - 기본적인 수학계산에 쓰이는 메서드로 이루어짐 - 생성자의 접근제어자가 private - 메서드는 모두 static - E(자연로그), PI(원율) 2개의 상수를 정의함 소수점 n번째 자리에서 반올림한 값을 얻기 위해서는 round()를 사용해야 한다. 이 메서드는 항상 소수점 첫째자리에서 반올림을 해서 정수값을 결과로 돌려준다. public void main(String args[]){ double val = 90.7552; System.out.println("round(" + val + ")=" +round(val)); //반올림 val *= 100; System.out.println("round(" + val + ")=" +round(val)); //반올림 System.out.pr..

자바 스터디 2023.06.29