전체 글44 [Spring] Spring Bean 과 Servlet에 관한 질의응답 (ChatGPT) 🔥 스프링빈 / 서블릿❓ Question스프링빈과 서블릿은 둘다 객체이지 않나? 둘다 싱글톤이고 그럼 어떤 차이가 있지 📝 Answer스프링 빈(Spring Bean)과 서블릿(Servlet)은 모두 객체이며, 둘 다 일반적으로 싱글톤으로 관리됩니다. 하지만 이 둘 사이에는 몇 가지 중요한 차이점이 있습니다. 주요 차이점은 다음과 같습니다: 1. 역할 및 사용 목적스프링 빈(Spring Bean): 스프링 프레임워크에서 관리되는 객체로, 비즈니스 로직, 서비스, 데이터 접근 등의 다양한 역할을 수행합니다. 스프링 빈은 주로 애플리케이션의 전반적인 기능을 구성하는 데 사용됩니다. 빈은 애플리케이션 컨텍스트(Application Context)에 의해 생성되고 관리됩니다.서블릿(Servlet): 자바 E.. spring 2024. 9. 2. [Java] JDK, JRE, JVM 질의응답 (ChatGPT) 🔥 .java → javac → .class → JVM❓ Question자바 컴파일러에 의해 클래스 파일이 되고 이 클래스 파일을 JVM에서 실행하는거 맞아? 📝 Answer네, 맞습니다! 자바 프로그램이 실행되는 과정은 다음과 같습니다:자바 소스 코드 작성: 개발자는 .java 파일에 자바 코드를 작성합니다.컴파일: 자바 컴파일러(javac)를 사용하여 .java 파일을 컴파일하면 바이트코드가 포함된 .class 파일이 생성됩니다. 이 .class 파일은 JVM이 이해할 수 있는 중간 형태의 코드입니다.실행: 자바 가상 머신(JVM)이 .class 파일을 읽어서 실행합니다. JVM은 바이트코드를 해석하거나 Just-In-Time (JIT) 컴파일러를 사용하여 바이트코드를 네이티브 머신 코드로 변환하.. Java 2024. 8. 31. [Spring] 서블릿 컨테이너와 스프링 컨테이너에 관한 질의응답 (ChatGPT) 🔥 서블릿은 요청시마다 생성되는가?❓ Question여러 클라이언트가 동시에 요청을 한다면 쓰레드 여러 개가 각각 서블릿 객체를 하나씩 생성해서 동시에 service 메소드가 실행되기 때문에 속도가 빠르다.여러 요청이 A서블릿을 요청한다면 A서블릿이 여러개 생성되어 작동하는 것인가? init()이 여러번 호출되는 건가? 📝 Answer아니요, 서블릿(Servlet)은 여러 클라이언트의 요청을 처리할 때 서블릿 인스턴스를 여러 개 생성하지 않습니다. 서블릿 컨테이너(Servlet Container)는 특정 서블릿 클래스에 대해 단일 인스턴스만 생성하고, 이 인스턴스를 여러 클라이언트 요청에 대해 공유합니다. 따라서 다음과 같은 사항을 이해하는 것이 중요합니다:서블릿 인스턴스는 하나만 생성됩니다: 서블릿.. spring 2024. 8. 31. HTTPS란 (SSL / TLS) 📝 HTTPSHTTPS는 HTTP가 전송하는 데이터가 암호화되지 않은 부분을 보완한 프로토콜이다.TLS 계층을 거치는 방식으로 HTTP를 운영하여 HTTP의 전송 메시지 바디(전송되는 데이터가 있는 부분)를 암호화시키는 것이다. HTTPS는 HTTP에 TLS 계층을 더하여 보안을 적용한 것(SSL/TLS 프로토콜과 CA 인증 메커니즘을 통해 보안 : HTTP는 SSL/TLS 인증서를 사용 ❌ HTTPS는 SSL/TLS 인증서를 사용 🙆♀️) 📝 SSL / TLS 프로토콜은 데이터의 암호화처리와 관련이 있다.전송되는 데이터가 민감한 정보일 경우 (ex. 로그인 정보, 개인 식별 정보, 결제 정보, 의료 정보, 금융 정보, 개인 메세지 및 통신 내용, 지리적 위치 정보, 비즈니스 기밀 등등) 그 데이.. infra & network 2024. 8. 11. SOP & CORS란? 📒 동일 출처 정책 (Same-Origin Policy, SOP)브라우저는 기본적으로 SOP 정책을 따르고 있다.SOP는 2011년 RFC 6454에서 등장한 보안 정책으로 "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책. SOP의 등장배경은 다음과 같다. 1. 보안 강화:XSS (Cross-Site Scripting) 방지: 동일 출처 정책은 악성 스크립트가 사용자 브라우저에서 실행되어 다른 사이트의 데이터를 훔치거나 조작하는 것을 방지.CSRF (Cross-Site Request Forgery) 방지: 동일 출처 정책은 공격자가 사용자의 인증 정보를 이용해 다른 사이트에 무단으로 요청을 보내는 것을 막는다.2. 데이터 보호:웹 애플리케이션은 종종 민감한 데이터를 다룬다. 동일 출처.. infra & network 2024. 7. 31. DFS & BFS 그래프 탐색 방법은 크게 DFS(깊이 우선 탐색)와 BFS(넓이 우선 탐색)이 있다. 그래프(Graph)란 Node(정점)와 Edge(간선)로 이뤄진 자료구조이며 Node(정점)들은 Edge(간선)로 이어져있다.그래프를 탐색한다는 건 한 노드를 시작으로 간선을 통해 모든 노드들을 한번씩 방문하는 것을 의미한다. 1. DFS (Depth-First Search) : 일단 최대한 깊게 탐색 후 옆으로 탐색루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 (자식들을 우선적으로 탐색하는 방법)스택 또는 재귀함수로 구현 (자기 자신을 호출하는 순환 알고리즘의 형태 를 가지고 있다)한 노드에서 제일 마지막 자식까지 탐색하고 돌아오는 과정을 .. Algorithm & Data Structure 2024. 7. 14. [Java] HashMap 이해하기 MapMap 자료구조의 특징은 키(Key)와 값(Value)이다.키를 통하여 값에 접근할 수 있는 구조이다. List나 배열은 인덱스로 접근한다. 인덱스는 단순히 순서만 나타낸다. 그러나 Map의 키는 개발자가 의미를 부여할 수 있다. HashMapJAVA에서 Map은 인터페이스이며, Map의 구현체 중 하나가 HashMap 데이터를 저장하려면 자료구조가 필요하다. HashMap은 자료구조로 배열(array)을 사용한다. 배열은 '인덱스'를 통해 바로 접근이 가능하다는 장점이 있다. HashMap은 해싱(Hashing)을 통해 Map 데이터가 저장 될 위치의 인덱스를 구한다. 그래서 이름이 HashMap이다. key(X)를 해싱함수(function)에 넣어 인덱스(Y)를 산출한 후, 해당 인덱스에 Map.. 카테고리 없음 2024. 7. 14. 외부 API 통신 이후 JSESSIONID 가 변경되어 발생한 문제 운영상의 자바 클래스 파일을 교체한 이후에 예상치 못한 에러가 발생했다.회원가입 페이지에서 이메일 중복체크 버튼을 누르면 aJax 통신을 통해 중복여부 확인 이후 alert창을 띄워주게 되어 있는데이 기능이 외부 API인 주소검색 API 통신을 하고 난 이후에는 정상적으로 동작하지 않았다. 게다가 결제 기능까지 동작하지 않았다. 개발자도구를 열어 이메일 중복체크 버튼을 눌러보았는데 누를때마다 JSON.parse할 때 JSON이 아닌 HTML 파일을 줬기 때문에 오류가 발생한 것이라는 에러 메세지를 볼 수 있었다. 개발자 도구의 application의 쿠키를 열어 보았고 JSESSIONID가 외부 API 통신 (주소검색 API) 이후 변경된 것을 확인할 수 있었고 바뀐 JSESSIONID로 aJax통신을 .. spring 2024. 6. 23. [Network] 만약 DNS가 요청한 도메인 정보를 가지고 있지 않다면? 📒 기본적인 DNS(Domain Name System) 동작브라우저에 URL을 입력하면 URL에 포함된 도메인으로 부터 IP 주소를 알아야 한다. 브라우저가 OS에 패킷 전송을 의뢰할 때는 URL이 아니라 IP 주소를 전달해야 하기 때문인데, IP 주소를 알아내기 위해 브라우저는 가장 가까운 DNS 서버에게 IP를 조회한다. DNS 서버는 마치 맵처럼 자신이 관리하는 {key : 도메인명, value : IP 주소} 대응표를 조사하여 정보가 있을 경우 IP 주소를 응답한다. 📒 만약 DNS가 해당 정보를 가지고 있지 않다면 어떻게 동작할까?인터넷에는 엄청난 수의 서버가 있으므로 모든 도메인의 IP를 한 대의 DNS 서버에 등록하는 것은 불가능하다.따라서 문의한 도메인이 DNS 서버에 등록되지 않은 경.. infra & network 2024. 6. 9. [Network] 웹 브라우저에 URL을 입력한다면 일어나는 일 📝 웹 브라우저에 URL을 입력한다면 일어나는 일1. 사용자가 입력한 URL을 파싱한다.입력한 URL에서 프로토콜, 호스트명, 포트번호, 경로, 쿼리 스트링, 프레그먼트 등을 파싱한다.브라우저에서는 HSTS 목록 조회를 통해 해당 요청을 HTTPS로 보낼지 판단해 HSTS 목록에 해당 URL이 존재한다면 명시적으로 HTTP를 통해 요청한다 해도 브라우저가 이를 HTTPS로 요청하게 된다. 📘 HSTSHSTS(HTTP Strict transport security) : HTTP를 허용하지 않고 HTTPS를 사용하는 연결만을 허용하게 하는 기능만약 HTTP로 요청이 왔다면 HTTP 응답 헤더에 "Strict Transport Security" 필드를 포함하여 응답하고 이를 확인한 브라우저는 해당 서버에 .. infra & network 2024. 5. 19. [SQL] 서브쿼리란? 서브쿼리 종류 - 스칼라, 인라인 뷰, 중첩 📝 서브쿼리란? 서브쿼리는 메인쿼리에 종속해있으며 메인쿼리 없이는 단독적으로 실행될 수 없다.서브쿼리는 메인쿼리의 칼럼을 사용할 수 있지만, 반대로 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다. (자식클래스는 부모클래스의 메서드를 사용할 수 있지만 부모클래스는 자식클래스의 메서드를 사용할 수 없는 자바의 상속관계와 비슷)서브쿼리의 종류는 크게 3가지 (스칼라, 인라인 뷰, 중첩)로 어느 위치에서 사용하느냐에 따라 분류됨.종류설명스칼라 서브쿼리(Scalar Suquery)SELECT 절에 위치하며 한 레코드당 정확히 하나의 값을 반환하는 서브쿼리 (단일행, 단일칼럼을 반환)인라인 뷰(Inline View)FROM 절에 위치하는 서브쿼리로 결과는 반드시 하나의 테이블로 리턴되어야 한다.중첩 서브쿼리(Nes.. DB & SQL 2024. 5. 19. [DB] MySQL testdb 생성 GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, used to test your applications and databaseA sample MySQL database with an integrated test suite, used to test your applications and database servers - datacharmer/test_dbgithub.com DB & SQL 2024. 5. 18. 이전 1 2 3 4 다음