회선 교환 방식/ 패킷 교환 방식
·
Network
개요데이터 전송 방식은 대표적 2가지 방식이 있다. 회선 교환 방식과 패킷 교환 방식회선 교환 방식데이터 교환 데이터 전송로(데이터 통로)를 만들고 데이터 교환을 마칠 때까지 전송로 계속 사용한다.하지만 데이터 흐리지 않을 때도 회선이 연결되어 있기 때문에 회선 이용 효율이 낮다.따라서 데이터 교환 적합한 통신 방식은 아니다.ex. 전화 회선 -> 통화 중 끊김 없이 실시간 음성 오고 감패킷 교환 방식데이터를 패킷이라는 작은 단위로 나눠서 네트워크에 보내는 방식패킷 헤더에는 수신 컴퓨터 정보, 데이터 인덱스(몇번 째 패킷인지) 등 다양한 정보 포함패킷을 모아서 원 데이터로 복원인터넷은 패킷 교환 네트워크회선 교환 방식과 패킷 교환 방식 차이점회선을 공유 하느냐회선 교환 방식 -> 회선 점유패킷 교환 방식..
92342. 양궁대회
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/92342제한사항 풀이class Solution { int[] answer = {-1}; int maxDiff = 0; public int[] solution(int n, int[] info) { dfs(n, 0, new int[11], info); return answer; } void dfs(int n, int idx, int[] ryan, int[] apeach) { if(idx == 11) { if(n ..
Reflection
·
Programming
리플렉션이란구체적인 클래스 몰라도, 런타임에 클래스의 정보(메서드, 필드, 생성자)를 읽고 조작할 수 있게 해주는 기능즉, 런타임에 타입을 동적으로 결정하고 사용할 수 있다.비유하자면, 리플렉션은 문을 모르고 열쇠도 없이 방 안을 들여다보고, 안에 있는 물건도 만질 수 있는 기술이다(보통 코드는 미리 문과 열쇠를 알아야 하지만, 리플렉션은 모른 채로 작동 가능)리플렉션이 필요한 이유프로그램 실행 중 어떤 클래스를 사용할지 모르는 경우Spring DI 컨테이너, ORM 매핑(JPA) 같은 시스템이 필요유연하고 확장 가능한 구조를 만들기 위해어디서 Class 객체를 얻을까Class.forName("클래스명") 호출 시 ClassLoader가 해당 클래스를 JVM 메모리 안에서 찾는다.메모리에 없다면. cla..
87946. 피로도
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/87946?language=java제한사항풀이import java.util.*;class Solution { static int answer = -1; public int solution(int k, int[][] dungeons) { int n =dungeons.length; boolean[] visited = new boolean[n]; dfs(dungeons, k, 0, visited, 0); return answer; } void dfs(int[][] dungeons, i..
17. Letter Combinations of a Phone Number
·
Algorithm/LeetCode
문제https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/제한사항풀이 import java.util.*; class Solution { public List letterCombinations(String digits) { Map> map = new HashMap(); if(digits.equals("")) return new ArrayList(); map.computeIfAbsent('2', k-> List.of("a", "b", "c")); map.computeIfAbse..
macOS에서 Harbor 레지스트리 인증서 설정하기
·
Programming
MacOS에서 Docker 클라이언트가 사설 Harbor 레지스트리 통신하기 위해서 두 가지 주요 인증서 설정 작업이 필요하다.1. Docker 전용 인증서 디렉토리에 CA 인증서 추가mkdir -p ~/.docker/certs.d/192.168.151.109/cp ca.crt ~/.docker/certs.d/192.168.151.109/ Docker 클라이언트가 특정 레지스트리와 통신할 때 사용할 인증서 제공Docker 애플리케이션에만 국한된 설정Docker 자체 인증서 검증 메커니즘에 필요MacOS는 Docker Desktop을 사용하기 때문에 우분투 환경에서 설정하는 경로와 차이가 있다. 우분투 환경에서 설정 한다면 아래 명령어를 사용해야 한다.mkdir -p /etc/docker/certs.d/1..
우분투 Harbor HTTPS 설정을 위한 인증서 생성
·
Programming
Harbor HTTPS 설정을 위한 인증서 생성 과정인증 기관(CA) 인증서 생성테스트 환경이므로 외부 인증 기관 대신 자체 서명(Self-signed) 방식으로 CA 인증서를 생성한다.CA 인증서(ca.crt)는 CA의 개인 키(ca.key)를 기반으로 발급한다.# 인증서 디렉토리 생성mkdir ~/certcd ~/cert# CA 인증서 개인 키 생성openssl genrsa -out ca.key 4096# CA 인증서 생성: CN에 Harbor를 설치할 서버의 IP주소 입력openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.151.109" \..
42898. 등굣길
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/42898?language=java제한사항 풀이class Solution { public int solution(int m, int n, int[][] puddles) { int answer = 0; int[][] dp = new int[m+1][n+1]; int[][] map = new int[m+1][n+1]; for(int i = 0 ; i회고처음에는 단순한 DFS 문제라고 생각했지만, 이 문제는 최단 경로의 길이가 아닌 경우의 수를 구하는 문제이기 때문에 DFS는 시간 복잡도 측면에서 적절하지 않다고 판단했다. 출발지와 목적지가 고정되어 있고, 경로는 항상 오른쪽..
12927. 야근 지수
·
Algorithm/Programmers
문제https://school.programmers.co.kr/learn/courses/30/lessons/12927제한사항풀이import java.util.*;class Solution { public long solution(int n, int[] works) { long answer = 0; // 최대 힙을 위한 람다 표현식을 사용한 Comparator 정의 PriorityQueue pq = new PriorityQueue((a, b) -> b - a); for (int work : works) { pq.add(work); } for (int i = 0; i 0) { pq..
403. Frog Jump
·
Algorithm/LeetCode
문제https://leetcode.com/problems/frog-jump/description/제한 사항풀이class Solution { public boolean canCross(int[] stones) { Map map = new HashMap(); int n = stones.length; // 빠른 조회를 위해 HashMap에 돌 위치 저장 for(int i = 0 ; i회고DP 문제이면서도 제한 조건의 범위가 크지 않아서 O(n^2)을 허용하는 문제였다. DP 배열을 정의하는 것이 쉽지 않았다. 그리고 최대 점프 길이 반드시 알아야 하는 문제였다. k는 1부터 시작해서 k-1, k, k+1 중 하나의 길이만큼 점프를 한다. 점프한 만큼의 ..