Uknow's Lab.
article thumbnail
[혼공컴운] 2주차_CPU의 작동원리

혼공스터디 컴퓨터 구조 + 운영체제 2주차 컴퓨터 구조 + 운영체제 2주차 Chapter 4~5인 CPU편입니다. CPU의 작동원리 ALU와 제어장치 CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치입니다. ALU는 CPU 내부에서 계산을 담당하는 장치로, 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들입니다. 피연산자와 제어 신호로 산술 연산 / 논리 연산 등을 수행합니다. 그리고 그 결과값은 바로 메모리에 저장되는 것이 아닌 일시적으로 레지스터에 저장됩니다. CPU가 메모리 보다 레지스터에 접근하는 속도가 더 빠르기 때문입니다. ALU는 계산 결과와 함께 플래그도 보냅니다. 플래그란, 연산 결과에 따른 추가적인 정보로써, 부호, 인터럽트, 슈퍼파이저, 오버플로우..

article thumbnail
[혼공컴운] 1주차_컴퓨터 구조와 운영체제

들어가기에 앞서 컴퓨터 구조론과 운영체제. 컴퓨터 관련 전공을 한 사람이라면 수강했을 과목입니다. 저 역시 마찬가지로 수강을 하였으나... 사람의 뇌는 휘발성인 법... CS 면접 질문에 대비하기 위함인 것도 있지만 단순 CS 면접 질문 대비를 떠나서 개발자로써 더 나은 개발자가 되고 더 깊게 알기 위해서는 컴퓨터 구조론과 운영체제 지식은 필수라고 생각했기에 다시 한 번 공부해보자는 마음을 갖고 있었습니다. 그러던 중 인스타를 보다가 혼공학습단 11기를 모집한다는 광고를 보고 마침 잘 됬다 싶어 컴퓨터 구조론 + 운영체제를 선택해 지원했더니 선정되었습니다. 다른 도서들에 비해 혼공컴운이 압도적으로 많더라고요... 저와 비슷한 생각을 가진 분이 많았나봅니다. 아무튼 스터디도 참여했겠다, 열심히 해봐야겠네요..

article thumbnail
[디자인 패턴] Decorator (데코레이터) 패턴
CS 지식/디자인 패턴 2023. 9. 12. 14:26

데코레이터 (Decorator) 패턴 데코레이터 패턴이란, 이름에서 알 수 있듯이 기존 객체에 새로운 요소를 추가할 때 쓰입니다. 흔히 음식이나 방을 꾸밀 때 데코한다고 하죠? 데코레이터 패턴을 알게되면 이제는 클래스에도 데코를 할 수 있게 될 겁니다. 방을 데코할땐 원래 있던 가구를 치우거나 바꿀수도 있습니다. 하지만 데코레이터 패턴을 사용해 클래스를 바꿀 때에는 기존의 클래스를 수정하지 않으면서, 새로운 기능을 추가할 때 사용합니다. 정확히는, 기존의 클래스를 감싸는(wrap) 방식으로 이루어집니다. 이제 음료를 데코레이터 해봅시다. 카페를 차렸습니다. Uknow 커피 디자인 패턴 마을점. 신규 오픈하였습니다. 아직 메뉴가 몇개 없지만, 이를 전산화하기 위한 작업을 해봤습니다. 클래스 Boooooom..

article thumbnail
[디자인 패턴] Observer(옵저버) 패턴
CS 지식/디자인 패턴 2023. 9. 8. 22:24

Observer Pattern (옵저버 패턴) 옵저버 패턴은 특정 객체를 관찰(Observe)하다가, 해당 객체의 상태가 변경된다면 이를 관측하고 있는 객체들에게 연락을 하는 일대다(one-to-many) 의존성을 정의합니다. 사실 자바 Swing, 안드로이드, 프론트엔드 등 GUI 프로그래밍을 하신 분들이라면 버튼을 하나 만들고, 이를 클릭하면 특정 이벤트를 발생시키기 위해 onClickListenr 등을 사용해본 경험이 있으실텐데요. 이와 같은 Listener들은 버튼을 관측하고 있다가, 사용자가 버튼을 누루면 이벤트를 발생시키는 Observer 패턴의 일종인 Listener 패턴입니다. 버튼 클릭 리스너를 떠올리니, '한 객체를 관측하고 있다가 해당 객체의 상태가 변화되면 이벤트를 발생시킨다'는게 ..

article thumbnail
알고리즘 성능 평가 [2] : 공간 복잡도(Space Complexity)
CS 지식/알고리즘 2023. 8. 21. 12:01

공간 복잡도 (Space Complexity) 시간 복잡도가 알고리즘의 연산횟수, 수행시간을 평가하는데 쓰이는 척도라면, 공간 복잡도는 알고리즘이 메모리를 얼마나 사용하는 지에 관한 척도입니다. 알고리즘을 설계할 때는 시간 복잡도와 공간 복잡도 모두 고려한 적절한 알고리즘을 설계 및 사용해야 합니다. 다만, 두 마리 토끼를 둘 다 잡을 수 없을 경우엔 공간 복잡도 보다는 시간 복잡도를 더 우선시하는 경향이 있습니다. 하드웨어의 발전 메모리 용량 자체가 커지기도 했고, 병렬 처리와 분산 컴퓨팅 역시 발전했습니다. 요즘 같은 대용량 데이터를 처리해야 하는 시대에는 처리 시간이 짧은 알고리즘이 중요하기 때문입니다. 그럼에도, 공간 복잡도는 중요한 개념입니다. 하드웨어가 얼마나 발전했던 간에, 메모리의 한계는 ..

