본문 바로가기
반응형

전체 글1072

블로킹, 논블로킹 프로그래밍 예전 포스팅에서 동기식과 비동기식 프로그래밍에 대해서 글을 다뤄본적이 있다. 자세한 사항은 아래 참고 포스팅을 확인해볼수 있다. 비슷한 내용일순 있지만 조금 개념이 다른 블로킹과 논 블로킹에 대해서 다뤄볼 것이다. 블로킹, 논블로킹은 동기, 비동기와는 다르게 요청자, 제공자 둘다의 입장에서 생각해야 한다. 블로킹은 하나의 작업을 처리할때 호출된 작업이 끝날때까지 호출한 작업이 기다리면 블로킹이고 논블로킹은 이 반대이다. 블로킹, 논블로킹은 동기, 비동기와는 다르게 직접 제어할 수 없는 것을 대상으로 할때 구분 하는 방법 입니다. 즉 블로킹은 해당 작업을 할동안 접근이 안되는 경우이다. 그리하여 동기, 비동기와 함께 블로킹, 논블로킹의 정의는 아래처럼 내릴수가 있다. 동기(Sync) 방식은 요청과 응답이 .. 2022. 8. 16.
자바 직렬화(Serializable) 자바에서 사용하는 직렬화의 의미는 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술 시스템적인 면에서는 JVM 메모리에 상주(스택/힙)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태(역직렬화) 를 말한다. 사용하는 법은 다음과 같다. @Data @ToString @Builder @AllArgsConstructor @NoArgsConstructor public class Dto implements Serializable{ private String id; private String name; } 이렇게 implements Serializa.. 2022. 8. 15.
이클립스 버전 명칭들 최신 이클립스를 사용하면 별칭이란 단어가 낯설순 있지만 2018년도 이전에 이클립스로 개발을 해보신 분들이라면 이클립스의 애칭이 있었다는것을 알것이다. 이름을 만드는 기준은 자세한건 알수 없으나 흥미로운 주제여서 포스팅으로 다뤄보려고 작성중이다. Eclipse Version 애칭 64Bit 존재여부 지원 JDK 비고 Eclipse 4.19 2021-03 ○ Java 11 이상 ~ 2021년 ~ Eclipse 4.18 2020-12 ○ Java 11 이상 ~ 2020년 ~ Eclipse 4.17 2020-09 ○ Java 11 이상 ~ 2020년 ~ Eclipse 4.16 2020-06 ○ 1.8 이상 ~ 1.11 support 2020년 ~ Eclipse 4.15 2020-03 ○ 1.8 이상 ~ 1.1.. 2022. 8. 14.
delay 설정하기 (Thread.sleep) 코딩을 하다보면 일정 시간 잠깐 정지, delay를 해야할 경우가 있다. 파이썬에서는 간단하게 time.sleep(10) 이렇게 지정을 해주면 되지만 자바에서는 thread 단에서 잡아줘야한다. 코드는 다음과 같다. Thread.sleep(1000); 괄호 안의 값은 ms 로 1000ms = 1초 이다. 파이선과 비슷한 문법이긴 하지만 자바에서는 여기서 끝이 아니라 한가지 작업을 추가로 해줘야한다. Thread를 건드리기에 try catch 문으로 예외 처리를 해줘야한다. 그래서 결국 코드는 이렇게 된다. try { Thread.sleep(1000); }catch(Exception e) { System.out.println(e); } Thread에 대한 개념은 아래 참고 포스팅 참고 바란다. 참고 포스팅.. 2022. 8. 13.
gson 에 대해서 자바에서 json 형식을 다룰 일이 많다. 특히나 restapi를 다루게 될 경우엔 더욱 많고 restapi 에 대한 내용은 아래 참고 포스팅을 참고해보자. json 형식에 대해서도 안다는 가정 하에 포스팅을 이어서 작성해보면 json의 장점은 가독성이 좋고 가볍고 플랫폼에 독립적인 이유로 많이 사용이 된다. 그러면서 자바에서는 json 라이브러리를 사용하여 JSONObject json = new JSONObject(" ---- "); 을 사용해서 많이 구현을 한다. 추가적으로 key / value 로 이루어진 json을 get key 로 해서 가져올수도 있기에 많이 사용이 된다. 근데 구글에서 개발한 오픈소스인 Gson 이라는것을 이번 포스팅에서 소개해볼것이다. Gson은 스트링 뿐 아니라 Map 의 .. 2022. 8. 12.
argoCD 란? 저번 포스팅 gitOps에 이어서 함께 나오는 용어인 argoCD에 대해 소개해 볼것이다. “Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.” 한마디로 쿠버네티스를 위한 CD(Continuous Delivery)툴이며 GitOps방식으로 관리되는 Manifest 파일의 변경사항을 감시하며, 현재 배포된 환경의 상태와 Git에 정의된 Manifest 상태를 동일하게 유지하는 역할을 수행한다. push타입과 pull타입 모두를 지원하며 pull타입 배포를 권장한다. 즉 GitOps를 실현시키며 쿠버네티스에 배포까지 해주는 툴이라고 할수 있다. 쿠버네티스에 대한 내용은 아래 참고 포스팅을 참고해보자. 참고 포스팅 https:/.. 2022. 8. 11.
JSON Array 처리중 단일 데이터의 경우 문제(22.08.10) restapi 통신중에 받는 형식이 LIST로 되어 있는데 간혹 리스트가 아닌경우가 들어올 경우가 있었다. 예를들어 표준은 아래와 같이 보내지는데 { "value" : [ "1", "2" ] } 간혹 이렇게 한가지의 값만 보낼때가 있어서 { "value" : "3" } com.fasterxml.jackson.databind.JsonMappingException 이런 에러를 만나게 된다. 그럴때는 dto에서 해당 변수에 annotation설정 하나로 해결을 할수가 있다. @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private List value; 2022. 8. 9.
gitOps 란? gitOps 개발자와 운영자의 소통, 협업, 통합을 강조하는 DevOps는 많이들 들어보셨을 겁니다. GitOps는 DevOps의 실천 방법 중 하나로 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git에서 관리(Operation) 한다는 뜻입니다. 아주 간단하게 말해서 GitOps는 Kubernetes Manifest파일을 Git에서 관리하고, 배포할때에도 Git에 저장된 Manifest로 클러스터에 배포하는 일련의 과정들을 의미합니다. GitOps의 원칙 모든 시스템은 선언적으로 선언되어야 함 “선언적(declarative)”이라 함은 명령들의 집합이 아니라 사실(fact)들의 집합으로 구성이 되었음을 보장한다는 의미 쿠버네티스의 manifest들은 모두 선언적으로 작성되었고 이를 Git으로 관.. 2022. 8. 9.
url / uri 의 차이 개발을 해본 사람이라면 url 과 uri 라고 하여 구분을 해서 말한다. 소문자로 쓰이진 않고 대문자를 좀더 많이 사용하는데 URL, URI 라고 하여 대문자 I(아이)와 소문자 l(엘) 이 비슷하게 생겨서 더욱 헷갈리게 만든다. 지금 주소창을 한번 복사해서 확인을 해보자. 아마 https://thenicesj.tistory.com/289 이런식으로 작성이 되어있다. 맨 앞의 https 는 아래 참고 포스팅을 확인해보면 도움이 될것이다. 그리고 이어서 the nicesj.tistory.com 은 도메인이다. 도메인에 관련해서도 아래 참고 포스팅을 확인해보면 도움이 된다. 원래는 모든 컴퓨터에는 ip라는게 존재하는데 아 ip를 다양한 방식으로 할당 받는다. 그중 고정 웹사이트를 도메인으로 사용하기 위해서는.. 2022. 8. 8.
반응형