학습 기록 26

DispatcherServelet

중앙에 위치한 DispatcherServelet이 모든 연결을 담당 브라우저로부터 요청이 들어오면 HandleMapping이라는 빈 객체에게 컨트롤러 검색을 요청한다(경로를 이용해서) @Controller, Controller 인터페이스, HttpRequestHandler 인터페이스를 동일한 방식으로 처리하기위해 중간에 HandlerAdapter를 사용한다. Mapping에게 찾고, Adapter가 실행 - Adapter는 컨트롤러의 메서드를 호출해서 요청을 처리, 결과를 DispatcherServelet에 리턴한다.이 때 M&V라는 객체로 반환되어  리턴된다. M&V로 받았으면 DS은 ViewResolver에게 위임, View 객체를 찾거나 생성해서 리턴한다. - 클라이언트 요청을 처리하기 위해 사용되..

JDBC Template / 트랜잭션

1.기존 JDBC의 보일러플레이트 코드템플릿 메서드 + 전략 패턴 -> JDBC template 2.디펜던시 추가spring-jdbc : spring-tx 포함tomcat-jdbc : 커넥션 풀mysql-connecter-java *톰캣, 히카리CP도 DB 커넥션 풀 제공 3. ddl.sql 내부유저 / create DB / 권한 / 테이블 만들기 4. 워크벤치에서 시험용 데이터 생성 - 4.MemberDao가 JDBC template을 가진다.JDBC template은 DataSource를 인자로 생성하는데, DS는 AppCtx에서 D/I해준다 5. AppCtx 2개 빈 추가- 톰캣 DS 생성 후 set으로 mysql 연결정보 + 풀 정보 셋업- memberDao에 DS 조립 - 7. MemberDao..

AOP복습

1.spring-context 기본 모듈에 AOP 기능은 있으나,어노테이션 추가기능 사용 위해 aspectjweaver 디펜던시 추가 2.delegate 패턴- interface Calculator- class implements Calculater : field + 세터 + @Override(앞뒤로 추가기능) - 3.프록시 : 실행은 다른 객체에 위임하고 부가 기능을 제공하는 객체 4.대상 객체 : 실제 핵심 기능을 실행하는 객체 * 프록시보다 데코레이터 - 5.AOP (관점보다는 기능으로 해석)핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용하는 것 6.3가지 시점AspectJ : 컴파일 시점AspectJ : 클래스 로딩 시점 : 바이트코드에 삽입스프링 제공 : 런타임에 프록시 객체 생성  7...

빈 라이프사이클

1. ctx가 생성되고 소멸될때 빈도 딸려간다. 2. 컨테이너 생성시 -> "빈 생성 / 의존 설정 / 초기화 "  3. 컨테이너 소멸시 -> "빈 소멸" - 4. 빈 초기화 및 소멸시 지정 메서드 호출 5. 인터페이스 2가지 및 그에 딸린 추상메서드  6. InitializingBean -> afterPropertiesSet() / DisposableBean -> destory() 7. 사용할 클래스에서 두개 implement후 8. 사용 기능 앞뒤로 메서드 커스텀해주기 9. ctx 설정클래스는 별도로 건드리지 않아도 된다. - 10. 메인에서ctx 생성 -> ctx.getBean()얻기 -> Bean 메소드 사용 -> ctx.close();설정된 커스텀 메서드 실행된다 - 11. 외부에서 제공받은 클..

스프링 DI 복습

1. 어셈블러 개념 : Ctx가 Bean을 자동으로 조립해준다/ 2. 사용하는 메인단 / AppCtx 설정클래스 / 빈이 되는 개별 기능 클래스들 3.@Config가 붙은AppCtx 클래스에서 조립 main에서 Ctx 생성해서 사용 4. 설정 파일 역시 클래스로 관리된다. 5. 일반 설정파일에는 memberDao  6. 사용하는 cngpwclass에서 private MemberDao memberDao는 항상 존재 7. ctx파일에서 setMemberDao를 안넣어줘도 사용클래스에서 @Autowired 넣어도 가능 8. Autowired는 사용클래스 내의 setter 메서드에 넣어도 됨 9. 결과적으로 ctx 설정클래스에 생성자든 세터든 명시 필요 x 10. 설정 클래스를 그대로 사용하지 않고 복사해서 사..

