일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Java
- kotlin
- SRE
- Kubernetes
- MySQL
- kotlin querydsl
- Pinpoint
- 정보처리기사실기 기출문제
- Linux
- CKA
- 티스토리챌린지
- 공부
- Spring
- go
- CKA 기출문제
- Elasticsearch
- 정보처리기사 실기 기출문제
- aws
- tucker의 go 언어 프로그래밍
- kotlin coroutine
- CloudWatch
- 기록으로 실력을 쌓자
- AI
- AWS EKS
- golang
- minikube
- 오블완
- PETERICA
- APM
- 코틀린 코루틴의 정석
- Today
- Total
목록전체 글 (887)
피터의 개발이야기

Spring Boot 애플리케이션에서 서버 측 사용을 위해 Retrofit 및 OpenFeign 선언적 REST 클라이언트를 비교합니다. 먼저 Retrofit 및 OpenFeign을 소개하겠습니다. Retrofit Android 및 Java를 위한 안전 HTTP 클라이언트입니다. HTTP API를 Java 인터페이스로 바꾸는 선언적 웹 서비스 클라이언트입니다. 자세한 내용은 여기를 참조하세요. Feign Client Feign은 선언적 웹 서비스 클라이언트입니다. 웹 서비스 클라이언트를 더 쉽게 작성할 수 있습니다. Feign를 사용하려면 인터페이스를 만들고 어노테이션을 합니다. https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-..

HashMap은 개발의 편의성을 위해 자주 사용한다. MSA로 구성된 서비스에서 더더욱 그러하다. 사용자 정보를 조회하고 다른 서버와 통신하여 구매정보를 구해온다. 키값으로 구매정보 리스트를 HashMap에 저장하여 사용자정보 기준으로 정보를 쉽게 조합할 수 있다. 1. 객채 선언 HashMap map = new HashMap(); 2. 데이터생성 map.put(10, "apple"); map.put(20, "orange"); map.put(30, "banana"); map.put(40, "watermelon"); map.put(50, "dragonfruit"); 3. 데이터 조회 String carName = (String)map.get(10); 4. 데이터 삭제 map.remove(20); 5. 키의..

1장 운영서버와 AWS 소개 아마존은 2000년도 쯤 인터넷 쇼핑몰을 운영하면서 늘어난 트래픽과 주문량을 감당하다 보니 자연스럽게 굉장히 뛰어난 수준의 내부 인프라 시스템을 구축하였다. 컴퓨팅, 스토리지, 데이터베이스 등 운영서버에 필요한 인프라를 누구보다 안정적이고, 방대하면서도 저렴하게 운영할 수 있는 능력을 가지게 되었다. 이러한 인프라를 아마존 쇼핑몰 하나에만 제공하기보다 전세계 모든 회사를 대상으로 제공하자는 생각을 하게 되었고, 결국 2006년부터 이 인프라를 누구나 쉽게 사용할 수 있게 만들어 서비스하게 되면서 AWS가 탄생했다. AWS에서는 단순히 컴퓨팅 서버만을 제공하는 것이 아니라 운영 서버에서 자주 사용되는 서비스들을 함께 제공한다. 데이터베이스, 배포 자동화, 모니터링, 이메일,보안..

ㅁ 이전달 1일 전의 날짜인 경우 Exception 처리 Calendar cal = Calendar.getInstance( ); cal.add ( cal.MONTH, -1 ); // 이전달 cal.set(Calendar.DAY_OF_MONTH,1); // 해당 월의 1일로 변경 cal.set(Calendar.HOUR_OF_DAY,0); // 0시 cal.set(Calendar.MINUTE,0); // 0분 cal.set(Calendar.SECOND,0); // 0초 if(request.getApply_date() != null && request.getApply_date().before(cal.getTime())){ throw new Exception("변경은 전달까지만 가능합니다."); }

조건 : 통계서버 로그 2020.11~12 중에서 해당 특정 Queue로 인입된 건수 중에서 1000건이 넘는 로그만 출력 grep 'Queue패턴 :' server.2020-1[1-2]* |awk '$9>1000 {print $0}' - $9은 카운터가 반환됨 - print $0은 전체 출력 참조 사이트 : recipes4dev.tistory.com/171

