분류 전체보기 33

Services (ClusterIP / NodePort / LoadBalancer / Headless Service)

목표 쿠버네티스 서비스가 무엇인가? 서비스는 언제 필요한가? ClusterIP vs NodePort vs LoadBalancer vs Headless Service 쿠버네티스 서비스? 안정적인 IP address를 제공 Pods는 고유 IP address가 존재한다. 그러나 Pod는 자주 생성되고 삭제되는 과정으로 거치면서 IP address가 새로 부여된다. 이를 해결하기 위해 서비스가 필요하다. Loadbalancing 클라이언트 입장에서 각각의 pod를 콜할 필요없고, 서비스를 콜함으로써 부하의 밸런스를 조절할 수 있다. loose coupling ClusterIP 특성 IP를 클러스터화 시켜서 서비스로 관리할 수 있다. 주로 외부 ingress의 backend 인터널 서비스로 활용하여 목적지 po..

DevOps/Kubernetes 2021.07.26

연산자

학습목표 비트연산자 쉬프트연산자 실수 오버플로우 논리 연산자 비트연산자 & 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) ^ 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) &^ 비트 클리어 연산자. 특정 비트값을 열거할때 사용 ex. 10&^2 1단계 : ^연산을 수행합니다. 2 -> ^2 (1111 1101) 2단계 : & 연산을 수행합니다. 10 &^2 (0000 1000) ~ 비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산) 쉬프트연산자 2) fmt.Printf("z:%08b z>>2:%08b z>>2: %d\n", uint8(z), uint8(z>>2), z>>2) fm..

Backend/Golang 2021.05.10

fmt 패키지를 이용한 텍스트 입출력

서론 초기 컴퓨터는 1개의 입력장치(카드리더기)와 1개의 출력장치(프린터)로 구성되어 있었다. (표준입력)->CPU->(표준출력) 은 항상 일정하다. 01010101... 이런 입출력되는 표준입출력 형태는 BitStream, ByteStream이라고 한다. 표준출력함수 Print() : 함수 입력값들을 출력. Println() : 개행(newline)을 포함하여 출력. Printf() : format에 맞도록 입력값들을 출력. - %d : demimal 정수타입 - %f : float 실수타입 - %v : 데이터 타입에 맞춰서 기본 형태로 출력합니다. - %e : 지수 형태로 실숫값을 출력합니다.(실수 타입만 가능) - %g : 값이 큰 실숫값은 지수형태, 작은 실수값은 그대로 (%f)로 출력합니다. -..

Backend/Golang 2021.05.05

변수

컴퓨터는 단순한 기계이다. 트랜지스터 -> 논리소자 -> 계산기 -> 명령프로그래밍 -> 컴퓨터 변수란? - 값을 저장하는 메모리 공간을 가리키는 이름 - 프로그램이란 결국 데이터를 연산/조작 하는일 ex. 이미지도 VM에서 숫자를 보여주는 것일 뿐 변수 선언 var a int = 10 // 변수키워드 변수이름 변수타입(+사이즈) var msg string = "Hello Variable" int : 정수형 변수타입 = 10 : assign operator 10을 좌변의 메모리 공간에 복사한다. 컴퓨터에겐 컴파일러를 통해(16진수) 메모리 주소의 공간에 저장된다 GO는 강타입 언어 숫자타입 모든 정수타입 uint8, uint16, uint32, uint64 : unsigned integer uint8 :..

Backend/Golang 2021.05.03

