[1/11]개발 레퍼런스 정리

낭만개발자·2021년 1월 19일
0

history

목록 보기
1/1

CS

메모리

스택(Stack), 힙(Heap), 데이터(Data)영역 기본 소개
출처: https://dsnight.tistory.com/50 [Development Assemble]

data영역 - 전역variable

main함수 호출전 할당. 프로그램 실행동안 계속 실행

stack영역 - 지역변수, 매개변수!

매개변수도 stack임.즉 매개변수도 메모리 잡아먹는다는 말.

malloc, calloc, realloc을 이용한 메모리 동적 할당

출처: https://dsnight.tistory.com/51 [Development Assemble]
뜻: malloc : memory allocate, calloc : clear allocate, ralloc : re allocate

Call by Value vs Call by Referrence vs Call by Sharing inJS,
and (+ call by address) in C++

JS 에서는 자료형이 원시일경우 call by value로 함수에 주고, 참조형일경우
call by reference로 c++과 여기까진 같다. 근데 함수 내에서 test={a:'함수밖과 다른값'} 처럼 다른값으로 재 할당 이 일어날 경우 주소값을 아예 다른 값, 재할당 되는 값으로 변경된다(이 말은 함수 밖에 참조 된 변수에게 영향을 주지 않는다는 뜻 ) - call by sharing이란 개념임.

  • 참고 =c++은 포인터를 매개변수로 넘기는 call by address 개념이 있다.

https://perfectacle.github.io/2017/10/30/js-014-call-by-value-vs-call-by-reference/
https://blueshw.github.io/2018/09/15/pass-by-reference/
c++
https://m.blog.naver.com/winterwolfs/10159106800

포인터

사용법 : https://aossuper8.tistory.com/3?category=668513

문자열

string은 마지막에 \0 널문자를 저장하므로 HI! 를 string s 에 할당하면 실제로 +1 byte 되서 4byte이다.

꼭 알아둬야 할 컴퓨터 단위

http://mahru.co.kr/Computer_tip/13388
-cpu
1Ghz = 1,000MHz

-해상도
해상도(19201080), 색표현력(8bit), 주사율(60hz) 인 모니터의 경우
한번에 1920
1080 = 2,073,600 개의 픽셀을 그리며
각 픽셀은 8bit 서브픽셀 3 개(R,G,B) = 24bit 의 색상을 표현할 수 있다.
그리고 1 초에 60 번 화면을 그릴 수 있으므로
1 초에 1920 1080 24 * 60 개의 bit 를 처리 하여 화면을 표현한다.

마크다운 - 이스케이프

마크다운 포맷을 무시하고 특수문자를 사용하려면 '\' 기호를 사용한다
ex) \

C

https://boostcourse.org/cs112

printf f는 format뜻함.
clang hello.c 같이 실행하면 a.out생기는데 binary file임 기계어, 어셈블리어
문자열은 문자 배열.

메모리.
16진수 FF 가 왜 255(10진법)이냐면,
16진수의 두번째 자리는 16의 1승이고, 첫번째 자리는 16의 0승이다.
따라서 1,2,3,4...9,A,B,C..F 에서 F는 16진수의 15번째 숫자니까
FF = (15x16^1) + (15x16^0)가 되는데
= 240 + 15 = 255

10진수랑 16진수랑 표기가 헷갈리니까
0x prefix를 두기로 함 ex)0xFF
& 가 ~의 주소를 달라는 연산자라면(주소 묻기)
*는 반대로 그 주소로 가줘! 라는 의미다.(주소로 가기)
https://www.boostcourse.org/cs112/lecture/119027

문자열
실제 string은 typedef char *string 이런식으로 생겨서
string s == char *s 같다.


위의 strlen와 strcpy는 #include <string.h> 인클루드로 갖고 와야 하며, strlen은 길이(길이 재니까 동적 크기 변수 생성 가능), strcpy는 string 복사. 현재 소스는 t 포인터가 heap에 메모리 할당malloc(여기선 문자 갯수 + null이니까 1해줘야함) 으로 해서 s를 복사 당하고 있다.
(malloc() 쓰면 맨 밑에 free(t)//동적메모리해제 해줘야 겠지..)

valgrind ./memory.c
memory.c 파일 메모리 누수 및 문법 검색
help50 valgrind ./memory.c
좀 더 쉽게 보여줌

7) 메모리 교환, 스택, 힙 https://www.boostcourse.org/cs112/lecture/119033