1. 소개 Spring Scheduling 을 통해 특정 간격으로 코드를 실행할 수 있습니다. 간격은 @Scheduled 어노테이션을 사용하여 지정되기 때문에 일반적으로 간격은 정적이며 애플리케이션 구동하는 동안 변경할 수 없습니다 . 2. @Value boolean Spring Schedule 작업을 조건부로 활성화하는 가장 간단한 방법은 예약 된 작업 내부에서 확인하는 Value 변수를 사용하는 것입니다. 변수는 @Value 로 주석을 달아 일반적인 Spring configuration사용하여 구성 할 수 있습니다 . @Configuration @EnableScheduling public class ScheduledJobs { @Value("${jobs.enabled:true}") private bo..

리눅스 시스템에서 메모리 사용량 확인 방법 간단하게 시스템 전체 메모리 확인하기 위해 free 명령어를 이용. 프로세스별 메모리를 확인하려면 ps 명령어를 이용한다. ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11 좀더 자세히 보려면 프로세스 아이디를 통해 알아볼 수 있다. cat /proc/16051/status

엔티티의 변수들은 테이블 컬럼과 매핑된다. @Getter @Setter @ToString @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class UserEntity { // 고유키 private Long userId; // 페이데이 사용자 ID private Long paydayUserId; // 비밀번호 private String password; // 사용자명 private String name; // 이메일 private String email; // 전화번호 private String phone; } 하지만 비지니스 로직을 수행하기 위해 컬럼에 없는 변수가 발생하기도 한다. 예를 들어 회원가입 시에 패스워드 확인용 변수를 ..

리눅스에서 압축파일을 핸들링할 때에 꼭 기억이 나지 않아 검색을 하게 된다. 제일 많이 쓰는 tar tar.gz 명령어를 정리하였다. 1. tar 압축 풀기 --> tar -xvf 파일명.tar 2. tar로 압축하기 --> tar -cvf 파일명.tar 폴더명 3. tar.gz로 압축하기 --> tar -zcvf 파일명.tar.gz 폴더명 4. tar.gz 압축 풀기 --> tar -zxvf [파일명.tar.gz] 5. 구체적 옵션 설명 옵션 설명 -c tar로 묶기 -x tar를 풀기 -z gzip(gz)으로 압축 -f 파일 이름 지정 -v 작업 화면을 출력 -C 경로를 지정 -p 파일 권한 저장

Stream을 사용하면 늘 쓰는 것만 사용하게 된다. 나 같은 경우 filter를 주로 많이 사용하는데, fiter는 중간처리자이다. 곧, Stream을 반환하기에 최종 처리 단계를 더 거쳐야 한다. 특히 단순히 list 중에 값이 있는지만 알기 위해 간단한 방법이 있다. API는 최종 처리 단계 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 메소드를 제공한다. allMatch() 모든 요소들이 주어진 조건을 만족하는지 조사, anyMatch() 모든 요소 중 한 개라도 조건에 만족하는지 조사, noneMatch() 주어진 조건에 모든 요소들이 안 맞는지 조사, allMatch() 사용 시 주의점이 있다. 리스트가 널일 경우 true를 반환한다. 자칫 버그처럼 보이지만 논리학에서 가정이 거짓..

초기의 인터넷은 단순하였다. 자바가 시작되고, 처음 서블릿이 만들어지면서 WEB은 세상에 나타났다. 자바 어플리케이션이다. 즉 Client - Server : 2tier 구성이다. 자바는 반응속도도 느리고 동시접속에 약하다. 개발자의 입장에서는 2tier가 편할 수 있다. 웹에서 사용자가 입력한 정보를 바로 디비에 저장한다. 하지만 서버정보다 노출이 되고 보안에 취약하다. Client - apach web - Tomcat Server: 3tier 구성을 하기 시작하였다. apach web은 여러 프로세스를 띄워 정적인 데이터를 빠르게 응답하였고, 동적인 데이터는 톰켓을 통해 처리하였다. 그래서 서버정보를 웹을 통해 숨길 수 있다. 서버를 프라이빗에 두게 되면서 보안적으로 더 유리해졌다. 그리고 웹을 두면..

시스템 로그 파일 모니터링을 위해 만들었던 쉡. 톰켓의 로그를 하루단위로 압축하여 저장하였다. 저장된 압축파일의 로그를 분석하여 에러가 있을 경우 에러의 종류와 발생 건수를 정리하여 보여주는 쉘. #!/bin/bash logFile=catalina if [ -z $1 ]; then chkDay=1 else chkDay=$1 fi echo "check Day : " $chkDay echo "" echo "----------------list of Log File -----------------" find ./ -type f -mtime -$chkDay -ls echo "" echo "----------------sorting ------------------" find ./ -type f -mtime -$..

Tomcat catalina.out 로그는 지속적으로 쌓여서 기가 단위로 커지는 경우가 있다. 간혹 용량 확인하지 않고 로그 확인을 위해 VI로 열게 되면, 시스템 메모리가 꽉차 시스템 장애가 발생하는 경우가 더러 있다. 내가 주로 쓰는 Tomcat catalina rotaion shell 이다. logBak.sh에 저장하고 특정 경로 위치만 바꾸어 사용하고 있다. crontab에 잡을 주어 매일 실행하도록 설정한다. #!/bin/bash #logs에 있는 catalina.out 파일을 분리하여 backup에 압축 저장한다. SRCDIR="/home/ubuntu/tomcat/logs" DESTDIR="/home/ubuntu/tomcat/logs/backup" DATE_WITH_TIME=`date "+%Y..

시스템을 운영하면서 데이터가 쌓이게 된다. 다량의 데이터 조회 속도를 높이기 위해 인덱스를 사용하지만, 테이블의 데이터가 많아지면 인덱스 자체의 물리적인 용량이 증가라한다. 인덱스 조차도 허용된 메모리를 넘는 어느 순간 그 테이블 조회 속도는 현저히 느려진다. 큰 테이블은 월별 혹은 일자별로 나누어 관리하는 것이 바람직하다. 내가 쓰고 있는 테이블별 용량 확인 쿼리이다. ############################################################ # 테이블별 용량 SELECT table_name, table_rows, round(data_length / (1024 * 1024 * 1024), 2) as 'DATA_SIZE(GB)', round(index_length / (..

내가 자주 사용하는 디비 모니터링 SQL문 정리 디비 부하 시 현재 문제가 되고 있는 프로세스와 SQL을 확인 할 수 있는 쿼리 ############################################################ # 디비 프로세스 확인 ############################################################ select # count(*) * from information_schema.processlist where 1 = 1 # and COMMAND = 'Sleep' and COMMAND != 'Sleep' and ID not in (847, 972) # and HOST like '172.31.21.139%' # and HOST like '1..