article thumbnail
알고리즘 성능 평가 [1] : 시간 복잡도(Time Complexity)
CS 지식/알고리즘 2023. 8. 20. 20:11

알고리즘의 성능을 판단하는 데에는 시간 복잡도(Time Complexity), 공간 복잡도(Space Complexity) 등이 쓰입니다. 시간 복잡도는 알고리즘이 얼마나 빠르게 실행되는지, 공간 복잡도는 알고리즘이 얼마나 메모리를 잡아먹는지를 판단하는데 쓰입니다. 이번 편에서는 그 중에서도 시간 복잡도(Time Complexity)를 알아보겠습니다. 시간 복잡도 (Time Complexity) 시간 복잡도는 입력되는 데이터의 양에 따라 알고리즘의 수행 시간이나 연산 횟수가 어떻게 달라지는지를 분석하는데 쓰입니다. 알고리즘을 짤 때에는 문제를 해결하는 것도 좋지만, 알고리즘을 얼마나 효율적으로 짜는 것 역시 중요합니다. 같은 입력을 넣었을 때, 같은 출력을 갖는다 하더라도, 알고리즘에 따라 성능이 달라질..

article thumbnail
[네트워크] 브라우저 주소창에 www.google.com을 치면 무슨 일이 일어날까?
CS 지식/웹 | 네트워크 2023. 7. 26. 01:22

www.google.com을 브라우저 주소창에 입력하면 벌어지는 일. 기술 면접 질문으로 꽤 많이 나오는 질문이며, 구글링을 해보면 자료가 굉장히 많이 나오는 주제 중 하나입니다. 이미 매우 훌륭한 글들이 많긴 하지만, 공부할 겸 블로그에 정리해보고자 이렇게 포스팅을 해봅니다. 아무래도 자신이 쓴 글이 가장 보기 편한 법이니까요. DNS 서버에서 서버 IP 주소 찾기 DNS(Domain Name Server)는 도메인 이름과 IP 주소간의 변환을 담당하는 서버입니다. 웹사이트 등의 주소는 사실 IP 주소입니다. http://123.456.789.01과 같이 IP 주소를 통해 접속을 하는데, IP 주소의 경우 사람들이 외우기 쉽지 않습니다. 따라서 www.google.com, www.naver.com 과 ..

article thumbnail
[알고리즘] 그래프 탐색 - 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS)
CS 지식/알고리즘 2023. 7. 18. 01:04

그래프 탐색 정점(Node, Vertex)과 간선(Edge)로 이루어진 그래프. 이 그래프를 탐색하는 방법에는 대표적으로 두 가지 방법이 있습니다. 깊이 우선 탐색(DFS, Depth-First Search)와 너비 우선 탐색(BFS, Breadth-First Search) 입니다. 물론 다른 그래프 탐색 알고리즘도 존재하나, 이 둘이 가장 유명한 방법이지 않을까 싶네요. 깊이 우선 탐색 (DFS, Depth - First Search) DFS는 깊이 우선이라는 이름처럼 깊이를 우선적으로 탐색합니다. 한 노드의 연결된 노드를 먼저 탐색한다는 의미죠. 해당 그래프를 DFS로 탐색한다면 1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7 순서로 탐색합니다. 한 노드를 탐색할 때, 해당 노드와 연결된 ..

article thumbnail
[자료구조] 스택, 큐, 데크 - 자료구조 삼대장
CS 지식/자료구조 2023. 7. 15. 01:14

이번에 알아볼 것은 굉장히 유명한 자료구조 삼대장들인 스택(Stack), 큐(Queue), 데크(Deque) 입니다. 스택 (Stack) 스택은 자료구조의 맨 위에서만 삽입과 삭제가 일어나는 자료구조 입니다. 포인터가 맨 위를 가르키고 있어, 데이터의 가장 위에서만 삽입과 삭제가 일어나지요. 가장 나중에 들어간 원소가 가장 빨리 나오는 LIFO(Last in - First out) 구조 입니다. PUSH를 통해 원소를 삽입, POP을 통해 원소를 꺼냅니다. 이는 쌓아놓은 접시와 비슷합니다. 접시를 쌓을 때는 보통 가장 윗 접시부터 꺼내 쓰곤하죠? 컨트롤 + z를 눌러 뒤로가기를 하는 것도, 브라우저의 뒤로가기도 스택의 예시 중 하나입니다. 자바의 Stack 클래스 출력 : 10, 10, 5, 3 자바에서..

article thumbnail
[자료구조] 그래프의 표현 방법: 인접 행렬과 인접 리스트
CS 지식/자료구조 2023. 7. 13. 01:04

이번에 알아볼 것은 그래프 탐색의 대표적인 방법인 그래프의 표현 방법인 인접 리스트와 인접 행렬입니다. 그래프와 트리에 관한 내용은 이전 포스팅을 참고해주세요. https://uknowblog.tistory.com/357 [자료구조] 그래프(Graph)와 트리(Tree) - 점과 선의 예술 그래프(Graph) 그래프란 무엇일까요? 점과 선이요. 가장 간단하면서 가장 잘 나타낸 말인 것 같습니다. 이산 수학과 컴퓨터 공학에서 말하는 그래프는 각각의 정점(Node, Vertex)이 간선(Edge)으로 이어 uknowblog.tistory.com 그래프의 연결 표현 : 인접 배열과 인접 리스트 그래프의 연결을 표현하는 방법에는 인접 배열과 인접 리스트가 있습니다. 이름처럼 배열을 썼느냐, 리스트를 썼느냐의 차..