전체 글 38

[CS-알고리즘] 삽입 정렬에 대해서

삽입 정렬(Insert Sort)삽입 정렬은 비교적 간단하고 직관적인 정렬 알고리즘이다.카드 정리와 비슷한 방식으로 작동하며 배열의 각 요소를 적절한 위치에 삽입하여 정렬을 완성한다.시간 복잡도는 이미 정렬된 경우 O(n), 평균 및 최악은 O(n²)간단하고 이해하기 쉬우나 큰 데이터셋에서는 성능이 좋지 않다.정렬된 부분 : 배열의 왼쪽부터 현재까지 정렬이 완료된 부분정렬되지 않은 부분 : 배열의 오른쪽 나머지 부분, 정렬 필요순서배열의 첫 요소는 이미 정렬된 것으로 간주두 번째 요소부터 각 요소를 정렬된 부분에 적절 위치 삽입이를 반복 예제public class InsertionSort { public static void insertionSort(int[] arr) { // 배열의 ..

[Java] List와 Map의 구조와 스레드 안전성

0. Thread Safe란?멀티스레드 환경에서 여러 스레드가 동시에 함수, 변수, 객체 접근하여도 일관성, 정확성을 유지할 수 있는 특성스레드란?프로세스 내에서 실행되는 가장 작은 단위의 실행 흐름.동일 프로세스 내에서 메모리, 자원을 공유하며 독립적으로 실행될 수 있다.동시성 문제데이터 레이스 : 여러 스레드가 동시에 접근하여 읽기/쓰기 작업 시 예상치 못한 결과 발생데드락 : 두 개 이상 스레드가 서로 자원을 점유한 상태에서 다른 스레드 자원을 기다리며 영원히 대기라이브락 : 스레드들이 서로 방해하지 않기 위해 끊임없이 상태를 바꾸며 진행하지 못하는 상황자원 고갈 : 하나 이상 스레드가 자원을 독점해 다른 스레드가 필요자원을 얻지 못하는 상황안정 보장법Synchronization(동기화) : syn..

[CS 알고리즘] 거품 정렬에 대해서

거품 정렬가장 간단한 정렬 알고리즘 중 하나 인접한 두 요소를 비교하여 순서가 잘못된 경우 교환하는 방식으로 정렬한다.가장 큰 요소가 점차 오른쪽 끝으로 이동하는 방식이 거품이 올라오는 모습과 비슷하다고 하여 거품 정렬이 되었다.동작 방식리스트의 처음부터 시작해서 인접한 두 요소를 비교만약 앞의 요소가 뒤의 요소보다 크다면 두 요소를 교환위의 과정을 리스트 전체가 정렬될 때까지 반복시간 복잡도최악의 경우: O(n²)최선의 경우: O(n) (이미 정렬된 경우)평균 경우: O(n²) 거품 정렬은 단순하고 구현하기 쉽지만, 성능이 좋지 않아 일반적으로 실무에서는 잘 사용되지 않는다. 대신 퀵 정렬, 병합 정렬 등의 더 효율적인 정렬 알고리즘이 사용됨..Java 예시바깥 for문 : i가 배열길이까지내부 for..

Spring에 대해서

1. SpringFramework란? 자바 플랫폼을 위한 애플리케이션 프레임워크로 주로 엔터프라이즈 개발에 사용된다.스프링은 모듈화, 경량화, 테스트 용이성을 중요시하며 POJO 프로그래밍 모델을 통해 객체지향 설계 원칙을 따른다.프레임워크란 ? 소프트웨어 개발을 위한 구조, 뼈대를 제공하는 일종의 플랫폼이다.다양한 기능. 도구를 제공하여 특정 유형 애플리케이션을 개발하는데 필요한 구조를 갖추고 있다.ex) Spring Framework, Django, React 2. Spring의 핵심 개념- POJO(Plain Old Java Object) : 단순한, 순수한 Java 객체를 의미한다.public class HelloWorld { private String message; public vo..

Linux란?

Linux리눅스는 1991년 리누스 토르발스가 개발한 커널 기반, Unix 계열의 오픈소스 운영체제이다.공개 직후 폭발적인 성장세를 보였으며 현재는 데스크톱, 랩톱 뿐만 아니라 웹 서버, 클라우드 컴퓨팅, 모바일, 임베디드 기기( (CCTV,  노래방 기계, ATM...) 등 여러 분야에서 폭넓게 사용 중이다. Linux의 경우, 배포자가 분산되어있고 주로 Windows 타겟의 악성 코드가 많기에 상대적으로 멀웨어로 부터 자유롭다.대표적인 UI/UX 툴킷으로는 GTX, Flutter, Uno Platform, Qt, wxWidgets 등이 있다.1991년: 리누스 토르발스가 리눅스 커널의 첫 번째 버전을 발표.1992년: GNU 프로젝트와 결합, GPL 라이선스 하에 배포.1993년: 최초의 배포판, S..

OS/Linux 2024.07.29

[AWS] AWS, 아마존 리눅스에 대해서

AWS(Amazon Web Services) : Amazon에서 제공하는 컴퓨팅 서비스 플랫폼이다.2006년에 시작한 클라우드 플랫폼으로 대규모 인프라스트럭쳐 서비스 제공업체로 여러 기업들에서 많이 사용 중이다.주요 서비스컴퓨팅EC2 : 다양한 인스턴스 유형을 통해 가상 버서 제공 ( 내 블로그에 게시된 것도 EC2이다)Lambda : 서버 관리할 필요 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스서버를 띄우지 않고 간단한 코드 실행, 특 정 주기에만 코드 실행 시에 유리하다.용량이 최대 250MB, 함수 실행시간은 최대 15분인 단점도 있다.스토리지S3(Simple Storage Service) : 대용량 객체 스토리지 서비스인터넷 액세스가 가능한 서비스로 구글 드라이브, 아이클라우드와 같은 온라..

AWS 2024.07.29

[CS 자료구조] 이진 트리에 대해서

기본 용어 정리Node(노드) : 트리의 각 요소Root(루트) : 최상단 노드Parent(부모) : 자식 노드를 가진 노드Child(자식) : 다른 노드의 자식Leaf(잎) : 자식이 없는 노드Subtree(서브트리) : 특정 노드를 루트로 하는 트리전위 순회(preorder traverse) : Root먼저 방문 (Root -> Left Child-> Right Child... )중위 순회(inorder traverse) : Left Child -> Root -> Right Child후위 순회(postorder traverse) : Left Child -> Right Child -> Root이진트리란?각 노드가 최대 두 개(0,1,2)의 자식을 가지는 트리 자료구조.효율적인 검색, 삽입, 삭제 연산을..

[AWS] 아마존 리눅스에서 War 파일 배포

우선 준비물은 war 파일이다.나는 개인적으로 진행하는 프로젝트가 있기에 파일을 미리 만들어두었다FIleZilla를 실행하여 war파일을 옮겨준다.https://winter-love13.tistory.com/21 [AWS] EC2 리눅스 인스턴스에 파일 옮기기파일 질라를 통해서 리눅스에 파일을 옮겨볼 것이다.아래 사이트에서 다운로드를 진행한다.https://filezilla-project.org/download.php?platform=win64 파일질라 실행 후에 상단의 연결 버튼을 클릭새 사이트winter-love13.tistory.com  전에 인스턴스에 사용할 포트 번호의 방화벽을 오픈했는지 확인!나는 80 포트를 사용한다.인스턴스-보안 SSH를 통해서 접근해 준다.충돌 방지를 위해 현재 사용 중인..

AWS 2024.07.25

[AWS] EC2 리눅스 인스턴스에 직접 postgeSQL 설치

ssh를 통해 연결한 후에 powershell에서 진행한다.처음 진행하다보니 RDS에서 연결이 잘 안되는 바람에 인스턴스에 직접  PostgreSQL을 설치하여 진행했다.1. PostgreSQL 설치PostgreSQL 설치 리스트를 확인한다.코드를보면 지난 Java 설치와 동일하다.내가 다운로드 가능한 postgresql 버전들이다.sudo yum list | grep postgre 다운로드 진행sudo yum install -y postgresql15-server.x86_64설치 완료! 2. DB 생성 및 서비스 실행sudo postgresql-setup initdbsudo systemctl start postgresql.service 포트 잘 열려있는지 확인sudo netstat -plnt | gre..

AWS 2024.07.23