5/26 TIL: Dockerfile, apt, C++ Generics, C의 ADT

3270 단어 todayilearned
--도커--
Go 프로젝트용 Dockerfile


FROM golang:1.15 AS builder

RUN apt update && apt upgrade -y && \

apt install -y git \

WORKDIR /app

# Get install script, run, and make binary

RUN curl -fLo install.sh https://raw.githubusercontent.com/cosmtrek/air/master/install.sh \

&& chmod +x install.sh && sh install.sh && cp ./bin/air /bin/air



  • 여기 'apt-get' 섹션의 Dockerfile 모범 사례에 제안된 것과 동일한 RUN 문에서 항상 RUN apt-get 업데이트와 apt-get 설치를 결합하십시오. https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
  • WORKDIR 명령어는 Docker 컨테이너의 작업 디렉터리를 정의하는 데 사용됩니다. 모든 RUN, CMD, ADD, COPY 또는 ENTRYPOINT 명령은 지정된 작업 디렉토리에서 실행됩니다.

  • apt 대 apt-get
  • apt는 apt-get의 하위 집합이며 일반적으로 apt가 선호됩니다
  • .
  • apt는 패키지 관리에 필요한 모든 명령을 제공하므로 그대로 사용하십시오.

  • 적절한 업데이트 대 적절한 업그레이드
  • apt 업데이트는 사용 가능한 패키지 및 해당 버전 목록을 업데이트하지만 패키지를 설치하거나 업그레이드하지는 않습니다.
  • apt upgrade는 실제로 가지고 있는 패키지의 최신 버전을 설치합니다. 목록 업데이트 후
  • -y 플래그는 "모두에게 예라고 말하십시오"를 의미합니다
  • .
  • https://askubuntu.com/questions/94102/what-is-the-difference-between-apt-get-update-and-upgrade

  • --C++ 기초--

    C++의 제네릭

    
    #include <iostream>
    
    using namespace std;
    
    template <class T>
    
    T GetMax (T a, T b) {
    
    T result;
    
    result = (a>b)? a : b;
    
    return (result);
    
    }
    
    int main () {
    
    int i=5, j=6, k;
    
    long l=10, m=5, n;
    
    k=GetMax<int>(i,j);
    
    n=GetMax<long>(l,m);
    
    cout << k << endl;
    
    cout << n << endl;
    
    return 0;
    
    }
    
    


  • C++의 템플릿: https://www.cplusplus.com/doc/oldtutorial/templates/

  • 논리적 데이터 구조 - 물리적 데이터 구조를 사용하여 구현: 배열 또는 연결 목록
  • 스택(선형, LIFO)
  • 대기열(선형, FIFO)
  • 나무(비선형)
  • 그래프(비선형)
  • 해시 테이블(표 형식)

  • 추상 데이터 유형(ADT)
  • ADT는 값 집합과 작업 집합으로 동작이 정의된 개체의 유형(또는 클래스)입니다
  • .
  • ADT의 정의는 수행할 작업만 설명하고 이러한 작업을 구현하는 방법을 설명하지 않으므로 추상화됩니다
  • .
  • 목록, 스택 및 대기열 ADT: https://www.geeksforgeeks.org/abstract-data-types/

  • --이산 수학--

    수학 정리 예: 짝수 정수에 홀수 정수를 더하면 또 다른 홀수 정수입니다.

    증거:
  • m이 짝수이고 n이 홀수라고 가정합니다. (1. 가정을 명시하십시오)
  • ∃k1 ∈ Z 및 ∃k2 ∈ Z m = 2k1 및 n=2k2 + 1 (2. 공식적으로 가정을 정의)
  • 그러면 m + n = (2k1) + (2k2+1) = 2(k1+k2) + 1이 됩니다. k3 = k1 + k2라고 하고 정수입니다. (3. 조작)
  • 따라서 ∃k3 ∈ Z 그래서 m + n = 2k3 + 1 (4. 결론의 정의에 도달)
  • 따라서 m + n은 홀수입니다. (5. 결론)

  • 정제
  • n 및 d 정수의 경우 d ≠ 0, d | n ↔ ∃k ∈ Z인 경우 n = dk
  • d라고 하면 | n, n은 d로 나눌 수 있음을 의미합니다

  • ∀x ∈ D, P(x) → Q(x) 특정 x 값으로 수량화하는 경우 단일 화살표를 사용하여 두 명령문 사이의 의미를 표시합니다.

    이중 화살표가 있는 P(x) ⇒ Q(x)는 두 술어 사이의 암시입니다. 위와 같은 의미입니다

    다른 증명 방법:
  • 반례로 반증
  • 사건분할증명
  • 모순에 의한 증명
  • 대명사로 증명
  • 좋은 웹페이지 즐겨찾기