Java의 스레드(Thread)
·
Language/Java
Java의 스레드(Thread)스레드(Thread)는 Java 프로그램에서 병렬 처리를 수행하기 위한 경량 프로세스이다.Java는 멀티 스레딩을 지원하여 동시에 여러 작업을 수행할 수 있게 한다.이는 CPU 활용도를 높이고, 응답성을 향상시키는데 유용하다.일반적인 자바 애플리케이션은 하나의 메인 스레드로 시작하지만, 여러 작업을 동시에 처리하기 위해서는 추가적인 스레드가 필요하다. 특징경량 프로세스스레드 프로세스 내에서 실행되며, 동일한 메모리 공간을 공유한다.따라서 스레드 간 통신이 효율적이다. 동시성여러 스레드가 동시에 실행되면서 멀티태스킹을 가능하게 한다.상호작용스레드는 동일한 메모리 공간으로 공유하므로, 서로 데이터를 주고받을 수 있다. 운영체제 지원Java 스레드는 운영체제의 스레드 관리 기능을..
Storage(2)- Naver Cloud의 Storage 서비스 (Object Storage, Archive Storage, Nas)
·
Devops/Naver Cloud
모든 자료는 온라인으로 제공되는 Naver Cloud의 공인교육과정을 참고하였으며,Naver Cloud Professional 자격증을 준비하시는 분들께 조금이나마 도움이 될까하여 정리해두었던 내용을 공유합니다.2023년에 작성된 내용이며, VPC Platform 기반의 강의 내용을 정리한 것이니 참고 바랍니다. Object Storage 인터넷상에 원하는 데이터를 저장하고 사용할 수 있도록 구축된 object storage 객체 기반→ 오브젝트 스토리지에 저장된 파일이나 데이터들은 하나의 오브젝트라고 표현. 무제한 파일 저장 스토리지. 용량 제한 X 콘솔, RESTful API, SDK 등의 다양한 방법으로 오브젝트들을 관리하고, 저장된 파일은 각 파일마다 고유한 접근 UR..
[프로그래머스/level 2] 피로도 - 87946
·
코딩 테스트 정복기/프로그래머스
[level 2] 피로도 - 87946문제 링크구분코딩테스트 연습 > 완전탐색문제 설명XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.이 게임에는 하루에 ..
Storage(1) - File System
·
Devops/Naver Cloud
모든 자료는 온라인으로 제공되는 Naver Cloud의 공인교육과정을 참고하였으며,Naver Cloud Professional 자격증을 준비하시는 분들께 조금이나마 도움이 될까하여 정리해두었던 내용을 공유합니다.2023년에 작성된 내용이며, VPC Platform 기반의 강의 내용을 정리한 것이니 참고 바랍니다.   file system ?OS에서 보조 기억 장치에 저장되는 파일을 관리하는 시스템의 통칭으로 파일을 저장할 클러스터를 관리하고 파일명에 대한 규칙, 데이터의 저장과 검색을 관장한다.데이터를 저장하기 위해 클러스터라는 저장공간 단위를 만들고 클러스터에 데이터를 저장  file system 관리 방식연속 할당 방식파일의 시작 위치와 크기를 가지고 데이터를 저장하는 방식고전적인 방식이며 단순하지만..
Error & Exception
·
Language/Java
Error 와 Exception은 모두 프로그램 실행 중 발생하는 문제를 나타낸다.하지만 그 성격과 처리 방식이 다르기 때문이 이 둘에 대해 바르게 이해하고 있는 것이 중요하다.   ErrorError는 JVM에서 발생하는 심각한 문제를 나타내며, 개발자가 직접 처리할 수 없는 경우가 많다.메모리 부족, 스택 오버플로우 등 시스템 수준의 오류를 포함한다.  Error 사용 예시)try { // 어떤 코드} catch (OutOfMemoryError e) { // 일반적으로 Error는 처리하지 않는다 System.err.println("Fatal error: " + e.getMessage()); System.exit(1); // 프로그램 종료} 보통, 복구할 수 없는 심각한 문제를 ..
[코딩테스트 합격자 되기(Java)] 문제 50. 계수정렬 구현하기★
·
코딩 테스트 정복기/기타
문제인자로 받은 문자열s를 계수정렬로 정렬하여 반환하는 solution() 함수를 구현하세요. 제약조건• string `s`의 길이는 1 이상 10,000 이하입니다. • `s`는 알파벳 소문자로 이루어져 있습니다.  입출력 예sreturnhelloehlloalgorithmaghilmort  풀이 & 코드계수 정렬 또는 카운팅 소트(counting sort):컴퓨터 과학에서 정렬 알고리즘의 하나로서, 작은 양의 정수들인 키에 따라 객체를 수집하는 것.쉽게 말하자면, 정렬된 어떠한 키에따라 빈도를 저장하는 정렬 알고리즘이다. 시간복잡도는 `O(n)`때문에 키가되는 숫자를 알고있어야 하고, 키의 범위가 너무 크지 않아야한다. 위 문제에서는 a~z를 키로하고, String s에 나오는 문자의 빈도를 계산하면 ..
가비지 컬렉션 (GC; Garbage Collection)
·
Language/Java
Garbage Collection (GC)GC는 JVM에서 메모리 관리를 자동화하는 기능이다.주요 목적은 다음과 같다.메모리 관리 자동화사용하지 않는 객체의 메모리를 자동으로 해제하여 메모리 누수를 방지한다.개발자의 메모리 관리 부담을 줄일 수 있다.안정성 향상잘못된 메모리 해제, 이중 해제 등 메모리 관리와 관련된 버그를 줄일 수 있다.메모리 최적화GC를 통해 메모리를 사용을 최적화하고 메모리 공간을 효율적으로 활용한다.     Heap 메모리 구조 (Young Generation과 Old Generation)GC는 주로 Heap 영역을 대상으로 동작하며, Heap은 Young Generation과 Old Generation으로 나뉜다.Young GenerationEden : 새로 생성된 객체가 할당되..
[백준/Gold V] LCS - 9251
·
코딩 테스트 정복기/백준
[Gold V] LCS - 9251문제 링크분류다이나믹 프로그래밍, 문자열문제 설명LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 풀이 및 코드풀이는 아래에 LCS 알고리즘과 함께 정리해두었습니다.[Computer Science/Algorithm] - 최장 공통 부분 수열 (LCS; Longest common subsequ..
최장 공통 부분 수열 (LCS; Longest common subsequence problem) - DP 해결법
·
Computer Science/Algorithm
최장 공통 부분 수열 (LCS; Longest common subsequence problem)부분 수열(subsequence)은 시퀀스의 원소를 순서를 유지한 채 몇 개를 골라낸 것을 말한다.최장 공통 부분 수열은 두 시퀀스(문자열 또는 배열)간 공통된 부분 수열 중 가장 긴 것을 찾아내는 문제이다. 예시) 문자열 `ABCBDAB`와 `BDCABA`의 LCS는 `BCBA`이다. 보통 LCS 문제를 해결하기 위해 주로 동적 계획법(DP;Dynamic Programming)을 사용한다.이 글에서도 DP를 이용한 LCS 알고리즘을 설명하고자 한다.  LCS 길이 구하기동작 원리동적 계획법은 문제를 작은 부분 문제로 나누고 그 해를 이용해서 전체 문제를 해결하는 방식이다.때문에 문제 정의와 점화식, 초기 조건..
Inheritance와 Composition (클래스 간의 관계)
·
Language/Java
Inheritance정의Inheritance(상속)은 객체지향 프로그래밍에서 상위 클래스(부모)의 속성과 메서드를 하위 클래스(자식)가 물려받는 개념이다.`is-a`관계를 나타낸다.  장단점장점재사용성부모 클래스의 기능을 자식 클래스에서 재사용 할 수 있다.계층구조클래스 간 상속관계를 통해 계층 구조를형성할 수 있다.다형성(오버라이딩)자식 클래스에서 부모 클래스의 메서드를 오버라이딩(재정의)하여 다형성을 구현할 수 있다.유지보수 용이공통 기능을 상위 클래스에 두고 관리할 수 있어 유지보수가 쉬워진다. 단점 결합도 증가부모 클래스의 기능을 자식 클래스에서 재사용 할 수 있다.유연성 부족자식 클래스는 부모 클래스에 강하게 의존하게 되어 유연성이 떨어진다.다중 상속 불가Java는 다중 상속을 지원하지 않는다...