Study Record

24/02/16

고고잉93 2024. 2. 17. 05:06
728x90

◈ 백준 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 추가.

어플리케이션 실행시 password 생성

 

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를 설정해서 사용이 가능하다.

yml 파일에서 security 정보 추가

 

하지만 대체로 @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;

 

728x90

'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