본문 바로가기

Programming138

@Transactional 도대체 언제 쓰고 언제 안써야해? 알아보게된 이유수정을 하는 로직이 있다면 무조건 Transactional을 붙여야하는가?언제 Transactional을 붙여야하는건지Transactional에 대한 이해 부족 @Transactional이란?spring에서 메서드의 원자성을 보장하기 위해 정의된 annotation interface입니다.Spring으로 원자성을 보장하기 위해서는 persistence layer를 구성하여 수행하는데요, 이는 보통 DB 연결로 수행 하기 때문에 구현체로 DB 관련 TransactionManager를 많이 사용하게 됩니다.하지만 @Transactional은 DB에 한정되서 사용하는 것이 아니라 기능 동작에 관한 원자성을 보장하는 interface입니다. 하지만 Spring은 데이터 저장소가 아니라서 어떤 솔루.. 2025. 2. 26.
로드밸런싱 알고리즘과 SPOF에 의한 DNS 로드밸런싱 개념로드 밸런서 (Switch/LB)이름 그대로, 사용자의 요청을 서버에 분배하는 역할을 한다.서버에 가해지는 트래픽을 여러 대의 서버에 고르고 분배하서, 특정 서버의 부하를 막아준다.짚고 넘어갈것 💡DNS에서 알려주는 IP주소는 최종 목적지 서버의 IP 주소야? 아니면 로드밸런서의 IP 주소야? 🗣️ 일반적인 대규모 서비스에서는 로드밸런서의 IP 주소를 가리키고 있다. ⇒ 이후 로드밸런서가 적합한 최종 목적지 서버로 요청을 전달한다. 로드밸런싱의 이점로드 밸런싱은 여러 서버나 컴퓨터 자원에 작업을 고르게 분산하는 기술이다.로드밸런싱으로 인해 아래와 같은 이점을 얻을 수 있다.가용성로드 밸런서는 서버 문제를 자동으로 감지하고 클라이언트 트래픽을 사용 가능한 서버로 리다이렉션하여 시스템의 내결함성을 높.. 2025. 2. 11.
[운영체제] ThreadPool /Blocking Queue의 종류들은 각각 언제 사용할까 기본 개념프로세스실행중인 프로그램, 메모리에 적재되어 있음, 메모리 공유X쓰레드 (Thread)프로세스 내에서 실행되는 단위이며, CPU의 실행단위같은 프로세스내에서 메모리 공간을 공유하며 작업을 병렬로 수행가능쓰레드 풀이란동시에 실행되는 작업(쓰레드)를 관리하는 데 사용되는 기법현재 풀이 corePoolSize보다 많은 수의 스레드들을 가지고 있다면 초과된 스레들은 keep-alive Time시간보다 더 오래 할 일이 없다면 제거된다.쓰레드 풀을 쓰는 이유 & 주의 할 점원인 다중 스레드를 사용하는 경우, 특정 서비스가 실행될 때마다 스레드를 생성하는데 소요되는 시간이 문제가된다.과정 그래서 프로세스를 시작할 때, 아예 일정한 수의 쓰레드들을 미리 풀로 만들어 두는 것이다.결과 새 스레드를 매번 만들기.. 2025. 2. 4.
[프로그래머스] Lv.1 문자열 내 마음대로 정렬하기 - Python 안녕하세요... Python 영업당해서 코테 이제 Python으로 준비 하려고 하는데요,,, 진짜 충격적이게 좋네요 왜 이제 한거죠..? 파이썬 최고 1️⃣ 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 2️⃣ 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다.. 2023. 10. 11.
[프로그래머스] Lv.1 비밀지도 - Java 1️⃣ 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열.. 2023. 9. 26.
[프로그래머스] Lv.1 시저암호 - JAVA 1️⃣ 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 2️⃣ 제한 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 3️⃣ 입출력 예 s n result "AB" 1 "BC" "z" 1 "a" "a B z" 4 "e F d" 🌱문제풀이 class Solution { public Stri.. 2023. 9. 22.