전체 글

I’m currently learning Android, ComputerScience, Algorithm and etc....
iOS

[iOS] MVC 패턴

이미 옛날에 Android를 공부할 때 MVC 패턴을 공부한 적이 있지만 그래도 다시금 정리를 해보자 https://superohinsung.tistory.com/64 [Android] MVC 패턴이란? 안드로이드에는 다양한 아키텍처 구조가 존재한다. 오늘은 MVC 패턴에 대해서 공부해보려고 한다. MVC는 안드로이드와 관계없이 프로그래밍 시 가장 널리 사용되는 구조 중 하나이며 간단하게 Mod superohinsung.tistory.com MVC 패턴이란 MVC(Model - View - Controller) 패턴은 소프트웨어 디자인 패턴 중 하나로, 사용자인터페이스, 데이터 및 비즈니스 로직을 구성하는 구성요소를 분리하여 소프트웨어를 개발하는 방법론입니다. MVC패턴에서 모델(Model)은 애플리케이..

Android/Study

[Android] 의존성 주입(Dependency Injection)

의존성 주입이란? 안드로이드에서 의존성 주입(Dependency Injection)은 객체 지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나입니다. 의존성 주입은 객체가 필요로 하는 다른 객체를 직접 생성하는 대신에, 이를 외부에서 전달받는 방식으로 구현됩니다. 이는 객체 간의 결합도(Coupling)를 낮추고, 유지보수와 테스트 용이성을 증가시키는 데 도움이 됩니다. 안드로이드 앱에서 의존성 주입을 사용하면, 앱의 여러 컴포넌트(Activity, Fragment, Service, ViewModel 등)에서 공통적으로 사용되는 객체(예: 데이터베이스, 네트워크 등)를 한 곳에서 관리하고, 이를 각각의 컴포넌트에서 사용할 수 있습니다. 이를 통해 코드의 중복을 줄이고, 유지보수와 테스트 용이성을 ..

BaekJoon

[백준 알고리즘] 1544번 : 사이클 단어 (Java) 문제 풀이

2 초 128 MB 1797 923 720 53.973% 문제 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에 단어 A와 단어 B가 있을 때, 단어 B를 원형으로 써서, 단어 A와 같이 읽을 수 있으면, 두 단어는 같은 단어이다. 따라서, picture와 turepic은 같은 단어다. N개의 단어가 주어졌을 때, 서로 다른 단어가 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 주어진다. 둘째 줄부터 단어가 한 줄에 하나씩 주어진다. 단어는 영어 소문자로만 이루어져 있다. N은 50보다 작거나 같은 자연수이며, 단어의 길이는 최대 5..

Computer Science/Network

[Network] HTTP 란

오늘은 HTTP에 대해서 알아보자 HTTP 란? HTTP (Hypertext Transfer Protocol)는 인터넷에서 데이터를 주고받는 프로토콜 중 하나로, 웹 서버와 클라이언트 간의 통신을 위해 사용됩니다. HTTP는 클라이언트(웹 브라우저)와 서버 간에 요청(request)과 응답(response)을 주고받는 방식으로 동작합니다. 클라이언트는 웹 서버에게 요청을 보내고, 서버는 요청에 대한 응답을 반환합니다. 요청과 응답은 일반적으로 텍스트 형식으로 이루어져 있으며, 이를 HTTP 메시지라고 합니다. HTTP는 주로 웹 페이지를 전송하는 데 사용되지만, 다양한 종류의 데이터를 전송할 수 있습니다. HTTP는 기본적으로 TCP/IP 프로토콜 위에서 동작하며, 80번 포트를 사용합니다. HTTPS는..

Android/Study

[Android] Coroutine(코루틴) 간단 정리

