전체 글

공부 메모

[HTTP] 웹 성능 최적화를 위한 캐시와 조건부 요청

본 게시물은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 작성하였습니다. 같은 이미지를 매번 서버에서 새로 받는다면 얼마나 비효율적일까요?웹 브라우저는 이런 문제를 해결하기 위해 'HTTP 캐시'를 사용합니다. 이번 글에서는 HTTP 캐시의 동작 원리부터 실무에서 많이 사용하는 캐시 제어 방법까지 정리해 보겠습니다. 왜 캐시가 필요할까?캐시가 없으면 /star.jpg를 요청할 때마다 1.1MB 이미지를 매번 새로 받아야 합니다. 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운받아야 하고,인터넷 네트워크는 매우 느리고 비싸기 때문에 브라우저 로딩 속도가 느려져 느린 사용자 경험이 될 것입니다. 첫 번째 요청 땐 서버에서 이미지를 내려주고, 브라우저는 이걸 캐시에 저장해 둡니다...

코딩테스트 & 문제 풀이

[Java]백준_23881 : 알고리즘 수업 - 선택 정렬 1

https://www.acmicpc.net/problem/23881 문제 분석선택 정렬을 직접 구현하는 문제이다. 선택 정렬의 가장 기본적인 원리는 가장 작은 데이터를 선택해서 앞으로 보내는 알고리즘이다.한 바퀴 돌면서 가장 작은 데이터를 찾아서 맨 앞 데이터와 교환하고, 그 다음 작은 데이터를 찾아서 그 다음 위치와 교환하는 식으로 동작한다.배열 [5, 3, 8, 4, 2]로 동작 원리를 살펴보겠다. 전체 [5, 3, 8, 4, 2] 중 가장 작은 값: 2 -> 첫 번째 값 5와 교환=> 결과 : [2, 3, 8, 4, 5] 남은 부분 [3, 8, 4, 5]에서 가장 작은 값: 3 -> 그대로 유지=> 결과 : [2, 3, 8, 4, 5] 남은 부분 [8, 4, 5]에서 가장 작은 값: 4 ->..

코딩테스트 & 문제 풀이

[Java]백준_23968 : 알고리즘 수업 - 버블 정렬 1

https://www.acmicpc.net/problem/23968    문제 분석버블 정렬로 k번째 교환되는 두 수를 구하는 문제이다.먼저, 버블 정렬의 개념을 알아야 한다. 버블 정렬의 가장 기본적인 원리는 인접한 두 개의 수를 비교하여 큰 수를 오른쪽으로 밀어내며 정렬하는 알고리즘이다. 두 개의 수를 비교하여 만약 앞에 있는 숫자가 더 크다면, 서로 교환을 시키고 이후 다시 옆칸과 비교하는 방법을 반복한다.배열 [5, 3, 8, 4, 2]로 동작 원리를 살펴보겠다. 5와 3 비교 -> 교환 -> [3, 5, 8, 4, 2]5와 8 비교 -> 그대로 -> [3, 5, 8, 4, 2]8과 4 비교 -> 교환 -> [3, 5, 4, 8, 2]8과 2 비교 -> 교환 -> [3, 5, 4, 2, 8]=> ..

공부 메모

[HTTP] 쉽게 이해하는 HTTP 헤더 & 쿠키 핵심 정리

본 게시물은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 작성하였습니다.   요청과 응답의 구조와 HTTP 헤더와 쿠키의 동작 원리를 제대로 이해하는 건 웹 개발자로서 필수 역량입니다. 이번 포스팅에서는 HTTP 헤더의 구조와 종류, 전송 방식, 그리고 상태 유지 기술인 쿠키까지 자세히 알아보는 시간을 가져봅시다.  HTTP 헤더란?요청과 응답 메시지에 추가 정보를 담아 전달하는 영역입니다.메시지 본문(body) 외에 HTTP 전송에 필요한 모든 부가정보를 전달합니다. 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등  HTTP 헤더 구조GET /search?q=hello&hl=koHTTP/1.1 Host: www.google.co..