gcc, Clang 다 같은 컴파일러. gcc vs clang 질문은 누가 아우디가 좋냐 벤츠가 좋냐랑 똑같은 물음이라고..

함수에 인자를 전달할 때, 그 값을 복사해서 전달함.

![]
int tmp = *a; 여기서 는 그주소로 가라는 겁니다.
따라서 아래 로직에서 swap() argument : 전달인자 (parameter:매개변수는 함수 정의시 ()안에 변수들이라 한다. 차이가 있다 한다) 에 저런식으로 주소값을 던지고, 파라미터에서 point로 받아서 포인터 변수를 사용(
보유한 주소값에 가!서 작동해!) 해야 swap에서 exchange한게 실제 주소값에 반영 된다고(=참조해 적용된다고) 한다.


C도장
https://dojang.io/mod/page/view.php?id=358

리틀엔디언 vs 빅엔디언

빅엔디언은 데이터를 byte로 쪼갰을때, 높은자리의 수~낮은자리.. (highByte) (lowByte) 순으로 정렬. JAVA나
UNIX 계열의 cpu에서 사용.

리틀엔디언은 데이터를 byte로 쪼갰을때, 낮은자리의 수 ~ 높은 자리.. (lowByte)(highByte) 순으로 정렬.
대부분AMD Intel cpu에서 사용함. 대체적으로 리틀엔디언 사용한다고 보면 됨.

https://blog.naver.com/tipsware/221233872040

잘나옴 읽어보기 (ToRead)
https://jhnyang.tistory.com/226

arduino에서 data 던질때.

Arduino에서 highByte(value) 사용시 value의 highByte를 리턴.
lowByte(value) lowByte를 리턴.

함수 사용하지 않을땐
나누기
low=input & 0xff
high=(input>>8) & 0xff
합치기
input=low | (high<<8).
출처

offset이란

오프셋이란 ‘어떤 기준 번지에서부터의 상대적인 거리’라는 뜻이다. 주로 포인터와 함께 사용되며 포인터가 가리키는 시작 번지(Base)에서부터 얼마나 떨어져 있는가를 표현할 때 오프셋이라는 말을 쓴다
http://soen.kr/project/dangeun/dg1/3-2-2.htm

node에서 mqtt등 소켓으로 받을때

Buffer 사용해서 받는다.
ex) buf.readInt

심화과정

"폴링(polling)이란 하나의 장치(또는 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다."
폴링의 문제점
1. 폴링의 주기가 짧으면 서버의 성능에 부담이 간다.
2. 주기가 길면 실시간성이 떨어진다.

웹소켓 polling, streaming 등 용어 설명 및 ref 정리

https://forceson.github.io/android/%EC%B1%84%ED%8C%85%EC%95%B1%EC%9D%84-%EC%84%A4%EA%B3%84%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B4-%EB%82%B4%EC%9A%A9/

https://kamang-it.tistory.com/entry/Webhttp%ED%86%B5%EC%8B%A0%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%96%91%EB%B0%A9%ED%96%A5-%ED%86%B5%EC%8B%A0%EA%B8%B0%EB%B2%95-long-polling

우아한 Tech 간략 설명 : Web Socket
https://www.youtube.com/watch?v=MPQHvwPxDUw
우아한형제들 실시간 서비스 구축 webSocket(난이도 상)
https://woowabros.github.io/woowabros/2017/09/12/realtime-service.html

velopert Long-polling 기법을 사용하여 구현한 실시간 채팅 예제 웹 어플리케이션

https://velopert.com/2269

node.js 비동기의 이해

Nextree
https://www.nextree.co.kr/p7292/

nodejs에서 글로벌로 설정하는법

node.js에서 global로 선언하는 2가지 방법
https://lahuman.github.io/nodejs_global/

Node 강좌

goorm에 무료 강좌 많음.
https://edu.goorm.io/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js

공유기 설정 방법

외부IP에서 내 컴퓨터(내부 IP)로 접속하기
https://studyforus.tistory.com/27

JS

str.length; 문자열 길이
.join(' ');배열 문자열로 합치기 (지금껀 공백기준으로 합침)
.split(' ')문자열 배열로 나누기(지금껀 공백기준으로 배열 나눔.)

함수 표현식

https://velog.io/@surim014/JavaScript-%ED%95%A8%EC%88%98
함수표현식으로 정의된 함수는 런타임시에 해석되고 실행이 된다.

