전체 글 39

HTTP 통신 과정 (DMZ 중개서버, 톰캣)

HTTP(HyperText Transfer Protocol)이란웹 브라우저(클라이언트)와 웹 서버가 데이터를 주고받기 위해 사용하는 통신 규약(프로토콜)입니다. 우리가 브라우저 주소창에 URL을 입력하고 엔터를 누르는 순간, 내부에서는 다음과 같은 일이 순서대로 일어난다.이번 글에서는 이 흐름을 따라가며 HTTP 통신 과정을 정리해보려 한다.1. URL 입력사용자가 브라우저 주소창에 다음과 같은 URL을 입력했다고 해보자.https://example.com/posts/1브라우저는 이 URL을 그대로 서버에 보내는 것이 아니라, 먼저 URL을 구성 요소별로 해석한다.프로토콜: https도메인: example.com경로: /posts/1포트: 443여기서 https는 보안이 적용된 HTTP 통신을 의미한다...

네트워크 2026.06.28

cURL 명령어

cURL 이란? Client for URLs로 HTTP 요청을 직접 보내고 응답을 확인할 수 있는 명령어 도구입니다. 터미널 환경에서, 브라우저 필요없이 웹 서버에 직접 요청을 보낼 수 있습니다.JavaScript 환경에서 HTTP 요청을 보내기 위해 fetch를 사용하는 것처럼 실행 환경의 차이입니다.Postman은 이런 HTTP 요청을 보기 좋게 GUI(그래픽 인터페이스) 환경에서 쉽게 작성하고 테스트하는 도구라고 생각하시면 됩니다. cURL로 API를 호출하면 주로 JSON 형식의 데이터가 반환되며, 일반 웹 페이지를 호출하면 HTML이 반환됩니다.또한 이미지, 파일 등 다양한 리소스를 응답으로 받을 수 있습니다. 아래와 같이 웹페이지를 호출하면 html 응답이 반환되는 것을 확인할 수 있습니다.c..

네트워크 2026.06.28

싸피 비전공에서 여러 방황 끝에 데이터 엔지니어 커리어를 시작하게 된 계기..

너무 오랜만에 블로그입니다잘 지내셨는지요,사실 테크 블로그를 쓰면서, 저에 대해서 잘 드러내진 않았었는데요 요즘 제 커리어가 참 다사다난한 것 같아서 한번 정리를 해보려고합니다 ㅎㅎ 먼저 저는 20학번으로 수학과를 졸업했습니다.대학 수학이 들어맞진않아도, 수학을 좋아했던 만큼 전과를 하고 싶진 않았습니다.그리고 전과를 할만큼 가고싶은 학과도 없었습니다,,, ㅎㅎ 지금 생각해보면 대학생활을 하며 제 미래에 대한 고민을 꾸준히 해왔었습니다 전 학생 때 여행도 거의 안 갔고, 성취욕이 좀 더 컸던 것 같습니다. 전공 성적으로 인해 수학과 교직이수 취득이 어려울 것 같아서, 1학년 때부터 복전을 알아보게 되었습니다. 후보는 컴공과 통계였는데 결론부터 말하면 둘다 전공하지 않았습니다 ㅎㅎ컴공 1학년 필수 과목을..

카테고리 없음 2026.06.25

데이터 분석/시각화 관점에서의 Wide Format vs Long Format

학부 시절 때 R수업을 들을 때 언뜻 Wide Format 과 Long Format 을 들어봤었던 기억이 언뜻 나기도 합니다.하지만 단순 암기로 제 기억속에 사라졌었는데 ..업무에서 PowerBI를 사용하는데, 현업 데이터를 가공하는 과정에서 이 둘의 차이가 중요하다고 느껴졌던 것 같습니다. 먼저, 비개발 현업에서 주로 사용되는 데이터는 Wide Format 입니다.Wide Format품목/월 별 판매실적 데이터품목1월2월3월정수기502310온수기23114보일러100225 사람이 보기 편하다는 장점이 있고, 특정 개체의 모든 관련 정보를 한 행에서 볼 수 있어 직관적이고 이해하기 쉽습니다.그리고 엑셀에서 이러한 형태의 데이터를 많이 사용합니다. → 사람이 보기엔 직관적이지만 이러한 형태의 데이터로 데..

BigData 2025.12.23

데이터레이크, 데이터 웨어 하우스, 데이터 사전 의미 및 필요성

요즘 현업에서 데이터 관리 및 적재를 요청하며정리하고 넘어가고 싶은 부분이다 먼저, 데이터 레이크는 다양한 원천 시스템에서 발생하는 데이터를 정제하지 않은 상태로 대용량 저장하는 공간으로, 분석을 위해 원본 데이터를 그대로 보관한다.현 직장의 프로세스는 데이터 레이크(Onelake)에 적재되어있는 데이터의 컬럼을 네이밍규칙을 기반으로 데이터 사전을 작성하고 데이터 웨어하우스에 적재하여 데이터를 분석, 시각화하는 작업을 한다학부 때 그리고 ADsP를 공부하면서 이론으로만 배웠던 내용인데 이렇게 현업에서 데이터 레이크 (DL)과 데이터 웨어하우스 (DW) 차이를 파악하려고 하니 재밌기도하다제조업 특성 상 대리점, 센터가 존재한다대리점 및 센터의 접수 데이터를 기반으로 데이터 레이크에 저장하고 있다아직 우리회..

