이 글은 '면접을 위한 CS 전공지식 노트' 책을 토대로 작성하였습니다. 운영체제는 사용자(애플리케이션)가 컴퓨터(하드웨어)를 쉽게 다루게 해주는 인터페이스이다. 운영체제와 유사하지만 S/W 추가 설치가 안되는 것을 펌웨어라고 한다. 운영체제의 역할 CPU 스케줄링과 프로세스 관리 CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리 메모리 관리 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리 디스크 파일 관리 디스크 파일의 보관 방식 관리 I/O 디바이스 관리 마우스, 키보드 등과 컴퓨터 간에 데이터를 주고 받는 것을 관리 운영체제의 구조 GUI, 시스템콜, 커널, 드라이버 부분을 운영체제라고 칭한다. GUI 대신 CUI만 있는 리눅스 서버도 존재한..
https://www.acmicpc.net/problem/15926 15926번: 현욱은 괄호왕이야!! 첫 번째 입출력에서, 맨 처음 위치부터 4개를 잘라낸 (())가 가장 긴 올바른 괄호 문자열이다. 두 번째 입출력에서, 6번째 위치부터 8개를 잘라낸 ()((()))가 가장 긴 올바른 괄호 문자열이다. www.acmicpc.net 문제풀이 올바른 괄호의 인덱스를 저장하는 배열의 카운트 값 구하기 코드 #include using namespace std; int n, ret, cnt, a[200001]; stack stk; string s; int main(){ cin >> n >> s; for(int i=0;i
https://www.acmicpc.net/problem/15353 15353번: 큰 수 A+B (2) C++17, C11, C99, C++98, C++11, C++14, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net 문제풀이 long long 보다 큰 수가 들어오므로 string 이용 작은 자릿수부터 계산해서 string에 붙이고 계산 끝나면 뒤집기 코드 #include using namespace std; string a, b, ret; int sum =0; int main(){ cin >> a >> b; while(a.size() || b.size()||sum){ i..
https://www.acmicpc.net/problem/14405 14405번: 피카츄 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문 www.acmicpc.net 문제풀이 pi, ka, chu 확인하며 다른 문자열 있으면 flag 변환 코드 #include using namespace std; string s, j; bool flag = true; int main(){ cin >> s; for(int i=0;i
스프링 시큐리티는 스프링 기반의 애플리케이션에서 인증과 권한을 통해 접근을 필터로 제어하는 프레임워크로 개발자가 보안 관련 로직을 일일히 작성하지 않아도 된다는 장점이 있다. 인증, 인가? 인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정 인가(Authorization) : 해당 사용자가 요청하는 자원을 실행할 수 있는 권한이 있는가 확인하는 과정 인증을 로그인을, 인가는 로그인이 필요한 서비스에 접근하는 것이라고 보면 된다. Spring Security에서는 인증, 인가를 위해 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용한다. Principal(접근 주체) : 보호받는 리소스에 접근하는 대상 Crede..
HTTP프로토콜은 무상태 프로토콜로 이전과 이후의 통신상태와는 독립적으로 사용된다. 하지만 무상태 프로토콜을 이용하지만 로그인 유지 같은 사용자의 상태를 포함해야하거나 인가가 필요한 상황에서는 세션을 사용하거나 토큰을 HTTP Request Header 내에 넣어 사용한다. 위치 둘 다 인증(로그인)시에 생성되고 중요한 것은 저장이 되는 위치이다. 세션 로그인 성공 시에 해당 유저의 세션을 서버에서 저장하고, 클라이언트에게는 세션id를 넘겨준다. 이후에 로그인이 필요한 서비스에 접근할 때(인가)는 HTTP Request의 헤더에 세션 id를 추가해서 보내고, 서버는 관리중인 세션중에 넘겨받은 세션id와 일치하는 세션이 있다면 세션의 Role을 확인하고 접근을 허가한다. 토큰 로그인 성공 시에 서버는 해당..
MVC? MVC(Model - View - Controller)는 소프트웨어 공학에서 사용되는 디자인패턴이고, 스프링에서도 이를 웹 모듈로 지원한다. Model 모델은 애플리케이션의 정보나 데이터 등 뷰가 필요한 데이터를 담는다. View 뷰는 사용자에게 보여지는 화면을 모델의 데이터를 사용해 렌더링한다. Controller 컨트롤러는 요청을 위임해서 비즈니스 로직과 데이터를 모델에 담아 뷰로 넘겨준다. 뷰와 모델은 서로는 모르지만 양쪽을 둘다 아는 컨트롤러는 통해 소통하며, 데이터와 비즈니스 로직 사이의 동작을 관리하고, View 와 Model은 서로 직접 소통이 아닌 Controller를 통해 소통한다. Spring Web MVC 구조 DispatcherServlet? Client에서 WAS를 통해 ..
엔티티 @Entity가 붙은 클래스는 JPA가 관리하고, DB에서 테이블과 맵핑이 될 클래스 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public Member(String name) { this.name = name; } } JPA가 엔티티 생성 시에 기본생성자를 사용하기에 필수 지연로딩을 위한 프록시 객체 생성 시에 상속을 통해 만들어서 final Class, private 생성자는 사용 불가 영속성 컨텍스트 영속성 컨텍..