자바 기본

💡 Java의 특징을 설명해주세요.1 Java는 객체지향 프로그래밍 언어입니다.  기본 자료형을 제외한 모든 요소들이 객체로 표현되고,  객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다.자바의 장점 JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다. GabageCollector를 통한 자동적인 메모리 관리가 가능하다.   -   JV(M의) - GC 장첨자바의 단점 느리고, 제약이 많습니다  JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다. 다중 상속이나 타입에 엄격하며, 제약이 많다.💡 JVM의 역할에 대해 설명해주세요. Java Byte Code를 OS에 맞게 해석 해주는 역할을 하고  가비지컬렉션을 통해 자동적인 메모리 관리를 해줍니다. JVM..

CS : HTTP 1 -> 3 / HTTPS / SSL/TLS

HTTP 1.0?기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었습니다. 이는 RTT 증가를 불러오게 되었습니다 RTT 증가 이유?서버로부터 파일을 가져올 때마다 TCP의 3-way 핸드쉐이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점RTT? Round Trip Time패킷 왕복 시간을 말합니다. 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간RTT의 해결 방법?이미지 스플리팅 코드 압축 이미지 Base64 인코딩이미지 스플리팅?많은 이미지를 다운로드받게 되면 과부하가 걸리기 때문에 많은 이미지가 합쳐 있는 하나의 이미지를 다운받고,   background-img의 position을 이용하여 이미지를 표현하는 방법코드 압축?개행 문자, 빈 칸을 없애서 코드의 크기를 ..

CS : 네트워크 기기 / IP / NAS

네트워크 기기의 처리 범위?계층별로 처리 범위를 나눕니다.  상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가합니다.  예를 들어 L7 스위치는 애플리케이션 계층을 처리한느 기기로, 그 밑 모든 계층의 프로토콜을 처리할 수 있으나 AP는 물리 계층밖에 처리하지 못합니다. 계층별 대표 기기를 말하라애플리케이션 계층 : L7 스위치 인터넷 계층 : 라우터, L3 스위치 데이터 링크 계층 : L2위치, 브리지 물리 계층 : NIC, 리피터, AP가 있습니다.스위치?여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비입니다. L7 스위치?어플리케이션 계층의 대표 기기입니다.  로드밸런서라고 하며 서버의 부하를 분산시..

CS : PDU / 네트워크 프로토콜 / 캡슐화 등

PDU란?네트워크의 어떠한 계층에서 계층으로 데이터가 전달될떄 한 덩어리의 데이터 단위를 프로토콜 데이터 유닛이라고 합니다 Protocol Data Unit 의 구성 제어 관련 정보들이 포함된 헤더 데이터를 의미하는 페이로드로 구성되어 있습니다 PDU의 명칭 계층마다 부르는 명칭이 다릅니다  애플리케이션 계층에서는 메세지 전송 계층에서 TCP는 세그먼트, UDP는 데이터그램 인터넷 계층에서는 패킷 링크 : 데이터 링크 계층에서는 프레임. 물리 계층에서는 비트입니다.  그래서 HTTP 헤더를 까보면 모두 문자열입니다.PDU 효율?가장 아래 계층인 비트로 송수신하는것이 모든 PDU 중 가장 빠르고 효율성이 높으나 APPLICATION 계층에서는 string을 기반으로 송수신을 합니다.  헤더에 authori..

CS : 네트워크 기본

OSI 7계층과 TCP/IP 4계층의 차이점은 무엇인가요? OSI 계층은 애플리케이션 계층을 세 개로 쪼개고 링크 계층을 데이터 링크 계층 물리 계층으로 나눠서 설명하는 것이 다르며  인터넷 계층을 네트워크 계층으로 부른다는 점이 다릅니다.  O... 많네 -> 7 애셋 링 -> 데링 물 인네HTTP 2와 1의 차이점? 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며,  멀티플렉싱,  헤더 압축,  서버 푸시,  요청의 우선순위 처리 를 지원하는 프로토콜입니다.멀티플렉싱?HTTP2의 장점으로, 여러 개의 스트림을 사용하여 송수신한다는 것입니다/  이를 통해 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작할 수 있습니다.서버 푸시?HTTP 1..