코딩테스트 & 문제 풀이

[Java]백준_18110 : solved.ac

https://www.acmicpc.net/problem/18110    문제 분석배열에 입력 받은 값을 넣고, 정렬배열 길이의 15% 만큼의 값을 앞뒤로 제외나머지 중간 값들의 평균 구하기  소스 코드 (⭕)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

코딩테스트 & 문제 풀이

[Java]백준_5576 : 콘테스트

https://www.acmicpc.net/problem/5576    문제 분석w대학과 k대학의 점수를 담을 배열 2개를 만들고, 정렬하여 각 배열의 마지막 3개의 값의 합을 구하면 된다.   소스 코드 (⭕)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

공부 메모

[HTTP] 상태 코드 쉽게 정리해보기 (2xx, 3xx, 4xx, 5xx)

본 게시물은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 작성하였습니다.   웹 개발을 하다 보면 요청을 보낸 뒤 응답에서 종종 200 OK, 404 Not Found, 500 Internal Server Error 같은 숫자를 마주치게 됩니다. 이 숫자들은 단순한 응답이 아니라, 서버가 클라이언트에게 현재 요청의 처리 상태를 알려주는 중요한 신호입니다. 지금부터 이 상태코드들에 대해 한 번 알아보겠습니다.  상태 코드란?클라이언트가 보낸 요청에 대해 서버가 어떻게 처리했는지를 응답에서 알려주는 메시지입니다.상태 코드는 총 3자리 숫자로 구성되어 있고, 앞자리 숫자(1~5)가 코드의 큰 범주를 결정하며, 뒤의 두 자리는 세부 상황을 나타냅니다.  상태 코드 분류코드의미설명1xxInformati..

공부 메모

[HTTP] 데이터 전송 방식과 API 설계 활용

본 게시물은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 작성하였습니다.   HTTP를 이해하려면 단순히 GET과 POST만 아는 걸로는 부족합니다.클라이언트에서 서버로 데이터를 전송하는 방식에는 여러 가지가 있고, 그 구조와 차이를 알아야 제대로 설계하고 디버깅을 할 수 있습니다. 이 글에서는 그 대표적인 4가지 데이터 전송 방식과 최종적으로 API 설계는 어떻게 하는지에 대해 함께 정리해보았습니다.   클라이언트에서 서버로 데이터 전송 방식데이터 전달 방식은 크게 2가지가 있습니다. 1. 쿼리 파라미터를 통한 데이터 전송- GET- 주로 정렬 필터 (검색어) 2. 메시지 바디를 통한 데이터 전송- POST, PUT, PATCH- 회원가입, 상품 주문, 리소스 등록, 리소스 변경  쉽게 이해..

코딩테스트 & 문제 풀이

[Java]프로그래머스_Lv0 : 피자 나눠 먹기 (1)

https://school.programmers.co.kr/learn/courses/30/lessons/120814 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr    문제 분석피자 한 판은 무조건 7조각이다.사람의 수 n이 주어졌을 때, 모든 사람이 피자를 먹을 수 있는 피자의 수를 구하는 문제이다.몫과 나머지를 이용하면 될 것 같다.  소스 코드 (⭕)class Solution { public int solution(int n) { int answer = n / 7; if(n % 7 != 0){ answer++; } ..

코딩테스트 & 문제 풀이

[Java]백준_2563 : 색종이

https://www.acmicpc.net/problem/2563     문제 분석여러 x좌표와 y좌표로 겹치는 부분 제외 넓이 계산 -> 2차원 배열로 풀어보기도화지의 넓이는 100x100 이고, 색종이의 넓이는 10x10이고, 색종이의 수는 100 이하로 정해져 있다.도화지 상의 좌표를 그대로 인덱스로 활용하기 위해 101 크기의 2차원 배열로 지정해놓고, 색종이를 붙일 때마다 해당 영역(10x10)을 순회하면서 새로 덮는 지점만 카운트해주면 된다.   소스 코드 (⭕)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public c..

Hicecream
Hicecream