분류 전체보기60 [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. [DB] 터미널 명령어를 이용한 기본적인 MySQL 사용방법과 zsh 환경변수 설정 - macOS 이전 포스트에서 MySQL을 설치하고 접속해보았다. [DB] MySQL 설치와 DB 생성, 연결 과정 - macOS* MySQL 다운로드 MySQL :: Download MySQL Community ServerSelect Version: 8.4.0 LTS 8.0.37 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Lidev-jk93.tistory.com 이후 기본적인 MySQL 터미널명령어를 학습하고자 했고 먼저 root 계정으로 접속하려 했다.환경변수가 적절하게 설정되어 .. DB & SQL 2024. 5. 18. [DB] MySQL 설치와 DB 생성, 연결 과정 - macOS * MySQL 다운로드 MySQL :: Download MySQL Community ServerSelect Version: 8.4.0 LTS 8.0.37 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Sedev.mysql.com 링크를 타고 들어가보면어떤 버전을 다운받아야 할지 고민이 될 수 있다. Select Version은 현재 8.0.37 과 8.4.0 LTS.. DB & SQL 2024. 5. 18. [Java] Reflection Java Reflection이란? 리플렉션은 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API이며, 컴파일 시간이 아닌 실행 시간(런타임)에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법이다. JVM 힙 영역에 로드된 Class(대문자 'C') 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메소드를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API 여기서 로드된 클래스라고 함은, JVM의 클래스 로더에서 클래스 파일에 대한 로딩을 완료한 후, 해당 클래스의 정보를 담은 Class 타입의 객체를 생성하여 메모리의 힙 영역에 저장해 둔 것을 의미한다. JVM 메모리 구조 .. Java 2024. 2. 21. Generics (Java) 강의를 듣던중 지네릭스 선언 방식, 사용방식이 기억이 나지 않았습니다. 지네릭스에 관한 전반적인 내용을 블로그에 정리해보겠습니다. // 강의 코드 @Slf4j @RequiredArgsConstructor public class TraceTemplate { private final LogTrace trace; public T execute(String message, TraceCallback callback) { TraceStatus status = null; try { status = trace.begin(message); // 로직 호출 T result = callback.call(); trace.end(status); return result; } catch (Exception e) { trace.e.. Java 2024. 2. 12. JVM 메모리 구조 (JAVA) JVM과 JVM 메모리 구조 JVM 메모리 구조를 알아야 하는 이유 대규모 프로젝트를 Java로 개발할 때, 메모리 관리에 따라 프로그램 성능이 월등히 차이날 수 있기 때문입니다. 이것이 어떤 상황을 의미하는지, 메모리 구조를 잘 알고 있다면 어떻게 프로그램 성능 개선에 활용할 수 있는지 아직 알 수 없지만 자바 개발자라면 기본적으로 알고 있어야 하는 덕목인 것 같아서 정리하는 시간을 가져봅니다. 우선 JVM이 무엇인지 알아보겠습니다. JVM이란? JVM은 Java Virtual Machine, 자바 가상 머신 자바와 운영체제사이에서 중계자 역할을 합니다. 그래서 자바가 운영체제 종류에 영향받지 않고 돌아갈 수 있습니다. 메모리 관리를 자동으로 해주는 가비지 컬렉터(GC)의 기능도 있습니다. 이 외의 기.. Java 2024. 2. 8. Statement 대신 PreparedStatement를 사용해야 하는 이유 1) 쿼리의 실행과정 쿼리의 실행과정은 위 그림과 같다. 1) Parsing & Normalization Phase - Query 문법 확인, Semantic check(?) 및 쿼리에 있는 테이블, 컬럼 존재여부 확인 2) Compilation Phase - 쿼리를 machine이 이해할 수 있는 형식으로 컴파일 3) Query Optimization Phase - 쿼리를 실행할 수 있는 방법들을 체크하고, 최적의 쿼리 실행 방법을 선택 4) Cache - 3) 단계의 최적의 방법을 저장 5) Execution Phase - 쿼리 실행 2) Statement, PreparedStatement의 동작 방식의 차이점 1️⃣ 캐시 사용 유무 // [Statement] Connection conn = Driv.. DB & SQL 2024. 1. 30. DB connection 에서 URL이 의미하는 것 김영한님의 스프링 DB 1편을 듣던 중 public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/test"; public static final String USERNAME = "sa"; public static final String PASSWORD = ""; } h2 database에 연결하기 위해 위와 같이 ConnectionConst를 만들고 있다. URL의 의미를 알기 위해 chatGPT에게 질문했다. jdbc: : 모든 JDBC 연결 URL에 공통되며, 이 문자열이 JDBC 연결을 나타낸다는 것을 나타낸다. h2: : 사용되는 DB driver 유형을 가르킨다. (DB dr.. DB & SQL 2024. 1. 10. BasicErrorController에서 @RequestMapping("${server.error.path:${error.path:/error}}")의 의미 [`김영한의 스프링 MVC 2` : `API 예외처리` 강의를 듣던 중 생긴 궁금증] chatGPT 에게 질문해봤다. Question : @RequestMapping("${server.error.path:${error.path:/error}}") what mean? Answer : In the context of a Java web application using the Spring Framework, the @RequestMapping annotation is used to map HTTP requests to a specific method or controller in your application. Let's break down the expression you provided: ```java @.. spring 2024. 1. 8. 이전 1 2 3 4 5 다음