프로그래밍 공부/디자인 패턴2024. 2. 29. 03:13싱글톤 패턴 vs 정적 클래스 (Singleton Pattern vs Static Class)

싱글톤 패턴을 사용한 클래스와 정적 클래스 전부 프로그램 상에서 단 하나만 존재하는 클래스 이다. 싱글톤 패턴을 처음 배울 당시에는 "그냥 Static을 사용하면 되는거 아니야?" 라는 생각을 했었는데 찾아 보지 못하고 이제서야 정리를 해보게 되었다. 싱글톤 패턴? 클래스의 인스턴스가 프로그램 전체에 걸쳐 단 하나만 존재하도록 보장하는 구조 예를들어 현재 유저의 경험치와 같은 중요한 부분이 여러 객체에서 동시에 관리가 된다면, 어떤 객체에 있는 경험치가 유저의 진짜 경험치인지 알 수가 없기 때문에 여러부분에서 문제가 발생한다. 이런 부분은 싱글톤 패턴으로 구현하여 경험치를 관리하는 클래스는 단 하나의 객체만 존재하도록 해야한다. 정적 클래스로는 불가능 한가? 곰곰히 생각해보면 정적 클래스도 같은 역할을 ..

[C#] 강력한 데이터 작업 Linq(링큐)
프로그래밍 공부/C# 프로그래밍2023. 9. 24. 01:39[C#] 강력한 데이터 작업 Linq(링큐)

공부하면서 처음에는 아무것도 모르고 넘겼던.. 링큐.. 만들다보면 링큐는 작업을 간단하고 쉽게 도와준다. 최대값이나 정렬을 할때 가끔 사용했었는데, 이제서야 책을보고 조금 공부해 보았다. 링큐 링큐는 Language Intergrated Query의 약어로 , C# 언어에 통합된 데이터 질의 기능을 말한다. 질의라는 것이 좀 어색하긴한데, 데이터에 대해 물어본다는 뜻이다. 링큐의 기본적인 3가지 키워드를 소개한다. - From : 어떤 데이터 집합에서 데이터를 찾을 것인가? - Where : 어떤 조건의 데이터를 찾을 것인가? - Select : 어떤 값을 추출 할 것인가? 이정도로 생각하면 좋을 것 같다. 바로 예시를 들어보자. 별점 3점 이상의 영상만 가져오는 법 나는 여러개의 영화 데이터 중에 별점..

[C#] 여러개의 Enum - [Flags] Attribute
프로그래밍 공부/C# 프로그래밍2023. 9. 24. 00:45[C#] 여러개의 Enum - [Flags] Attribute

우리는 Enum 타입으로 여러가지 상태나 상황을 정할 수 있다. Enum을 조금 더 효과적으로 사용하기 위한 Flags 애트리뷰트를 공부해봤다. Flags Flags는 Enum타입에 사용되는 애트리뷰트이고, 열거형 멤버들이 비트 플래그로 사용될 수 있음을 나타낸다. 메모리가 중요했던 옛날에는 기껏해야 10개도 안되는 상태를 표현하려고 한 바이트(2^8 = 0~255)를 사용한다는게 낭비라고 생각이 됐을 수도 있다. 물론 지금은 메모리가 풍족해진 상황이지만, 비트 플래그가 갖는 장점도 있기 때문에 C#에서도 사용이 가능하게끔 구현을 해둔 것 같다. 선언 Enum 상단에 [Flags]라는 애트리뷰트를 선언해주면 된다. 그리고 Enum의 멤버들은 10진수로 적어줘도 상관없지만, 2의 제곱수로 적어주어야 한다...

[C++] 연결리스트 직접 구현해보기
프로그래밍 공부/자료구조&알고리즘 공부2023. 4. 18. 00:32[C++] 연결리스트 직접 구현해보기

리스트 리스트는 데이터를 순서대로 나열한 자료구조이다. 리스트의 데이터는 노드(node) 혹은 요소(element)라고 하며, 가장 단순한 구조를 가진 리스트에는 선형 리스트(linear list)와 연결 리스트(linked list)가 있다. 오늘 나는 연결리스트를 직접 구현해 볼 예정이다. 연결리스트의 노드들은 다음 노드의 포인터만 가지고 있어서 1번 노드에서 3번노드에게 가려면 2번을 거쳐가야한다. [LinekdList.h - 선언] struct Node { int data; Node* nextNode; }; struct List { Node* headNode; Node* curNode; }; 일단 값과 다음 노드의 포인터를 가지고있는 Node라는 구조체와 headNode(리스트의 맨 앞 노드) 포..

[C++] 큐 직접 구현해보기
프로그래밍 공부/자료구조&알고리즘 공부2023. 4. 12. 23:19[C++] 큐 직접 구현해보기

큐(Queue)란? 큐도 스택과 마찬가지로 데이터를 일시적으로 쌓아 놓은 자료구조이다. 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO : First In First Out)의 구조를 가지고 있다. 많은 예시로 은행의 대기열을 예시로 든다. 나같은 경우는 큐를 알림시스템에 사용해서 들어온 순서대로 알림이 출력되게 하거나, 들어온 순서대로 오브젝트를 재사용하는 오브젝트 풀링을 구현할때 사용했던 자료구조다. [Queue.h - 선언] #pragma once class Queue { private: int myQueue[1000] = { 0, }; int num = 0; //큐에 담긴 값의 갯수 int* firstNum = nullptr; // 첫번째 값의 포인터 public: Queue(); v..

#day1 - 스위프트 문법 기본
프로그래밍 공부/스위프트2023. 4. 12. 02:33#day1 - 스위프트 문법 기본

주말에는 하루를 써서 스위프트를 배우고 있다. 너무 이것저것 손대는거같아서 걱정되긴하는데.. 일단 배우고 있으니까 정리를 해본다. Xcode 의 PlayGround Xcode의 메뉴에서 File - New를 눌러보면 이것저것 많이 나오는데, PlayGround라는 것이 있다. 검색해보면 스위프트 언어를 공부하기위한 개발 환경이라고 하는데.. 정말 학습용? 실험용? 인것같다. 오른쪽창에서 결과를 시각적으로 바로바로 확인 가능하다. CGRect라는 구조체를 사용하니 옆에 설정한 값을 눈으로 볼 수 있게 UI가 바로바로 나온다. 학원에서나 집에서나 PlayGround로 학습했다. 스위프트의 변수와 상수 //변수 var name = "스위프트" //상수 let name = "스위프트" 변수는 var , 상수는 ..

image