본문 바로가기

Computer Science21

(Java Servlet) foward는 request로 구현 가능하다. RequestDispatcher는 요청이 들어온 것을 담아서 전달하겠다는 의미이다. 기존의 것을 담아 forward한다. HttpServletRequest request.getRequeestDispatcher("경로"); RequestDispatcher foward(); 1. RequestDispatcher 인터페이스의 foward(); forward의 메소드를 가진 것은 RequestDispatcher 인터페이스이다. 인터페이스는 메소드의 명시만 되어 있지 직접적인 코드 구현은 안되어 있기 때문에, 해당 인터페이스의 객체를 얻어올 수 있는 클래스와 함수가 필요하다. 2. HttpServletRequest 인터페이스의 getRequestDispatcher 인터페이스지만 웹에서 요청하면, 해당 요청이 Ht.. 2021. 4. 16.
[REST API 설계] GET 메소드, 다중 필터가 필요한 경우 어떻게 해야 할까? www.slipp.net/questions/384 rest api url 설계시 resource를 가져오는 건데, 다중 필터가 필요한 경우 어떻게 해결하나요? 제목과 같습니다. restful 을 지향하며 api 작업중에 있습니다. 처음 이렇게 작업을 하다보니 자주 부딪히는 문제가 있어 여쭙습니다. 예를 들어 회원목록이라는 resource 를 가져와야 하는 경우가 있 www.slipp.net 이야기 하다가 뭔가 공감가서 가져왔다. 전에 인턴활동을 하면서 RESTful한 API를 설계하려 했었지만, 여러가지 이유로 포기했었다. 그 중 하나가 body에 데이터를 담는 문제였는데, 그 당시에는 무조건 url은 깔끔하게, 데이터는 body에 라는게 머리에 박혀있어서 그런지 GET 메소드들을 전부 POST로 바꿔버.. 2021. 1. 11.
인터럽트(Interrupt) 인터럽트란? 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것이다. 지금 수행 중인 일보다 더 중요한 일(입출력, 우산순위연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야 한다. 외부 인터럽트 → CPU의 하드웨어 신호에 의해 발생 입출력 장치, 타이밍 장치, 전원 등 외부적 요인으로 발생 ex. 전원 이상, 기계 착오, 외부 신호, 입출력 내부 인터럽트 → CPU의 하드웨어 신호에 의해 발생 Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생 ex. 0으로 나누기 발생, 오버플로우, 명령어 잘못 사용(exception) 소프트웨어 인터럽트 → 명령.. 2020. 9. 17.
프로세스 & 스레드 (Process & Thread) 프로세스 : 프로그램을 메모리 상에서 실행중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 프로세스 Process 기본적으로 프로세스마다 최소 1개의 스레드 소유한다. (메인 스레드 포함) 프로그램이 CPU에 의해 실행 → 프로세스가 생성, 메모리에 프로세스 주소 공간이 할당된다. (프로세스는 각각 별도의 주소공간을 독립적으로 할당한다.) Code Segment : 프로그램 명령/코드 자체를 구성하는 메모리 영역이다. Data Segment : 초기화된 데이터/전역변수, 정적변수, 배열 등 Heap Segment : 동적 할당 시 사용된다. (new(), mallock() 등) Stack Segment : 임시 메모리 영역/함수, 지역 변수, 매개 변수, 리턴 값 왜 구역을 나눌까? 최대한 .. 2020. 9. 5.
운영체제(Operating System)란? - 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 컴퓨터 하드웨어를 관리한다. - 운영체제는 시스템의 자원과 동작을 관리하는 시스템 소프트웨어의 일종이다. - 좁은 의미 : 컴퓨터 전원을 켠 뒤 부팅이 일어난 이후로 항상 메모리에 상주하는 부분 = 커널 = 운영체제 - 넓은 의미 : 커널을 포함해 주변 시스템을 다루는 유틸리티 운영체제의 종류 Windows 98, Windows10, UNIX, LINUX, MS-DOS 등이 있다. 단일 작업 처리 시스템에는 DOS, 다중 작업 처리 시스템에는 WINDOWS, UNIX, LINUX 등이 사용된다. 주로 WINDOWS는 개인용, UNIX, LINUX는 서버용 운영체제로 사용된다. 운영체제의 목적 처리능력(Throughput) 향상 일정 시간 내에 .. 2020. 9. 3.
브라우저에 URL을 입력하고 일어나는 일들 -개발자 면접 단골 질문- 웹 브라우저에서 보안을 위해 https://tistory.com 주소를 입력하고 엔터를 눌렀다. 그 때부터 페이지가 열릴 때까지 PC에서 일어나는 네트워크 과정을 설명해주세요. 출처 : https://wangin9.tistory.com/entry/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-url-%EC%9E%85%EB%A0%A5-%ED%9B%84-%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94-%EC%9D%BC%EB%93%A4-intro?category=827054 [브라우저에 url 입력 후 일어나는 일들] intro 개발자 면접 단골질문 url 입력 후 일어나는 네트워크 상에서의 전체적인 흐름입니다. 1. 브라우저에서.. 2020. 8. 27.
로드 밸런싱 (Load Balancing) 로드 밸런싱 둘 이상의 CPU 또는 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것이다. - 대용량의 트래픽을 감당하기엔 1대의 서버로는 부족하다. 대응방안? 1) Scale-up : 하드웨어의 성능을 올린다. 하드웨어 향상 비용이 비싸다. 2) Scale-out : 여러대의 서버가 나눠서 일하도록 한다. - Scale-out의 경우, 하드웨어 향상 비용보다 서버 한 대의 추가 비용이 더 저렴하며, 여러 Server 덕분에 무중단 서비스를 제공할 수 있다. → 여러 서버에게 균등하게 트래픽을 분산시켜 주는 것을 로드 밸런싱이라고 한다. - 로드 밸런서(Load Balancer) 분산식 웹 서비스로, 여러 서버에 부하(load)를 나누어 주는 역할을 한다. - 로드 밸런서를 클라이언트와 서버 사이에 두.. 2020. 8. 17.
HTTP & HTTPS HTTP(Hypertext Transfer Protocol) - 인터넷 상에서 클라이언트와 서버가 지원을 주고 받을 때 쓰는 통신 규약이다. - 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다. - HTTP는 텍스트 교환이므로 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다. - 이런 보안 문제를 해결해 주는 프로토콜이 HTTPS이다. HTTPS(Hypertext Transfer Protocol Secure) - 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. - HTTPS는 http 메세지(텍스트)를 암호화 하는 것이다. - HTTPS의 S.. 2020. 8. 17.
암호화 알고리즘 (대칭키 암호 vs 공개키 암호) 암호화 알고리즘 1) 대칭 키 암호(Symmetic-key algorithm) = 비밀키 암호 - 암호화와 복호화에 같은 암호키를 쓰는 알고리즘 (비밀 키 하나만을 가짐) - 하나의 비밀키를 양쪽(Client & Server)가 모두 같이 사용 - 암호화를 하는 측과 복호화를 하는 측이 같은 암호 키를 공유해야 한다. (공개키 암호에서 공개키와 비밀키를 별도로 가지는 것과 구별됨) - 대부분의 대칭 키 암호는 공개키 암호와 비교하여 계산 속도가 빠르다. - 비밀키 하나만 알아내면 암호화된 내용을 해독 가능 (안전하지 X) - 대칭키 기법을 사용하는 암호 알고리즘 방식 : DES, 3-DES, AES, SEED, ARIA, MASK 등 2) 공개 키 암호(public-key cryptography) = 비.. 2020. 8. 17.