java 93

자료형이란?

자료형이란? 물건을 저장하기 위해 창고를 설계한다고 가정해 보자 그럼 마구잡이로 넣을 수 없으니 정리를 위해서 포장을 해야 한다. 포장을 할 때 사과라는 물건을 저장하는데 창고 2칸에 6개가 딱 맞고 딸기라는 물건을 저장하는데 창고 4칸에 10개가 들어가야 딱 맞게 저장이 된다 그럼 포장에 단위를 알 수 있다. 그럼 이제 창고에 들어올 물건의 양을 알아야 한다. 그래야 그 양에 맞춰서 창고에 칸을 마련해 놓을 수 있기 때문이다. java도 마찬가지다 자바도 프로그램을 시키려면 창고 설계가 필요하다고 생각하면 된다. java에서 포장단위는 8가지 타입으로 이미 정해져 있다. boolean = 1bit(bit는 포장단위) =2에 1승 = 2 = 참 or 거짓 int = 32bit =2에 32승 =42억 9천..

JAVA,객체지향 2021.11.18

AWT 라이브러리 개념 (그림 그리는 라이브러리)

일반적인 window os에서 폴더를 열거나 하면 윈도 창이 나온다. awt라이브러리를 사용하면 JFrame이라는 윈도우 창을 하나 만들 수 있다. 그럼 이 JFrame안에 그림을 그릴수 있게 도화지가 내장돼 있는데 이 도화지를 JPanel이라고 한다. jpanel안에 그림을 그릴 수 있는 것이다. JFrame은 내부적으로 while(반복)이 돌면서 사용자가 jpanel에 그림을 그릴 수 있게 하는데 픽셀 단위에 좌표로 그림을 그릴 수 있다. 그렇기 때문에 이 픽셀의 단위가 촘촘하면 촘촘할수록 해상도가 좋아진다. 수많은 좌표에 점이 찍히면서 전체적인 그림이 완성되는 개념이다. AWT 컴포넌트 예를 들어 버튼을 하나 AWT를 통해 만들었다고 가정을 해 볼 때의 단점을 생각하면 -디자인 애니메이션 구현이 어..

JAVA,객체지향 2021.11.17

JAVA/ 상속과 콤포지션

java에서 extend를 상속이라 표현하고 부모와 자식 관계로 표현하지만 그것은 좀 더 깊은 이해를 하는 대에 있어서 방해될 수 있는 것 같습니다. 이번 포스팅에서 extend를 '확장하다'의 개념으로 접근해서 포스팅해 보겠습니다. 위와 같은 자동차 프로그램을 만든다고 할때 위 그림과 같이 엔진이라는 라이브러리를 import 해서 자동차 프로그램에 사용하는 것을 상속이라 하지 않는다. import는 상태, 행위를 가져와서 사용하는 개념이다. 상속과 import가 다른 점은 상속은 추상화가 가능하고 상태와 행위를 물려 받을 수 있다. 위 두가지 상황을 예를 들어 설명을 하자면 자동차는 엔진을 가져와서 사용해야 한다. 왜냐하면 자동차= 엔진이라고 볼 수 없기 때문이다. 엔진과 자동차는 타입일치가 되지 않는..

JAVA,객체지향 2021.11.11

java/라이브러리 만들기

라이브러리 = 도서관 예를 들어 김치찌개를 만든다고 가정을 해보자 이때 라이브러리가 있으면 김치찌개를 상상해서 만들 필요가 없다. 도서관에 있는 김치찌개 만들기 서적을 보면 되기 때문! 그걸 JAVA에 빛대어 보면 이 김치찌개 만들기 서적을 들고 와서 보는 것이 import가 되는 것이다. 라이브러리 만들기 위와 같은 자바 project를 만들고 위와같은 클래스를 만든다 이 김치찌개 레시피를 라이브러리로 만들어 보자 JAR 위 사진 속 화살표에 JAR file과 Runnable JAR file이 있다 이 둘의 차이점 패키지는 '. java'파일의 모임이다. 이보다 좀 더 큰 개념이 jar이다 jar는 패키지의 모임이다. java 파일을 포맷하는 java achaive(아카이브) 파일이다. 즉 여러 패키지..

JAVA,객체지향 2021.11.09

JAVA/일반변수와 레퍼런스(참조) 변수

