Back-End 45

[Java] Process & Thread 개념

❑ 프로세스(Process)와 쓰레드(Thread) 프로세스와 쓰레드의 개념 및 관계 프로세스는 간단히 말해 '실행 중인 프로그램(Program)'이다 쓰레드는 프로세스를 구성하는 한 가지이자, 작업을 처리하는 일꾼이다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있다. 쓰레드를 프로세스라는 공장에서 작업을 처리하는 일꾼으로 생각하면 이해하기 쉽다. 스레드를 경량화된 프로세스라고도 한다 컴퓨터는 프로세스마다 자원을 분할해서 할당한다. 한 프로세스의 스레드들은 같은 공간(분할된 자원)에서 진행된다. 각 스레드는 Stack 영역만 독립적으로 갖고 그 외 부모 프로세스의 자원을 공유한다. 그렇기 때문에 Context Switching처럼 하나의 프로세스를 다 ..

Back-End/Java 2022.02.21

[Java] Java에서 외부 jar 실행 후 출력되는 결과 가져오기

외부 jar를 실행할 때 실행한 jar에서 Console에 출력하는 결과를 가져와야 할 때가 있다. Process 객체가 제공하는 InputStream을 이용해 해당 결과를출력할 수 있다. Code public class MyProcessTest { public static void main(String[] args) { try { Runtime r = Runtime.getRuntime(); Process p = r.exec("java -jar TestJar.jar"); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); while (true) { String s = b..

Back-End/Java 2022.02.15

[Java] 외부 jar 실행 후 pid(process id) 가져오기(Java 8)

In Java9 java 9 버전부터 Process Class가 pid 라는 메서드를 제공하므로 쉽게 얻을 수 있다 pid public long pid​() Returns the native process ID of the process. The native process ID is an identification number that the operating system assigns to the process. Implementation Requirements: The implementation of this method returns the process id as: toHandle().pid(). Returns: the native process id of the process Throws: Un..

Back-End/Java 2022.02.11

[Kafka] Kafka Broker 설정(server.properties) 꼼꼼히 들여다보기

0. server.properties 원본더보기...############################# Server Basics ############################## The id of the broker. This must be set to a unique integer for each broker.broker.id=0############################# Socket Server Settings ############################## The address the socket server listens on. It will get the value returned from# java.net.InetAddress.getCanonicalHostName() i..

Back-End/Kafka 2022.02.04

[Spring] Annotation을 이용한 DI (2) @AutoWired와 @Qualifier

❑ @Autowired 의존성 주입 규칙1: Type Client 객체: Car package com.test.ui; @Component // @Component("carBean") // id를 직접 입력할 때 public class Car { private PowerUnit powerUnit; // Dependency @Autowired public Car(PowerUnit powerUnit) { this.powerUnit = powerUnit; // 생성자를 통한 외부 주입(Injection) } } 의존 객체: ElectricMotor @Component // @Component("electricMotorBean") // id를 직접 명시 할때 public class ElectricMotor imp..

Back-End/Spring 2022.02.02

[React, Spring] 서버에 MultipartFile 업로드(Axios POST 사용)

[Front-End Side] Axios POST를 이용해 File 업로드 요청 1. 파일을 주고받을 때는 Multipart/form-data 타입을 이용한다. 1.1. HTTP Headers에 타입 추가 아래와 같이 headers에 'multipart/form-data'를 추가한다. axios({ ... headers: { 'Content-Type': 'multipart/form-data', }, }); 1.2. JavaScript의 FormData 객체를 생성해 데이터로 전달한다. FormData 인터페이스는 Key/Value 쌍으로 데이터를 쉽게 생성/삭제할 수 있는 방법을 제공한다. ★중요★ 하나의 Key에 Value를 'List 형태'로 여러 개를 보내고 싶을땐 동일한 Key에다 계속 appen..

Back-End/Spring 2022.01.26

[Spring] Annotation을 이용한 DI (1) @Component, @AutoWired

❑ @Component, @Autowired를 이용한 DI 최근에는 Spring Bean Configuration(DI 지시서)를 xml로 작성하는 경우는 거의 없다. 본 포스팅에서는 @Component, @Autowired 등 어노테이션을 각 객체에 직접 이용해 의존성 주입(DI) 하는 방법을 알아본다. 참고로, java class 형식으로 Spring Bean Configuration을 작성해 의존 관계를 정의할 수도 있다. 해당 내용은 추후 포스팅할 예정이다. 1) 어노테이션(Annotation)을 이용할 때의 장점 어노테이션을 사용하면 xml을 변경하지 않고 @Component, @Autowired, @Qualifier 등의 어노테이션만을 추가해서 DI를 바꿔줄 수 있다. 즉, 소스코드도 변경이 ..

Back-End/Spring 2022.01.17

[Nginx] React 배포시 Reverse-Proxy 설정 방법

Reverse-Proxy란? Proxy는 Client를 숨기고, Reverse-Proxy는 Server를 숨기는 것 Proxy란 대리자를 의미한다. 일반적으로 Proxy는 Server로부터 Clinet를 숨겨 정보를 알 수 없도록(그림1) 하는 역할이다. Reverse-Proxy는 그 반대다. Client로부터 Server를 숨겨주는 것(그림2)이다. Nginx 에서 React 배포시 Reverse-Proxy 설정 방법 React는 SPA(Single Page Application)이므로 Build 결과로 생성되는 html은 index.html 하나 뿐이다. 따라서 Nginx는 정적 페이지인 index.html만 응답하고, 그 외 데이터 요청은 API 서버에게 한다. 1) 최초 웹페이지 도메인 진입 (h..

Back-End/Server 2022.01.09

[WebServer] Nginx 설치 및 구동 (EC2 Amazon Linux2 버전)

Nginx EC2 Amazon Linux2 버전 설치, 구동, 종료 설치 1. 설치 버전 확인 ❑ 중요 ❑ Amazon Linux2에선 Amazon Linux1과 달리 yum을 통한 설치(yum install nginx)를 지원하지 않는다. amazon-linux-extras를 통해 설치할 수 있다. amazon-linux-extras 명령어를 통해 설치 가능한 패키지를 확인한다 amazon-linux-extras list | grep nginx 아래와 같이 설치가능한 nginx를 볼 수 있다 2. 설치 sudo amazon-linux-extras install -y nginx1 3. 설치 확인 nginx -v 구동 1. 구동 sudo service nginx start 2. 구동 확인 EC2 인스턴스의..

Back-End/Server 2022.01.08

[Nginx] Nginx 환경설정

nginx 환경 설정 상당히 설명이 잘 된 포스팅이 있어 해당 포스팅을 먼저 소개하고, 추가로 남기고 싶은 내용을 적었습니다. https://icarus8050.tistory.com/57 [Nginx] Nginx 이해하기 Nginx? Nginx는 간단하게 말씀드리자면 경량 웹 서버입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 icarus8050.tistory.com index 페이지 설정 (웹 페이지의 시작) root: index 페이지가 위치한 디렉토리를 의미. 즉, /html 에 있다는 뜻 index: index 페이지가 될 html 파일명을 의미 종합하면 http://웹서..

Back-End/Server 2022.01.06

[Nginx] Nginx 설치 및 구동 (Mac OS 버전)

Nginx Mac OS 버전 설치, 구동, 종료 설치 터미널 실행 brew install nginx 입력 (최신 버전 설치) brew info nginx: nginx 설치 유무 및 버전 확인 brew search nginx: 설치 가능한 nginx 버전 확인 ★ 왜인지 nginx는 설치 가능한 버전이 나열되지 않는다. brew search node 와 비교하면 알 수 있다. brew install nginx@버전: 원하는 버전의 nginx 설치 (나온다면) 설치 결과 Docroot is: /usr/local/var/www ★ index.html의 위치 디렉토리 경로(root documnet의 경로) The default port has been set in /usr/local/etc/nginx/nginx..

Back-End/Server 2022.01.04

[AWS] EC2 Java8 설치, Timezone 변경, Hostname 변경

EC2에 Java8 설치 Java 8설치 설치 가능한 openjdk 버전 확인 sudo yum list | grep jdk 여러 가지가 나오는데, Java8을 사용할 것이므로 java-1.8.0-openjdk-devel.x86_64 버전을 설치한다 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 java, javac 버전 확인 java -version javac -version [참고] 주요 설치 버전인 아래 세 가지에 대한 설명 java-1.8.0-openjdk.x86_64 is the package containing the JRE java-1.8.0-openjdk-devel contains the development stuff (basically th..

Back-End/Server 2022.01.03

[Nginx] Nginx 설치 및 구동 (Windows 버전)

Windows 버전은 불완전 버전이다(2022.1.1 기준) Version of nginx for Windows uses the native Win32 API (not the Cygwin emulation layer). Only the select() and poll() (1.15.9) connection processing methods are currently used, so high performance and scalability should not be expected. Due to this and some other known issues version of nginx for Windows is considered to be a beta version. At this time, it provi..

Back-End/Server 2022.01.02

SSH의 개념 및 키 생성 방법(Mac OS)

❑ SSH란 시큐어 셸(Secure SHell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다. SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다. *출처: 위키피디아 물리적으로 다른 PC에 인터넷으로 접속해 원격으로 제어하는 원격제어를 할 때(=원격 제어 프로그램) SSH를 사용한다. Server PC에 접속하는 것도 원격제어이고, 팀뷰어 같은 소프트웨어도 원격제어 프로그램이다. 유닉스 ..

Back-End/Server 2021.12.27