![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/MAMKC/btrIbNrdmkZ/TAjN29blcKYDvorg5r9GE0/img.jpg)
'빌드'한다는 것의 의미 - 빌드한다는 것은 컴파일보다 훨씬 더 큰 의미를 갖는다. - 빌드툴의 설정파일에 라이브러리의 버전을 명시해주면 자동으로 다운받고 classpath에 추가해준다. (스프링'부트'의 starter를 사용하면 버전을 명시하지 않아도 관련된 의존성을 모두 다운로드 해줌) - 소스코드를 '컴파일'한다. - '테스트 코드'를 실행한다. - 컴파일된 코드를 packaging한다. (jar, war, zip, ddl, exe 등의 파일로 만든다.) - packaging된 파일을 주로 artifact(산출물)라 부르며 서버나 레퍼지토리에 배포한다. 즉, 소프트웨어를 '실행 가능한 하나의 단위'로 구성하는 과정이다. 빌드툴을 사용하는 이유 즉, 빌드도구는 위 일련의 복잡한 작업들을 자동화하고 기..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bmsI77/btrIazGl2q5/ZAYnOKN91ZxQ3xRmoKlhA1/img.png)
public class HelloWorld { public static void main(String[] args) { String str1 = "hello"; String str2 = new String("hello"); String str3 = new String("hello"); } } 위 코드에서 str1처럼 바로 " "을 통해 문자열을 선언하면 heap에 있는 String constant pool에 "hello"라는 문자열이 있는지 탐색하고 없을 경우 생성하지만 이미 존재한다면 해당 문자열을 참조한다. str2의 경우 str1과 같이 "hello"라는 문자열을 string constant pool에서 찾고 없다면 새로 만드는 과정은 동일하지만 추가적으로 string pool이 아닌 heap메모리..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cHQEUq/btstfdDn0pQ/pdRAAut9Bsoi4d3o09wsd0/img.png)
처음에는 선형탐색을 생각했지만 정렬을 한 번만 해 둔다면 이진탐색이 성능 상 더 좋은 알고리즘이 될 것으로 판단했다. [자바 소스코드] import java.util.Arrays; import java.util.Scanner; public class Main { static int[] inputs; public static void main(String[] args){ Scanner sc = new Scanner(System.in); int len = sc.nextInt(); inputs = new int[len]; for(int i=0; i target){ end = mid - 1; } else{ start = mid + 1; } } System.out.println("0"); } } [시간복잡도 분석..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vh64M/btrIdYrM5y2/G8k53BiDkLEZZZ25nkxeU0/img.png)
1. 관찰 환경 및 방법 본인은 2020년 4월 18일 토요일부터 2020년 4월 22일 수요일까지 약 6일간 Wireshark를 이용하여 http기반의 임의의 사이트에 접속하고 패킷을 분석 및 관찰했다. 본인 자택 주변의 두 군데의 카페와 자택에서 진행했고 PC는 노트북과 데스크톱을 이용했는데, 노트북은 여러 개의 WIFI를 연결하며. 데스크톱은 유선망을 이용한다. 데스크톱은 본문3번의 ‘새로 알게 된 사실’을 기술할 때 사용했다. 두 컴퓨터 모두 Windows10운영체제이고 Internet Explorer11을 사용했다. Wireshark는 패킷을 관찰하기에 매우 최적화된 프로그램이다. 우선 시간 순으로 요청과 응답에 의한 패킷 정보들이 보기 좋게 나열되어 있다. Wireshark의 상단부를 보면 S..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cwZWjO/btrIaQobMXA/vUm2AkUKbsDI6A9FNvaZa0/img.png)
1. 개요 Application Layer와 Network Layer 사이에 존재하는 Transport Layer는 네트워크의 계층구조에서 핵심이다. Application 관점에서 보면 process들이 동작하는 호스트들이 직접 연결된 것처럼 보이는데, 이는 Transport Layer Protocol이 제공한다. 즉, end사이의 IP전달 서비스가 UDP와 TCP가 있음으로써 end사이의 두 프로세스 간의 전달 서비스로 확장된다. 여기서 transport multiplexing, demultiplexing이 활용된다. 일반적으로 Transport Layer단계에서 생성된 패킷을 세그먼트, Network Layer에서 생성된 패킷을 데이터그램이라고 부른다. 우선 UDP traffic을 관찰하기 위해 DN..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CNb0b/btrIbLUs5kB/1gC8jdcqdGvKPKboekS32K/img.png)
결론부터말하면 Interface는 abstract method로만 구성된 클래스로써 추상체로 역할을 하며 구현체와 호출하는 쪽 사이의 dependency를 느슨하게 한다. 특히 의존성을 역전(Dependency Inversion)시킴으로써 객체 간 결합도(coupling)를 줄인다. [예제1] public class UserService implements Login{ private KakaoLogin login; private NaverLogin login; // 이하 생략 } [예제2] public class UserService implements Login { private Login login; public UserService(Login login) { this.login = login; } ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4dWyd/btrIeMq7cUJ/CTDmu8p6kjNt7cb9phYMBk/img.png)
1. Java의 Call by Reference 자바는 기본적으로, 객체에 대해서는 call-by-reference이지만, 8개의 primitive type에 대해서는 call-by-value가 적용된다고 생각하면 편합니다. [예제1] public class HelloWorld { public static void main(String[] args) { HelloWorld b = new HelloWorld(); int a = 100; b.doSomething(a); // 100이라는 숫자 자체가 넘어간다. System.out.println(a); // 100이 출력된다. } private void doSomething(int a) { a *= 2; } } 위 예제1에서 변수 a를 초기화하면 메모리의 4b..
- Total
- Today
- Yesterday
- Java
- 코틀린
- rolling update
- github actions
- 쿠버네티스
- go
- jvm
- argocd
- Linux
- ubuntu
- ci/cd
- RDB
- kafka
- container
- Kubernetes
- docker
- Stream
- 우분투
- 컨트롤러
- golang
- Non-Blocking
- spring
- 카프카
- GitOps
- db
- LFCS
- Controller
- K8s
- helm
- CICD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |