# Web server와 Web application server (WAS)란? Web Server와 WAS(Web Application Server)는 모두 클라이언트 요청에 따라 웹 애플리케이션을 실행시키는 서버입니다. Web Server는 웹 브라우저로부터 HTTP 요청을 받아들이고, HTTP 프로토콜을 기반으로 정적인 컨텐츠(HTML, 이미지, CSS, JavaScript 파일 등)를 제공합니다. 주로 Apache, Nginx, IIS 등이 사용됩니다. WAS는 Web Server와는 달리 동적인 컨텐츠를 생성하는 애플리케이션 서버입니다. 웹 서버로부터 받은 HTTP 요청을 처리하여, 애플리케이션 로직을 수행하고, 데이터베이스와 같은 백엔드 서비스와 연동하여 동적인 컨텐츠를 생성하여 웹 브라우저에..
ALL
id PK, AI username UNIQUE, NOT NULL, length(30) userid UNIQUE, NOT NULL, length(30) password NOT NULL, length(30) email UNIQUE, NOT NULL, length(100) grade NOT NULL, default = CLIENT 회원 [ id, username, userid, userpassword, email, grade] 종류로는 일반회원, 관리자가 존재 enum Grade{ CLIENT, ADMIN } 회원가입 (username, userid, password, email [인증 필요]) 이메일 인증 구현 이메일 인증 테이블 관리 로그인 (userid, password) jwt 토큰 기반 인증 소셜 로..
Solid 5원칙은 소프트웨어 개발에서 가이드라인으로 사용되는 원칙으로, 소프트웨어의 품질을 높이고 유지보수를 용이하게 하기 위해 만들어졌습니다. 이 5가지 원칙은 다음과 같습니다. 1. SRP (Single Responsibility Principle) 한 클래스는 하나의 역할만 수행 특징 한 책임의 변경에서 다른 책임의 변경으로의 연쇄작용에서 자유로울 수 있습니다. 코드의 가독성 향상, 유지보수 용이 다른 원리들을 적용하는 기초가 됩니다. 실무의 프로세스는 매우 복잡 다양하고 변경 또한 빈번하기 때문에 경험이 많지 않거나 도메인에 대한 업무 이해가 부족하면 나도 모르게 SRP원리에서 멀어져 버리게 됩니다. 따라서 평소에 많은 연습(‘책임’이란 단어를 상기하는)과 경험이 필요한 원칙입니다. 적용방법 여..
# P / NP 문제 P : 결정론적 다항 시간(Deterministic Polynomial time)에 문제의 해를 찾을 수 있는 문제 집합입니다. ex) O(n^2) NP : 비결정론적 다항 시간(Non-deterministic Polynomial time)에 문제의 해를 검증할 수 있는 문제 집합입니다. 즉, 다항 시간 내에 주어진 답이 올바른지 검증하는 알고리즘이 존재합니다. ex) O(2^n) 이러한 NP문제를 풀때 백트래킹을 사용하면 문제를 효율적으로 해결하는데에 도움을 줍니다. (다만, 모든 NP문제를 백트래킹으로 풀 순 없습니다. 상태공간트리로 표현가능해야합니다.) # backtracking이란? 백트래킹(Backtracking) 알고리즘은 가능한 모든 상태를 탐색하면서 해결책을 찾아내는 ..
# 궁금증 발생 김영한 spring 입문 강의를 들으면서 코드를 따라치다가 뭔가 이해가 가지 않는 코드가 있었습니다. 아직 자바를 잘 이해하지 못한 상태라 좀 깊게 파보고 이해하고 싶었습니다. public class HelloController { @GetMapping("hello-api") @ResponseBody public Hello helloapi(@RequestParam("name") String name) { Hello hello = new Hello(); hello.setName(name); return hello; } static class Hello { private String name; public String getName() { return name; } public void se..
# 정의 벨만-포드 알고리즘은 음의 가중치를 가지는 간선이 있는 그래프에서 최단 경로를 찾는 알고리즘입니다. 이 알고리즘은 다익스트라 알고리즘과 다르게, 그래프 내의 모든 정점을 대상으로 최단 경로를 갱신하므로 음의 가중치를 가지는 간선이 있어도 사용할 수 있습니다. 그러나 음의 사이클이 존재하는 경우에는 최단 경로를 구할 수 없습니다. 벨만포드를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야합니다. 다른 글에서 설명을 이미 했기 때문에 링크만 올려두겠습니다. https://whitem4rk.tistory.com/18 BFS (Breadth First Search ) # 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다...
# 정의 누적합 알고리즘(Cumulative Sum Algorithm)은, 1차원 배열의 일부 또는 전체 원소들의 합을 빠르게 구할 수 있는 알고리즘입니다. 이 알고리즘은 입력 배열의 각 원소를 한 번씩만 방문하면서, 각 위치에서 누적합을 계산하고, 미리 계산해 둔 누적합을 사용하여 구간 합을 계산합니다. 글로만 읽어도 이해가 갈 정도로 굉장히 간단한 알고리즘입니다. 그래서 겉보기에 그냥 당연한 얘기처럼 보입니다. 하지만 오늘 알고리즘 문제를 풀면서 엄청난 활용을 발견했습니다. # Code 가장 기본적인 파이썬 코드입니다. 정말 간단합니다. # 입력 배열을 정의합니다. arr = [1, 2, 3, 4, 5] # 누적합 배열을 초기화합니다. prefix_sum = [0] * len(arr) prefix_s..
# 정의 플로이드-워셜 알고리즘은 그래프에서 모든 정점 쌍 간의 최단 경로를 구하는 알고리즘입니다. 다익스트라 알고리즘과는 다르게 음의 가중치를 가진 간선이 있어도 처리할 수 있습니다. 이를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야한다. BFS를 설명할때 이미 했기 때문에 링크만 올려두겠습니다. https://whitem4rk.tistory.com/18 BFS (Breadth First Search ) # 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다. chatGPT에 따른 BFS의 정의는 다음과 같다. BFS(Breadth-First Search) whitem4rk.tistory.com # Code 플로이드-워..