[Spring] Singleton, Prototype Scope Bean
·
개발 ━━━━━/Spring(boot)
김영한 강사님의 스프링 강의를 보던 중 Singleton, Prototype 에 대한 내용이 나온 적이 있다. ServiceController@Controllerpublic class ServiceController { private final ApplicationContext context; @Autowired public ServiceController(ApplicationContext context) { this.context = context; } @GetMapping("/") public String getServiceHashes(Model model) { SingletonService singletonService = context.ge..
[Java] 개선된 Switch 문 (Enhanced Switch Expressions)
·
개발 ━━━━━/Java
Java 14 Switch Expressions기존 C 나 Java 에서 사용하던 Switch 문은 if-else 문을 놔두고 굳이 쓸만한 이유를 딱히 찾지 못했기 때문에 거의 사용하지 않던 문법이다. 하지만 Java 14 이후로 개선된 Switch 문이 도입되었고 아래와 같은 feature 들이 추가되었다.Arrow LabelsSwitch expressionsYielding a value Arrow Labelsbeforeswitch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out.println(7); break; case THURSDAY: case SATURDAY: Sy..
[Git] Branch Merge 전략
·
개발 ━━━━━/Git
Merge 전략의 존재과거 협업 프로젝트를 진행하면서 나름의 Branch 전략을 세워서 진행을 했던 경험이 있다.전략이라기보단... 개인 브랜치를 생성해서 따로 작업을 하다가 merge 하는 방식이었는데merge 도 개인이 PR 을 날리고 셀프 merge 시키곤 했다... 그러다 보니 생긴 Github 뱃지들 뱃지 설명을 보니 뭔가 내 멋대로 해서 준 것 같아서 찾아보니YOLO - 코드 리뷰 없이 머지 시켰을 때Quickdraw - PR 오픈하고 5분 안에 닫았을 때얻을 수 있다고 한다. "PR 오픈하고 코드 리뷰 없이 5분 만에 Merge 시킴"딱 내가 한 그대로이다! 현업에서 이런 식으로 허술하게 할 리는 없고, 내 프로젝트를 봐주신 어느 감사한 현업자님께서 프로젝트 진행 시에 Git 을 제대로 이용..
[HTTP] HTTP
·
개발 ━━━━━/CS
HTTP (HyperText Transfer Protocol)특징클라이언트 서버 구조Request Response 구조클라이언트는 서버에 요청을 보내고, 응답을 대기 / 서버가 요청에 대한 결과를 만들어서 응답Stateful (상태 유지)특징항상 같은 서버가 유지되어야 한다.로그인 기능 사용시 사용 (쿠키, 세션 등)최소한으로 사용해야 한다. Stateless (무상태)특징응답 서버를 쉽게 바꿀 수 있다.스케일 아웃에 유리데이터를 너무 많이 보낸다.모든 것을 무상태로 설계할 수 없다.HTTP 의 비연결성특징HTTP 는 기본적으로 연결을 유지하지 않는 모델일반적으로 초 단위 이하의 빠른 속도로 응답서버 자원을 효율적으로 사용할 수 있다.1시간 동안 수천 명이 서비스를 사용해도 실제 서버에서 동시에 처리하는..
[HTTP] IP / TCP / UDP / PORT / URI
·
개발 ━━━━━/CS
IP (Internet Protocol)특징지정한 IP 주소에 데이터 전달패킷 (Packet, Package + Bucket) 이라는 통신 단위로 데이터 전달 한계비연결성패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송비신뢰성중간에 패킷이 사라짐패킷이 순서대로 오지 않음프로그램 구분같은 IP 를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상?인터넷 프로토콜 스택의 4계층애플리케이션 계층HTTP, FTP전송 계층TCP, UDP인터넷 계층IP네트워크 인터페이스 계층  TCP (전송 제어 프로토콜, Transmission Control Protocol)특징연결 지향 - TCP 3 way handshake (가상 연결)1. (클라이언트 -> 서버) SYN2. (서버 -> 클라이언트) SYN + AC..
[AWS S3] S3 데이터 계정간 이동 및 복원하기
·
개발 ━━━━━/Dev
프로젝트 서버를 이사하면서 다른건 다 옮겼는데 S3 를 팀원의 계정으로 사용하고 있어서 그것마저 옮기려고 한다. 준비1. 기존 S3 데이터가 존재하는 AWS 계정2. 타겟 AWS 계정3. 타겟 AWS 계정의 EC2 를 준비해준다. 과정1. 기존 AWS 계정 S3 Bucket 에 Policy 등록{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetObjectTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::{기존 버킷 이름}", "arn:a..
[C++/Algorithm] cin.tie(NULL) 과 ios_base::sync_with_stdio(false)
·
개발 ━━━━━/C++
백준 단계별로 풀어보기에서 문제를 풀던 중 15552번 : 빠른 A+B 문제 내용에 생소한 것이 쓰여져 있어 알아보았다. https://www.acmicpc.net/problem/15552 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다. Java를 사용하고 있다면, Scanner와 Sys..
[MySQL] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases
·
개발 ━━━━━/Troubleshoot
문제 기존 MySQL 데이터를 복원하는 과정에서 컨테이너가 무한 재시작을 하길래 에러 로그를 확인해보았다. [ERROR] [MY-014061] [InnoDB] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases. 데이터 복원 작업을 위해 mysql:latest 태그가 붙은 이미지를 불러와서 docker volume 에 저장 후 그 볼륨을 기존에 사용하던 MySQL 이미지에 마운트하는 방식인데 태그가 latest 이다보니 그 사이 업데이트가 되어 버전이 맞지 않는듯 했다. 해결 태그명이 latest 로 되어 있기 때문에 정확한 버전을 알 수가 ..