ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 35th day 2021.11.26
    TIL(Today I Learned) 2021. 11. 26. 20:31

    서블릿 + 자바 코드

    • 옛날에 쓰던 방식
    • 자바와 서블릿만으로 HTML을 만들고 동적인 웹브라우저를 구현할 수 있다.
      • 하지만 자바로 HTML을 만드는것은 아주 번거로운 일이다.
      • 따라서, 템플릿 엔진이 등장했다. 템플릿 엔진을 이용하면 HTML에서 필요한 부분만 동적으로 변경할 수 있다.
        • 템플릿 엔진에는 JSP, Thymeleaf, Freemarker, Velocity 등이 있다.
          • 참고) JSP는 사장되어가고, Thymeleaf를 주로 사용하는 추세이다.

    서블릿 + JSP

    • 서블릿 + 자바 방식은 자바로 HTML을 짜는것이 중점이었다면 서블릿 + JSP는 HTML에서 자바 코드를 삽입해준다는 느낌이다.
    • 때문에 HTML을 작성하는데 있어서 한결 편리해졌다.
    • 하지만, JSP가 너무 많은 역할을 맡고 있기 때문에 JSP 한 파일에 너무 많은 로직이 삽입될 가능성이 크다
      • 따라서 유지보수가 더 어려워질 가능성이 높다.
      • 해결방법) MVC 등장

    궁금한점

    • 기본 생성자 : 만약 선언이 안되어있다면 컴파일러에서 자동으로 생성해줌.
      • 객체 생성시 자동으로 생성되는 메서드
    • 매개변수가 있는 생성자 : 객체 값을 초기화 시켜주기 위함.
      • 매개변수가 있는 생성자 생성시 기본생성자가 자동 생성이 안되므로 선언해주는것이 좋다.
    • HashMap과 ConcurrentHashMap의 차이점
      • lock의 방식!
        • HashMap은 전체적으로 lock을 걸어서 참조할 때마다(쓰레드 참조) 전체 lock에 손을 대야한다.
        • 반면, ConcurrentHashMap은 세그먼트 단위로 나눠서 lock을 분산시키고, 해당하는 세그먼트에 관해서만 lock을 관리한다.
          • 세그먼트 단위는 사용자가 직접 수정할 수 있다.(concurrencLevel)
          • 멀티 쓰레드에 유용
    • AtomicLong이란?
      • 멀티 쓰레드 환경에서 동기화 문제를 별도의 synchronized(동기화) 키워드 없이 해결하기 위해 고안된 방법
        synchronized는 특정 쓰레드가 블락 전체를 lock하기 때문에 다른 쓰레드가 아무 작업을 못하고 기다리는 상황이 되어 낭비가 심하다.
        (HashMap방식) 그래서 NonBlocking하면서 동기화 문제를 해결하기 위한 방법이 Atomic이다.
    • 싱글톤 패턴이란?
      • 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 인스턴스가 2개 이상 생성하지 못하도록 막아야한다.
        • private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다.
      • 싱글톤 패턴을 이용해서 객체의 재사용으로 인한 메모리 낭비를 방지할 수 있다. 하지만
         * 다른 객체간의 결합도가 높아진다는 문제점이 있으므로 무상태(Stateless)로 성계해야 한다.
          * 특정 클라이언트에 의존적인 필드가 있으면 안된다.
          * 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다!
          * 가급적 읽기만 가능해야한다.
          * 필드 대신에 자바에서 공유되지 않는, 지역변수, 파라미터, ThreadLocal 등을 사용해야한다.

    'TIL(Today I Learned)' 카테고리의 다른 글

    TIL 37th day(2021.11.27)  (0) 2021.11.27
    TIL 36th day (2021.11.27)  (0) 2021.11.27
    TIL 33th day(2021.11.23)  (0) 2021.11.23
    TIL 32th day(2021.11.22)  (0) 2021.11.22
    TIL 31th day (2021.11.21)  (0) 2021.11.21
Designed by Tistory.