분류 전체보기 171

[ Java ] - 프로세스와 쓰레드 - 02)

쓰레드의 동기화 방법 HTML 삽입 미리보기할 수 없는 소스 임계 영역으로 설정하려는 부분에 synchronized를 사용하면 되며, 메서드에 적용할 수 도 있고, 특정 영역으로 축소하여 적용할 수 있습니다. 이때 임계 영역을 너무 넓게 설정하는 경우 프로그램의 성능이 저하될 수 있기 때문에 임계 영역을 최소화하는 것이 좋습니다. synchronized가 붙은 메서드가 호출된 후 해당 작업이 종료되기 이전까지 해당 임계 영역에 다른 쓰레드가 접근하는 것을 허용하지 않습니다. 위의 코드를 아래와 같이 수정할 수 있습니다. public class ThreadEx21 { public static void main(String[] args){ Runnable r = new RunnableEx21(); new T..

JAVA 2023.10.17

[ Java ] - 프로세스와 쓰레드 - 01)

[ Java ] - 프로세스와 쓰레드 - 01) 프로세스란? * 프로그램 설치 시 (설치한 프로그램은)하드 디스크에 저장되며, 프로그램을 실행하는 것은 하드디스크에 저장된 프로그램 내용을 메모리로 올리는 것(Loading)을 의미합니다. 이와 같이 실행을 위해 메모리로 올라온 프로그램을 프로세스라고 합니다. 즉 하드 디스크 - 메모리 - CPU 과정을 통해 프로그램이 실행 됩니다. * 멀티 프로세스(Multi-process)란 동일한 프로그램을 여러 개 실행시키는 것을 의미합니다. 프로세스(Process)란 기본적으로는 현재 실행 중인 프로그램을 의미하며, 자바 프로그래밍 관점에서 자세히 설명하면 JVM(=Java Virtual Machine)을 실행하는 하나의 인스턴스로 볼 수 있습니다. 프로그램은 운..

JAVA 2023.10.16

[ Spring boot ] 서버 실행 시 애플리케이션 초기화 로직 실행 코드 구현

서버 실행 시 기본 로직 실행(init)하기 스프링 프레임워크에서 초기화를 위해 제공하는 인터페이스 initializingBean을 사용하였다. 예를 들어 서버에서 기본적으로 관리자 계정을 초기화 설정해두어야 할 필요가 있는 경우 등에 사용할 수 있다. 기본적으로는 아래와 같은 모습으로 사용한다. - 초기화 로직을 담고 있는 클래스는 InitializingBean을 구현한다. - afterPropertiesSet() 메서드를 오버라이드 하여 해당 메서드에 초기화 시킬 로직을 구현하여 준다. - initializingBean은 스프링에서 초기화를 위해 제공하는 인터페이스로, 스프링 컨텍스트에 의해 관리되기 때문에 초기화 하려는 로직을 구현한 클래스도 스프링 컨텍스트에 의해 관리될 수 있도록 @Compone..

JAVA/Spring Boot 2023.08.10

[ Spring Boot ] - 간단 스케줄링 작업하기

@EnableScheduling와 @Schedule를 활용한 스케쥴링 작업 서버 실행 하는 클래스에 @EnableScheduling을 아래와 같이 붙여 준다. 일정 시간대나 또는 일정 시간 마다 실시하려는 작업을 수행할 클래스를 아래와 같이 작성해준다. 해당 클래스에는 @Component를, 실질적으로 작업을 수행하는 메서드에는 @Scheduled(cron="[cron식]")을 붙여준다. 또는 fixedRate를 통해 일정 시간마다 작업이 수행되도록 할 수 있다. 아래의 경우 5초마다 반복하여 'fixed rate 5000------'를 출력한다. Q) @EnableScheduling는? 스프링 프레임워크에서 제공하는 어노테이션으로 @Scheduled가 붙은 메서드인 경우 스케쥴 작업을 활성화하여 준다...

JAVA/Spring Boot 2023.08.09

