큐는 가장 많이 봤을 법한 구조입니다. 선입선출식이죠 (FIFO : First In, First Out) 편의점에서 유통기한이 빠른 우유부터 내놓고 파는 것처럼 먼저 들어온 데이터를 먼저 내보내는 형식의 자료구조 입니다. 스택과 큐는 서로 반대되는 개념이라고 생각하시면 좋겠네요 간단한 구조입니다. 쉽습니다. 그럼 이것을 어떻게 구현해야할까요? 1..배열 큐( Array queue) 스택과는 달리 가리키는 포인터가 2개가 필요합니다. 큐는 앞뒤 위치를 파악할 수 있습니다. front 와 rear를 가리키고 데이터가 추가될 떄 마다 rear가 증가하고(위에 쌓이니까) 데이터가 추출될 때 마다 front가 증가합니다.(먼저 들어온 순서대로 빠지니까) 이 선형 배열에서는 결국에는 끝이 정해져 있기 때문에 한줄 ..
스택은 후입선출 방식으로 저장하는 방법 입니다.(LIFO : Last In, First Out) 이 데이터를 Task라고 생각을 한다면, 좋은 예로 안드로이드 어플리케이션으로 들 수가 있습니다. 핸드폰에서 작업내용을 보면 가장 최신으로 실행한 어플이 앞에 나오죠? 액티비티를 실행시켜도 가장 마지막에 누른 버튼으로 부르는 액티비티를 볼 수 있습니다. 이를보면 가장 마지막에 실행한 액티비티, 어플리케이션부터 실행을 하는 방법을 스택이라고 합니다. 프로그래밍을 하다보면 task 관리에서 가장 자주 마주치는 자료구조라고 생각하시면 됩니다. 아래의 그림을 보시면 좀 더 이해하기 쉬울 것 같습니다. 푸시는 데이터를 스택에 넣는 작업을 의미하고,팝은 스택에서 데이터를 꺼내는 작업을 의미합니다. 스택에서는 위의 그림처..
C언어로 해보는 링크드 리스트 LInked List를 이해학기 위해 좋은 자료를 만들어봤습니다. 링크드 리스트는 기존의 배열을 사용함에 있어서 문제점을 해결하는 것입니다. 아래의 자료처럼 배열은 초기화시에 배열공간을 선언하면 해당하는 공간만 사용이 가능합니다. 그래서 자료가 추가/삭제 되었을 경우 공간이 모자라거나 남아서 메모리를 낭비/부족하게 되는 경우가 생기게됩니다. 위는 데이터 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}를 추가하고 중간에 6을 삭제하는 데이터 처리를 했더니 배열에서는 공간이 부족하여 11이 못들어가고, 6을 삭제했더니 중간에 한칸이 비어버려서 메모리가 낭비하는 일이 발생합니다. 링크드 리스트를 사용하면 이런 메모리의 낭비를 줄일 수가 있습니다. 공간이 필요하면 ..
mqtt 서버를 도와주는 툴인 모스키토 (mosquitto) https://mosquitto.org/ 여기서 다운로드 합니다. 설치할 때 몇가지 주의점이 있어요 저기 오른쪽에 그려진 다운로드 누르면 다운로드 페이지로 넘어가는데 거기서 알아서 눌러서 받으시면됩니다.윈도우라면 두개중에 위에 있는 223비트 버젼 아래껀 시그윈전용이라서 안된다더라구요 실행시키면 이 화면이 뜹니다. 다음을 눌러주시면 이화면이 나오는데 조심해야되요 그냥 넘어가면 안되고 저기 링크들 눌러서 각각 다운받아야하는 거 다 받아야 되요링크 위에 뭘 해야되는지 써있죠?Win32 OpenSSL v(숫자버젼) Light 랑pthreadVC2.dll 을 받아야합니다. 다운로드가 끝났으면 설치하던거 마저 다 완료해버립니다. 마지막화면에 체크되어있는..
망고DB를설치하고 나면 cmd를 켜고 mongoDB를 설치한 폴더로 들어간다. C:\mongodb 이동 1. mkdir var 명령어로 var라는이름의 폴더를 하나 만든다.2. 다시 cd .. 으로 뒤로 돌아온다.3. cd bin 으로 바이너리 폴더로 들어간다.4. mongod -dbpath C:\mongodb\var 로 서버 실행(var 폴더를 데이터베이스를 저장하는 공간으로 설정하는 것)5. 서버가 실행된다.6. 새로운 cmd를 켜서 C:\mongodb\bin 으로 가서 MongoDB 명령어를 수행한다. 여기까지는 설치하는 글과 겹친다. 왜냐하면 공부하면서 블로그에 노트하기 때문! 새로운 cmd창으로 실행하면 아래처럼 mongo 명렁어로 mongoDB를 실행하고 시작한다. noSQL 문에서는 CRUD..
먼저 node.js가 설치되어있어야한다. 이클립스에서 플러그인중 nodeeclipse 플러그인이 있다. 이걸 설치해야 사용이 가능하다 먼저 이클립스를 실행하자 가장 최신버젼으로 준비하는 것이 개발의 도리라는 것을 가슴에 새기길... 최신버젼으로 준비했다 치고 이클립스의 메뉴중에서 [Help] - [Eclipse Marketplace] 가있다. 눌러보자 그러면 이런 화면이 뜨는데 이클립스에서 개발 툴을 확장해서 쓸 수 있게 해준다. Find라고 적혀있는 검색탭에 node라고만 적어주면 두번째에 Nodeclipse 가 있다. 인스톨버튼을 눌러 설치해주자 엄청 오래걸린다. 딴짓 할 준비를 하자 저걸 누르면 설치가 시작되고 오래걸리고 나면 계속 다음다음을 눌러주자 이게 마지막 화면이다. 여기서 동의하기 누르고 ..
node.js 설명을 하자면, javascript를 기반으로 만들어진 프레임워크다 그 내부를 뜯다보면 다른 언어들과 마찬가지로 역시 C가 기본 베이스로 되어있다고 한다. 그리고 중요한건 모듈식 언어인데, 프레임워크에 npm이라는 사이트에서 원하는 기능의 모듈을 그냥 가져와서 붙일 수 있다. 그냥 npm에서 찾아서 입력만 하면 끝이다. 따로 기능을 구현하지 않더라도 모듈사용법만 잠깐 읽으면서 사용이 가능하다. 나도 이번에 배우면서 처음으로 접했지만, 진짜 없는게 없을 정도로 서버구축하기엔 쉽고 편하다 역시 구글이다. node.js를 설치하는 방법 https://nodejs.org/en/ 여기에 들어가면 바로 앞에 다운로드 하기가 있다. 왼쪽이 stable한 버젼이지 왼쪽을 받자 더블클릭이라는 고급스킬을 사..
몽고DB는 NoSQL 문으로 사용하는 데이터베이스다 기존에 사용하는 RDBMS(관계형 데이터베이스) 와는 조금 다르다 1. 속도를 최선으로 한다. (CPU에 최소한의 부하를 준다.)2. 그래서 스키마사이의 관계를 비교하는 일은 안한다.3. 비교를 안해서 데이터 중복허용(저장은 데이터가 아니라 JSON형태로 하나씩 저장된다)4. 그렇기때문에 일관성이 중요한 데이터베이스에는 적합하지 않다5. 하지만 대량의 데이터를 처리해야하는 빅데이터와 IOT에는 적합하다.6. 용량을 많이 차지하게 되기때문에 작은 데이터 위주로 쓰는게 좋을것이다.7. 명령은 CRUD를 외워두자 곧 알게된다. 몽고DB를 설치하기 위해서는 몽고 DB사이트로 가야한다. https://www.mongodb.com/ 좌측상단에 다운로드 버튼을 누르..