동적언어 (JAVA, C++, C#, Python)

목표 저수준 언어와 고수준 언어 컴파일 언어와 동적 언어 JAVA 와 C++ #저수준 언어와 고수준 언어 인간과 가까운 언어를 고수준 언어 (High-level)라 하고 컴퓨터와 가까운 언어를 저수준 언어(Low-level)라고 합니다. 대표적인 저수준 언어는 어셈블리어라고 할 수 있습니다. 위 어셈블리어 코드는 컴퓨터와 가까운 저수준 언어로 기계어 0과 1의 이진수로 이루어진 언어 입니다. 고수준 언어는 우리가 쓰는 C, C++, JAVA 같은 컴파일 언어와 동적 언어들을 들 수 있습니다. 저수준 언어의 장단점 단점으로는 신경쓸게 많고 코드 작성과 관리가 어렵습니다. 그러나 컴퓨터 입장에서는 이해가 빠르므로 성능이 좋지 않은 컴퓨터도 빠른 업무 처리 속도를 보여줍니다. 기계 예를 들어 스마트 가전 같은..

Computer Science 2021.04.05

Java 인터페이스(Interface)

목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스 정의하는 방법 자바의 인터페이스 - 인터페이스는 추상 메서드의 집합이다. (static,디폴트 메서드, 상수 도 포함되지만 중요하지 않음) - 자바에서의 인터페이스는 기본적으로 무언가를 규제하기 위한 것이다. 추상클래스는 일반클래스, 일반 메서드를 가질 수도 있다. but 인터페이스는 추상메서드만의 집합이다. 정의하는 방법 - 값이 들어갈 수 있고, 메소드는 실제 구..

Backend/Java 2021.03.06

Java - 패키지 (package/import/클래스패스/접근지시자)

목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 패키지(package) - 서로 관련된 클래스의 묶음.(자바8 이후 약 4000개의 클래스) - 클래스는 클래스파일, 패키지는 폴더. 하위 패키지는 하위 폴더로 .단위로 내려간다. - 클래스의 실제 이름(full name)은 패키지를 포함.(java.lang.String) - rt.jar는 클래스들을 압축한 파일(JDK설치 경로 jre\lib에 위치. but 자바9부터 모듈개념이 들어가면서 rt.jar이 없어짐. (jar파일 압축파일로 ide에서 압축풀어서 볼 수 있음) 패키지의 선언 - 패키지는 소스파일의 첫번째 문장으로 단 한번 ..

Backend/Java 2021.03.05

Git Rebase

기본 Git 명령어 git pull : remote된 master의 소스를 땡겨온다 > 만약 아래와 같이 local 파일이 overwritten된다면 error: Your local changes to the following files would be overwritten by merge: //file list Please commit your changes or stash them before you merge. > incoming change과 current change 을 결정해서 해결해야 한다. Rebase 와 Merge temp라는 브랜치를 만들어서 Rebase하여 소스를 merge하는 방법을 알아보자. //temp의 branch를 만들어서 master에 merge할 수 있는 최신화 branc..

DevOps/Git 2021.03.05

멀티쓰레드 프로그래밍

목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 Thread 클래스와 Runnable 인터페이스 쓰레드를 정의하는 방법은 2가지 방법이 있습니다. Thread를 상속받는 방법과 Runnable의 인터페이스를 받아서 정의하는 방법이 있습니다. //Thread 클래스 상속 import java.util.Random; public class MyThread extends Thread { private static final Random random = new Random(); @Override public void run() { String threadName = Thread..

Backend/Java 2021.03.04

[Java] 멀티스레드 와 멀티 프로세스

학습목표 자바 스레드란? 스레드와 프로세스의 차이 멀티 프로세스와 멀티 스레드의 차이 컴퓨터 유저는 동시에 한개 이상의 시스템을 쓸 수 있는 것을 당연히 받아들인다. 하나의 어플리케이션일지라도 하나 이상의 작업을 동시에 진행한다. 동시에 오디오를 들으며 playback그리고 화면이 업데이트되는 등 여러작업이 동시에 진행된다. 이런 것을 concurrent software라고 한다. Java플랫폼은 concurrent programming을 적용되어 있다. Java 5.0이후 high-level concurrency API들을 제공한다. (java.util.concurrent) # 자바 스레드(Java Thread) 란? 일반 스레드와 거의 차이가 없으며, JVM가 운영체제의 역할을 한다. 자바에는 프로세..

Backend/Java 2021.03.03