Sejin의 개발공부

자바에 대하여 - OOP에서의 디자인패턴

들어가며 디자인 패턴이란, 클래스들 간의 관계를 어떻게 잘 연결할 것인지에 대해 이야기하는 것입니다. 생성 패턴 이러한 패턴들은 기존 코드의 유연성과 재사용을 증가시키는 다양한 객체 생성 메커니즘들을 제공합니다. 구조 패턴 이러한 패턴들은 객체들과 클래스들을 구조를 유연하고 효율적으로 유지하면서 더 큰 구조로 조립하는 방법을 설명합니다. 행...

자바에 대하여 - Hash에 대하여

들어가며 이번 포스트 에서는 Hash에 대하여 공부해볼 것입니다. Hash? 고정된 크기로 값을 바꾸는 함수 or 알고리즘 java에서 hash 키와 값의 쌍을 저장하는 데이터 구조입니다. 키는 고유한 식별자이며 값은 키와 연관된 데이터입니다. 해시 테이블이라고도 불리는 해시 구조는 데이터 검색 및 삽입 속도가 매우 빠르다는 장점이 있습니...

자바에 대하여 - Hash에 대하여

들어가며 이번 포스트 에서는 Hash에 대하여 공부해볼 것입니다. Hash? 고정된 크기로 값을 바꾸는 함수 or 알고리즘 java에서 hash 키와 값의 쌍을 저장하는 데이터 구조입니다. 키는 고유한 식별자이며 값은 키와 연관된 데이터입니다. 해시 테이블이라고도 불리는 해시 구조는 데이터 검색 및 삽입 속도가 매우 빠르다는 장점이 있습니...

CS - 동기화와 비동기화

여러 프로세스/스레드를 동시에 실행해도 공유데이터의 일관성을 유지하는 것을 말한다. 동기화 (Synchronous) 한 작업이 완료될 때까지 다음 작업이 시작되지 않습니다. 예를 들어 줄을 서는 것과 동일합니다. A작업을 수행하고 이를 바탕으로 B작업을 할때 이를 동기방식 이라고 합니다. 프로세스, 스레드의 관점에서는 공유자원에 접근할 때 서로...

CS - 뮤텍스와 세마포어

들어가며 이번 포스트에서는 뮤텍스와 세마포어에 대해 이해해 보겠습니다. 프로세스 혹은 스레드가 동시에 같은 공유 자원에 접근할 때 문제가 생기지 않도록 하는 방법이 필요한데요. 이때 동기화 방식으로 접근해볼 수 있습니다. 뮤텍스와 세마포어는 동기화 도구 입니다. 하나의 방법 정도로 이해하면 됩니다. 먼저 이해할 용어 공유자원 공유자원은 말그...

알고리즘 - 삽입정렬

이미 정렬된 데이터 범위에 정렬되지 않은 데이터를 적절한 위치에 삽입시켜 정렬하는 방법입니다. 촤악의 경우 ,- O(n^2)으로 느립니다. 동작방식 주어진 리스트에서 가장 작은(또는 가장 큰) 요소를 찾습니다. 해당 요소를 리스트의 맨 앞 요소와 위치를 교환합니다. 정렬된 부분 리스트와 정렬되지 않은 부분 리스트로 나눕니다. 정렬된 ...

알고리즘 - 선택정렬

선택 정렬은 리스트를 순회하면서 가장 작은(또는 가장 큰) 원소를 선택하여 알맞은 위치로 이동시키는 방식으로 동작합니다. 핵심 남은 정렬부분에서 최솟값 또는 최댓값을 찾는다 남은 정렬 부분에서 가장 앞에있는 데이터와 선택된 데이터를 swap한다. 가장 앞에 있는 데이터의 위치를 변경해 남은 정렬 부분을 축소한다. 전체 데이터 크기만큼 인덱스가...

알고리즘 - 버블소트

