Daniel: The Dev Story
Daniel: The Dev Story
    • 홈
  • 분류 전체보기
    • 프로젝트
    • BE
      • --------Java--------
      • Java
      • Basic
      • Spring
      • --------JS--------
      • JavaScript
      • TypeScript
      • NodeJS
      • Express
      • Basics
      • --------Common--------
      • Error
    • FE
      • React
    • DB
      • mySQL
    • Algorithm
      • Concept
      • BackJun
      • Data Structure
      • Sort
    • Git
    • Math
    • Book
    • Private
      • Database
      • Tip
  • 글쓰기
  • 관리자
  • myoskin

      [Spring] 서블릿의 특징과 역할

      목  차서블릿의 실행 흐름서블릿 특징서블릿 역할     서블릿의 실행 흐름 예시코드@WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) { // 애플리케이션 로직 }}  1. 클라이언트가 /hello 로 요청을 보낸다.2. 서블릿 컨테이너가 HelloServlet 을 찾아서 요청을 전달한다.3. service() 메서드가 호출되어 요청을 처리하고 응답을 생성한다.4. 클라이언트는 서..

      BE/Spring 2024.12.29

      [GitHub] 깃허브 Organization private 저장소의 fork 허용하기, Cannot fork because forking is disabled

      목  차문제해결 방법해결 완료     문제 Organization 에서 Private 레포지토리를 하나 만들었는데 fork 가 되지않는다.Cannot fork because forking is disabled. 라는 문구가 떠서 저장소 설정에 들어가서 확인해 보았더니 Allow forking 항목이 체크가 해제되어 있었고, 체크박스 자체도 비활성화 되어있어서 체크를 할 수 가 없었다.     해결 방법 저장소의 설정이 아닌 Organization 의 설정에 들어가야 한다.      해결 완료이제 private 저장소에서도 Fork 가 가능해졌다.   이제 저장소의 설정에 들어가보면 기본적으로 Allow forking 이 활성화되어 있는 것을 볼 수 있다.

      Git 2024.12.20

      [Java] 웹 크롤링 라이브러리 Jsoup 및 userAgent

      목  차Jsuop 설정웹 페이지 HTML 가져오기특정 요소 선택 및 텍스트 추출userAgent 와 Header 설정    Jsuop 설정 build.gradle에서 Jsuop 라이브러리를 프로젝트에 추가한다.dependencies{ implementation 'org.jsoup:jsoup:1.15.3'}     웹 페이지 HTML 가져오기 예시 코드import org.jsoup.Jsoup;import org.jsoup.nodes.Document;public class JsoupExample { public static void main(String[] args) { try { // 웹 페이지 HTML을 로드 Document doc = Jsoup..

      BE/Java 2024.11.02

      [Spring] 커넥션 풀과 데이터 소스

      목  차커넥션커넥션 풀(Connection Pool)데이터소스(DataSource)데이터소스 사용     커넥션   데이터베이스 커넥션을 획득할 때는 매우 복잡한 과정을 거치는데, 새로운 커넥션을 만드는 것은 과정도 복잡하고 시간도 많이 소모된다.즉, 요청마다 커넥션을 획득을 하게 되면 응답 속도가 늦어져 서비스에 영향을 미치게 된다. 이런 문제를 해결하기 위해 등장한 것이 커넥션 풀이라는 방법이다.     커넥션 풀(Connection Pool)   커넥션 풀은 데이터베이스와의 연결을 관리하는 기법이다. DB와 연결된 커넥션을 미리 생성해 두고 필요할 때마다 재사용함으로써, 매번 새로운 커넥션을 생성하는 비용을 줄여 성능을 향상시킨다.  이 커넥션들은 매 요청마다 하나씩 꺼내서 사용하며, 처리가 끝나면..

      BE/Spring 2024.07.15

      [Spring] HTTP 요청과 응답 방법

      -- 목차 --HTTP 요청 파라미터쿼리 파라미터조회방법필수여부기본값 설정HTTP 요청 메시지JSONHTTP 응답JSON   HTTP 요청 파라미터 쿼리 파라미터 예시 URL ->http://localhost:8080/request-param?id=west&age=20 GET 쿼리 파라미터와 POST HTML Form 전송 방식에서 사용이 가능하다.  조회방법@RequestParam 애노테이션으로 사용가능  @ResponseBody @RequestMapping("/request-param") public String requestParam( @RequestParam String id, @RequestParam Integer age ){ ..

      BE/Spring 2024.07.01

      [백준] 1707: 이분 그래프 - Java (그래프 알고리즘)

      목 차문제접근 방식풀이   문제      접근 방식   이분 그래프란? 정점들은 두 개의 그룹 중(빨강과 파랑) 하나에 속하고, 빨간색 정점은 빨간색 정점과 연결될 수 없고, 파란색 정점은 파란색 정점과 연결될 수 없다. 즉 같은 색이 연결이 된다면 그 그래프는 이분 그래프가 아니다. 간단히 말해서, 연결은 항상 다른 색의 정점으로만 이루어진다.    그래프를 두 그룹으로 정리해 본다면 아래 그림과 같이 정리가 되는 것을 볼 수 있다. 절대 같은 색상끼리 연결이 안 되는 모습을 보여준다.     이분 그래프?1. DFS 혹은 BFS 로 확인할 수 있다.2. 그래프의 모든 정점과 간선을 한 번만 탐색하므로, 시간 복잡도는 O(V + E) 이다.    BFS 풀이1. Queue에서 뺀 정점의 인근 정점을 확..

      Algorithm/BackJun 2024.05.15

      [백준] 2470: 두 용액 - Java (Two Pointer)

      목 차 문제 접근 방식 풀이 문제 접근 방식 이 문제는 투 포인터를 활용하여 알고리즘을 구현하는 문제이다. 투포인터의 특성상 대부분의 문제가 정렬을 요구하는데, 자바에서는 Arrays.sort(배열)를 사용하면 쉽게 정렬을 할 수 있다. 우리의 요점은 정렬이 아닌 투 포인터 기법이니 가볍게 넘어가기로 했다. 왼쪽과 오른쪽에 포인터를 하나씩 놔두고 조건에 따라 각각 한 칸씩 오른쪽과 왼쪽으로 이동하게 한다. 먼저 다음과 같이 구현순서를 정의했다. 1. 두 포인터가 가리키는 값의 합을 더한다. (sum = arr[left] + arr[right]) 2. 이전까지 가장 가까웠던 거리의 크기와 현재 거리의 크기를 비교한다. 2 - 1. 현재 거리의 크기가 더 작다면 값을 갱신해준다. 2 - 2. 현재 거리의 크..

      Algorithm/BackJun 2024.03.30

      [백준] 2448: 별찍기 11 - Java (RecursiveFunction)

      목 차문제접근 방식풀이 문제 접근 방식 출력은 아래와 같다. 먼저 패턴을 살펴보기로 했다. 재귀를 사용해서 문제를 풀어야 하는데, 다음 유의점을 생각하면서 재귀를 구현하였다. 1. Base Case 부터 출력한다. 2. 작은 삼각형 출력을 목표로 하고 목표에 맞게 재귀를 호출한다. 3. n / 2 를 하고 위쪽 삼각형, 왼쪽 삼각형, 오른쪽 삼각형을 출력하게 한다. 입력으로 24 가 들어올 때 아래와 같이 출력이 되어야 한다. 이 문제에서 가장 핵심적인 부분은 재귀도 있지만 n / 2 부분인데, space 영역을 살펴보면 안쪽 빈 삼각형은 n / 2 를 기준으로 한다는 것을 쉽게 알 수 있을 것이다. 이 부분에서 n / 2 를 하게 되었다. 그리고 3 * (2^k) 으로 입력이 들어온다고 문제에 작성이 ..

      Algorithm/BackJun 2024.03.30

      [백준] 10282: 해킹 - Java (Dijkstra)

      목 차 문제 접근 방식 풀이 문제 접근 방식 먼저 이 문제는 다익스트라(Dijkstra) 알고리즘을 사용하여 푸는 문제이다. A 컴퓨터가 B 컴퓨터를 의존한다. 이 때 B 가 감염되면 A 컴퓨터도 감염된다. 이 뜻은 B 가 출발점, A 가 도착점이 된다. 다익스트라의 경우 비슷비슷하기 때문에 크게 문제가 되지는 않지만 입력이 아래와 같을 때 문제가 발생하게 된다. 1 4 5 1 4 1 1 2 4 10 3 1 2 2 3 2 3 2 2 answer 4 4 이 경우는 1 -> 4 로 1초의 시간이 걸리고, 1 -> 3으로 2초의 시간이 걸린다. 이 경우에 걸리는 시간은 2초이다. 만약 평소대로 다익스트라 알고리즘을 사용한다면 여기서 걸리게 되어 답이 5가 출력될 것이다. 해결방법은 간단하다. 시간을 담아놓은 ..

      Algorithm/BackJun 2024.03.29

      [Spring] 의존성 주입과 의존성 역전 원칙(DI ans DIP)

      목  차의존하다의존성 역전 원칙(Dependency Inversion Principle, DIP)DIP와 의존성 주입(DI)DIP를 위배한 코드와 변경 후 코드문제점     의존하다 '의존성을 주입한다', '의존한다' 라는 말들은 초보 개발자들에게 굉장히 어렵게 다가올 수 있다.  간단한 예시를 통해서 이 어려운 언어들을 쉽게 바꾸어 보려고 한다. 당신은 커피를 만들기 위해서 커피머신을 사용한다고 한다. 이 때 당신은 커피머신에 '의존'하고 있는 것이다. 프로그래밍에서도 비슷한 개념이 적용된다. 한 클래스가 다른 클래스의 코드를 필요로 할 때, 우리는 그 클래스가 다른 클래스에 '의존한다' 라고 말한다.      의존성 역전 원칙(Dependency Inversion Principle, DIP) 여기서 ..

      BE/Spring 2024.02.20

      [자료구조] Map 과 배열을 이용한 트리 구현

      목 차 트리의 정의와 주요 특성 배열을 사용한 트리 구현 Map을 사용한 트리 구현 트리의 정의와 주요 특성 노드는 부모가 있고, 자식이 왼쪽과 오른쪽에 있다. 노드의 구성은 아래 이미지를 참고하면 된다. 이런 노드들이 모여서 트리가 되는 것인데, 부모를 타고 계속 올라가서 더 이상 부모가 없는 노드를 루트노드 라고 한다. 자식을 타고 계속 내려가서 더이상 자식이 없는 노드를 리프노드 라고 한다. 그리고 루트노드의 인덱스가 i 일 때, 왼쪽 자식의 노드는 i * 2, 오른쪽 자식의 노드는 i * 2 + 1 이다. 반대로 부모 노드는 Math.floor(i / 2) 이다. Math.floor 메서드는 내림을 해주는 메서드이다. 즉, 9.8을 9로 만들어 준다. 배열을 사용한 트리 구현 배열을 사용하여 트리..

      Algorithm/Concept 2024.02.16

      [백준] 2109: 순회강연 - Java (우선순위 큐)

      목 차문제접근 방식풀이 문제 접근 방식 이 문제의 알고리즘 분류는 그리디 알고리즘, 정렬, 우선순위 큐이다. 이 문제를 정렬과 우선순위 큐로 구현을 해보려고 한다. 먼저 강의들의 date 값을 기준으로 small -> Large 순(오름차순)으로 정렬을 한다. 이제 하나씩 큐에 넣는다. 넣을 때 우리가 해줘야 하는 것들은 다음과 같다. 1. 요소의 pay 값을 큐에 넣는다. 2. 만약 큐의 size 가 해당 요소의 date 값을 초과한다면 가장 작은 값을 pop 한다. 이렇게만 보면 상당히 간단한데, 이렇게 구현하면 문제를 풀 수 있다. 사실 여기까지 생각하는 게 힘들 뿐이다. 2109번 문제의 기본 예제를 예를들어 설명해 보려고 한다. 왼쪽이 원본 배열이고, 오른쪽이 정렬 후의 배열이다. 이제 하나씩 ..

      Algorithm/BackJun 2024.02.15

      [알고리즘] 플로이드 워셜(Floyd-Warshall)

      목 차플로이드 워셜(Floyd-Warshall)기본 개념과 작동 원리구현하며 배운 것들구현 방법 플로이드 워셜(Floyd-Warshall) 최단 경로를 구하는 알고리즘 중에는 대표적으로 다익스트라 알고리즘이 존재한다. 다익스트라 알고리즘의 경우 한 점에서 다른 한 점으로의 최단경로를 구하는 반면에 플로이드 워셜은 모든 정점 사이의 최단경로를 찾는 데에 사용된다. 시간 복잡도는 O(V^3)이다. 기본 개념 및 작동 원리 기본 개념위에서 언급하였듯이 모든 정점의 최단경로를 찾는 알고리즘이다. 작동 원리기본적으로 동적 프로그래밍을 기반으로 작동을 하지만 복잡하면 굳이 생각하지 않아도 된다. 이 알고리즘에서는. 이 알고리즘에서는 각 점을 순회하는데, 시작점으로써가 아닌 '경유점'의 개념으로 접근을 하게 된다. ..

      Algorithm/Concept 2024.02.06

      [Java] 컬렉션(ArrayList, LinkedList, Queue) # 6

      목 차 배열과 ArrayList LinkedList Queue 그 외 컬렉션들 ArrayList Javascript의 배열은 동적 배열이다. 그래서 Java 에서는 Arrays 를 통해서 사용해야 하는 배열 메서드들을 직접적으로 사용할 수 있다. 그러한 Javascript 배열의 Java 버전 이라고 생각하면 쉽다. 동작원리 내부구조: ArrayList 는 내부적으로 배열을 사용하여 데이터를 저장한다. 그리고 필요에 따라서 배열의 길이가 조절된다. 요소추가: 새 요소를 추가할 때 배열이 가득 차 있으면, 더 큰 배열을 생성하고 기존 배열을 복사한다. 요소제거: 요소를 제거하면 그 뒤에 있는 요소들이 한 칸씩 이동된다. 배열의 연속성을 위해서 이다. 동적인 배열이 필요할 경우, 그리고 다양한 배열 메서드를..

      BE/Basic 2024.01.27

      [알고리즘] 최소 스패닝 트리(MST)

      목 차최소 스패닝 트리(Minimum Spanning Tree)기본 개념 및 조건위상정렬을 구현하며 배운 것들구현 방법 선행 개념: Union-Find-Algorithm 최소 스패닝 트리(Minimum Spanning Tree) 사이클(cycle)이 없으면서 연결된 노드간의 간선 가중치가 최소인 것을 구하는 알고리즘 요약하자면 그래프 내에서 가장 효율적인 연결 구조를 찾는 것이다. 알고리즘 종류 프림 알고리즘: 하나의 노드에서 시작하여, 가장 낮은 가중치를 가진 간선을 선택하면서 점진적으로 트리를 확장한다.크루스칼 알고리즘: 모든 간선을 가중치를 기준으로 정렬하고, 가장 낮은 가중치의 간선부터 추가하면서 트리를 구성한다. 중요한 포인트는 사이클이 생기지 않는 것이다. 구현 방법과 알고리즘 문제 크루스칼 ..

      Algorithm/Concept 2024.01.25

      [백준] 7576: 토마토 - Java (그래프)

      목 차 문제 접근 방식 풀이 문제 접근 방식 비교적 친근한 BFS를 통해 접근하려고 한다. BFS를 떠올리면 상하좌우 노드를 모두 넣고 마지막으로 빼내어 지는 노드의 날짜를 출력하면 된다. Queue - 상하좌우 범위 내에 있고, 해당 노드가 0(방문하지 않음)이면 Queue에 등록 - 등록 후 그래프에 해당 좌표 노드를 1(방문함)로 변경 예외처리 - 배열에 0이 남아있다면 모두 익지 못하는 상황이니 -1 출력 풀이 package src.Graph; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTo..

      Algorithm/BackJun 2024.01.23

    1234···8
    Daniel: The Dev Story

    찾기

    공지

    최근 글

    인기글

    최근 댓글

    캘린더

      5 / 2025
      일 월 화 수 목 금 토
      1 2 3
      4 5 6 7 8 9 10
      11 12 13 14 15 16 17
      18 19 20 21 22 23 24
      25 26 27 28 29 30 31

    글 보관함

    태그

      알고리즘코딩타입스크립트MYSQLjavaAlgorithm자바git백준BOJ

    즐겨찾기

    방문자 수

    • Today
    • Yesterday
    • Total
    myoskin

    티스토리툴바