Computer Science 49

[CS 지식] 동기 - 비동기

* 동기(Synchronous) vs 비동기(Asynchronous)동기(Synchronous)하나의 작업이 끝나야 다음 작업이 실행됨 (순차적 실행)요청을 보내면 응답이 올 때까지 대기단순하지만, 응답 시간이 길면 전체적인 성능 저하 가능비동기(Asynchronous)요청을 보내고 응답을 기다리지 않고 다음 작업을 수행응답이 오면 별도로 처리멀티스레딩을 활용하여 여러 작업을 병렬로 처리 가능 * 동기 코드 예제(Java)public class SyncTest { public static void main(String[] args) { System.out.println("1"); printA(); System.out.println("2"); Syst..

[DB] 트랜잭션

* 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 논리적인 작업의 단위를 의미한다. 여러 작업이 하나의 단일 작업처럼 수행되도록 보장하여 데이터의 일관성과 무결성을 유지하는 역할을 한다. * 트랜잭션의 4가지 특성(ACID)원자성 (Atomicity)모든 작업이 완전히 수행되거나 전혀 수행되지 않아야 함중간에 오류가 발생하면 모든 작업이 롤백(Rollback)예: 송금 시, 돈을 보내는 작업과 받는 작업이 모두 성공하거나 둘 다 취소됨일관성 (Consistency)트랜잭션 전후로 데이터베이스의 상태가 일관되어야 함예: 은행 계좌에서 출금 후에도 총 잔액은 변하지 않음격리성 (Isolation)동시에 수행되는 트랜잭션이 서로 영향을 미치지 않도록 보장예: 두 사용자가 동시에 같은 상품을 구..

Computer Science/DB 2025.02.07

[아키텍처] Publish-Subscribe 패턴

* Publish-Subscribe (Pub-Sub) 패턴이란?Publish-Subscribe(이하 Pub-Sub) 패턴은 발행자(Publisher)와 구독자(Subscriber) 간의 메시지 전달을 위한 비동기 통신 모델이다. 직접적인 연결 없이 중앙 브로커(Message Broker)를 통해 메시지를 주고받는다.  * Pub-Sub의 핵심 요소Publisher(발행자)메시지를 생성하고 특정 토픽(Topic)으로 발행한다.구독자의 존재 여부를 신경 쓰지 않는다.Subscriber(구독자)특정 토픽(Topic)을 구독하고, 해당 토픽의 메시지를 전달받는다.발행자가 누구인지 알 필요가 없다.Message Broker(중앙 브로커)발행자가 보낸 메시지를 구독자에게 전달하는 중개 역할을 한다.대표적인 브로커:..

[Linux] 사용자 분류와 계정 명령어

* 사용자 분류루트 계정 : 모든 권한을 가진 특별한 사용자(UID 값이 0)시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정사용자 계정 : 실제 리눅스 사용자를 위한 계정(관리자에게 권한을 부여받아 사용)→ 리눅스에서는 사용자를 root(관리자)와 일반 사용자로 구분.각각 계정은 흔히 사용하는 ID가 아니라 번호로 부여하는 UID로 관리 * 리눅스 계정과 관련된 명령어들현재 호스트에 로그인 되어 있는 모든 사용자 출력$ users모든 사용자 정보 자세히 출력(터미널 종류, 로그인 시각 등 기본적으로 출력)$ who [options]계정 전체 확인$ cat /etc/passwdroot 암호 설정$ sudo passwd rootroot 로그인# 현재 계정에서 root 권한을 이용하여 명령어를 실행할 ..

[디자인 패턴] 싱글톤 패턴

* 개요 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용한다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 하지만 모듈 간의 의존성이 높아진다는 단점이 있다. * 자바에서의 싱글톤 패턴 class Singleton { private static class singleInstanceHolder { private static final Singleton INSTANCE..

[알고리즘] 프로그래머스 - 기사단원의 무기(java)

https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해..

[알고리즘] 백준 1072번 - 게임(Java)

1072번: 게임 (acmicpc.net) 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 문제 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시작했다. 의심을 피했다고 생각한 형택이는 다시 게임을 켰다. 그 때 형택이는 잠시 코딩을 하는 사이에 자신의 게임 실력이 눈에 띄게 향상된 것을 알았다. 이제 형택이는 앞으로의 모든 게임에서 지지 않는다...

[알고리즘] 백준 9663번 - N-Queen(Java)

9663번: N-Queen (acmicpc.net) 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 예제 입력 1 복사 8 예제 출력 1 복사 92 * 풀이 N-Queen 문제는 가장 대표적인 백트래킹 문제다. 해당 ..

[알고리즘] 백준 9095번 - 1, 2, 3 더하기(Java)

9095번: 1, 2, 3 더하기 (acmicpc.net) 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 ..

[알고리즘] 프로그래머스 - k진수에서 소수 구하기(Java)

코딩테스트 연습 - k진수에서 소수 개수 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수..