Programming(72)
-
make_shared, make_unique의 장점
장점 코드 중복 제거 std::shared_ptr aobj(new MyType); 와 같이 MyType을 2회 지정하는 것을 1회로 줄일 수 있음 이 2회 지정의 실수를 예방할 수 있음 예외 안정성 func(std::shared_ptr(new MyType), someFunc()); new MyType이후 someFunc가 실행되어 (compiler에 의해) 여기서 exception 발생 시, MyType에 대한 메모리 누수 발생 make_shared를 통해 생성해야 CBLK가 객체와 한 덩어리로 할당됨 단점 custom deleter를 지정할 수 없음 지정하려면, make_shared를 사용하면 안 됨 std::shared_ptr aobj(new MyType, customDeleter); 초기화 리스트 ..
2022.04.16 -
C++ map/vector
map 선언 및 값 추가 std::map tbl; tbl["key1"] = 0; tbl["key2"] = 1; map에서 값 찾기 및 제거 auto iter = tbl.find("key1"); if (iter != tbl.end()) { tbl.erase(iter); } // or if (tbl.contain("key1")) { count
2022.03.01 -
Rust (러스트)
History 2010년 7월 Mozilla 재단에서 최초 공개한 프로그래밍 언어이다. 2021년 Rust foundation으로 분리되었으며 Google, Amazon, MS 등이 회원사로 참여하고 있다. 또한 최근 AOSP에서도 Rust를 C++, Java, Kotlin에 이어 AOSP를 구현하는데 사용하는 하나의 언어로 선택하였으며, 구글의 세로운 OS인 '퓨시아'에서 Rust를 사용하고 있다. Stackoverflow에서 2016년 부터 현재(2021년)까지 개발자들이 가장 좋아하는 언어 1위를 기록하고 있다. 특징 C/C++과 동등한 수준의 성능을 보여주면서 동시에 안전성, 동시성을 강화하였다. Trait이라는 (interface와 유사한) 개념을 사용하여 다형성을 지원한다. null 포인터 에..
2022.01.09 -
Go 언어 변수 선언
var Go 언어에서 변수 선언은 var를 사용한다. 그리고 type을 뒤에 적는다. var a int var f float32 = 11. a = 1 변수를 정의하고 사용하지 않을 경우 에러가 발생한다. type deduction 변수 선언과 할당을 동시에 수행하여 할당되는 값을 통해 type을 유추하는 type deduction을 지원한다. a := 10 const var 대신 const를 사용하여 변수를 선언 할 시 상수로 선언된다. package main import "fmt" func main() { const a int = 10 } 위와 같이 const로 선언 하는 경우 사용하는 코드가 없어도 build 에러가 발생하지 않는다. 포인터 변수 C언어의 *, &같은 연산자를 사용하여 포인터 연산을 ..
2022.01.09 -
Flutter vs. React Native
About Flutter and React Native Flutter와 React Native는 현재 mobile에서 가장 많이 사용되는 cross platform 입니다. Flutter Reactive Native initial release 2017 2015 backed by Google Facebook language Dart JavaScript performance close to native fairly robust open source Y Y UI proprietary customized widgets native components Documentation extensive extensive community & support limited, fast growing extensive 60+f..
2021.12.30 -
go 언어로 web server 만들기 1 (고 언어 웹 서버)
고 언어로 웹 서버 만들기 시작 고 언어를 통해 간단히 web server를 만다는 법에 대해서 설명해 드리겠습니다. 우선 HTTP protocol 처리를 위해 "net/http"를 먼저 import 합니다. 또한 log 출력을 위해 fmt과 log도 import 합니다. import ( "net/http" "fmt" "log" )이후 다음과 같이 main 함수를 작성합니다. func handleRoot(res_writer http.ResponseWriter, req *http.Request) { fmt.Fprintf(res_writer, "welcome here %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handleRoot) res := h..
2021.12.30