전체 글

·OS
공유된 자원에 여러 프로세스가 동시에 접근하는 것을 허용하면 문제가 발생할 수 있다.만약 계좌에 1000원이 있는 상황에서 A와 B가 동시에 500원을 인출한다고 생각해보자.A와 B가 동시에 계좌의 잔고를 조회한다. 아직 출금하기 전이므로 둘 다 잔고를 1000원으로 조회한다. 이제 각자 500원을 인출하고 나머지 금액인 500원으로 계좌 잔고를 업데이트 한다. 결과적으로 A와 B가 모두 500원을 인출하여 0원이 되어야 하지만 잔고는 500원이 남아있게 된다. 이처럼 공유된 자원에 여러 프로세스가 동시에 접근하여 실행 순서에 따라 결과가 달라지는 문제를 경쟁 상태(`Race Condition`)이라고 한다. 뮤텍스와 세마포어는 이러한 경쟁 상태와 같은 동시성 문제(`Concurrency Issue`)를..
·OS
데드락(Deadlock)이란?데드락이란 둘 이상의 스레드나 프로세스가 서로 자원을 기다리며 영원히 멈춰버리는 상태를 말한다. 교착상태라고도 불리는 이 현상은 4가지의 발생조건을 모두 만족하는 상황에서 발생할 수 있다. 데드락 발생 조건상호 배제 (Mutual Exclusion)자원은 한 번에 하나의 프로세스에서만 사용 가능하다.점유 대기 (Hold and Wait)하나의 자원을 가진 채로 다른 자원을 추가로 기다리는 상태.비선점 (No Preemption)다른 스레드 또는 프로세스가 점유한 자원을 강제로 빼앗을 수 없다.순환 대기 (Circular Wait)자원 요청이 A -> B -> C -> A 와 같이 고리 형태로 이어져 있는 상태. 데드락이 발생하면 프로그램이 무한정 대기하며 동작하지 않게 될 뿐..
·개발지식
생성 디자인 패턴싱글턴(Singleton) 패턴팩토리 메서드(Factory Method) 패턴추상 팩토리(Abstract Factory) 패턴빌더(Builder) 패턴프로토타입(Prototype) 패턴 싱글턴 패턴싱글턴 패턴은 클래스에 인스턴스가 하나만 있도록 하면서, 이 인스턴스에 대한 전역 접근 지점을 제공하는 생성 디자인 패턴이다.public class Singleton { // static으로 유일한 인스턴스를 저장 private static Singleton instance; // private 생성자 private Singleton() { System.out.println("싱글톤 인스턴스 생성!"); } // 인스턴스를 반환하는 메서드 (지연 초기..
콜백(Callback) 함수란?function greet(name, callback) { console.log("Hello, " + name); callback(); // 전달받은 콜백 함수 실행}function sayGoodbye() { console.log("Goodbye!");}greet("Alice", sayGoodbye);콜백(Callback) 함수란 다른 함수에 매개변수로 전달되어 실행되는 함수를 말한다.위에서 보이는 예시 코드에서 `greet`함수는 `callback`이라는 매개변수를 받고 있는데, 내부 로직에서 이를 함수로써 사용하고 있다. 이처럼 다른 함수에 매개 변수로 전달되는 `callback`과 같은 함수가 콜백 함수이다.  콜백(Callback) 함수 사용 방식[익..
·spring
참조: https://docs.spring.io/spring-security/reference/servlet/architecture.html Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like exploit protection,authentication, authorization, and more. The filters are executed in a specidocs.spring.io  SpringSecurity여러..
·spring
@SpringBootApplication@SpringBootApplicationpublic class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); }} 스프링 프로젝트를 생성하면 자동으로 위와 같은 @SpringBootApplication 애너테이션이 붙은 클래스 하나가 생성된다. 해당 애너테이션 코드를 보면서 어떤 역할을 수행하는지 알아보자.  [@SpringBootApplication 구조]@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@Sprin..
hseoky
hseoky 개발기록