본문 바로가기

Dev

(53)
Java - Primitive Type / Reference Type Primitive type은 우리가 흔하게 알고있는 int, float 등을 뜻한다. Reference type은 자료구조이다. Arruy, class , interface 등이 속한다. 다른 점은 value 자체를 가리키는 것과 달리 레퍼런스는 주소를 가리키는 포인터형식이다. Java 에는 포인터가 없다. 그러나 포인터가 없다는게 사용자 입장에서 없다는거지 Java는 활발하게 사용중이다. 컴퓨터구조적으로 들어가면 벨류는 스택에서 관리된다. 그러나 Reference들은 크기를 가변적으로 할당해줘야하기 때문에 동적 메모리 Heap에 저장된다. 이러한 형태로 포인터값들이 힙의 값을 가리키고 있다. Runtime Data Area : 런타임에 저장되는 데이터들. 컴파일타임에 정해지지 않고 런타임에 정해지기 때..
시퀀스 컨테이너 - list 더블 링크드 리스트가 구현되어있는 라이브러리이다. 그러나 리스트 형태이기 때문에 iterator로 순회해야하고 배열 벡터 처럼 [] 조회는 불가능하다. 삽입 - list.push_back(a) - list.push_front(a) 삭제 - list.remove(a) * 중복된 원소까지 전부 삭제한다. - list.remove(*a) * 여기서 이는 iterater이다. 그 원소만 삭제한다. - pop_front() - pop_back() 탐색 find(list.begin(), list.end(), 원소) 찾으면 그 위치 주소, 아니면 마지막 주소
C++ 연관 컨테이너 set, mutiset set, map은 유사하지만 set은 map보다 작고 모든 삽입, 탐색, 삭제 속도 모두 set이 월등하다. 단, set은 map처럼 막 변수처럼 쓸수는 없고 이 key가 있는지 없는지만 판단 가능하다. 값을 확인하려면 포인터의 접근법을 사용해야하기 때문에 댕글링 포인터나 메모리 누수가 발생할 수 있어 정교한 코딩이 요구된다. 삽입 : insert O(logN) 삭제 : delete O(logN) 탐색 : find O(logN) set은 중복 key를 허용하지 않지만 mutiset은 포함한다, 그리고 set은 자동정렬이 된다.
map의 다양한 사용법 - key, value 순으로 정렬, auto 반복문 기본적인 사용법: 선언 - map test; 삽입 - test.insert(make_pair(key, value)) 제거 - test.erase(key) ex) #include #include #include using namespace std; int main() { map test; test.insert(make_pair(1, 10)); test.insert(make_pair(2, 9)); test.insert(make_pair(3, 8)); test.insert(make_pair(4, 7)); test.insert(make_pair(5, 6)); cout
Spring Boot - 카카오 로그인 인가 받기 스프링 부트에서는 구글과 페이스북 로그인을 도와주는 하위 프레임워크가 있을 정도. 그러나 우리나라에선 카카오 로그인이 더 대표적입니다. 먼저 우리가 자체적으로 만들어놓으면 유저(클라이언트) 우리의 서비스(서버) 데이터베이스 로그인 요청 이렇게 로그인 요청이 들어오면 데이터 베이스에 맞는 정보가 있는 지 확인하고 세션을 만듭니다. 그러나 카카오 로그인 api 서비스를 사용한다면 관계는 이렇게 바뀝니다. 유저(리소스 오더) 우리의 서비스(클라이언트) 카카오 API 서버 카카오 자원 서버 그렇다면 유저가 로그인시 이렇게 보일 겁니다. 여기서 사용자는 일반 로그인과 카카오 로그인 중 하나를 선택하게 될것이고 일반 로그인을 선택하면 이전에 만든 스프링 시큐리티로 로그인할 것이고 저 깨진 걸 누르면 카카오 로그인이..
Spring Boot - 로그인 정보 변경, 세션 변경 이전에 보았듯, 스프링 시큐리티는 엄격한 보안 규칙으로 로그인시 몇번의 검증을 합니다. 그렇다면 유저정보를 바꾸면 어떻게 될까요? 개발자가 사용자 정보를 바꾸는 기능을 코딩했다고 가정합시다. ex) 사용자의 사는곳 서울시 동작구 -> 서울시 광진구 변경 후 사용자가 자신의 정보를 클릭하면 사는곳 : 서울시 동작구 이렇게 바뀌지 않았을 겁니다. 바뀐 정보를 보려면 재로그인 해야합니다. 왜일까요? 데이터베이스는 바뀌었지만 세션이 바뀌지 않았기 때문입니다. 지금 스프링 시큐리티는 이전의 정보를 갖고 있는 유저의 정보가 들어간 세션이기 때문이죠. 이때는 강제로 세션을 바꿔야합니다. Authentication authentication = authenticationManager.authenticate( new U..
Spring Boot - 스프링 시큐리티의 로그인 로직 스프링 시큐리티는 이름부터 알 수 있듯 권한, 인증 등 보안의 관련된 스프링의 하위 프레임워크 입니다. 스프링 시큐리티는 비밀번호가 암호화되어 있지 않으면 아에 입구컷 해버리는 매우 깐깐한 녀석인데 그만큼 안전하게 사용자 보안을 지켜준다고 볼 수 있습니다. 스프링 시큐리티는 SecurityContextHorder라는 공간을 만듭니다. 이 공간에는 유저 정보가 들어갈 수 있는데 유저의 정보가 들어간 상태를 "세션" 이라고 합니다. 우리가 로그인시 보이는 화면과 비로그인시 보이는 화면이 다른 경우가 많은데 전부 세션이 유지되고 있냐, 안되어 있냐로 화면을 구분하여 보여주는 것입니다. 먼저 HTTP 통신으로 로그인 요청으로 아이디와 비밀번호가 들어올겁니다. 그럼 스프링 시큐리티가 이 로그인 명령을 가로챕니다...
리눅스 - 자주 쓰는 명령어 포트 상태 : netstat -tnlp mysql 실행 : sudo service mysql start mysql 접속 : sudo /usr/bin/mysql -u root -p 서버 백그라운드에서 계속 스프링 실행 nohup java -jar 파일이름.jar &