전체 글

항상 최적의 코드를 고민합니다
혼자 무작정 코드를 짜려니 대체로 사용하는 구조? 틀?을 도저히 모르겠네요... 그래서 깃헙을 좀 뒤져보다가 분석하기 좋은 클론코딩을 발견했습니다. 최신 기술이 좀 잘 버무려져있어서 좋았습니다. 누군가가 프로젝트로한것 같은데 알고보니 인하대생 3명이었습니다. 너무 반가우면서도 자괴감이... 아무튼 앞으로 코드를 좀 분석하면서 어떻게 구성을 해야 좋을지좀 공부해보려합니다. https://github.com/Instagram-Clone-Coding/Spring_instagram-clone GitHub - Instagram-Clone-Coding/Spring_instagram-clone: Instagram Clone Coding - Backend using Spring Framework Instagram Cl..
Spring을 공부하면서 빈과 컴포넌트를 공부했는데 둘의 역할이 비슷한 느낌이기도 하고 어떤때에 뭘 써야 좋을지 제 나름의 기준이 서지 않았습니다. 그래서 빈과 컴포넌트의 정확한 역할과 둘의 차이점에 대해 알아보도록 하겠습니다. # @Bean 이란? @Bean 어노테이션은 개발자가 직접 스프링 빈(Bean)을 등록할 때 사용됩니다. @Bean 어노테이션은 메소드에 적용되며, 해당 메소드가 반환하는 객체를 스프링 빈으로 등록합니다. @Bean 어노테이션을 사용하면 개발자가 직접 빈을 생성하고 초기화할 수 있으므로, @Component 어노테이션보다 더 세밀한 제어가 가능합니다. @Configuration public class ExampleConfig { @Bean public ArrayList array..
· Back-end
# 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 요청을 처리하여, 애플리케이션 로직을 수행하고, 데이터베이스와 같은 백엔드 서비스와 연동하여 동적인 컨텐츠를 생성하여 웹 브라우저에..
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원리에서 멀어져 버리게 됩니다. 따라서 평소에 많은 연습(‘책임’이란 단어를 상기하는)과 경험이 필요한 원칙입니다. 적용방법 여..
· Algorithm
# 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..
· Algorithm
# 정의 벨만-포드 알고리즘은 음의 가중치를 가지는 간선이 있는 그래프에서 최단 경로를 찾는 알고리즘입니다. 이 알고리즘은 다익스트라 알고리즘과 다르게, 그래프 내의 모든 정점을 대상으로 최단 경로를 갱신하므로 음의 가중치를 가지는 간선이 있어도 사용할 수 있습니다. 그러나 음의 사이클이 존재하는 경우에는 최단 경로를 구할 수 없습니다. 벨만포드를 이해하기 위해선 "그래프"라는 것이 무엇인지부터 알아야합니다. 다른 글에서 설명을 이미 했기 때문에 링크만 올려두겠습니다. https://whitem4rk.tistory.com/18 BFS (Breadth First Search ) # 정의 너비우선탐색이라 불리는 BFS 알고리즘은 굉장히 잘 알려져있고 컴퓨터 관련 전공생들은 거의 모두 알고 있는 알고리즘이다...
whitem4rk
high-end back-end