변수의 선언과 초기화 - 변수의 선언 : 타입 변수; (ex: int num;) - 변수의 초기화(메모리 할당) : 타입 변수 = 값; (ex: int num = 10); 일반 변수와 레퍼런스 변수 - 일반 변수는 값을 가지고 있다. 컴파일 시점에 크기가 정해져 있다. (ex: int처럼 크기가 정해진 것) - 레퍼런스 변수는 주소값(4바이트)을 가지고 있다. 컴파일 시점에 크기를 알 수 없고 런타임에 알 수 있다. - 주소는 힙메모리 내 주소다. 일반 변수와 달리 주소 값(포인터)을 통해 재차 찾아가야 하므로 액세스가 2번 발생한다. 레퍼런스 변수 예시 - class MyData { int num; String name; } 로 예시 - 변수의 선언 : MyData myData; - 변수의 초기화(메모..

JAVA,객체지향 2021.10.27

메서드 Stack 메모리

기본적인 자료구조 중에 Queue와 Stack이 있다. 쉽게 말하면 일을 처리하는 과정에 큐는 원통처럼 입력과 출력이 각각의 위치에서 이루어지고 스택은 출구가 하나여서 하노이탑에 한 부분처럼 입력과 출력이 한 부분에서 이루어진다. 자바라는 언어는 인간이 이해할수 있는 언어지 엄밀히 따지면 컴퓨터 언어가 아니다.. java파일은 인간이 이해할 수 있는 파일이라는 뜻이다. 그럼 이 .java파일을 JVM을 위해서 해석을 한다(컴퓨터가 이해할 수 있도록) 그렇게. class파일이 만들어지면 이. class파일은 JVM이 받아서 컴퓨터가 일을 처리할 수 있도록 해석을 한다. JVM 일처리 순서 1.. class파일 로드 2. Static 찾기 3. main 메서드 실행 -main 코드 영역이 열린다. (main..

JAVA,객체지향 2021.10.27

SpringbootSecurity/ JWT 서버 구축 최종

저번 포스팅과 연결돼 있습니다. 저번 포스팅에서 JWT을 만들어서 응답을 해주는 것까지 했었는데 response해더에 Authorization키에 벨류에 JWT토큰이 담겨져서 응답된 것을 확인할 수 있었습니다. 그럼 이제 클라이언트가 자신의 개인정보에 접근을 하기 위해서 다시 로그인을 하는 것이 아닌 JWT을 이용해서 해당 개인정보에 접근을 하게 되면 전자서명을 통해서 개인정보에 접근할 수 있게 구현을 하면 된다. 그러기 위해선 jwt필터를 만들어야 한다. 포스트맨으로 테스트를 해보면 해당 필터를 타고 header에 Authorization키의 벨류 값을 확인해 볼 수 있다. 그럼 여기에다가 jwtheader를 넘기면 된다. 그럼 필터를 등록해서 테스트해보자 포스트맨으로테스트하면 잘 나온다 그럼 그럼 이..

SpringbootSecurity 2021.10.05

SpringbootSecurity/JWT토큰만들기

이번 포스팅은 저번 포스팅과 연결돼 있습니다. com.auth0 java-jwt 3.10.2 위 dependency는 JWT토큰을 만들어주는 라이브러리이다. pom.xml에서 설정해 주기!! 어번 포스팅에서 클라이언트가 로그인 요청이 왔을 때 JWT서버에서 해야 하는 설정을 해줬다면 이제 요청이 끝나고 응답을 해줄 때 JWT서버에서 해줘야 할 설정들을 포스팅해보겠습니다. 이전 포스팅에서 attemptAuthentication(요청) 함수가 끝이 나고 successfulAuthentication함수가 순차적으로 실행되는데 successfulAuthentication함수에서 JWT토큰을 만들어서 응답을 해주기 전까지 포스팅을 했습니다. 이번 포스팅에서 응답을 하는 것을 포스팅해보겠습니다. 주석에 주요 내용들..

SpringbootSecurity 2021.10.04

SpringbootSecurity/JWT 사용한 로그인(2)

이번 포스팅은 저번 포스팅과 연결돼 있습니다. 실제 로그인을 해보기전에 테스트를 해보면서 이해도를 올려보자 포스트맨으로 위와같이 요청을 할 때 아래 함수가 실행되는데 이때 request에 담겨있는 데이터가 어떻게 들어오는지 확인하기 위해서 테스트를 해본다. request에 담겨있는 username과 password가 들어온다. 근데 만약에 데이터를 json으로 보내면 어떻게될까? json형식의 데이터가 오는 것을 알 수 있다. 일반적으로 웹 브라우져에서만 로그인 요청이 오지는 않는다. 안드로이드나 자바스크립트로 json데이터를 주고받을 수도 있기 때문에 위 json데이터를 파싱 해보자 위와 같이 해주면 json데이터를 파싱 해주는데 파싱 된 데이터를 user오브젝트에 담았다. 이제 로그인 시도를 하기 위..

SpringbootSecurity 2021.10.01

SpringbootSecurity/JWT임시 토큰 만들어서 테스트

이 포스팅은 저번 포스팅과 이어져 있습니다. 저번 포스팅에서 만들었던 MyFilter1에 다음과 같이 filter를 설정해 줬다 요청이 POST로 들어오면 동작을 하도록 해 주고 포스트맨으로 POST 요청을 해보자 그럼 이제 하나의 가정을 해보자 우리가 "cos"라는 토큰을 만들었다고 가정을하고 이 cos라는 토큰이 넘어오면 인증이 되도록하고 그게 아니면 더 이상 filter를 못 타게 해서 컨트롤러로 진입을 할 수 없도록 만들어 볼 것이다. 위와 같이 잘 동작하는 것을 볼 수 있다. dochain을 타지 못하면 프로세스가 종료되기 때문에 cos라는 토큰이 없으면 프로세스가 종료된다. 그럼 이 filter를 Security가 동작하기 전에 걸어야 가장 먼저 인증을 해낼 수가 있다. 위와 같이 Securi..

SpringbootSecurity 2021.09.28