본문 바로가기 메뉴 바로가기
프로그래머스 SQL JOIN. FrontEnd 개발자 찾기
·
👨‍💻 알고리즘과 문제해결/SQL
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPERSWHERE SKILL_CODE & (SELECT SUM(CODE) FROM SKILLCODES WHERE CATEGORY = 'Front End')ORDER BY ID ASC;DEVELOPERS의 SKILL_CODE가 400 (0b1100010000)이면 SKILLCODES 테이블에서 CODE가 256 (0b100000000), 128 (0b1..
스프링 빈 생명 주기
·
🌿 Spring/스프링 완전 정복
이전 글인 스프링 컨테이너와 스프링 빈과 스프링 컴포넌트 스캔에서 스프링 컨테이너가 스프링 빈 설정 정보를 참고하여 스프링 빈을 생성함을 확인했습니다. 이를 다시 한 번 살펴보겠습니다.스프링 컨테이너가 생성되고 스프링 빈 설정 정보를 기반으로 스프링 빈을 등록합니다. 그리고 스프링 컨테이너는 대개 애플리케이션 종료 전 소멸됩니다. 컨테이너가 소멸되기 직전에 스프링 빈이 소멸됩니다.스프링 빈은 스프링 컨테이너에 의해 생성됩니다. 이전 글인 스프링 컴포넌트 스캔과 스프링 의존관계 자동 주입에서 봤듯 스프링 빈이 필요로 하는 빈들이 주입되고 각 필드의 값이 초기화되고 사용한 후 소멸됩니다.빈 생명 주기인스턴스화 및 의존관계 주입스프링 빈 설정 정보 확인 및 BeanDefinition 객체 생성이전 글인 스프링..
스프링 의존관계 자동 주입
·
🌿 Spring/스프링 완전 정복
이전 글인 컴포넌트 스캔에서 살펴보았듯 자동으로 스프링 빈을 등록하려면 어디선가 객체 인스턴스를 주입해야 할 필요가 있게 됩니다. Spring에서는 개발자가 SOLID를 지키며 객체 인스턴스를 알아서 주입하도록 @Autowired 애너테이션을 준비했습니다.애너테이션 적용 위치@Autowired 애너테이션은 필드, 생성자, 메서드에 적용할 수 있습니다. 해당 애너테이션이 적용되면 스프링 컨테이너가 스프링 빈을 생성한 후에 @Autowird 애너테이션이 적용된 필드, 생성자, 메서드를 확인해 필요한 스프링 빈을 주입합니다.@Autowired 애너테이션의 동작 원리에 대해 살펴보려면 나중에 본 블로그에서 다루거나 다른 블로그의 좋은 글들을 봐주시기 바랍니다. (#1, ...)생성자 주입@Component// ..
스프링 컴포넌트 스캔
·
🌿 Spring/스프링 완전 정복
스프링 빈을 등록하는 방법에는 기존에 봐 왔던 AppConfig라는 외부 클래스의 각 메서드에 @Bean 애너테이션을 적용하거나 XML의 태그를 통해 스프링 빈을 수동으로 등록하는 방법, 그리고 설정 정보 없이 자동으로 스프링 빈을 등록하는 방법이 있습니다.컴포넌트 스캔스프링 컨테이너 생성 시 @ComponentScan 애너테이션이 적용된 클래스를 파라미터의 인자로 넘겨주면 @Component 애너테이션이 적용된 클래스를 찾아 해당 클래스의 인스턴스를 생성해 스프링 컨테이너가 관리하도록 해줍니다. 즉 스프링 빈으로 등록합니다.스프링이 자동으로 스프링 빈을 등록해 주는 방법을 채택하게 되면 @Component 애너테이션이 적용된 클래스에 애너테이션뿐만 아니라 약간의 변화를 주어야 합니다.기존에는 설정 정..
스프링과 싱글톤
·
🌿 Spring/스프링 완전 정복
대다수의 스프링 애플리케이션은 웹 애플리케이션으로 되어 있습니다. 웹 애플리케이션은 보통 다수의 사용자가 동시에 요청을 합니다. 사용자 A가 웹 사이트에 요청을 보낼 때 사용자 B도 웹 사이트에 요청을 보낼 수 있죠.그런데 이전에 설계한 AppConfig에 따르면 요청이 들어오면 새로운 객체 인스턴스, 즉 스프링 빈이 만들어져야 합니다. 그렇다면 사용자가 요청할 때마다 새롭게 객체 인스턴스를 생성하면 메모리 차지가 심하지 않을까요? 이를 해결하려면 객체 인스턴스가 하나만 생성되도록 하고 요청 시 같은 객체 인스턴스를 사용하도록 해야 합니다.싱글톤 패턴싱글톤 패턴은 객체 인스턴스가 하나만 생성되는 것을 보장하는 디자인 패턴입니다. 일단 객체 인스턴스가 외부에서 마구잡이로 생성되는 것을 막기 위해 생성자에 ..
스프링 컨테이너와 스프링 빈
·
🌿 Spring/스프링 완전 정복
IoCpublic class MemberServiceImpl implements MemberService { // 이 소스 코드에서는 MemberRepository라는 인터페이스(역할)와 // MemoryMemberRepository라는 객체(구현)에 동시 의존하고 있다. (의존 역전 원칙 위배) // MemoryMemberRepository를 DbMemoryMemberRepository로 바꾸려면 클라이언트인 // MemberServiceImpl의 소스 코드를 변경해야 한다. (개방-폐쇄 원칙 위배) private MemberRepository memberRepository = new MemoryMemberRepository(); @Override public vo..
프로그래머스 SQL SELECT. 조건에 부합하는 중고거래 댓글 조회하기
·
👨‍💻 알고리즘과 문제해결/SQL
프로그래머스 SQL 고득점 Kit에서 SELECT 문제 중 조건에 부합하는 중고거래 댓글 조회하기를 풀이합니다. 이 문제는 LEVEL 1로, 조인과 DATE 함수를 활용하여 풀어봅니다.문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이 문제는 2022년 10월에 작성된 글들에 대한 정보와 그 글의 댓글 정보를 출력하는 문제입니다.풀이게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 출력합니다.댓글 작성일을 기준으로 오름차순 정렬합니다. 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬합니다.USED_GOODS_..
프로그래머스 SQL SELECT. 업그레이드 된 아이템 구하기
·
👨‍💻 알고리즘과 문제해결/SQL
프로그래머스 SQL 고득점 Kit에서 SELECT 문제 중 업그레이드 된 아이템 구하기를 풀이합니다. 이 문제는 LEVEL 2로, 조인과 서브 쿼리를 활용하여 풀어봅니다.문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이 문제는 등급이 RARE인 아이템 중에서 다음 업그레이드 아이템을 출력하는 문제입니다. 위 예시 데이터를 통해 살펴보겠습니다.ITEM_ID가 0인 ITEM_A는 PARENT_ITEM_ID가 NULL이기 때문에 루트 아이템이 됩니다.ITEM_ID가 1인 ITEM_B는 PARENT_ITEM_ID가 0이기 때문에 ITEM_A에서 ITEM_B로 업..
LeetCode #819. Most Common Word
·
👨‍💻 알고리즘과 문제해결/LeetCode
문제 Most Common Word - LeetCodeCan you solve this real interview question? Most Common Word - Given a string paragraph and a string array of the banned words banned, return the most frequent word that is not banned. It is guaranteed there is at least one word that is not banned, and thaleetcode.com한 단락과 금지 단어들이 주어지면 금지 단어를 제외한 나머지 단어의 빈도를 세어 빈도가 높은 단어를 반환해야 합니다.주어지는 단락의 단어는 대소문자를 구분하지 않습니다. 즉 par..
Optional 클래스
·
💬 프로그래밍 언어/Java
NullPointerExceptionMember member = this.MemberService.findOne(id);member.setUsername(userName);위의 소스코드는 Member라는 객체가 있음을 보장하고 Member 메서드 setUsername을 수행합니다. 만약 MemberService의 findOne 메서드의 수행 결과가 null이라면 NullPointerException이 발생합니다.이 예외를 막기 위해 Try-Catch문과 if-else문을 사용할 수 있으나 소스코드가 복잡해지고 메서드의 목적에서 벗어나게 됩니다. 또 null이 반환되지 않으리라 생각해 유효성 검사를 건너뛸 수 있는 문제도 가집니다.Java 8에서는 이러한 상황을 예방할 수 있도록 Optional 클래스를 ..
patulus
'분류 전체보기' 카테고리의 글 목록