전체 글 (611) 썸네일형 리스트형 Graph and Tree 그래프 중 연결에 방향이 없고 순환하는 사이클이 없는 그래프를 트리라고 정의한다. 트리는 노드간에 부모- 자식의 관계를 가지는 방향이 있는 연결을 갖고 루트노드를 갖고 있다. 탐색 / 비선형구조 탐색 그래프의 구현 그래프를 구현하는 방법은 인접행렬(adjacency matrix)과 인접리스트(adjacency list)로 크게 나눌 수 있다. 트리 그래프 중 회로(cycle)가 없는 그래프를 트리라고 한다. dfs(depth first search, 깊이 우선 탐색) 가장 위에 있는 정점에서 출발하여 모든 정점들을 깊이우선으로 탐색하며, 탐색하는 순서를 알아보자. 출발 정점을 트리의 가장 위에 있는 정점으로 하고, 한 정점에서 이동 가능한 정점이 여러 개 있을 경우 왼쪽의 정점부터 방문한다고 가정하면, 단계별 탐색 과정은 다음과 같다. 깊이우선탐색과정에서 3단계 이후 더 이상 진행할 수 있는 정점이 없다. 그 이유는 간선으로 연결된 정점들 중 아직 방문하지 않은 정점을 방문하기 때문이다. 이처럼 더 .. 탐색 / 선형구조 탐색 i번째 자료를 탐색한 다음, i+1번째로 탐색해야할 자료가 유일한 형태를 의미한다. 2차원, 3차원 구 조라도 순서가 일정하게 정해져 있으면 이는 선형이라고 할 수 있다 순차탐색 자료의 특성에 관계없이 사용할 수 있는 일반적인 방법으로 전체탐색기법의 한 방법이다. 첫 번째 원소로부터 시작하여 한 원소씩 차례로 다음 원소를 탐색해 나가는 방법으로 자료가 n개 있을 때의 계산량은 O(n)이다. 이분 탐색 S 에 n개의 원소를 입력받고, 그 중에 k가 있는지를 찾는 알고리즘이다. 이 알고리즘은 오름차순이나 내림차순으로 정렬된 선형구조에서 원하는 원소를 찾는 것으로 계산량은 O(log2 n)이다. 이분탐색의 탐색순서(○는 처음 접근하는 원소이고, 사각형은 찾은 곳의 값이 찾으려는 값보다 작으면 찾는 위치, 둥근.. [ML] ResNet 1 Shortcut Connection 단순히 더하는 add입니다. 레이어간의 연결이 순서대로 연속적인 것만 있는 것이 아니라, 중간을 뛰어넘어 전달하는(더하는) shortcut이 추가된 것입니다. 연산은 매우 간단하고, 개념도 매우 간단하지만 이것이 그래디언트를 직접적으로 잘 전달하여 gradient vanishing/exploding 문제를 해결하는 큰 효과를 불러일으키게 됩니다. low-level vision과 computer graphics 분야에서 Partial Differential Equations(PDEs)를 풀기 위해 Multigrid 방법들이 많이 사용됩니다. 이것은 다양한 스케일(크기)에서의 하위문제로 시스템을 재정의하는 것입니다. 쉽게 설명하면, 코카콜라 캔을 학습한다고 하였을 때, 코.. vi 편집기 문자열 찾기 vi, vim 문자열 찾기 / 바꾸기 vi, vim 문자열 찾기 바꾸기 vi 문자열 찾기 vi, vim에서 문자열을 검색하기 위해서는 일반모드(vi를 실행한 상태, 입력모드나 명령행 모드라면 ESC로 빠져나온 상태)에서 "/"를 입력하고 찾을 문자열�� ttend.tistory.com Bash 입문자를 위한 핵심 요약 정리 (Shell Script) 블로그와 SNS에서 주기적으로 기술 정보를 찾고 분류하여 가치를 더해 공유합니다. blog.gaerae.com [Linux] sh파일로 gcc 컴파일 chmod 700 gcc.sh linux에서 sh 파일로 gcc컴파일 쉽게 하기 sh 파일에 자주 쓰는 명령어를 담아 놓으면 일일이 명령어를 타이핑할 필요 없이 sh파일을 실행해서 명령어들을 한꺼번에 수행할 수 있다. 유의사항) #!bin/bash 다 붙여서 써줘야함 안 그러면 에러� kerry123.tistory.com [C] sizeof C 언어 코딩 도장: 36.4 배열의 크기 구하기 반복문으로 크기가 10인 배열의 요소를 모두 출력한다면 다음과 같이 만들 수 있겠죠? int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 요소가 10개 for (int i = 0; i < 10; i++) // 0부터 10까지 반복 { // dojang.io sizeof 연산의 함정 C에서 sizeof는 해당 변수 혹은 자료형의 크기를 알아 보고자 할때 쓰이며 동적 메모리 할당인 malloc을 비롯한 여러 함수와 복합적으로 사용할 경우가 적지 않게 있습니다. 그러나 이 sizeof 를 쓸 sckllo7.tistory.com [C/C++] NaN [C] 변수형 출력 C 언어 코딩 도장: 7.1 정수형 변수 선언하기 본격적으로 정수 자료형을 사용해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. integer.c #include int main() { char num1 = -10; // 1바이트 부호 있는 정수형으로 변수를 선언하고 dojang.io [C] 배열 초기화 [C] union, struct union 공용체는 여러 멤버에 동시에 접근하지 않는 경우 같은 메모리 레이아웃에 멤버를 모아둘 때 사용합니다. 특히 공용체는 임베디드 시스템이나 커널 모드 디바이스 드라이버 등에서 주로 사용하며 보통은 거의 쓰지 않습니다. C 언어 코딩 도장: 54.1 공용체를 만들고 사용하기 이제 공용체를 만들어보겠습니다. 공용체는 union 키워드를 사용하여 정의합니다. union 공용체이름 { 자료형 멤버이름; }; 공용체는 정의만 해서는 사용을 할 수가 없습니다. 따라서 공용체도 변수 dojang.io 구조체와 포인터 배열 C 언어 코딩 도장: 53.2 구조체 포인터 배열 선언하기 구조체 요소가 한꺼번에 뭉쳐져 있는 배열이 아닌 요소마다 메모리를 할당하고 싶을 수도 있습니다. 이때는 구조체 포인터 배열을 만들고.. gcc 컴파일 이와 같이 향상된 어셈블리어는 인간이 좀더 다루기 쉽도록 도와주기 위한 다양한 명령과 기능을 제공하고 있다. MIPS의 어셈도 마찬가지로 확장된 어셈블리어를 제공하기 때문에, 좀더 사용하기 쉽기는 하겠지만.. 여전히 프로세서의 세부적인 작동방식을 이해하고 있어야만 한다. 위에서 C(:12)/C++같은 고급언어의 경우에는 프로세서의 세부적인 작동방식을 이해하고 있을 필요는 없다. 왜냐하면, 인간이 이해하기 쉬운 코드를 만들어내면, 이것을 c혹은 c++ 컴파일러가 해당 프로세서가 이해할 수 있는 어셈블리어로 변환 시켜주기 때문이다. 때문에 Intel 계열 프로세서에서 작동하도록 만들어진 C프로그램은 거의 코드의 변환 없이 Sparc 프로세서에서도 작동을 한다. 단지 컴파일만 새로 해주면 Sparc 프로세서가.. x86 x86 또는 80x86은 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에서 사용한 명령어 집합 구조들을 통칭하는 말이다. x86 아키텍처는 데스크톱 컴퓨터 시장에서 매우 널리 쓰이며, PowerPC 같이 좀 더 근대적인 아키텍처를 사용한 프로세서들이 x86과 경쟁했으나 그다지 많은 시장 점유율을 확보하지는 못했다. x86-64는 x86 명령어 집합 아키텍처의 64비트 모임이다. x86-64 또는 x64의 이름을 일상적으로 사용하기에 이르렀다. SIMD 명령 집합 80486 이후 x86 아키텍처에는 멀티미디어 처리를 위한 SIMD 명령 집합과 이를 위한 레지스터들이 추가되었다. 이 중 처음으로 도입된 것은 펜티엄 MMX에서 소개된 MMX로, 부동소수점 레지스터와 공유되는 .. [C/C++] ifdef extern "C", __cplusplus의 의미를 알게 되었다. 기본적으로, 오버로딩은 name mangling을 이용한 기법이다. 그러나, 이것이 c, c++ 코드가 함께 있다면, 이 때문에 빌드 시 에러가 발생할 것이다. c코드의 경우, 명시적으로 컴파일러에게 c방식으로 컴파일하라고 알려주어야 한다. c, c++ 소스가 산재해 있다면, c소스에는 __cplusplus 매크로와, extern "C"를 사용해서 name mangling을 피해가야 할 것이다. extern "C"는 cpp 소스가 c 소스를 include 했을 때 맹글링 방지를 위한 도구였다. 그런데 코드는 그래도 있고, 만약에 c소스에서 c소스를 불러온다면 어떻게 될까? 컴파일 에러가 난다. 왜냐하면 extern "C"는 cpp에서만 정.. col, row Major [BLAS] Matrix Multiplication Library BLAS는 Basic Linear Algebra SubPrograms의 약자로써 기초 선형대수(행렬곱) 에 대한 표준(거의 표준) 규격 안이다. 이러한 BLAS의 종류로는 기업용으로는 AMD ACML , Intel MKL , IBM ESSL , Nvidia CUBLAS , Apple Accelearate spring.ghost.io single floating point [Basic] avx 1. avx실행가능 확인 AVX (Advanced Vector eXtensions) 란? AVX는 Advanced Vector eXtensions의 약자로 2008년 4월 인텔 개발자 포럼에서 x86 SIMD Instruction Set로 SSE Instruction Set series의 후속작이다. 2011년에 출시된 Intel SandyBridge microarchitecture 부.. corona-world.tistory.com How to tell if a Linux machine supports AVX/AVX2 instructions? I'm on SUSE Linux Enterprise 10/11 machines. I launch my regressions to a farm of machines.. windows에서 linux명령어 사용 Windows 10에서 Linux Bash 명령어 사용하기 Windows 10까지 올라오면서 이미 됐어야 했던 Linux명령어 사용이 Windows 10에 와서 지원하게 되었습니다. Linux를 공부하시는 분들은 Linux의 구조를 알아야 하니 멀티 OS를 돌리셔야 하겠지만, 따로 명�� tysct.tistory.com load, store 명령어 / 메모리 계층 메모리 계층(Memory Hierarchy) 메모리 종류 : 1. 메인(Main) 메모리 : 램(RAM) (D램) 2. 레지스터(Register) : CPU 안에 내장되어 있어서 연산을 위한 저장소 제공 3. 캐쉬(Cache) : S램. CPU와 램사이에서 중간 저장소 역할 4. 하드디스크(H.. dakuo.tistory.com 메모리 종류 : 1. 메인(Main) 메모리 : 램(RAM) (D램) 2. 레지스터(Register) : CPU 안에 내장되어 있어서 연산을 위한 저장소 제공 3. 캐쉬(Cache) : S램. CPU와 램사이에서 중간 저장소 역할 4. 하드디스크(Hard Disk)와 이외 장치 : 하드 디스크, I/O 장치 등등 메모리들은 프로그램이 실행하는 동안 데이터의 입력 및 출력을 담당한.. [vs code] 실행 오류 [vs code] 초기화 VS CODE 완전 초기화 / 리셋 하기 VS CODE로 열심히 프로그래밍을 하다보면 VS CODE가 이상해질때가 있다. F5를 눌러서 실행시켜도 무반응이라던지, 모듈을 찾지 못한다던지.. 먼저 실행중인 VS CODE를 종료해준다. 그리고 파일 탐색기� study.ryuss.com VScode 초기화 시키기(완전 삭제) 안녕하세요 바람코코 입니다 오늘할 공략은 F5 눌렀는데 ~~ 경로에서 doesn't exist 가 나올 때가 있는데요. 어떤 lunch.json를 설정하라고 나오는데 어떻게 건드리는 건지 모르겠어서 초기화를 시켜� oneday-haru.tistory.com C:\사용자(user)\이름(Administrator)\AppData\Roaming\Code Code폴더를 지운 후 -> .vscod.. 비트 연산 [C] C언어 전처리기 1) 조건부 컴파일 전처리문이므로 컴파일되기 전에 조건을 평가하며 코드를 컴파일 대상에 포함시키거나 제외시키는 역할을 한다. 이때 조건의 형태는 여러 가지가 있지만 주로 매크로 상수의 존재 여부나 값에 대한 평가식이 사용된다. #ifdef, #ifndef 2) #if if는 매크로의 값을 평가하거나 여러 가지 조건을 결합하여 컴파일 여부를 결정하는 좀 더 복잡한 전처리문이다 #if 조건1 코드1 // 조건1을 만족하면 코드1을 컴파일 #elif 조건2 코드2 // 조건 2가 만족되면 코드2를 컴파일 #else 코드3 // 둘 다 맞지 않으면 코드 3을 컴파일 #endif (1) 상등, 비교 연산자 사용이 가능하다. ==, != , >, =, [C++] 입력 받기 엔터까지 N개의 숫자 입력 받기 - C++ C++(CPP) Programming 딱히 문제가 있어서가 아니라 단순히 저장 용으로… 알고리즘을 풀거나 기타 코딩을 하다보면 특정 숫자를 입력받아야 하는 경우가 생긴다. 흔히 int형 배열, 예를 들어 int num[10]� mystes.tistory.com cmake란? CMake 란 CMake는 다양한 빌드(Build) 도구 중 하나 이다. - Build 도구 없이 IDE를 통해 빌드하고 배포할 때 발생하는 가장 큰 재앙은 운영환경에 배포되는 version이 개발자의 PC 에 의해 결정된다는 것 --> 다양한 운영체제에서 문제없이 빌드하기 위해 필요함. cmake의 gui는 명료하다. 상단에 Source file이 들어있는 src 폴더를 지정하고, Build 할 경로폴더를 지정한 뒤, 하단의 Generate을 하면 1차 생성, 그리고 Configure 을 하면 완료된다. Generate 할 때, VS version을 맞춰서 설정해야 하고, Open project를 해서 Visual studio에서 최종 빌드를 한다. - Github의 source code를 빌드하기 위.. [vs code] 설치 vscode는 특정 언어를 위해 만들어진게 아니라 범용 편집기이기 때문에 코드만 짠다고 바로 돌릴순 없다. 코드를 빌드할 컴파일러와 옵션을 지정해줘야 한다. 이를 위해 tasks.json 파일을 작성한다. 빌드 커맨드가 g++을 직접 사용하기 때문에 cpp 파일을 하나밖에 빌드할 수 없다. 소스 파일이 다수가 되면 tasks.json에서 어떻게 빌드한단 말인가? vscode 설정 방법을 검색해보면 다 저렇게 나오는데 나도 속을 뻔했다. (그렇지만 2. Configuration에서 쓴 내용은 command 설정만 빼고 나머진 유효하다.) 다수의 소스 파일을 빌드하기 위해서는 최소한 Make가, 좀 더 수월하게 하려면 CMake까지 필요하다. vscode가 Visual Studio처럼 빌드 도구까지 제공하진.. Gradle Gradle을 이용해 자바 프로젝트 만들기 이 포스트를 이용해 Gradle 자바 프로젝트를 생성하는 법을 알아 보도록 하겠다. 예상 독자 이 포스트의 독자들은 자바 개발 환경 설정을 마친 상태이며, 각자 원하는 IDE를 다운로드한 상태이다 imasoftwareengineer.tistory.com Gradle 그래들이란 오픈소스 빌드 자동화 툴이다. 이게 무슨 말이냐, 여러분은 자바 프로젝트를 하면서 외부 라이브러리르 갖다 쓴 적이 있을 것이다. 그 때마다 여러분은 외부 라이브러리 jar파일을 가져와 Classpath에 추가해야 했을 것이다. 외부 라이브러리가 1개라면 상관 없겠지만 100개 1000개라면 인간이 직접 관리하기에는 너무 많은 양일 것이다. 그래들은 여러분이 jar파일을 추가하는 대신 해당 .. Docker 설치하기 / 스프링 부트 도커에 올리기 도커(Docker) 설치하기 이 포스트에서는 도커(Docker)에 대해 알아보고 도커를 설치하는 방법에 대해 알아보도록 한다. 목표 도커 (Docker) 도커 설치 및 실행 도커 (Docker) 도커는 몇 년 전부터 붐을 일으키기 시작해 이제� imasoftwareengineer.tistory.com 예를들어서 15개의 마이크로 서비스들이 15개의 팀에 의해 개발된다고 치자. 이 15개의 서비스들이 하나의 어플리케이션을 구성한다. 이런 서비스들의 예로는 Authentication Service, Database Service, Application Services, Tracking Services등등이 있다. 다시 말해 하나의 어플리케이션이 정상적으로 동작하기 위해서는 여러가지 서비스의 협력이 필요하다는.. Docker란? 초보를 위한 도커 안내서 - 도커란 무엇인가? 도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이 subicura.com 도커란? 도커는 컨테이너를 관리하는 플랫폼 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 컨테이너라 하면 배에 실는 네모난 화물 수송용 박스를 생각할 수 있는데 각각의 컨테이너 안에는 옷, 신발, 전자제품, 술, 과일등 다양한 화물을 넣을 수 있고 규격화되어 컨테이너선이나 트레일러등 다양한 운송수단으로 쉽게 옮길 수 있습니다. 서버에서 이야기하는 컨테이너도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공.. cache 캐시[Cache]란? 프로그램이 수행될 때 나타나는 지역성을 이용하여 메모리나 디스크에서 사용되었던 내용을 특별히 빠르게 접근할 수 있는 곳에 보관하고 관리함으로써 이 내용을 다시 필요로할 때 보다 빠르게 참조하도록 하는 것이다. 쉽게 풀어서 설명하면 사용되었던 데이터는 다시 사용되어 질 가능성이 높다는 개념을 이용한 것이다. 이를 통해서 다시 사용될 확률이 높은 아이들을 좀 더 빠르게 접근 가능한 저장소를 사용한다는 개념이다. 캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐.. 이전 1 ··· 17 18 19 20 21 다음 목록 더보기