목록
'홈' 729건
-
child_process노드에서 다른 프로그램을 실행하고 싶거나 명령어를 수행하고 싶을 때 사용하는 모듈입니다. 이 모듈을 통해 다른 언어의 코드를 실행하고 결괏값을 받을 수 있습니다. 이름이 child_process(자식 프로세스)인 이유는 현재 노드 프로세스 외에 새로운 프로세스를 띄워서 명령을 수행하고, 노드 프로세스에 결과를 알려주기 때문입니다.exec.jsconst exec = require("child_process").exec;const process = exec("dic");process.stdout.on("data", function (data) { console.log(data.toString());}); // 실행 결과process.stderr.on("data", function (data) { cons..
-
서블릿 응답과 요청 수행 API 기능우선 요청이나 응답과 관련된 API는 모두 javax.servlet.http 패키지에 있습니다.요청과 관련된 API: javax.servlet.http.HttpServletRequest 클래스응답과 관련된 API: javax.servlet.http.HttpServletResponse 클래스클라이언트가 서블릿에 요청을 하면 먼저 톰캣 컨테이너가 받습니다. 그런 다음 사용자의 요청이나 응답에 대한 HttpServletRequest 객체와 HttpServletResponse 객체를 만들고 서블릿의 doGet()이나 doPost() 메서드를 호출하면서 이 객체들을 전달합니다. 톰캣이 사용자의 요청에 대해 정보를 모든 HttpServletRequest 객체의 속성으로 담아 메서드로 전달하므로 각 HttpServl..
-
자바의 입출력 스트림스트림 입출력이란?스트림(Stream)이란 연속적인 데이터의 흐름 혹은 데이터를 전송하는 소프트웨어 모듈을 일컫습니다.자바에서 입출력 스트림은 응용 프로그램과 입출력 장치를 연결하는 소프트웨어 모듈입니다. 입력 스트림은 키보드 장치를 제어하여 사용자의 키 입력을 받아 응용 프로그램에게 전달합니다. 또한, 응용 프로그램은 출력 스트림에 연결하고 출력 스트림에 출력하면, 출력 스트림인 다른 끝단에 연결된 출력 장치르 제어하여 출력을 완성합니다.스트림 입출력 방식에서, 자바 응용 프로그램은 입출력 장치를 직접 제어하는 대신, 입출력 스트림 객체와 연결하여 쉽게 데이터 입출력을 실행합니다. 스트림의 양끝에는 입출력 장치와 자바 응용프로그램이 연결됩니다.자바 응용프로그램은 입력 스트림과 출력 스트림만 연결하고, ..
-
worker_threadsworker_threads.jsconst { Worker, isMainThread, parentPort } = require("worker_threads");if (isMainThread) { // 부모일 때 const worker = new Worker(__filename); worker.on("message", (message) => console.log("from worker", message)); worker.on("exit", () => console.log("worker exit")); worker.postMessage("ping");} else { // 워커일 때 parentPort.on("message", (value) => { console.log("from parent..
-
서블릿 기본 기능 수행 과정클라이언트로부터 요청을 받아 비지니스 로직을 처리하고, 그 결과를 다시 클라이언트에 돌랴주는 과정입니다. ① 클라이언트로부터 요청을 받습니다.② 데이터베이스 연동과 같은 비지니스 로직을 처리합니다.③ 처리된 결과를 클라이언트에 돌려줍니다.
-
제네릭 만들기제네릭 클래스제네릭 클래스를 작성하는 방법은 기존의 클래스 작성 방법과 유사한데, 클래스이름 다음에 일반화된 타입(generic type)의 매개변수를 사이에 추가한다는 차이가 있습니다. 제네릭 클래스 작성타입 매개변수를 T를 가진 제네릭 클래스 MyClass는 다음과 같이 작성합니다.public class MyClass { // 제네릭 클래스 Myclass, 타입 매개변수 T T val; // 변수 val의 타입은 T void set(T a) { val = a; // T 타입의 값 a를 val에 저장 } T get() { return val; // T 타입의 값 val 리턴 }} 제네릭 클래스에 대한 레퍼런스 변수 선언제네릭 클래스의 레퍼런스 변수를 선언할 때 다음과 같이 타입 매개변수에 구체적인..
-
utilutil이라는 이름처럼 각종 편의 기능을 모아둔 모듈이다. 계속해서 API가 추가되고 있으며, 가끔 deprecated되어 사라지는 경우도 있습니다. deprecated란?deprecated는 프로그래밍 용어로, '중요도가 떨어져 더 이상 사용되지 않고 앞으로는 사라지게 될' 것이라는 뜻입니다. util.jsconst util = require("util");const crypto = require("crypto");const dontUseMe = util.deprecate((x, y) => { console.log(x + y);}, "dontUseMe 함수는 deprecated되었으니 더 이상 사용하지 마세요!");dontUseMe(1, 2);const randomBytesPromise = util...
-
애너테이션을 이용한 서블릿 매핑애너테이션을 이용해 서블릿을 매핑하려면 @WebServlet을 이용하면 됩니다. 그리고 애너테이션이 적용되는 클래스는 반드시 HttpServlet 클래스를 상속받아야 합니다. @WebServlet 사용 방법(서블릿 클래스 위에 선언)@WebServlet("/서블릿매핑이름"); 애너테이션을 이용한 서블릿 매핑 예@WebServlet("/third")public class ThirdServlet extends HttpServlet { ...} 애너테이션을 이용한 서블릿 매핑 실습1. sec01.ex01 패키지를 선택하고 마우스 오른쪽 버튼을 클릭한 후 New > Servlet을 선택합니다. 2. 클레스 이름으로 ThirdServlet을 입력하고 Next를 클릭합니다. 3. 우선 기본 URL mappin..
-
LinkedList<E> & Collections 클래스 활용LinkedListLinkedList는 List 인터페이스를 구현한 클래스로서 경로명이 java.util.LinkedList입니다. LinkedList는 요소들을 양방향으로 연결하여 관리한다는 점을 제외하고 Vector, ArrayList와 거의 같습니다. LinkedList는 맨 앞과 맨 뒤를 가리키는 head, tail 레퍼런스를 가지고 있어, 맨 앞이나 맨 뒤, 중간에 요소의 삽입이 가능하며 인덱스를 이용하여 요소에 접근할 수도 있습니다. Collections 클래스 활용java.util 패키지에 포함된 Collections 클래스는 다음과 같이 컬렉션을 다루는 유용한 여러 메소드를 지원합니다.sort() - 컬렉션에 포함된 요소들의 정렬reverse() - 요소를 반대 순으로 정렬max(), mi..
-
crypto다양한 방식의 암호화를 도와주는 모듈입니다. 단방향 알고리즘비밀번호는 보통 단방향 암호화 알고리즘을 사용해서 암호화합니다. 단방향 암호화한 복호화할 수 없는 암호화 방식을 뜻합니다. 복호화는 암호화된 문자열을 원래 문자열로 되돌려 놓는 것을 의미합니다. 즉, 단방향 암호화는 한 번 암호화하면 원래 문자열을 찾을 수 없습니다. 복호화할 수 없으므로 암호화하라고 표현하는 대신 해시 함수라고 부르기도 합니다.단방향 암호화 알고리즘은 주로 해시 기법을 사용합니다. 해시 기법이란 어떠한 문자열을 고정된 길이의 다른 문자열로 바꿔버리는 방식입니다. 노드에서 해시 함수는 다음과 같이 사용합니다. hash.jsconst crypto = require("crypto");console.log( "base64:", c..
-
서블릿 동작 과정클라이언트 1이 요청하면 톰캣은 FirstServlet이 메모리에 로드되어 있는지 확인합니다. 최초의 요청이므로 init() 메소드를 호출하여 FirstServlet 인스턴스를 메모리에 로드합니다. 그럼 다음 doGet()이나 doPost() 메서드를 호출하여 서비스를 합니다.클라이언트 2가 다시 동일한 서블릿을 요청하면 톰캣은 다시 FirstServlet이 메모리에 로드되어 있는지 확인합니다. 이번에는 메모리에 있는 것이 확인되므로 doGet()이나 doPost() 메서드를 호출하여 서비스를 합니다. 톰캣을 실행한 후 브라우저로 요청하여 출력 결과를 확인해 봅시다. 맨 처음 브라우저에서 /first로 요청하면 최초의 요청이므로 FirstServlet 클래스의 init()를 호출해 초기화한 후 메모리에..
-
HashMap<K, V>HashMap 컬렉션은 경로명이 java.util.HashMap이며, '키(key)'와 '값(Value)'의 쌍으로 구성되는 요소를 다룹니다. K는 '키'로 사용할 데이터 타입을, V는 '값'으로 사용할 데이터 타입의 매개변수입니다.해시맵은 내부에 '키'와 '값'을 저장하는 자료 구조를 가지고, 다음과 같이 put(), get() 메소드를 이용하여 요소를 삽입하거나 검색합니다.HashMap h = new HashMap(); // 해시맴 생성h.put("apple", "사과"); // "apple" 키와 "사과" 값의 쌍을 h에 삽입String kor = h.get("apple"); // "apple" 키로 깂 검색, kor는 검색된 값, "사과" put(key, value) 메서드는 '키'와 '값'을 ..