Coroutine에 대해서 알아보자. Coroutine이란? Co(함께, 동시에) + routine(작업들의 집합) Coroutine은 비동적인 작업을 효율적으로 처리하기 위한 기술입니다. 코루틴은 스레드와 마찬가지로 동시성을 다루지만, 스레드와는 달리 코루틴은 하나의 스레드에서 여러 개의 작업을 처리할 수 있습니다. 코루틴은 일반적으로 suspend 함수를 사용하여 구현됩니다. suspend 함수는 실행 중지가 가능한 함수로, 실행이 중지된 후 다시 실행될 수 있습니다. 이를 통해 코루틴은 비동기 작업을 중단하고 다른 작업을 수행한 후 다시 이어서 작업을 진행할 수 있습니다. 코루틴은 비동기 작업을 간결하고 가독성 높은 코드로 작성할 수 있게 해주며, 코루틴 컨텐스트를 이용하여 작업의 스케줄링과 취소를..

iOS

[iOS] Xcode의 구성 및 프로젝트 생성

XCode란? Xcode는 Apple이 제공하는 통합 환경 개발(IDE)입니다. macOS 및 iOS 운영체제에서 실행되며, 개발자가 앱, 게임, 소프트웨어 등을 개발하고 디버깅하는 데 사용됩니다. Xcode는 Objective-C, Swift 및 C++와 같은 다양한 프로그래밍 언어를 지원하며, Apple의 SDK(Software Development Kit)와 함께 제공되는 다양한 도구와 라이브러리를 사용하여 개발자가 애플리케이션을 더 쉽게 개발하고 디버깅할 수 있도록 지원합니다. Xcode를 사용하면 코드 편집, 컴파일, 디버깅, 테스트 및 배포를 모두 수행할 수 있습니다. 프로젝트 시작 Navigator 프로젝트 파일, 테스트 등 프로젝트에 포함되는 입력 디버깅 정보 버전 컨트롤 Editor 소스..

Computer Science/Algorithm

[Algorithm] 유니온 파인드(Union-Find) 알고리즘

유니온 파인드(Union-Find) 알고리즘이란 유니온 파인드 알고리즘은 대표적인 그래프 알고리즘 중 하나로, 주어진 그래프의 노드들을 서로 다른 집합으로 분리하거나, 두 개의 노드가 같은 집합에 속하는지 여부를 판단하는 데 사용됩니다. 이 알고리즘은 일반적으로 노드들이 상호 연결된 그래프에서 사용됩니다. 초기에는 모든 노드들이 각각 서로 다른 집합에 속해 있습니다. 유니온 파인드 알고리즘은 두 개의 노드가 같은 집합에 속하도록 하거나, 두개의 집합을 하나로 합치는 연산을 수행합니다. 이 알고리즘의 핵심은 각각의 집합을 하나의 트리로 나타내는 것 입니다. 각 노드는 해당 집합의 루트 노드를 가리키는 포인터를 가지고 있습니다. 노드들이 합쳐지면, 두 트리의 루트 노드를 연결하고, 이전에 각 트리의 루트 노..

Computer Science/Computer Security

[Security] 컴퓨터 보안(Computer Security)의 개요(간단 정리)

컴퓨터 보안이란 컴퓨터 보안(Computer Security)은 컴퓨터 시스템과 네트워크 시스템의 보호를 위한 전문 분야입니다. 컴퓨터 보안은 컴퓨터 시스템의 보안 위협으로부터 데이터를 보호하고, 시스템의 안정성과 기밀성을 유지하기 위해 일련의 절차와 기술을 적용합니다. 컴퓨터 보안은 컴퓨터 시스템과 네트워크 시스템에 대한 공격을 방어하고, 보안 위협으로부터 시스템을 보호하는데 중점을 둡니다. 이러한 보안 위협은 컴퓨터 바이러스, 악성 소프트웨어, 침입자, 악의적인 해커 등으로부터 발생할 수 있습니다. 컴퓨터 보안은 컴퓨터 시스템의 안정성, 가용성, 무결성, 기밀성을 유지하는 것을 목표로 합니다. 이를 위해 다양한 보안 기술과 방법을 사용합니다. 이러한 기술과 방법으로는 암호화, 인증, 권한 부여, 네트..

Programming Language/Java

[Java] Garbage Collection(가비지 컬렉션)이란

