본문 바로가기

개발

(65)
Spring Security - configure, WebSecurityConfigurerAdapter를 사용하여 권한 체크 Spring boot 에서 configure란 "스프링이 돌아가는 설정을 관리하는 객체" 라고한다. 다시 말하면 스프링이 기본으로 돌아가는 기본 설정을 configure 어노테이션을 붙혀 우리가 관리할 수 있다는 말이다. 이는 Bean과는 조금 다른 의미인데, Bean은 Ioc (제어의 역전)에 개발자가 직접 클래스를 삽입하여 사용할 수 있는 것이라면 configure는 아에 규칙을 바꿔버릴 수 있다. 스프링부트에서 로그인 기능을 위해 WebSecurityConfigurerAdapter @EnableWebSecurity 두가지를 사용할 수 있다. 먼저 아래 어노테이션은 시큐리티 필터가 스프링 필터 체인에 등록이된다. 이를 통해 기본적인 스프링 시큐리티 설정이 실행되고 위의 클래스를 상속받으면 여러가지 스..
React - 화면의 변화감지, 배열(map, filter, slice, concat, spread 연산자) 만약 화면의 알림 표시가 왔다고 하자. 그렇다면 화면의 알림표시를 위해 렌더링을 다시해야 할 것이다. 알림 하나 때문에 화면을 전부 다시 그리는 것(렌더링)은 비효율적이다. 리액트 엔진은 컴포넌트를 통해 이를 해결한다. 최상위 렌더링이 Return A 일 때, A { 파란색 return B } 여기서 색을 변화시켰다고 하자 A { 빨간색 return B } 여기서 return A 를 할 경우 B는 어쩔 수 없이 바뀐것이 없어도 다시 렌더링될 것이다. 리엑트는 여기서 B를 검사하여 변화가 있으면 다시 그리고 변화없을 경우 그리지 않는다. 여기서 연산은 렌더링은 안되지만 연산은 된다. 연산을 위해 필요한 것이 바로 불변함수이다. 위는 얕은 복사이다. 즉, b는 새로운 자신의 주소를 갖고 있는 것이 아닌 a를..
Java - 문자열 자르기, 문자열 교체, 문자열 카피 1. 문자열 자르기 split : 문자열을 기준에 따라 자른다. 원본 문자열은 바뀌지 않는다. 새롭게 문자열 배열을 구성해야한다. String str = "Java is very hard,C++ is very hard"; String[] splitstr = str.split(","); for(String spl : splitstr) System.out.println(spl); subString : 문자열을 범위에 따라 자른다. 원본 문자열은 바뀌지 않는다. 즉 반환형이다. String substr = str.substring(0, 3); System.out.println(substr); 이 함수의 특징은 0~3부터가 아니라 0~2 까지이다. 2. 문자열 확인, 교체 contain : 포함하고있는가 확인...
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++ 문자열 자르기 split / 문자열 <-> 정수 형 변환 C++로 PS를 하다보면 가장 짜증날 때가 문자열을 다룰때일 것이다. 문자열을 파싱할때, 문자열을 정수형으로 변환하거나 역변환할때 자바 파이썬 사용자들은 편한 방법을 사용할 수 있지만 C++ 유저들은 이것 또한 암기를 하고 있어야한다. 1. #include string stream 의 약자이다. 특이하게 cin >> 으로 입력하는 방식과 다르게 > tmp) { STR.push_back(tmp); } for (auto a : STR) cout tmp) { STR.push_back(tmp); } cout
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