전체 글(119)
-
내가 개발을 하면서 겪은 멍청한 실수들 (1)
1. go언어에서 range문으로 배열의 값을 가지고 올 수 있다. 이 값 변수는 재사용된다. 코드 몇 줄 줄여보려다가 큰일날뻔 했다. m := map[string]*string{} arr := []string{"a", "b", "c"} for i, v := range arr { m[v] = &v // X (v 변수는 재사용된다. 따라서 모든 map 값에 같은 주소가 들어간다. m[v] = &arr[i] // O } 2. go에서 map은 여러 고루틴에서 접근할 경우 항상 lock을 걸어야 한다. 따라서 편하게 사용하려고 따로 struct를 만들어서 사용했다. // 문제가 된 코드 type Map[K comparable, V any] struct { sync.RWMutex m map[K]V } func ..
2024.02.27 -
Docker 보고서
Docker 보고서도커란?컨테이너 기반의 오픈소스 가상화 플랫폼리눅스에서 운영 체제 수준 가상화의 추상화 및 자동화 계층을 추가적으로 제공컨테이너란?호스트 OS상에 논리적인 구획(컨테이너)를 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리, 어플리케이션 등을 하나로 모은것도커의 특징하드웨어를 가상화하지 않기 때문에 VM에 비해서 빠르다.일반적인 VM과 다르게 호스트 운영체제와 커널을 공유하여 동작
2020.09.17 -
객체지향 프로그래밍 보고서
객체지향 프로그래밍 보고서객체란?어떠한 속성값과 행동을 가지고 있는 데이터변수, 자료 구조, 함수 또는 메소드가 될 수 있다.객제지향 언어의 특징캡슐화객체의 속성과 행위를 하나로 묶는다.그중 일부를 외부에서 접근 불가능하게 은닉한다.추상화중요한 정보들만 간추려서 구성코드의 재사용성, 가독성을 높인다.상속성부모 클래스의 특성을 이어 받는것기존에 정의된 특성을 재사용, 혹은 추가/확장이 가능다형성여러 가지 형태를 가질 수 있는 능력한 타입의 참조변수로 여러 타입의 객체를 참조 가능객체가 필요한 이유코드의 중복을 없애준다.절차지향에 비해서 사람의 사고방식과 더 가깝다.작업의 규모와 복잡도가 증가할수록 절차지향에 비해 관리하기 편하다.절차지향으로만 코드를 짜다가 객체지향으로 코드를 짜면 신기하다.객제지향으로 코..
2020.09.09 -
메모리 할당 알고리즘
메모리 할당 알고리즘first-fit최초로 할당받을 수 있는 크기의 공간에 무조건 할당된다.Best-fit공간을 모두 탐색하고 할당할 메모리 크기보다 크고 그중에 가장 작은 공간을 찾아 할당한다.일반적인 환경에서 외부 단편화가 제일 적게 일어난다.Worst-fit공간을 모두 탐색하고 가장 큰 공간을 찾아 할당한다.일반적인 환경에서 외부 단편화가 가장 많이 일어난다.효율성First-fit이 다른 알고리즘에 비해 시간복잡도가 적다.Best-fit과 Worst-fit은 메모리 공간을 전체를 탐색해야 하지만 First-fit은 모두 탐색하지 않아도 공간이 나온다면 바로 넣으면 된다. 일반적인 환경에서는 First-fit과 Best-fit의 성능은 비슷하고 Worst-fit은 성능이 떨어진다.
2020.09.02 -
[DreamHack] oneshot
보호되어 있는 글입니다.
2020.08.05 -
Layer7 포인터 과제
Layer7 포인터 과제문제 1. *와 &연산자의 역할이 무엇인지 말해보세요*연산자는 포인터변수 안에 저장되어있는 다른 변수의 주소로 값을 참조할 때 사용한다. &연산자는 변수가 실제로 저장되어있는 주소를 반환한다.코드#include int main() { int a = 5; int *b = NULL; printf("a의 주소값은 %p 입니다.\n", &a); printf("a의 값은 %d 입니다.\n", a); printf("a의 주소값을 포인터 b에 대입합니다.\n"); b = &a; printf("b의 주소값은 %p 입니다.\n", &b); printf("b의 값은 %p 입니다.\n", b); printf("b의 참조값은 %d 입니다.\n", *b); }출력값a의 주소값은 0x7ffeefbff54c..
2020.07.01