Garbage Collection(가비지 컬렉션)이란 자바 가상 머신(JVM)에서 자동으로 객체를 제거하여 메모리를 해제하는 프로세스입니다. 자바에서 객체는 동적으로 할당되며, 개발자가 명식적으로 메모리를 해제하지 않으면 더 이상 사용하지 않는 객체가 메모리에 계속 남아있을 수 있습니다. 이러한 객체를 가바지라고 부릅니다. 가비지 컬렉션은 이러한 가비지 객체들을 자동으로 식별하고, 메모리를 자동으로 해제하여 프로그램 실행 중에 메모리 누수를 방지합니다. 자바에서 가비지 컬렉션은 일반적으로 개발자가 관여할 필요가 없으며, JVM이 자동으로 수행합니다. 그러나 가끔씩 가바지 컬렉션의 성능을 최적화하거나 세부적인 제어가 필요할 수도 있습니다. 장점 메모리 누수 방지 : 가비지 컬렉션은 더 이상 사용하지 않는 ..

Computer Science/OperatingSystem

[OS] 요구 페이징

요구 페이징이란? 요구 페이징(demand paging)은 운영체제에서 사용되는 가상 메모리 관리 기법중 하나이다. 요구페이징은 프로세스가 실행되는 동안 필요한 페이지만 메모리에 올리고, 필요하지 않은 페이지는 디스크에 저장하여 메모리를 절약하는 방법입니다. 이를 위해 페이지 테이블에 페이지의 위치 정보와 함께 각 페이지의 접근 여부를 표시하여 필요한 페이지만 메모리에 올리게 된다. 요구 페이징의 장점 효율적인 메모리 사용 : 요구페이징은 물리적 메모리 공간을 아끼면서 프로세스가 필요한 페이지만 메모리에 적재하므로 메모리 사용이 효율적입니다. 빠른 프로세스 실행 : 요구 페이징은 필요한 페이지만 적재하므로 디스크에서 메모리로 페이지를 로드하는 작업이 빠릅니다. 이는 프로세스 실행속도를 높이는데에 도움이 ..

Computer Science/DataBase

[DataBase] 정규화와 비정규화의 탄생 배경 및 장단점

정규화(Normalization) 정규화란 데이터베이스 설계 시 중복을 최소화하며 데이터를 구조화하는 과정이다. 이는 데이터의 무결성을 보장하고 데이터베이스의 성능을 향상시킨다. 정규화는 1970년대 E.F.Codd가提唱한 관계형 데이터베이스 이론의 핵심 개념이다. 이론에 따르면, 데이터베이스의 테이블은 1차 정규화, 2차 정규화, 3차 정규화, BCNF, 4차 정규화, 5차 정규화 등으로 분류된다. 장점 데이터 중복 최소화 데이터 무결성 유지 쿼리의 성능 향상 단점 데이터베이스 설계에 많은 시간과 노력이 필요 복잡한 데이터베이스 설계로 인한 성능 저하 가능성 너무 많은 정규화를 시키면 데이터의 일관성을 유지하거나 읽어오는 데 시간이 더 오래 걸릴 수 있음. 비정규화(Denormalization) 비정규..

Computer Science/OperatingSystem

[OS] CPU 스케줄링이란?

CPU 스케줄링이란 CPU 스케줄링은 운영체제가 CPU를 효율적으로 활용하기 위한 방법입니다. 이는 여러 프로세스들 중에서 어떤 프로세스를 먼저 실행할지, 얼마나 오랫동안 실행할지 등을 결정하는 일련의 과정을 말합니다. CPU 스케줄링은 시스템 성능을 높이고, 시스템 자원을 효율적으로 사용하여, 다양한 작업을 보다 빠르게 처리할 수 있도록 도와줍니다. CPU 스케줄링은 규모에 따라 장기, 중기, 단기 스케줄링으로 구분된다. CPU 스케줄링은 프로세스들의 우선순위와 요구사항에 따라 CPU 자원을 할당하는 방법입니다. 이러한 CPU 스케줄링 방법은 프로세스의 규모와 적용 시기에 따라 장기, 중기, 단기 스케줄링으로 구분됩니다. 장기 스케줄링: 시스템에 새로운 프로세스가 들어올 때, 어떤 프로세스를 메모리에 ..

Tenacity_Dev
인성의 개발 공부 노트