버블 정렬(Bubble Sort)은 간단하면서도 비효율적인 정렬 알고리즘 중 하나입니다. 이 알고리즘은 인접한 두 요소를 비교하여 필요한 경우 위치를 교환하는 방식으로 동작합니다. 여기서 각 패스(반복)마다 가장 큰 요소가 맨 끝으로 이동하므로, “거품이 물 위로 떠오르는 것과 같다”는 개념에서 유래하여 “버블(Bubble)”이라는 이름이 붙여졌습니...

JAVA - 디자인 패턴에 대하여

들어가며 이번 포스트에서는 디자인 패턴에 대해서 알아보겠습니다. 글이 길어 패턴의 자세한 내용은 다음 포스트에서 다룹니다. 디자인 패턴이란? 소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위한 일반적인 해결책입니다. 개발자들이 반복적으로 발생하는 설계 문제들을 해결하기 위해 미리 만들어 놓은 청사진과 같다고 생각하면 됩니다. 에초에 디...

자바에 대하여 - OOP 결합도

들어가며 이번 포스트에서는 결합도에 대하여 이야기 해보겠습니다. 결합도? 정보처리기사의 단골 문제이자 개념인 결합도 입니다. 결합도(Coupling)는 소프트웨어의 구성 요소들 간에 서로 얼마나 의존적인지를 나타내는 개념입니다. 높은 결합도는 코드를 변경하기 어렵게 만들고 유지보수를 어렵게 할 수 있으며, 재사용성과 유연성을 저하시킬 수 있습니...

자바에 대하여 - OOP 실사용

들어가며 이번 포스트에서는 OOP와 자바에서 활용하는 방법을 정리합니다. 원래 어노테이션에 대해 정리해보려고 했는데 해당 개념을 먼저 공부해보는 것이 이해하기 더좋다고 생각이 들어 먼저 정리했습니다. JAVA , C++ , Python 등의 많은 소프트웨어에서 지원하는 프로그래밍 방법입니다. 이번 포스트에서는 자바에서 어떤식으로 OOP 즉, 객...

자바에 대하여 - 스레드

5.JAVA-스레드 들어가며 이번 포스트에서는 스레드에 대한 포스트 입니다. 사실 한번쯤은 모두 공부해본 내용이지만 , 정리도하고 java에서는 어떻게 활용할 수 있는지에 대한 이야기도 함께 하겠습니다. 스레드? 프로세스 내에서 실행되는 독립적인 작업 단위이며 여러 스레드가 하나의 프로세스에서 동작할 수 있습니다. 그리고 스레드는 자체적인 ...

JAVA에 대하여 - 메모리 & 가비지 컬렉션

들어가며 이번 포스트에서는 Java가 메모리를 어떤식으로 활용하는지에 대한 이야기를 정리해보려고 합니다. 자세하게 생각하면 끝도 없는 영역이기 때문에 아 이런식으로 동작하는 구나 정도의 수준의 정리 내용입니다. 언어들은 메모리를 어떻게 쓸가? Java와 같이 컴파일러를 통해 기계어를 만들어 사용하는 언어들은 아래 그림처럼 코드를 실행하는 영역...

JAVA에 대하여 - 객체

객체 와 동작에 대한 이야기 이번 포스트에서는 객체에 대해 이야기 해보겠습니다. 필자 개인적으로 객체는 이해했다고 생각하면 뭔가 틀리는 경우도 있어서 이번 포스트를 적어보며 정리하는 시간을 가져봅니다. 객체? 자바에서 객체지향은 매우 중요한 개념입니다. 객체 지향 즉, 객체를 만들어서 사용하는것을 지향한다. 인데 여기서 객체를 정리해보면 이...

Git 사용법 - 서론&설치

들어가며 깃 , 깃허브는 개발자가 반드시 알아야 되는 필수 기술 중 하나라고 생각합니다. 현재 개발자들이 애용하고 있고, 기업에서도 사용하고 있습니다. 또한 , 많은 기능이 있어서 한 사이트 , 기술 스택에서 다양한 활동을 진행할 수 도 있습니다. 포스트를 하며 여러 기술들에 대해 공부한 내용을 공유해 보려고 합니다. 그래서 Git이 뭔데? ...