본문 바로가기

전체 글61

Queue & Stack Queue란? 특징 - Queue의 사전적 의미는 줄, 혹은 줄을 서서 기다리는 것을 의미한다. - 선입선출(FIFO - First In First Out) 의 자료구조이다. → 먼저 넣은 데이터가 먼저 나온다. - 그러므로, 순서대로 처리해야할 때 사용한다. - 데이터를 추가하는 Enqueue / 데이터를 추출하는 Dequeue 연산이 있다. Enqueue - 맨 뒤에 데이터를 추가하면 되기 때문에 O(1)이다. (rear포인터 이용) Dequeue - 맨 앞의 데이터를 삭제하면 되기 때문에 O(1)이다. (front포인터 이용) 큐의 가장 첫번째 데이터를 front / 가장 마지막 데이터를 rear로 가리킨다. 접근방법은 front/rear로만 가능하다. - 활용 예시로는 하나의 자원을 공유하는 프린.. 2023. 6. 24.
Dynamic Array란? 배경 ※ Static Array의 한계점을 보안하기 위해.. Array의 경우 size가 고정되었기 때문에 선언시에 설정한 size보다 많은 데이터를 저장할 수 없다. (Static Array의 한계점) 이를 보안하기 위해 저장공간이 가득 차게되면 resize하여 유동적으로 array의 size를 조절할 수 있는 자료구조가 나왔다. 이를 Dynamic Array라 한다. Resize란? 데이터를 계속 추가하다가 기존에 할당된 메모리를 초과하였다. size를 늘린 배열을 선언한다. 그곳으로 모든 데이터를 옮긴다. 늘어난 크기의 size를 가진 배열이 된다. 이로써 새로운 데이터를 저장할 수 있게 된다. -> 데이터를 추가하다가 한계가 도달하는 시점에 더 큰 배열을 선언하여 모든 데이터를 그곳으로 옮긴다. .. 2023. 6. 24.
Array vs Linked List Array란? 특징 연관된 데이터를 메모리상에서 연속적이며 순차적으로 미리 할당된 크기만큼 저장하는 자료구조이다. 고정된 저장 공간 (fixed-size) 순차적인 데이터 저장 (order) 장점 - 접근(lookup)과 마지막 원소 추가/삭제가 O(1)로 빠르다. 단점 - 선언시에 크기를 미리 할당해야해서 메모리 낭비나 추가적인 오버헤드가 발생할 수 있다. ※ 미리 예상한 크기보다 더 많은 개수의 데이터를 저장하기 위한 해결방법은? => Dynamic Array 이용 기존의 size 보다 더 큰 array를 선언하여 데이터를 옮겨 할당한다. 모든 데이터를 옮겼다면 기존 array는 메모리에서 삭제한다. 이런식으로 동적으로 배열의 크기를 조절하는 자료구조를 Dynamic Array라고 한다. => Lin.. 2023. 6. 24.
git filter-branch 최근에 다른 기업의 지인 개발자들을 만나서 개발 이야기를 하다가 그 기업의 팀장님은 git 마법사라며 filter-branch 같이 들어보지도 못한 git 기능들을 많이 알고 계신다면서 이야기를 듣게 되었다. filter-branch가 과연 뭘까 귀 기울여듣게 되면서 따로 집에 와서 찾아보게 되었다. 참고할만한 블로그도 몇 없어서 유투브 영상을 통해서 공부해보았다. 이를 공유하고자 글을 작성한다. filter-branch가 필요한 상황 2가지 1. 민감한 파일이 실수로 원격 저장소에 push 되었을 때 - 원격 저장소에 실수로 올린 파일을 지우고 다시 push를 하여도, 이전에 파일이 올라왔던 기록을 통하여 파일 확인이 가능해지므로 무용지물이 되어버리는데 이런 상황을 간단히 해결하고 싶을 때 사용함. 2.. 2022. 10. 23.
HTTP&HTTPS HTTP(HyperText Transfer Protocol) 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. HTTP는 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다. 이런 보안 문제를 해결해주는 프로토콜이 'HTTPS' 이다. HTTPS(HyperText Transfer Protocol Secure) 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. HTTPS는 텍스트를 암호화한다. (공개키 암호화 방식으로) HTTPS 통신 흐름 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다. 신뢰할 수 있는 CA 기업을 선택하고,.. 2022. 9. 11.
함수형 프로그래밍(Functional Programming) 이란? [ 프로그래밍 패러다임(Programming Paradigm) ] 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 최근의 프로그래밍 패러다임은 크게 아래와 같이 구분할 수 있다. 명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현 (C++, Java, C#) 선언형 프로그래밍: 어떻.. 2022. 9. 11.