전체 글 (457) 썸네일형 리스트형 [정보처리산업기사] 객체 지향 설계 원칙 SOLID 객체 지향 설계 원칙시스템 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 5가지 원칙입니다.앞 글자를 따 SOLID 원칙이라고도 불립니다. 1. 단일 책임 원칙(Single Responsibility Principle, SRP)클래스는 하나의 책임만 가져야 한다.응집도는 높고 결합도는 낮게 설계해야 한다.A클래스와 B클래스가 서로 의존적일 때 A클래스가 변경이 된다면 B클래스 또한 변경이 됩니다.시스템 변경이 되었어도 A클래스만 변경이 되어야 하는 것이 SRP입니다. 2. 개방-폐쇄 원칙(Open-Closed Principle)확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다.기존 코드를 변경하지 않고 기능을 추가할 수 있도록 설계를 해야하며 공통 인터페이스를 하나의 인터페이스로 묶어 캡.. [정보처리산업기사] 운영체제 운영체제란?컴퓨터 시스템들의 자원들을 관리해주고 사용자에게 편리하고 효과적인 환경을 제공하는 여러 프로그램들의 모임입니다.대표적인 운영체제는 윈도우이며 리눅스, 유닉스 등 다양한 운영체제가 있습니다.여기서의 자원은 하드웨어(프로세서, 기억장치, 입출력장치 등)와 소프트웨어(데이터, 명령어)를 의미합니다. 운영체제는 사용자와 하드웨어간의 인터페이스로서 동작을 하는 시스템 소프트웨어입니다.만약 컴퓨터에 운영체제가 없다면 사람이 하나하나 전선을 연결하며 코드를 짜야합니다. 운영체제의 목적처리 능력(Throughput)일정 시간 내에 시스템이 처리하는 일의 양반환 시간(Turn Around Time)작업이 처리가 완료될 때까지 걸린 시간사용 가능도(Availability)시스템을 사용할 필요가 있을 때 즉시 사.. [백준] 알고리즘 수업 - 깊이 우선 탐색 2 (24480번) 문제 힌트1. 자료구조List[] (그래프 표현)정점 간의 간선을 표현하기 위해 인접 리스트를 사용합니다.이유: 정점과 간선의 수가 크기 때문에 인접 행렬을 사용하면 공간 복잡도가 매우 비효율적입니다. 인접 리스트를 통해 필요한 간선 정보만 저장해 메모리를 절약할 수 있습니다.int[] (방문 순서 기록)방문 순서를 저장하기 위해 배열을 사용합니다.이유: 정점 번호와 배열의 인덱스를 매칭하여 빠르게 방문 순서를 기록할 수 있습니다. 배열을 통해 O(1) 시간에 순서를 조회하거나 설정할 수 있습니다.Collections.sort (내림차순 정렬)문제에서 요구하는 인접 정점을 내림차순으로 방문을 구현하기 위해 사용합니다.이유: 탐색 전에 인접 리스트를 내림차순으로 정렬함으로써 DFS 수행 중 자연스럽게 내림.. [Java] 동등성 (equals(), hashCode()) 자바에서 동등성(equality)을 보장하는 equals()와 hashCode()가 존재합니다.이 두 메소드는 Object 클래스에서 기본적으로 제공을 하며 객체의 동등성 비교를 할 수 있습니다. equals()두 객체의 참조 동등성(reference equality)을 검사합니다.두 객체가 같은 메모리 주소를 가리키고 있는지 확인을 하며 같다면 true 다르다면 false를 반환하게 됩니다.Object obj1 = new Object();Object obj2 = new Object();System.out.println(obj.equals(obj2)); // false 사실 저는 실제 값이 같아야 equals가 true 일 줄 알았지만 실제로는 같은 주소인지를 확인하는 것이였습니다.이유는 equals를 .. [Java] String, StringBuffer, StringBuilder 차이점 StringString은 자바에서 가장 기본적인 문자열 클래스이며, 불변(immutable)의 특징을 가지고 있습니다.불변이란 한 번 생성된 문자열 객체의 값이 변경되지 않음을 의미합니다.String message = "hello";message += " world";System.out.println(message); // 출력: hello world 위 코드에서 문자열이 변한 것처럼 보이지만, 실제로는 새로운 문자열 객체가 생성된 것입니다.즉, "hello"와 "hello world"라는 두 개의 객체가 메모리에 존재합니다.문자열 풀(String Pool):문자열 리터럴로 생성된 String 객체는 JVM의 문자열 풀에 저장됩니다. 동일한 리터럴이 재사용되지만,문자열 조작(예: +=)은 새로운 객체를 .. 메시징 시스템(Messaging System) 메시징 시스템이란?메시징 시스템은 발신자(Sender)와 수신자(Receiver) 간에 데이터를 메시지 형태로 교환하며, 어플리케이션 간 의존도를 낮추는 시스템입니다. 주로 비동기 통신을 지원하며, 실시간 데이터 스트리밍과 대규모 데이터 처리를 관리하는 데 사용됩니다. 메시징 시스템이 필요한 이유1. 동기적 통신의 한계기존 어플리케이션은 서로 직접 요청하고 직접 응답하는 구조였습니다. 이는 다음과 같은 문제가 있습니다.하나의 시스템이 장애를 겪으면 전체 시스템이 영향을 받는 강한 의존성이 발생API 호출 중 서버가 응답하지 않으면 요청한 어플리케이션이 대기 상태에 빠짐사용자 경험이 악화됨: 서버 응답 지연이 수 초만 발생해도 사용자 불만이 생김예시: 서버가 다운되거나 느린 응답을 보이면, 사용자들은 해.. [백준] 토마토 (7569번) 코드 힌트자료 구조토마토 관리 : 상, 하, 좌, 우, 위, 아래를 관리하기 위해 3차원 배열을 사용상태 변화 : 이중 큐를 사용하여 이미 익은 토마토와 방금 익은 토마토를 관리핵심 로직그래프를 초기화(입력 받기) 시킵니다.이 때 익은 토마토(값이 1일 때)를 큐에 저장을 합니다.회차 별로 BFS를 시작합니다.익은 토마토로 인해 확산되어 익은 토마토는 또 다른 큐에 저장합니다기존의 큐에 저장을 하면 count를 제대로 할 수 없습니다.BFS가 종료되었을 때 이제 막 익은 토마토 큐가 비어있는 지 확인합니다.만약 새롭게 익은 토마토가 없다면(큐가 비어있을 때) 그대로 종료합니다.새롭게 익은 토마토가 있다면 익은 토마토 큐에 저장을 하고 막 익은 토마토 큐를 비워줍니다.새롭게 익은 토마토가 없을 때 까지 반.. [Spring Boot] HTTP Body 암호화 및 간단한 예제 민감한 데이터 전송 시 보안 방법1. 전송 시 사용하는 보안 방식TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer) 프로토콜은 인터넷을 통한 데이터 전송에서 암호화를 제공합니다.민감한 데이터를 전송할 때, 클라이언트와 서버 간의 연결을 암호화하여 중간에서 데이터가 탈취되는 것을 방지합니다.TLS는 HTTP over SSL(HTTPS)로 구현되어 웹 브라우저와 서버 간의 통신을 안전하게 암호화합니다.이 방식은 데이터 전송 중 보안을 보장하며, 연결이 안전하게 유지되도록 합니다.추가 설명:HTTPS는 HTTP 프로토콜 위에 TLS/SSL을 적용하여 데이터의 기밀성을 보장합니다. 이로 인해 중간자 공격(MITM)이나 데이터 스니핑을 방지할 수 있습니다. .. 이전 1 2 3 4 5 6 7 ··· 58 다음 목록 더보기