◈ 백준 Greedy(5/50) - 1715**, 16953, 10610**
■ 우선순위 큐(Priorty Queue) - 1715
import java.util.*
//int형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//int형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
.add(value) 또는 offer(value) 매서드를 사용하여 value값을 추가.
.poll() : 첫번째 값을 반환하고 제거
.remove() : 첫번째값 제거
.clear() : 초기화
.peak() : 가장 첫번째값 출력.
■ 30 - 10610
- Hint : 30의 배수는 0이 무조건 포함, 모든자리의 수의 합이 3의 배수, 정수 범위 주의.
◈Restful Web Services
■ Spring Boot Actuator
● Spring Actuator는 Spring Boot 애플리케이션의 운영 환경에서 모니터링 및 관리를 지원하는 기능을 제공하는 모듈. Actuator를 사용하면 애플리케이션의 상태, 헬스 체크, 메트릭, 환경 속성 등을 간편하게 노출하고 모니터링할 수 있다.
주로 운영 환경에서 애플리케이션의 상태를 이해하고 문제를 진단하는 데 도움이된다.
dependecies 추가 후 localhost:8080/actuator 입력하면 확인이 가능하다.
■ HAL Explorer
■ Spring Security
● Spring 기반의 애플리케이션의 보안(인증,권한)을 처리하는 프레임워크
dependencies{
implementation 'org.springframework.boot:spring-boot-starter-security'
dependency 추가.
Security 추가 후 Postman으로 전체 유저 조회를 실행
401 Unauthorized 발생.
애플리케이션 실행시 표기되었던 Username과 Password 입력! (Username의 defalut = user)
참조 : https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
Default값 말고 yml 파일에서 name과 password를 설정해서 사용이 가능하다.
하지만 대체로 @Bean등록을 해서 사용.
@Configuration
public class SecurityConfig {
@Bean
UserDetailsService userDetailsService() {
// UserDetailsService : Spring Security에서 사용자 세부정보를 로드
InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager();
// 사용자 정보를 메모리에 저장하고 관리하는 클래스, 사용자를 추가하고 관리가 가능
UserDetails newUser = User.withUsername("kwonoh") // 사용자 이름 설정
.password(passwordEncoder().encode("mygod")) // 암호 설정
.authorities("read") // 권한 설정
.build();
userDetailsManager.createUser(newUser);
//UserDetails로 설정한 사용자 정보를 InMemoryUserDetailsManager에 추가
return userDetailsManager;
}
@Bean
BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
// 비밀번호를 안전하게 암호화(BCrypt 해시로 암호화 하여 안전하게 저장)
}
}
@Configuration : 해당 클래스가 스프링의 설정 클래스임을 나타냄(@Bean등록)
+) https://castleone.tistory.com/2
[Spring] @Configuration 개념과 장점
더보기 1. @Configuration 이란? : @Configuration이라고 하면 설정파일을 만들기 위한 애노테이션 or Bean을 등록하기 위한 애노테이션이다. 더보기 2. @Configuration을 사용하면 뭐가 좋은데? : @Configuration 애
castleone.tistory.com
++) 싱글톤(chatGPT)
Spring 프레임워크에서도 싱글톤 패턴이 적극적으로 활용됩니다. Spring에서 빈(Bean)은 기본적으로 싱글톤 스코프로
생성되며, 한 번 생성된 빈은 컨테이너 내에서 공유되어 재사용됩니다. 이를 통해 리소스를 효율적으로 활용하고 객체 간의 의존성을 관리할 수 있습니다.
Spring에서 싱글톤 빈을 사용하는 것은 일반적으로 안전하며, 많은 경우에 효과적입니다. 그러나 주의해야 할 점은 싱글톤 빈이 상태를 가지고 있을 때 다중 스레드 환경에서 공유되는 경우 동기화에 주의해야 합니다. 이러한 상황에서는 상태를
가지지 않는 빈이나 필요에 따라 동기화 처리를 고려하는 것이 중요합니다.
※ spring security는 추후에 더 공부 하도록 하자!
■ JPA(Java Persistence API)
● 자바 ORM(Object Relation Mapping) 기술에 대한 API표준 명세
● 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
● EntityManager를 통해 CRUD처리
■ Hibernate
● JPA의 구현체, 인터페이스를 직접 구현한 라이브러리
■ Spring Data JPA
● Spring Module
● JPA를 추상화한 Repository 인터페이스 제공
@NoArgsConstructor
@AllArgsConstructor
@OneToMany(mappedBy = "Parent Class Name ") - 부모 테이블
private List<Post> posts;
@ManyToOne(fetch = FetchType.LAZY) -자식테이블
@JsonIgnore
private User user;
'Study Record' 카테고리의 다른 글
24/02/18 백준 1946(6/50) (0) | 2024.02.19 |
---|---|
24/02/17 SQL- GROUP BY (0) | 2024.02.18 |
24/02/15 SQL Lv2 (0) | 2024.02.16 |
24/02/14 - Swagger, MappingJacksonValue, HATEOUS (1) | 2024.02.15 |
24/02/13 SQL Lv2, User mode/Karnel mode, Switch (0) | 2024.02.13 |