// 기명 함수표현식(named function expression)
var company = function company() {
/ 실행코드 /
};

아두이노

esp32 spec, 전압별 비선형 데이터임.
https://randomnerdtutorials.com/esp32-adc-analog-read-arduino-ide/

아두이노 업로드 빨리 하는법

체크후 코드 확인 취소
https://www.sparkfun.com/news/1552

ArduinoJson

serializeJson(root, charArray) 사용시 윗처럼 던져야 함. 밑에것이 아니라..
https://github.com/bblanchon/ArduinoJson/issues/869

UDP 등 1/14

tcp socket speed 10Mbps only. How can I speed up?
https://www.esp32.com/viewtopic.php?t=839

NodeJS와 소켓 통신 연결 (NodeJS UDP & TCP Example)
https://kimyc1223.github.io/2019-11-27-HoloLens004/

Packet Sender - TCP, UDP Socket 통신 프로그램 개발시 유용한 테스트 프로그램입니다.
출처: https://bigenergy.tistory.com/723 [빅에너지™]

와이어 샤크(패킷받을때)

와이어샤크 사용법
https://run-it.tistory.com/49

네트워크 지식

네트워크 기본 기술노트 알렉스
https://www.youtube.com/watch?v=65h9uxHKGPk
TCP 정확한 데이터 전달,
UDP 손실또한 고려, 속도전.

압축 무손실-> zip
손실->mpeg 영상..


www.naver.com 같은 영어는 컴터가 모르니 DNS서버로 가서 ip 로 숫자로 변환시켜 알려줌.
그래서 목적지까지 가게해주는게 IP, 데이터를 전달해주는게 TCP, 그래서 TCP/IP라고 함.

IP를 찾아가는 경로를 라우팅이라 함. 라우터란 장비가 있음. 전달을 위한 목적.
IPv4, IPv6

NAT.
private IP: 보안상 좋음. 내부아이피겠지.
NAT장비가 private IP를 public IP로 전환을 해줌.

4가지만 일단 알아라.
-ipconfig : 내 ip
-ping : ping 상대방ip 치면 상대방 ip가 살아있으면 response를 해줌. 무한으로 보내면 DDOS공격
-tracert : 어떤 URL을 주면 라우팅 정보를 알려줌.
-nslookup : 해당 도메인의 ip를 응답시켜줌. 즉 상대 ip 알려줌.

이더넷이란: 규격 규약. 물리적 하단에 있는 접속과 관련된 통신 기술.
허브 : 외부에서 통신이 들어오면 브로드캐스팅을 통해 내부로 다 쏴줌.
HTTP, HTTPS: S가 secure 뜻. 암호화.
HTTPS면 전달하는 상황에서 암호화를 하고 받을때 복호화를 해줌.
전자 서명:이 데이터가 원본 데이터야 라는 걸 증명하는 과정
전자 인증:내가 해당하는 사용자야! 라는걸 증명하는 과정.-기관

Hash화, table.. 해쉬는 주민번호 등을 암호화, 복호화 하는 개념이 아닌 즉 암호걸었다 바꿨다 할수 없이
그냥 특정 값으로 떨어져버리게 만드는 것. 그래서 이 값이 정확한지만 알고 끝.

◆홈네트워크기초◆ TCP UDP 차이점과 공유기의 포트포워드, DMZ 개념이해
https://www.youtube.com/watch?v=ePbatYX_ppo

포트포워딩은 외부에서, 공인 IP에 특정한 포트를 바로 내부 사설 IP로 연결해주는 걸 뜻함.
외부포트 : 공인 IP주소의 포트.. 주로 쓰는거.
내부포트 : 공유기가 만들어낸 사설 IP의 포트를 말함.

공유기 설정에서 DMZ란?
공유기는 그 자체로 방화벽 기능을 하는데, 그 기능을 무력시키는게 DMZ
모든 외부포트와 모든 내부포트를 1:1로 매칭

윈도우 가상메모리

https://bogus919.tistory.com/entry/%EB%8F%84%EC%9A%B0%EC%9D%98-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%ED%8E%98%EC%9D%B4%EC%A7%95-%ED%8C%8C%EC%9D%BC-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0

profile
낭만닥터와 슬의를 보고 저런 개발자가 되어야 겠다고 꿈꿔봅니다.

0개의 댓글