DB 2025.09.04

AI 할루시네이션이란? 원인/ 예시/ 해결방법

챗GPT 등 생성형 AI가 틀린 정보를 맞는 정보인 것 처럼 답해서 답답하거나 혼란스러웠던 경험이 있으신가요? 한 사례에 따르면 "세종대왕 맥북 던짐 사건 알려줘" 라고 물었더니, 챗GPT가 엉뚱한 답변을 내놓은게 화제가 되기도 했습니다. 이러한 답변이 바로 대표적인 할루시네이션의 예시입니다.AI 할루시네이션이란?AI가 정보를 출력해내는 과정에서 발생하는 오류로, 의도적으로 생성되는 허위 정보를 마치 '사실'처럼 말하는 현상을 말합니다. 역사적 사실을 왜곡하거나, 가짜뉴스 생성, 이미지 생성 시 현실 법칙에 위배된 이미지 등을 제공하는 것이 예시입니다.개인적인 사용에서는 혼란에서 피해가 멈추지만, 의료·법률·금융·경제 분야 등 중요한 의사 결정에서 할루시네이션으로 부적절한 결정을 내릴 경우, 경제적 손실..

IT 용어 2025.04.22

수학과가 설명하는 플로이드-워셜(Floyd-Warshall) 알고리즘 [Java]

플로이드-워셜 알고리즘이란?모든 정점 쌍 간의 최단 거리를 구하는 알고리즘입니다.다익스트라는 한 정점에서 출발하는 최단거리만 구하지만, 플로이드-워셜은 모든 정점에서 모든 정점까지의 최단거리를 구합니다. 플로이드-워셜 과정i: 출발지, j: 도착지 라고 하자.i에서 j로 가는 최단 거리는, i → j와 i → k(경유지) → j 중 더 작은 값을 선택해 갱신합니다.(경유지가 0번인 경우, 1번인 경우 ...n-1번인 경우) 코드와 시간복잡도O(n^3)for문이 3개가 중첩이 되어 있기 때문에, 시간 복잡도가 굉장히 높습니다.public class Main { static final int INF = 99999999; // 이동 불가 (문제에 따라 다르게 설정) public static void main..

Java/Algorithm 2025.04.16

다익스트라 알고리즘 [Java]

다익스트라 알고리즘이란?그래프에서 하나의 정점에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘입니다.음의 가중치가 없는 그래프에만 사용 가능합니다. 다익스트라 과정1) 시작 노드의 거리를 0, 나머지는 무한대로 설정합니다. ex) k가 출발점이면, dist[k]=0 2) 방문하지 않은 정점 중, 출발지로부터 가장 거리가 짧은 정점을 방문합니다. 3) 해당 정점을 거쳐 연결된 다른 정점의 거리가 기존의 기록된 거리보다 작으면 갱신합니다. - 이 부분에서 음수 간선일 경우, 갱신이 반복되어 잘못된 최단 경로가 저장될 수 있어 오류가 생길 수 있습니다. 4) 모든 노드를 방문할 때까지 2-3단계를 반복합니다. 코드와 시간복잡도- 우선순위큐+ 인접리스트를 사용할 경우: O(E log V)인접리스트를 ..

Java/Algorithm 2025.04.08

[Java] HashSet 개념과 저장 원리(HashMap, 해시테이블, hashcode, equals 메서드)

HashSet 이란?Python에서 Set(집합)의 개념과 유사합니다.중복을 허용하지 않고, 요소들의 저장 순서를 유지하지 않는 자료구조입니다. HashSet 특징null값을 저장할 수 있습니다.동기화되지 않습니다 멀티스레드 환경에서 여러 스레드가 동시에 HashSet을 수정하면 ConcurrentModificationException이 발생할 수 있습니다. 따라서 스레드 중 하나 이상이 세트를 수정하는 경우 Collections.synchronizedSet() 을 사용해서, 외부에서 동기화 해야 합니다. 검색 시 O(1) 시간 복잡도가 소요되며 굉장히 성능이 좋습니다.  HashSet 저장 원리 HashSet의 검색 속도가 빠른 이유가 바로 저장 원리 때문입니다. Java에서 HashSet은 내부적으로..

Java/자료구조 2025.04.01

ArrayList vs LinkedList

구조적 차이 ArrayList의 구조 (배열 기반) 연속된 메모리 블록에 데이터를 저장인덱스로 직접 접근 가능 (O(1))중간 삽입/삭제 시 데이터를 이동해야 해서 비용이 큼 (O(N))배열은 연속된 메모리 공간에 데이터를 저장하므로, 특정 위치에 데이터를 삽입하거나 삭제하려면 해당 위치 이후의 모든 데이터를 이동시켜야 합니다. LinkedList의 구조 (이중 연결 리스트) 각 요소가 "노드"로 저장되며, 노드는 next와 prev 포인터를 가짐메모리가 연속적이지 않음 (임의의 위치에 저장됨)중간 삽입/삭제는 빠름 (O(1)) (포인터만 변경하면 됨)검색(get(index)) 시 처음부터 탐색해야 해서 느림 (O(N)) 시간복잡도 차이연산ArrayListLinkedList접근O(1)O(n)처음 위치에 ..

Java/자료구조 2025.03.30