728x90
반응형
  • 아래는 쿼리문이 아니라 표현식이다.

(:nodes)-[:ARE_CONNECTED_TO]->(:otherNodes)
  • () 기호는 노드를 의미함
  • -[]-> 는 노드 간의 관계를 의미함
  • 각 노드와 관계에 대해 properties를 할당함
  • 노드들은 특정 라벨에 의해 그룹화 될 수 있음
    • 라벨은 테이블, 노드는 레코드라고 생각할 수 있음

노드 변수

  • SQL의 Alias라고 생각하면 됨.
    • 즉 쿼리에서의 변수 선언
  • 노드 앞에 : 가 없다면 그 자체가 변수가 되어버림
    • 이건 관계에서도 동일함
// 변수 없을 때
MATCH (:Person)
Return Person


// 변수 있을 때
MATCH (p:Person)
RETURN p

// 변수만 돌려줌
MATCH (Person)
RETURN Person

관계

  • 관계는 언제나 화살표로 방향을 가지고 있음
  • 방향이 선언되지 않은 경우 MATCH 구문을 사용함
    • 방향이 특정되지 않았다는 것은, 어느 방향으로든 가능하다는 의미
  • 아래 예시는 쿼리문이 아니라 설명임
  • // 오른쪽 방향 [p:Person]-[:LIKES]->(t:Technology)

// 왼쪽방향
[p:Person]<-[:LIKES]-(t:Technology)

// 방향 없을 때
(p:Person)-[:LIKES]-(t:Technology)


### 관계 타입
* 관계 타입은 자연어 처럼 노드들이 서로 관계하는지를 알려준다
* 관계 타입은 **관계들을 카테고리 화** 시킨다.
    * 이는 라벨이 노드들을 하나로 묶는것과 비슷한 역할
* 또한 노드들이 서로 어떻게 관계하는지를 설명한다