[ Kafka ] - 카프카란 무엇인가?

카프카 (Kafka)란 무엇인가 흔히 카프카로 불리우는 아파치 카프카는 대용량 실시간 데이터 스트리밍 플랫폼으로, 분산형 메시징 시스템입니다. 카프카는 글로벌 구인/구직 소셜 네트워크 서비스사인 Linkedin에서 기존의 레거시 프로그램 아키텍처가 가지는 앤드투앤드 연결 방식으로 인한 데이터 연동의 복잡성, 시스템 확장의 어려움 등을 극복하기 위해 개발한 오픈소스 소프트웨어입니다. * 링크드인의 기존 앤드투앤드 방식의 데이터 파이프라인 모습 * 이벤트 스트리밍 플랫폼인 카프카를 적용한 이후의 데이터 파이프라인 모습 위의 두 데이터 파이프 라인 모습을 비교해 보면 알 수 있듯이, 기존에 각각의 어플리케이션이 직접 연결되어 복잡한 구조를 띄었던 데이터 구조가, 중앙의 범용 파이프 라인(즉 카프카)을 중심으로..

Kafka 2023.08.04

[ React ] - jest 사용

간편한 테스트 코드 작성을 도와주는 도구이다. 우선은 npm이나 yarn을 이용하여 jest를 설치하여 준다. > npm i jest --save-dev // 타입스크립트로 하는 경우에는 타입도 추가해주어야 한다. > npm i --save-dev @types/jest 기본 코드를 작성하여 준다. 위의 코드를 테스트하기 위해 테스트 파일을 생성하는데, 기본 코드 파일명.test 로 생성한다. .test.로 된 파일은 모두 테스트 대상이 된다. 또는 _ _tests_ _ 로 폴더를 생성하고 하위에 파일을 생성하면, 해당 폴더 하위의 파일이 테스트 대상이 된다. 직접 설정한 파일만 테스트 하고 싶은 경우에는 test 실행을 위한 명령어 입력 시에 경로를 입력해주면 된다.

Javascript/React 2023.07.09

[ Typescript ] - reac-native type 설정

문제) .env 파일의 비밀키 값을 가져와 사용하고 싶은데 타입 에러가 발생 Cannot find module '@env' or its corresponding type declarations. 설정해주어야 할 것 1. types 폴더 생성 및 env.d.ts파일 생성 2. babel.config.json 파일 설정 3. tsconfig.json 파일 설정 1. types 폴더 생성 및 env.d.ts 파일 생성 root폴더 위치에 types 폴더를 생성하여 주고, 해당 폴더의 하위의 env.d.ts 파일을 생성하여 주었다. env.d.ts 파일은 아래와 같다. 위의 코드에 대해 설명하면, @env모듈의 타입을 설정해준 것이라 할 수 있다. .env파일에서 API_KEY를 가져오는데 .env파일의 API..

카테고리 없음 2023.07.02

[ 컴퓨터 구조와 운영 체제 ] - 혼자 공부하는 컴퓨터 구조 + 운영체제 (정보단위, 인코딩...)

0과 1의 세계 - 컴퓨터는 기본적으로 0과 1밖에 이해하지 못한다. 정보 단위 비트(bit) 0과 1을 표현하는, 최소 정보 단위이다. 즉 n비트로 2ⁿ가지의 정보 표현이 가능하다. 1비트(1bit) 1비트(1bit) 1바이트(1byte) 8비트(8bit) 1킬로바이트(1kB) 1,000바이트(1,000byte) 1메가바이트(1MB) 1,000킬로바이트(1,000kB) 1기가바이트(1GB) 1,000메가바이트(1,000MB) 1테라바이트(1TB) 1,000기가바이트(1,000GB) 워드(word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위를 의미한다. 하프 워드 : 워드의 절반 크기 풀 워드 : 워드 크기 더블 워드 : 워드의 두 배 크기 이진법(binary) 0과 1로 수를 표현하는 방법으..

운영체제 2023.06.01