본문 바로가기

지식/Computer Science

[네트워크] 접근 통제 정책 (MAC, DAC, RBAC) - 접근 통제 정책 어떤 상황에서 행위를 허용하거나 거부할 것인지에 대한 내용을 나타냅니다. 접근 통제 정책은 크게 세가지가 있습니다. - MAC (Mandatory Access Control) : 강제적 접근 통제 주체, 객체 등급기반 접근권한 부여 자원의 보안 레벨과 사용자의 보안 취급 인가를 비교하여 접근 제어를 합니다. 어떤 주체가 어떤 객체에 접근하려 할 때 양자의 보안 레벨(보안등급)을 비교하여 높은 보안을 요하는 정보가 낮은 레벨의 주체에게 노출되지 않도록 접근을 제한하는 방법 입니다. - DAC (Discretionary Access Control) : 임의적 접근 통제 접근 주체 신분기반 접근권한 부여 접근 주체가 속해 있는 그룹의 신원에 근거하여 객체에 대한 접근을 제한하는 방법 입니다.. 더보기
[프로그래밍 패러다임] 객체지향 프로그래밍 기초 (OOP) 이 글보다 이전 글에도 객체지향 설계와 스프링(SOLID)(https://wjddntjr555w.tistory.com/46)라는 이름으로 글을 썻지만 책을 보면서 읽은 내용을 한번 더 정리하려 합니다. 객체지향 프로그래밍(OOP, Object-Oriented Programming)은 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이티를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식. (반대 : 절차형 프로그래밍) 객체지향 프로그래밍의 특징 (추상화, 상속성, 다형성) 추상화 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 의미 상속성 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것 다형성 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것.. 더보기
[디자인 패턴] 옵저버 패턴 (Observer Pattern) 옵저버 패턴은 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴입니다. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고, 자동으로 정보가 갱신되는 1:N 관계(혹은 1대1)를 정의합니다. 여기서 주체란 객체의 상태 변화를 보고 있는 관찰자 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 추가 변화 사항이 생기는 객체들 옵저버 패턴을 활용한 서비스로는 트위터가 있습니다. 내가 어떤 사람인 주체를 팔로우했다면 주체가 포스팅을 올리면 알림이 팔로워에게 가는 구조입니다. 또한 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC패턴에도 사용됩니다. Model에서 변.. 더보기
[디자인 패턴] 전략 패턴 (Strategy Pattern), 정책 패턴 (Policy Pattern) 전략 패턴은 정책 패턴이라고도 불립니다. 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴입니다. (컨텍스트 : 상황, 맥락, 문맥을 의미, 개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보를 말합니다.) 가장 이해가 쉬운 예제로는 쇼핑을 할 때 네이버페이, 카카오페이 등 다양한 방법으로 결제하듯이 결제의 전략만 바꿔서 적용하는 방법입니다. import java.util.ArrayList; import java.util.List; interface PaymentStrategy{ // 결제 전략들을 인터페이스로 정의 public void pay(int amount); } class KakaoCardS.. 더보기
[디자인 패턴] 팩토리 패턴 (Factory Pattern) 팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다. 상위 클래스와 하위 클래스가 분리되어 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 방식에 대해 모르기에 더 많은 유연성을 갖게 됩니다. 그리고 로직이 분리되어 리팩토링하더라도 한 곳만 고칠 수 있게 되어 유지 보수성이 증가됩니다. 예를 들어, 라떼 레시피, 아메리카노 레시피, 우유 레시피 등 구체적인 내용이 들어 있는 하위 클래스가 상위 클래스로 전달 되면 상위 클래스인 바리스타 공장에서는 이 레시피를 토대로 라떼, 아메리카노, 우유를 생산한다고 생각하면 됩니다. abstr.. 더보기
[디자인 패턴] 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 갖는 패턴입니다. (보통 데이터베이스 연결 모듈에 많이 사용합니다.) 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있지만 의존성이 높아지는 단점이 있습니다. class Singleton{ private static class singleInstanceHolder{ private static final Singleton INSTANCE = new Singleton(); } public static synchronized Singleton getInstance(){ return singleInstanceHolder.INSTANCE; } } public class m.. 더보기
[지식] 프로세스, 스레드 (process, thread) 프로세스 : 프로그램을 메모리 상에서 실행 중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 위 그림처럼 프로세스는 각각 별도의 주소공간을 할당 받습니다. (독립적) - Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령) - Data : 전역변수, 정적변수, 배열 등 => 초기화 된 데이터는 data 영역에 저장, 초기화 되지 않은 데이터는 bss 영역에 저장 - Heap : 동적 할당 시 사용 [new(), malloc() 등] - Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역, 스레드마다 존재) * 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유합니다. * 기본적으로 프로세스마다 최소 1개의 스레드 소유 합니다. (메인 스레드 포함) (프로세스.. 더보기
[지식] OSI 7 계층 OSI 7 계층이란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 이렇게 계층을 나눈 이유는 네트워크 통신에 대하여 흐름을 한눈에 보기 쉽고, 사람들이 이해하기 쉽고 통신이 일어나는 과정 중 특정한 곳에 이상이 생기면 해당 나눠진 단계를 통해 빠르게 파악할 수 있기 때문입니다. 1. 물리(Physical) : 리피터, 케이블, 허브 등 데이터를 전기적인 신호로 변호나해서 주고받는 기능을 진행하는 계층 즉, 데이터를 전송하는 역할만 진행 2. 데이터 링크(Data Link) : 브릿지, 스위치 등 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 계층 따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있습니다. 이 계층에서는 MAC 주소를 통해 통신 3... 더보기