```cypher
MATCH (p:Person)-[r:LIKES]->(t:Technology)
RETURN p,r,t

다양한 관계들

  • 관계라는게 매개 테이블 처럼 생각하면 될 것 같다.

CREATE
  (alice:Person {name:'Alice', age: 38, eyes: 'brown'}),
  (bob:Person {name: 'Bob', age: 25, eyes: 'blue'}),
  (charlie:Person {name: 'Charlie', age: 53, eyes: 'green'}),
  (daniel:Person {name: 'Daniel', eyes: 'brown'}),
  (eskil:Person {name: 'Eskil', age: 41, eyes: 'blue'}),
  (alice)-[:KNOWS]->(bob),
  (alice)-[:KNOWS]->(charlie),
  (bob)-[:KNOWS]->(daniel),
  (charlie)-[:KNOWS]->(daniel),
  (bob)-[:MARRIED]->(eskil)

Properties

  • 노드와 관계 모두에 추가될 수 있는 데이터 타입들
  • properties는 {key: 'value'} 로 담는다
// 프로퍼티 생성
CREATE (p:Person {name:'Sally'})-[r:IS_FRIENDS_WITH]->(p:Person {name:'John'})
RETURN p, r

// 이건 쿼리가 아님
(p:Person {name: "Sally"})-[r:LIKES]->(g:Technology {type: "Graphs"})

쿼리문

// 생성
CREATE (p:Person {name: "Sally"})-[r:LIKES]->(t:Technology {type: "Graphs"})

// 조회
MATCH (p:Person {name: "Sally"})-[r:LIKES]->(t:Technology {type: "Graphs"})
RETURN p,r,t

// 조회
MATCH (p:Product)
RETURN p.productName, p.unitPrice
ORDER BY p.unitPrice DESC
LIMIT 10;

// WHERE 문 이용한 조회
MATCH (p:Product)
WHERE p.productName = 'Chocolade'
RETURN p.productName, p.unitPrice;

// properties 조회
MATCH (p:Product {productName:'Chocolade'})
RETURN p.productName, p.unitPrice;

// IN 이용한 조회
MATCH (p:Product)
WHERE p.productName IN ['Chocolade','Chai']
RETURN p.productName, p.unitPrice;

// LIKE 이용한 조회
MATCH (p:Product)
WHERE p.productName STARTS WITH 'C' AND p.unitPrice > 100
RETURN p.productName, p.unitPrice;

// 정규식을 이용한 조회
MATCH (p:Product)
WHERE p.productName =~ '^C.*'
RETURN p.productName, p.unitPrice

// JOIN 을 이용한 조회
MATCH (p:Product {productName:'Chocolade'})<-[:ORDERS]-(:Order)<-[:PURCHASED]-(c:Customer)
RETURN DISTINCT c.companyName;

OPTIONAL MATCH

  • optional match는 OUTER JOIN 과 같음
  • MATCH (c:Customer {companyName:'Drachenblut Delikatessen'}) OPTIONAL MATCH (p:Product)<-[o:ORDERS]-(:Order)<-[:PURCHASED]-(c) RETURN p.productName, toInteger(sum(o.unitPrice * o.quantity)) AS volume ORDER BY volume DESC;

인덱싱

CREATE INDEX Product_productName IF NOT EXISTS FOR (p:Product) ON p.productName;
CREATE INDEX Product_unitPrice IF NOT EXISTS FOR (p:Product) ON p.unitPrice;
728x90
반응형
728x90
반응형

NeoJ4 특징

  • https://neo4j.com/docs/getting-started/whats-neo4j/
  • 가장 많이 사용되는 그래프 데이터베이스 중 하나
  • Cypher라는 선언전 쿼리 언어 사용
    • SQL 과 유사함
  • 노드와 관계에 대한 쿼리
  • 클러스터를 형성해서 분산 처리 가능
  • AuraDB는 클라우드 서비스
  • 도커 이미지도 있음
  • 쿠버네티스도 있음

표현식

  • 아래는 Cypher를 이용한 노드 간의 관계를 표현한 내용이다.
(:nodes)-[:ARE_CONNECTED_TO]->(:otherNodes)
  • () 기호는 노드를 의미함
  • -[]-> 는 노드 간의 관계를 의미함
  • 각 노드와 관계에 대해 properties를 할당함
  • 노드들은 특정 라벨에 의해 그룹화 될 수 있음
    • 라벨은 테이블, 노드는 레코드라고 생각할 수 있음
728x90
반응형
728x90
반응형

그래프 데이터베이스

  • 그래프 데이터베이스는 노드 Nodes, 관계 Relationships, 프로퍼티 Properties 로 된 데이터를 저장하는 데이터베이스
  • 개념
    • Node: 그래프에서의 개체 Entity
    • Relationship: 노드 간의 관계에 대한 이름
    • Property: Node 및 Relationship에 대한 속성들
  • RDB와 비교 비유
    • Label은 RDB의 테이블
    • Node는 레코드(Row)
    • Property는 필드(Column)
    • Relationship은 관계. 딱히 대응시킬 개념은 없는듯

사용하는 이유

  • 대량의 복잡한 데이터 핸들링에 용이함
  • 기존 RDB에서 JOIN 연산은 비용이 비쌈
  • 그래프 데이터베이스는 JOIN 연산이 없음
    • 관계를 더 유연한 포맷으로 네이티브하게 저장함으로써, 데이터 조회 비용도 낮추고 속도도 더 빠르게 최적화됨

많이 사용하는 GraphDB

728x90
반응형
728x90
반응형
  • Neo4j Community Edition
    • 가장 많이 쓰이는 그래프 데이터베이스
    • Cypher라는 쿼리 언어 사용
    • 주로 관계 탐색, 소셜 네트워크 분석, 온톨로지 관리에 사용됨
  • ArangoDB Community Edition
    • 다중 모델 데이터베이스
    • 그래프, 문서, 키-값 데이터 모두 관리 가능.
    • AQL (ArangoDB Query Language) 사용하여 그래프 쿼리 실행
    • 복잡한 관계 데이터 모델링, 온톨로지 관리, 문서형 데이터 통합
  • JanusGraph
    • 유연한 그래프 쿼리 작성 가능.
    • 분산형 아케틱처 지원하여 대규모 데이터에서도 효율적
    • Apache TinkerPop의 Gremlin 쿼리 언어를 사용
    • Cassandra, HBase, ScyllaDB 같은 분산 데이터베이스 및 Elasticsearch, Solr 등의 검색 엔진 지원
    • 대규모 그래프 데이터 처리, 소셜 네트워크, 지식 그래프, 온톨로지 관리
  • OrientDB Community Edition
    • 그래프와 문서형 데이터베이스가 결합된 멀티 데이터베이스
    • SQL과 유사한 쿼리 언어 제공
    • 관계형 데이터베이스와 그래프 데이터베이스의 혼합 사용
    • 데이터 분석 및 온톨로지 관리
  • Apache TinkerPop과 Gremlin Server
    • 그래프 프로세싱을 위한 프레임워크로 다양한 DBMS와 함께 사용
    • Gremlin은 복잡한 그래프 탐색에 유용한 쿼리 언어
    • 다양한 그래프 데이터베이스와 연동 가능
    • 그래프 분석, 온톨로지와 지식 그래프 구축
728x90
반응형
728x90
반응형

PostgreSQL 로 온톨로지 DB 구축 시 주의점

  • 다소 복잡할 수 있음

  • 온톨로지 특성상 RDB보다 GraphDB 가 더 적합한 경우가 많음

  • 데이터 스키마 설계

    • 개념 테이블: 온톨로지 개념 저장할 수 있는 테이블
    • 속성 테이블: 각 개념에 포함된 속성을 저장하는 테이블
    • 관계 테이블: 개념 간 관계 테이블
  • JSON 데이터 타입 활용

    • PostgreSQL JSONB 타입 활용
      • JSONB 칼럼에 개념이나 관계에 대한 속성을 넣어 필요에 따라 필드 수정하지 않아도 됨
  • 공통 테이블 표현식(CTE) 및 재귀 쿼리 활용

    • 공통 테이블 표현식(CTE)와 재귀 쿼리 사용하여 계층적 데이터 구조 쿼리
      • 하나의 개념 -> 하위 개념 탐색 쿼리 가능
  • 인덱스 최적화

    • JSONB 필드 사용할 경우, GIN 인덱스 활용
  • PostGIS

    • 지리적 정보 관리
  • SPARQL 및 그래프 DBMS 와 연동

    • PostgreSQL은 SPARQL을 기본적으로 지원하지 않음
    • 외부 SPARQL 엔진과 PostgreSQL 연동
      • PostgreSQL의 데이터를 그래프 데이터베이스에 동기화

장점

  • 기존 온톨로지 관리 소프트웨어보다 속도 및 안정성 활용 가능
  • JSONB와 같은 유연한 데이터 타입을 통해 다양한 데이터 효율적 저장 가능

단점

  • 관계형 DBMS로 그래프처럼 계층적 구조를 구현하고 관리하면 다소 복잡함
  • SPARQL과 같은 온톨로지 전용 쿼리 언어를 직접적으로 사용할 수 없음
    • 따라서 그래프 DBMS와 연동하여 SPARQL 사용하는거네
728x90
반응형
728x90
반응형

온톨로지 데이터베이스

  • 개념과 관계가 체계적으로 정의 및 구조화 된 것
  • 주로 특정 도메인에서의 객체나 개체간의 관계를 나타내는 데이터 구조
  • 자연어 처리, 검색 엔진, 지식 관리 시스템 등에서 많이 사용됨

온톨로지 구성요소

  1. 개념(Entity): 특정 도메인의 주요 항목
    • 차량, 사람, 도로
  2. 속성: 각 개념이 가지는 특성
    • 차량 - 제조사, 모델명
  3. 관계: 개념들 간 연결 및 상호작용
    • '사람'은 '차량'을 '소유'한다
  4. 규칙 및 제약: 개념과 관계에 대한 규칙 정의 -> 데이터의 일관성과 유효성 보장

온톨로지 구조 설계

  • 데이터 모델링: 개념(Entity), 속성, 관계, 규칙 구조화
    • RDF (Resource Description Framework), WOL (Web Ontology Language) 같은 표준 포맷 사용
  • 계층화: 개념을 계층적으로 구성 -> 데이터 구조 명확히 유지
    • 개념의 상하위 관계 정의
    • 특정 개념 그룹화

데이터베이스 및 자료 관리

  • 그래프 데이터베이스: 온톨로지의 관계성 때문에 그래프 DBMS 사용이 효과적
    • 그래프DB: 노드와 엣지 구조를 이용해 개념과 관계를 시각화 및 관리
    • Neo4j, Blazegraph, Amaonze Neptune,...
  • 문서형 데이터베이스: 개념과 관계가 매우 복잡하거나 변화가 잦은 경우 MongoDB 같은 문서형 DB
    • JSON-LD 같은 표준 사용해 문서 형태로 관리
  • 트리플 스토어: RDF 트리플을 저장하는 DBMS
    • RDF, SPARQL 쿼리 지원하여 데이터 추출 및 분석 용이
    • Apache Jena, Virtuoso,...

온톨로지 편집 및 관리 기능 개발

  • CRUD 기능: 개념, 속성, 관계를 생성, 조회, 수정, 삭제 할 수 있는 인터페이스 구현
  • 시각화 도구: 개념 및 관계를 그래프로 시각화하여 사용자 경험 향상
    • 노드-엣지 그래프 동적 생성
    • D3.js, Cytoscape.js 같은 시각화 라이브러리 활용
  • 버전 관리: 온톨로지 버전 관리 기능으로 변경 사항 추적. 필요시 이전 버전으로 롤백
  • SPARQL 쿼리 인터페이스: 사용자나 개발자가 SPARQL 쿼리를 통해 온톨로지 탐색 및 분석
    • SPARQL API 제공하는 것이 유용
728x90
반응형
728x90
반응형

취약점 공격

SQL Injection

  • 웹 응용 프로그램에 SQL 삽입하여, 서버 데이터 유출 및 관리자 인증 우회 방법
  • 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수만자 입력되지 않게 필터링시켜 방지
    • 동적 쿼리: 질의어 코드를 문자열 변수에 넣어 조건에 따라 질의를 동적으로 변경하여 처리

크로스사이트 스크립팅 XSS

  • 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취 및 비정상적 기능 수행 유발
  • HTML 태그의 사용을 제한 및 스크립트에 삽입되지 않도록 다른 문자로 치환하여 방지

운영체제 명령어 삽입

  • 외부 입력값을 통해 시스템 명령어의 실행 유도하여 권한 탈취 및 시스템 장애 유발
  • 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않게끔 함

서비스 공격 유형

서비스 공격 (Dos; Denial of Service)

  • 서비스 자원을 고갈시킬 목적으로, 다수의 공격자/시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송

Ping of Death

  • Ping 명령을 전송할 때, 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크 마비시키는 공격

스머핑 SMURFING

  • IP 나 ICMPO의 특성을 악용하여, 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격

DDoS

  • 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 서비스 거부 공격을 수행하는 것
  • 취약점 가진 호스트들에 공격용 툴을 설치해 에이전트로 만듬

네트워크 침해 관련 용어 정리

  • 스미싱: 문자 메세지를 이용해 정보 빼내는 기법
  • 스니핑: 네트워크의 중간에서 남의 패킷 정보를 도청하는 유형. 수동적 공격에 해당
  • ARP 스푸핑: 자신의 물리적 주소(MAC)을 공격 대상의 것으로 변조해서 공격 대상에 도달해야하는 데이터 패킷을 가로채거나 방해

정보 보안 침해 공격 관련 용어 정리

  • 웜: 네트워크를 통해 자신을 복제하여 시스템 부하를 높여 다운시키는 바이러스의 일종.
    • 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등
  • 랜섬웨어: 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일등을 암호화하여 돈 요구
  • 트로이목마: 정상적인 기능을 하는 프로그램으로 위장하여 숨어있다가 부작용 일으킴. 복제 기능 없음

취약점 방어

NULL 포인터 역참조

  • NULL Pointer가 가리키는 메모리의 위치에 값을 저장할 때 발생하는 보안 약점
  • 포인터 이용 전 NULL 값 존재 여부 체크 함으로 방지

스택가드

  • 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술
  • 프로그램 복귀 주소와 변수 사이 특정 값을 저장한 후, 그 값이 변경되었을 경우 오버플로우 상태로 판단하여 실행 중단
728x90
반응형

'백엔드 Backend' 카테고리의 다른 글

[테스팅] 어플리케이션 테스팅  (2) 2024.11.01
[결합도/응집도] 결합도와 응집도란  (0) 2024.10.24
악성코드 종류  (0) 2024.10.16
SOLID 원칙  (0) 2024.10.08
비동기 Asynchronous 란?  (0) 2024.10.04
728x90
반응형

어플리케이션 테스트

  • 어플리케이션에 잠재된 결함을 찾아내는 일련의 행위 또는 절차
    • Verification 검증 -> 개발자 입장, 소프트웨어 명세서 만족
    • Validation 확인 -> 사용자 입장, 고객 요구사항 만족

어플리케이션 테스트 원리

  • 완벽한 테스트는 불가능
    • 잠재적 결함을 줄일 수 있지만, 결함이 없다고 증명할 수 없음
  • 파레토 법칙
    • 어플리케이션의 20% 코드에서 전체 결함의 80%가 발견
  • 살충제 패러독스
    • 동일한 테스트 케이스 반복하면 더 이상 결함이 반복되지 않음
  • 테스팅은 정황(Context)에 의존적
    • 정황에 따라 테스트 결과가 달라질 수 있기에, 정황에 따른 테스트 수행
  • 오류-부재의 궤변
    • 결함을 모두 제거해도 사용자 요구사항 만족시키지 못하면 품질이 높지 못함

어플리케이션 테스트 분류

실행 여부 따라

  • 정적 테스트 따라 -> 실행X
    • 워크스루(검토회의) -> 전문가 직접 검토, 절차 따라, 오류 조기 검출
    • 인스펙션 -> 워크스루의 발전, 산출된 결과물 품질 평가 및 개선 방법 제시
  • 동적 테스트 -> 실행 O, 모든 단계
  • 화이트박스 테스트 / 블랙박스 테스트

테스트 기반에 따라

  • 명세 기반 테스트 -> 사용자 요구사항 명세
  • 구조 기반 테스트 -> SW 내부 논리 흐름
  • 경험 기반 테스트 -> 테스터의 경험, 체크리스트

시각에 따라

  • Verification 검증 테스트 -> 개발자 시각, 제품 명세서
  • Validation 확인 테스트 -> 사용자 시각, 사용자 요구사항

목적에 따라

  • Recovery 회복 테스트 -> 실패시키고 올바르게 복구되는가
  • Security 안전 테스트 -> 보호 도구가 볼법 침입으로부터 보호하는가
  • Stress 강도 테스트 -> 과부하 시 정상적으로 실행되는가
  • Performance 성능 테스트 -> 실시간 성능, 전체 효율성 등 응답시간 및 처리량
  • Structure 구조 테스트 -> 내부 논리적 경로, 소스코드 복잡도
  • Regression 회귀 테스트 -> 변경/수정된 코드에 새로운 결함이 없는가. 즉 반복 테스트
  • Parallel 병행 테스트 -> 변경된 SW와 기존 SW 동일한 데이터 입력해서 결과 비교

테스트 기법에 따라

화이트박스 테스트

  • 내부 논리적 경로 및 모듈 안의 내용 볼수 있어서, 내부의 논리적인 모든 경로 테스트
  • 종류
    • 기초경로 검사 -> 대표적. 절차적 설계의 논리적 복잡성 측정
    • 제어구조 검사 -> 조건 검사: 논리적 조건
  • 검증 기준
    • 문장 검증 기준 -> 모든 구문 한 번 이상
    • 분기 검증 기준 -> 모든 조건문의 조건식 결과가 (True, False) 한 번 이상
    • 조건 검증 기준 -> 조건문의 개별 조건식 결과가 (True, False) 한 번 이상
    • 분기/조건 기준 -> 분기 검증 기준, 조건 검증 기준 모두 만족

블랙박스 테스트

  • 각 기능이 완전히 작동되는 것을 입증하는 테스트
  • 종류
    • 동치 분할 검사 Equivalence Partitioning Testing
      • 타당/타당하지 않은 입력 자료 개수가 균등할 때, 입력자료에 맞는 결과가 출력되는지 확인
    • 경계값 분석 Boundary Value Analysis
      • 중간값보다 경계값에서 오류 발생 확률 높음. 경계값을 테스트 케이스로
    • 원인-효과 그래프 검사 Cause-Effect Graphing Test
      • 입력 데이트간 관계와 출력에 영향 미치는 상황 분석 후, 효용성 높은 테스트 케이스 선정
    • 오류 예측 검사 Error Guessing
      • 과거의 경험. 확인자 감각으로 테스트
    • 비교 검사 Comparison Testing
      • 여러 버전에 동일한 테스트 자료 제공, 동일한 결과 출력되는지 테스트
        => 동적 테스트, 명세 기반 테스트, 경험 기반 테스트에 해당

728x90
반응형

'백엔드 Backend' 카테고리의 다른 글

[보안] 보안 공격 종류  (0) 2024.11.04
[결합도/응집도] 결합도와 응집도란  (0) 2024.10.24
악성코드 종류  (0) 2024.10.16
SOLID 원칙  (0) 2024.10.08
비동기 Asynchronous 란?  (0) 2024.10.04
728x90
반응형

인덱스

  • 검색 속도를 높이기 위한 색인 기술
  • JOIN / WHERE 에 사용됨
  • 인덱스 없는 데이터 조회 시
    • 전체 데이터 페이지의 첫 레코드 -> 마지막 레코드까지 모두 조회 == FULL SCAN
    • 때문에 속도가 느림
  • 그러나 INDEX를 많이 설정한다고 조회 속도가 빨라지지 않음
    • INDEX는 테이블 형태로 저장하는 것임
    • 즉 인덱스가 많아지면 데이터베이스 메모리를 많이 잡아 먹음
    • 인덱스로 지정된 칼럼 값이 변동되면, 인덱스 테이블이 갱신되므로 느려짐
    • 때문에 쿼리문 자체가 빨라질 수도 있지만, 전체적 데이터베이스 부하가 증가함
  • SELECT는 빠르지만, UPDATE / INSERT / DELETE 속도는 느림
    • UPDATE / DELETE 시 WHERE을 통해 데이터 조회 자체는 빠름
    • 그러나 데이터 변경 / 삭제 자체는 느림

  • 카디널리티 : 카디널리티가 높으면 인덱스 설정에 좋은 칼럼
    • 카디널리티가 높다 == 한 칼럼이 갖고 있는 값의 중복도가 낮음 (대부분 다른 값을 가짐)
    • 인덱스 통해 불필요한 데이터 대부분을 걸러낼 수 있음
  • 선택도: 선택도가 낮으면 인덱스 설정에 좋음
    • 선택도가 높다 == 한 칼럼이 갖고 있는 값 하나로 여러 row가 찾아진다.
  • 조회 활용도: 조회 활용도가 높으면 인데스 설정에 좋은 칼럼
    • WHERE 문의 대상 칼럼으로 많이 활용되는지
  • 수정 빈도: 수정 빈도가 낮으면 인덱스 설정에 좋은 칼럼
    • 인덱스도 테이블
    • 따라서 지정된 칼럼 값이 인덱스 테이블이 새롭게 갱시되어야 함

용어

  • HEAP: 데이터 저장 시 내부적으로 아무런 순서 없이 저장된 데이터 저장 영역
    CREATE INDEX user_idx ON user_table (user_name);
728x90
반응형
728x90
반응형

UBUNTU에 Go 설치하기

  • 항상 컨테이너로 GO 프로그램을 돌렸지만, 불가피하게 로컬에 GO를 설치해 빌드하고 돌려야 할 상황이 와서 해당 내용을 기록한다.

소스 다운 받아서 설치하기

최신 버전 확인

  • 공식 사이트의 Golang 버전 확인 후 다운받기 (2024.10.21 시점 1.23.2)
  • 공식 사이트

WGET을 이용해 다운로드

  • WGET을 이용해 다운받기
    wget https://go.dev/dl/go1.23.2.linux-amd64.tar.gz

압축 해제

  • 다운 받은 압축 파일 해제
    sudo tar -C /usr/local -xzf go1.23.2.linux-amd64.tar.gz

경로 설정

vi ~/.profile

# 파일 마지막 줄 아래에 내용 추가
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

변경 사항 적용

source ~/.profile

Go 버전 확인

go version

UBUNTU 피키지 매니저로 다운받기

패키지 인덱스 업데이트

sudo apt update

GO 설치

sudo apt-get install golang-go

Go 버전 확인

go version
728x90
반응형

'백엔드 Backend > Golang' 카테고리의 다른 글

[gRPC] Go 언어로 gRPC 사용해보기  (2) 2024.12.24
[Neo4J] 데이터 핸들링하기  (1) 2024.12.09
[Neo4j] Golang 으로 쿼리 핸들링  (0) 2024.12.06
[Neo4j] Golang으로 Neo4j 연동  (0) 2024.12.05
[GO] Goroutine이란?  (0) 2024.10.02

+ Recent posts