목록Develop (34)
infinity : 무한한 성장가능성
이 글은 글또 9기 활동을 진행하며 유데미 콜라보로 강의 2개를 무료로 수강할 수 있는 기회를 통해 강의를 듣고 후기를 작성한 글입니다. 들을 수 있는 많은 강의들 중 Java 멀티스레딩, 병행성 및 성능 최적화 전문가 되기를 선택한 이유는 실무를 하면서 멀티스레딩에 대한 이야기와 성능 최적화에 대한 고민을 가끔 듣곤 하는데, 확실하게 멀티스레딩과 성능 최적화를 할 수 있는 방법은 어떤 것이 있지?라는 것이 궁금하곤 했었는데, 딱 나의 궁금증을 해결할 수 있을 것 같은 강의였다. (좋은 기회를 제공해 주신 글또에게 감사의 마음을 전하면서 후기에 대해 작성해 보겠습니다.🙇♀️) 강의 소개 강의내용 강의는 총 12개의 섹션으로 이뤄져 있고 총 강의 시간은 5시간이 조금 넘는다. 강의내용은 기초부터 알려주기..
이 글을 쓰게 된 이유 요즘 팀에서는 개발팀에서 공통적으로 사용하던 래거시 배치프로젝트(spring batch 가 아닌 자바로 구현된 배치)에서 팀 내 배치 프로젝트로 배치들을 이관하는 일을 주로 하고 있는데 이관하는 배치에 대해 간단하게 설명하자면, 특정 기간동안 사용하지 않은 정보들을 select 한 뒤 & delete 하는 간단한 배치이다. pr을 올렸던 코드는 해당 배치를 chunk 기반으로 itemReader에서 select 쿼리를 실행해 제거할 대상을 조회하고 ItemWriter을 통해 delete 쿼리를 실행하는 것이었다. 팀장님이 pr 에 대한 피드백을 주셨는데, 주신 피드백으로는 delete 쿼리에서 select 구문을 포함하는 방법 셀렉트 천건씩 & select 한 것을 모아 in 조건..
저번 편에 이은 자바 제네릭 완전정복 뽀개기 두 번째 글입니다..! 제네릭 메서드와 와일드카드의 개념을 학습하기 전 제네릭 클래스의 타입 인자를 제한하는 법부터 정리해 보겠습니다. 제네릭 클래스의 타입 인자 제한하기 public class Box { } 위처럼 extends 키워드를 사용해 T extends Number이라는 Box 클래스를 정의할 경우 타입 인자로 Number or Number을 상속하는 클래스만 올 수 있게 됩니다. 타입인자를 제한하는데 올 수 있는 것으로는 클래스, 인터페이스가 있습니다. 제네릭 메서드 선언부에 제네릭으로 리턴 타입, 파라미터의 타입이 정해지는 메서드이다. 제네릭에 대한 예를 보면서 제네릭 메서드에 대해 이해해 보자. 먼저 제네릭을 static 필드변수에 사용한다면?..
자바 제네릭을 다루게 된 이유? 스프링 배치를 개발하던 중 MyBatisItemWriterBuilder을 사용해서 MyBatisBatchItemWriter 객체를 만들 때 파라미터의 값을 기본 Item 값에서 추가해야 하는 경우가 있었다. MyBatisWriterBuilder의 itemToParameterConverter 을 통해 파라미터를 수정할 수 있었는데, 해당 메서드의 내부를 살펴보니 public MyBatisBatchItemWriterBuilder itemToParameterConverter(Converter itemToParameterConverter) { this.itemToParameterConverter = itemToParameterConverter; return this; } 제네릭..
조회 대상 빈이 2개 이상일 때 생기는 문제를 정리하게 된 이유? 팀에서 스프링 배치를 통해 특정 기능을 구현하던 중 다른 팀원분이 @ComponentScan을 통해 특정 패키지 하위를 스캔하여 빈 등록을 하도록 구현되어 있었는데, @ComponentScan 이 적힌 클래스보다 상단의 패키지에 main 메서드가 존재하고, 해당클래스 상단에 @SpringBootApplication 이 붙어있었기 때문에 @ComponentScan을 따로 클래스에 적지 않아도 빈이 등록되었을 구조였다. 해당 코드를 보면서, 스프링이 런타임 오류를 발생시키지만 컴포넌트 스캔위치가 중복되는 것은 괜찮은 걸까? (물론 상용에서 사용 중인 코드니 문제는 없겠지만) 궁금해졌다. 위의 궁금증과 엄청난? 관계가 있는 것은 아니지만, 조회..
삽질의 시작 🤔 김영한 님의 스프링 부트 - 핵심원리와 활용강의의 섹션 7에서 @ConfigurationProperties에 대해 학습하던 중 의문이 한 가지 생겼다. @ConfigurationProperties 은 자바 빈 검증기를 사용할 수 있다는 것이다. @Getter @ConfigurationProperties("my.datasource") @Validated public class MyDataSourcePropertiesV3 { @NotEmpty private String url; @NotEmpty private String username; @NotEmpty private String password; private Etc etc; public MyDataSourcePropertiesV3(St..
들어가기 전 최근 회사에서 개발하면서 특정 조건에서 버튼 클릭 시 개발 서버에 올라간 새로운 페이지 url로 이동하도록 구현했는데 페이지가 제대로 뜨지 않은 일이 있었다. 해당 개발팀에 여쭤보니 cors 때문이라고 했다. cors 는 도메인이 다른 서버로 데이터를 요청할 때 뜨는 것으로 알고 있는데.. 딱 요정도만 알고 있어, 제대로 정리해보자 싶어 쓰는 글 CORS Origin 이 다른 서버의 자원을 요청하는 메커니즘이다. (한 서버에서 도메인이 다른 서버로 데이터를 요청하는 것) 다른 출처 간의 리소스 공유 출처를 비교하는 로직은 브라우저에 구현되어 있다. 브라우저에 해당 로직이 구현되어 있기 때문에 브라우저를 거치지 않고, 서버 간 통신을 할 경우 이 정책이 적용되지 않는다. CORS를 위반하는 리..
들어가기 전 회사에서 JS로 된 코드를 수정하는 중 리뷰를 받는 코드에 if 문으로 특정 조건 만족 유무를 판단 후 특정 조건을 만족하는 경우에만 더해주는 로직이 있었는데 filter를 사용하면 좋을 거 같다는 리뷰를 받았었다. 자바에서도 filter 을 종종 사용했었는데?라는 생각이 들었고 합계 또한 filter처럼 자바스크립트에서 제공해 주는 함수가 있을 거 같아 살펴보았다. (reduce) filter 사용법 filter: 조건으로 주어진 함수에서 true 로 반환되는 요소를 모아 새로운 배열로 반환하는 함수이다. Array.filter()로 사용할 수 있다. arrays.filter(callback(element,index,array), thisArg); callback: callback함수에 정..
프로세스란? 사전적 의미: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 > 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 > 운영체제로부터 시스템 자원을 할당받는 작업의 단위 운영체제로부터 할당받는 시스템 자원은? 1. cpu 시간 2. 운영되기 위해 필요한 주소 공간 3. code, data, stack, heap 구조로 되어있는 독립된 메모리 영역 프로세스 종류 1. 운영체제 프로세스 (= 커널 프로세스, 시스템 프로세스) : 프로세스 실행 순서를 제어하거나 사용하고 있는 프로세스가 다른 영역(다른 사용자, 운영제체 영역)을 침범하지 못하도록 감시하는 기능을 담당하는 프로세스 사용자 프로세스를 생성하거나 입출력 프로세스를 생성하는 등 시스템 운영에 필요한 작업을 수행하는 프로세스 2. 사용..
vue를 사용하면서 헷갈렸던 methods 와 computed 와 watch 를 비교하며 정리해보자. Computed 속성 computed 속성을 사용할 값의 이름을 정의하고 return 에 종속될 데이터를 정의한다. return 에 정의된 데이터가 변경될 때 computed 에 정의된 로직이 실행된다. Methods vs Computed 속성 👉 computed 속성을 사용하는 이유를 알아보자 구현하려는 것) message 와 message 가 역순으로 변경된 reverseMessage를 한 화면에 표시되도록 만들어야 한다. 👉 방법 1) methods 사용 위의 코드를 설명해보자면 맨 위 div는 message의 역순텍스트를 출력해 주는 부분이다. 두 번째 줄의 div는 message 값을 입력하는 ..