본문 바로가기

Development

(14)
[GIT] fatal: bad object refs/heads/{branch} 문제상황 fatal: bad object refs/heads/feature/CICD 2 error: did not send all necessary objects 정말 아무것도 건들지 않았는데 해당 에러가 발생했다. 원본 브랜치에서 fetch도 안되고, 아무것도 안된다. 해결 현재 이상한 헤드를 참조하는게 이유라고 생각이 되었다. 해결한 방법은 다음과 같다. .git 에 들어가보니 2 가 붙은 파일들을 볼 수 있었다. 해당 파일들을 모두 삭제한다. 특히 refs/heads/{branch} 경로에 존재하는 문제 파일은 꼭 삭제하도록 한다. https://stackoverflow.com/questions/72515916/git-fatal-bad-object-refs-heads-2-master Git fata..
Servlet은 무엇이며 어떻게 동작하는가? 웹서버 구축을 위해서 Java를 사용한다면 알아야하는 Servlet이라는 클래스에 대해 알아보자. 서블릿의 사용법보다 서블릿이 무엇이며 웹에서 어떤 환경 활용되고 있는지, 어떤 원리로 동작하고 있는지에 대해 중점적으로 알아보려 한다. 자바 서블릿이 웹 페이지를 동적으로 생성하게 해주는 클래스라고 하는데 어떻게 도와주는 것일까? 이것을 이해하기 위해선 웹이 어떻게 통신하는지부터 이해해야 한다. HTTP 웹은 HTTP라는 비연결성 프로토콜을 이용해 통신을 한다. 메세지 방식에는 request와 response가 있는데, 서버측에 요청(request)을 하면 서버는 요청에 맞는 데이터를 응답(response)한다. 보통 요청을 보내고 응답을 받는 쪽을 클라이언트라 말하고, 요청을 받고 응답을 보내는 쪽을 서버..
스프링 컨테이너는 스프링 빈을 어떻게 싱글톤으로 관리할까? 🔥 스프링 컨테이너가 이미 존재하는 객체 인스턴스를 반환하는 @Bean 을 어떻게 처리하는지 알아보도록 한다. @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPoli..
상수와 final 키워드 상수상수는 변수와 달리 변하지 않는 수이다.자바의 상수에는 리터럴과 심볼릭 상수가 있다.리터럴 상수값 또는 리터럴 값을 의미정수, 실수, 문자, 문자열, 불리언이 리터럴에 해당된다.리터럴은 값 그 자체이므로 리터럴에 리터럴을 대입할 수 없다.10 = 100; // 10이라는 정수에 100을 대입할 수 없음"words" = "abcd"; // "words"라는 문자열에 "abcd"라는 문자열을 대입할 수 없음true = 100; // true라는 불리언값에 정수 100을 대입할 수 없음리터럴 상수도 기본 타입이 존재한다.예를들어 정수는 기본적으로 int 타입, 실수는 double 타입이 적용된다.리터럴 Workflow변수를 선언하면, 수는 operand stack 공간에 일시적으로 저장되었다가 변수라는 메..
Codedeploy 배포 에러 [The deployment failed because no instances were found for your deployment group.] 오류코드 The deployment failed because no instances were found for your deployment group. Check your deployment group settings to make sure the tags for your Amazon EC2 instances or Auto Scaling groups correctly identify the instances you want to deploy to, and then try again. 문제 AWS CodeDeploy CD설정 중 발생한 오류 상황 github actions, AWS ec2, S3, CodeDeploy를 사용하여 CI/CD 구현 원인 어떤 인스턴스에 배포를 해야할지 식별을 할 수 없어 발생..
CORS란? CORS의 뜻은 교차 출처 리소스 공유(Cross-Origin Resource Sharing)이다. CORS에 대해 자세히 공부하기 전까진 보안 때문에 데이터의 공유를 막는 체제에 가깝게 생각 했지만 CORS는 오히려 서로 다른 출처끼리 리소스(데이터)를 공유하게 만들기 위한 체제였다. 따라서 현재 웹 생태계에서 모르면 절대 안되는 중요한 개념이기 때문에 내용을 정리해보려 한다.   SOPCORS를 알기 전에 SOP(Same-Origin Policy)에 대해 알 필요가 있다. SOP는 동일 출처 정책을 의미하는데, 간단히 말하자면 다른 출처에서 가져오는 리소스를 제한하는 보안 방식이다. 지금은 다른 출처의 리소스를 가져와 사용하는 것은 흔한 일이지만 이전에는 SOP가 강력히 적용되어 있어 다른 출처의 리..
JVM JVM이란? JVM(Java Virtual Machine)은 bytecode를 실행하기 위해 필요한 가상머신이다. bytecode는 사용자가 작성한 순수한 Java source file이 아닌, 컴파일러에 의해 컴파일된 파일을 의미하며, JVM은 컴파일된 bytecode를 운영체제에 알맞은 기계어로 번역하여 실행가능하게 만든다. 즉, OS가 달라도 Java실행에 필요한 컴파일러와 JVM이 있다면 실행가능하다는 말이며 OS에 종속적이지 않다는 말이 된다. 다르게 말하면 JVM에 종속적인 특징을 가진다고도 할 수 있다. JVM의 구성요소 실행과정을 매우 간소화해보자면, 클래스로더가 바이트코드를 메모리에 적재하고 Execution Engine을 통해 실행하며, 실행 방식은 인터프리터 방식과 JIT 컴파일러 방..
String의 특징에 대해 알아보자 (String Constant Pool) String 자바에서 문자열을 사용할 때 흔히 쓰는 자료형이다. Primitive Type처럼 빈번하게 사용되지만, String은 Primitive Type이 아닌 char의 배열로 이루어진 Class자료형이라 할 수 있다. String의 경우 특별한 특징들을 가지고 있는데, String의 값은 불변성을 가지며, String은 두가지의 메모리를 사용할 수 있다. 불변성을 가진다는 것은 무엇이고, 두가지의 메모리를 사용한다는 것은 어떤 의미인지 정리해보려 한다. String Constant Pool과 Heap String은 사용빈도가 매우 높기 때문에 조금 더 효율적으로 사용할 수 있는 String Pool에 저장하는 방식을 택했다. String Pool에 저장한다는 것은 같은 문자열을 공유한다는 것을 의..