본문 바로가기

전체 글

(36)
[알고리즘] 동영상 재생기, 퍼즐 게임 챌린지, 충돌위험 찾기 동영상 재생기문자열 앞에 "0"값을 채우는 함수는 string_number.zfill(n)0이 아니라 다른 것으로 채우고 싶다면 string_number.rjust(n, "a")format도 있지만 외우지는 말자 내 풀이def solution(video_len, pos, op_start, op_end, commands): def trim(val): mn, sc = val.split(':') return int(mn)*60 + int(sc) video_len = trim(video_len) pos = trim(pos) op_start = trim(op_start) op_end = trim(op_end) if op_start   ..
[알고리즘] 실습용 로봇, 석유 시추, 보물 지도 실습용 로봇방향성을 다루는 부분을 단순하게 표현하기만 하면 금방 푸는 문제. 내 풀이def solution(command): x, y = 0, 0 dir_x, dir_y = 0, 1 for com in command: if com == 'G': x, y = x+dir_x, y+dir_y elif com == 'B': x, y = x-dir_x, y-dir_y elif com == 'R': dir_x, dir_y = dir_y, -dir_x else: dir_x, dir_y = -dir_y, dir_x return [x, y]  석유 시추2D를 traverse 하다가, 기름이 나타나면 그 기름이 속한 덩어리..
SQL BASICS 뽀개기 (수정 중) DBMS, RDBMS, NoSQL데이터들은 DB에 저장.이 DB를 관리하는 시스템을 DBMS 즉, DataBase Management System이라고 함.RDBMS는 데이터가 표 형태로 저장되어 고정된 스키마를 가지고 있는 형태를 뜻하고.NoSQL은 데이터가 고정된 스키마 없이 다양한 방식으로 저장 가능 - 딕셔너리, 문서, 그래프 등.RDBMS로는 MySQL, PostgreSQL, Oracle 등이, NoSQL로는 MongoDB (문서형) 등이 있음.RDBMS는 수직확장(기존의 서버를 업그레이드)에 더 적합함. 수평확장 (다중 서버)은 어려움.RDBMS에 우리가 접근하여 뭔가 인터랙션할 수 있는 언어가 SQL. NoSQL은 다 다름 - MongoDB는 MQL. * 기본적으로는 SQL은 백엔드 DB용이..
[스프링 리뷰] 스프링 기본적으로는 JAVA 진영에서 가장 많이 사용되는 프레임워크.다시말해, 개발자가 애플리케이션을 개발하고 싶은데 JAVA 언어를 쓰고 싶다면, 그걸 잘 도와주는 아이가 스프링이다.개발자가 비즈니스 로직에 더 집중할 수 있도록 기술적인 부분을 관리해줌. 다양한 모듈로 구성되어 있다. 핵심 컨테이너, 웹, 데이터, 메시징, AOP 등의 모듈이 있는데 개발자가 필요에 따라 선택적으로 사용할 수 있음. 중요한 디자인 패턴으로는 의존성 주입 (Dependency Injection), 제어역전 (Inversion of Control), 관점 지향 프로그래밍 (AOP) 등이 있음 => 궁극적으로는 느슨한 결합 (Loose Coupling)을 달성할 수 있음. 느슨한 결합은 단위 테스트를 수행하기 용이함.   *..
[스프링 핵심] 빈 스코프 & 프로토타입 빈 이 중 우리가 알아둬야 하는 녀석들은: 싱글톤, 프로토타입, request 이렇게 세개 정도 된다. 싱글톤의 경우 프로토타입 스코프프로토타입 스코프는 싱글톤과 정반대로, 매번 새로운 애를 만들어서 반환해준다. 스프링 컨테이너가 프로토타입 빈을 생성, 의존관계 주입, 초기화까지만 처리하고 클라이언트에 던져버리고, 이후에는 빈에 대해서 관리하지 않는다. 그러니까 @PreDestroy 같은 종료 메서드를 호출할 수 없다. 이런식으로 Bean 설정하는 곳 위에다가 써주는 거다! 실제로 스프링에서 prototype을 시멘틱하게 사용하는 법스프링은 기본적으로 싱글톤을 사용한다. 그렇기 때문에 그냥 "prototype"만 해주면, 싱글톤의 물결 속에 prototype도 제 역할을 못하고 싱글톤처럼 활동하게 된다. 즉..
[스프링 핵심] 빈 생명주기 콜백 스프링은 빈을 언제 초기화하고, 종료할까?  생성자를 만들 때는 정말 필수적인 정보만 받게 해야 한다. 반면 초기화는 본격적인 무거운 작업들을 진행하면 된다.그 둘을 잘 분리하는 것이 중요하다. 생성자를 만들 때는 무거운 작업을 하라고 만든 것이 아니기 때문이다.  스프링이 처음 만들어지거나, 없어지기 직전에 자기한테 의존하는 애들한테 알려주는 것을 위와 같이 세 경우에 진행한다. InitializingBean, DisposableBean InitilizingBean은 afterPropertiesSet을, DisposableBean은 destroy 메서드를 지원함. => 코드레벨까지 너무 의존적이라 거의 안 씀. 빈 등록 초기화, 소멸 메서드 지정 애노테이션 @PostConstruct, @PreDestr..
[스프링 핵심] 의존관계 자동 주입 +α 의존관계 주입하는 다양한 방법이 있다생성자 주입, setter 주입, 필드 주입, 일반 메서드 주입 - 거의 생성자 주입을쓰고, setter도 가끔 쓴다. 생성자 주입참고로 생성자 주입은 지금껏 우리가 한 행위다.생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용.@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, Di..
[스프링 핵심] 컴포넌트 스캔 & 의존관계 자동 주입 스프링 빈을 하나하나 @Bean으로 만들어주지 않아도 되는 방법이 있다. 그 기능의 이름은 컴포넌트 스캔. 컴포넌트 스캔@ComponentScan 애노테이션은 @가 붙은 모두 빈들을 자동 등록한다.만약 등록을 빼고 싶은 애가 있다면 예외등록도 가능하다 - excludeFilters.package hello.core;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;@Configuration@ComponentScan( exclude..