본문 바로가기

분류 전체보기228

프로그래머스 Level3 단속카메라 c++ 풀이 문제 설명 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다. 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요. 제한사항 차량의 대수는 1대 이상 10,000대 이하입니다. routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다. 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다. 차량의 진입 지점, 진.. 2024. 1. 6.
토비의 스프링 3.1 Vol.1 750p ~ 850p 정리 (완료) 8.5 정리- 스프링은 그 개발철학과 목표를 분명히 이해하고 사용해야 한다.- 스프링은 오픈소스 소프트웨어이며, 애플리케이션 개발의 모든 기술과 영역을 종합적으로 다루는 애플리케이션 프레임워크다.- 엔터프라이즈 애플리케이션 개발의 복잡함은 비즈니스 로직과 엔터프라이즈 시스템의 기술적인 요구에 의해 발생한다. 기존의 접근 방법은 이 복잡도를 낮추지 못하며 자바의 객체지향적인 장점을 포기해야 한다는 문제점이 있다.- 자바의 근본인 객체지향적인 원리에 충실하게 개발할 수 있으며, 환경과 규약에 의존적이지않은 POJO를 이용한 애플리케이션 개발은 시스템 개발의 복잡함이 주는 많은 문제를 해결할 수 있다.- 스프링의 목적은 이런 POJO를 이용해 엔터프라이즈 애플리케이션을 쉽고 효과적으로 개발할 수 있도록 지원해.. 2024. 1. 5.
토비의 스프링 3.1 Vol.1 650p ~ 750p 정리 7.6 스프링 3.1의 DI- 정책과 관례를 이용한 프로그래밍7.6.1 자바 코드를 이용한 빈 설정- 테스트 컨텍스트의 변경@ContextConfiguration - 스프링 테스트가 테스트용 DI 정보를 어디서 가져와야 하는지 지정할 때 사용하는 애노테이션이다. - 제거XML의 내용을 TestApplicationContext 내부로 옮기는 작업을 본격적으로 진행해 보자. - 의 전환- 전용 태그 전환7.6.2 빈 스캐닝과 자동와이어링- @Autowired를 이용한 자동와이어링- @Component를 이용한 자동 빈 등록7.6.3 컨텍스트 분리와 @Import- @import7.6.4 프로파일- @Profile과 @ActiveProfiles- 컨테이너의 빈 등록 정보 확인- 중첩 클래스를 이용한 프로파일.. 2024. 1. 4.
토비의 스프링 3.1 Vol.1 550p ~ 650p 정리 6.8.3 테스트를 위한 트랜잭션 애노테이션- @Rollback테스트용 트랜잭션은 테스트가 끝나면 자동으로 롤백된다. 롤백을 하지 않고 DB에 커밋하고 싶다면 @Rollback 애너테이션을 사용하자.@Test@Transactional@Rollback(false)public void transactionSync() { ...} - @TransactionConfiguration@Transaction은 테스트 클래스에 넣어서 모든 테스트 메소드에 일괄 적용할 수 있지만 @Rollback 애너테이션은 메서드 레벨에만 적용할 수 있다.클래스 레벨에 @Rollback(false)를 적용하고싶다면? -> @TransactionConfiguration(defaultRollback=false)를 적용하자. - NotTr.. 2024. 1. 2.
토비의 스프링 3.1 Vol.1 450p ~ 550p 정리 6.3.4 다이내믹 프록시를 위한 팩토리 빈- 팩토리 빈의 설정 방법'&'를 빈 앞에 붙여주면 팩토리 빈 자체를 돌려준다. - 다이내믹 프록시를 만들어주는 팩토리 빈- 트랜잭션 프록시 팩토리 빈- 트랜잭션 프록시 팩토리 빈 테스트6.3.5 프록시 팩토리 빈 방식의 장점과 한계- 프록시 팩토리 빈의 재사용- 프록시 팩토리 빈 방식의 장점1. 타깃 인터페이스를 구현하는 클래스를 일일이 만드는 번거로움을 제거할 수 있다.2. 팩토리 빈을 이용한 DI까지 더해주면 번거로운 다이내믹 프록시 생성 코드도 제거할 수 있다. - 프록시 팩토리 빈의 한계중복의 한계6.4 스프링의 프록시 팩토리 빈6.4.1 ProxyFactoryBean프록시를 생성해서 빈 오브젝트로 등록하게 해주는 팩토리 빈 - 어드바이스: 타깃이 필요.. 2024. 1. 2.
토비의 스프링 3.1 Vol.1 350p ~ 450p 정리 5.2 트랜잭션 서비스 추상화- 테스트 실패의 원인트랜젝션의 문제, upgradeLevels() 메서드가 하나의 트랜잭션 안에서 동작하지 않았기 때문이다.5.2.2 트랜잭션 경계설정트랜잭션 롤백 - 두 개의 SQL 작업 중 하나가 실패하면 앞에서 처리한 SQL 작업도 취소 시키는 것 - JDBC 트랜잭션의 트랜잭션 경계설정트랜잭션의 경계 - 애플리케이션 내에서 트랜잭션이 시작되고 끝나는 위치를 트랜잭션의 경계라고 부른다.로컬 트랜잭션 - 하나의 DB 커넥션 안에서 만들어지는 트랜잭션을 로컬 트랜잭션이라고 한다. - UserService와 UserDao의 트랜잭션 문제왜 UserService의 upgradeLevels()에는 트랜잭션이 적용되지 않았을까?JdbcTemplate에서는 메소드 호출 한 번에 한.. 2023. 12. 31.