2021-10-15 세미나

MIN.DI·2021년 10월 15일
0

TIL

목록 보기
15/15
  • 객체, 오브젝트의 차이? 둘은 같은 것인가?

  • 로드존슨은 왜 스프링을 창시했나?
    스프링은 2002년, 개발자 로드 존슨(Rod Johnson)의 책 'J2EE 설계와 개발' 에서 시작되었습니다.
    로드 존슨은 EJB에 의존적이었던 개발 환경이 못마땅했고,
    EJB에 의존하지 않은 효율적인 코드 30000줄 이상을 책을 통해 제시했는데
    이 코드를 읽은 개발자 유겐 휠러와 얀 카로프는 로드 존슨에게 해당 코드를 이용한 오픈 소스 프로젝트를 제안하였습니다. 이렇게 2002년 로드 존슨의 책에서 시작되어 2004년에 탄생한 것이 Spring Framework입니다.
    Spring은 EJB에 의존적이었던 겨울이 끝나고 봄(Spring)이 왔다는 의미에서 붙여졌습니다.
    https://developer-rooney.tistory.com/143

  • 제임스 고슬링 2017년 AWS입사.
    5월 AWS 서밋 온라인 코리아 기조연설에서 자바 보안 기능 강화돼 IoT 부분 활용 확대될 것이라고 함.

  • 퀀트?
    퀀트(quant) = 계량적인(quanitative) + 분석가(analyst)의 합성어.
    느낌과 감정에 의한 투자가 아닌 수학, 통계지식 이용해 투자법칙 찾아내고
    투자 모델을 만들거나, 금융시장의 변화를 예측하는 사람.
    컴퓨터로 적합한 프로그램을 구축하고, 이를 토대로 투자.
    대표적으로 '제임스 사이먼스' >> 세계 최고 연봉을 받아서 유명해짐. (원래 수학교수였음)

  • 함수형 프로그래밍?
    자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변데이터를 멀리하는 프로그래밍 패러다임.
    변경 가능한 상태를 불변상태(immutab)로 만들어 sideEffect를 없애자.
    함수의 응용을 강조.
    side effect? 어떤 함수의 동작으로 인해 프로그램 내의 상태가 변경되는 것.
    함수가 attribution을 받아서 그에 해당하는 결과값을 return해주는 본연의 기능에만 집중하고,
    결코 외부에 있는 요인들을 참조해서 그것들을 변화시키거나, 함수의 동작들을 결정짓지 말 것.
    코드를 직관적으로 인지하기 어렵다.
    input과 output이 있고, 같은 input에 대해서는 항상 같은 output을 낸다.
    외부 환경으로부터 독립적이다.
    https://wogh8732.tistory.com/213
    https://medium.com/@lazysoul/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80-d881230f2a5e

  • 스칼라
    객체지향 프로그래밍 언어와 함수형 프로그래밍 요소가 결합된 다중 패러다임 프로그래밍 언어.
    Scalable Language(확장 가능한 언어) 에서 유래.
    기존 Java가 너무 복잡하다는 단점 극복 위해 개발.(Martin Odersky)
    간결한 소스 코드를 사용하여 Java에서 구현할 수 있는 대부분의 기능을 구현할 수 있다.
    Scala는 자바 바이트코드를 사용하기 때문에 자바 가상 머신(JVM)에서 실행할 수 있고,
    Java 언어와 호환되어 대부분의 자바 API를 그대로 사용할 수 있다.

  • F#
    함수형 프로그래밍 패러다임을 처음부터 염두에 두고 설계.
    F#은 복잡한 문제들을 간단한 코드를 작성해서 해결하기 위한 강한 타입(strongly-typed)의 함수형 우선(functional-first) 프로그래밍 언어이다. ‘함수형 우선’ 이란 말에서 알 수 있듯이 F#은 함수형 프로그래밍을 지원하면서 기존의 객체 지향과 절차 프로그래밍 또한 지원
    F#은 변수 대신 let 바인딩 이라고 부르는 개념을 통해 expression에 이름을 붙여서 사용합니다. let foo = 1 도 let 바인딩의 한 예시입니다.
    F#은 immutable collection도 가지고 있습니다. List나 Map과 같은 타입들이 대표적입니다. 재귀 함수나 State 같은 타입과 함께 사용하면 mutable 없이 프로그래밍하는 것이 편해집니다.
    그렇다고 mutable이 없는 것은 아닙니다. 필요한 상황에서는 얼마든 사용할 수 있습니다.
    https://velog.io/@krlrhkstk/%EA%B0%80%EB%B3%8D%EA%B2%8C-Fsharp-%ED%9B%91%EC%96%B4%EB%B3%B4%EA%B8%B0

  • 폴리글랏(polyglot)
    poly = '많다'. 즉, 패러다임을 달리하는 여러 개발 언어를 자유롭게 구사하는 것.

  • 온프레미스(on-premjise)
    소프트웨어 등 솔루션을 클라우드같은 원격 환경이 아닌,
    자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식.
    기업의 비즈니스 정보를 보안성 높게 관리할 수 있으나, 시스템 구축시 많은 시간과 비용이 들어감.
    그래서 보안성 높은 데이터는 온프레미스 환경, 보안성 낮은 데이터는 클라우드 환경 사용하는 하이브리드 인프라가 등장함.

  • 마이크로서비스

    소프트웨어가 소규모의 독립적인 서비스로 구성되어있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근방식.
    서비스는 독립적인 소규모 팀에서 보유.
    -> 왜?
    1.애플리케이션의 확장 용이함(유연한 확장성).
    2.개발 속도 앞당김.
    3.손쉬운 배포(지속적 통합 및 지속적 전달 통해, 새로운 아이디어 손쉽게 시험하고 문제 발생시 간단히 롤백.
    저렴한 실패비용 덕분에 실험 진행할 수 있어, 쉽게 코드 수정하고 기능 출시 앞당김)
    4.기술적 자유(각 팀별로 적합한 도구 선택)
    5.재사용 가능한 코드(소규모 모듈로 분할해서,하나의 기능을 여러 용도로 사용)
    6.복원성(서비스가 독립적이므로, 실패에 대한 저항성이 증가함. 하나의 단일요소 실패해도 애플리케이션 전체에는 영향 없음)
    모놀리식 아키텍처 : 모든 프로세스가 긴밀하게 결합, 단일서비스로 실행.
    따라서 한 프로세스에 대한 수요 급증하면 해당 아키텍처 전체를 확장해야 함.
    마이크로서비스 아키텍처는 각 서비스가 독립적으로 실행되므로, 각 서비스 업데이트 및 배포, 확장이 용이함.
    단, 관리 포인트가 늘어나고, 이를 통합해서 모니터링 및 운영하는것이 어렵다는 단점.
    PaaS(Platform as a Service), Docker같은 컨테이너가 필요하다
    https://aws.amazon.com/ko/microservices/

  • 접근제한자 정리
    https://velog.io/@mindddi/2021-06-18메소드-오버로딩-클래스

  • 예외처리
    throws를 아무도 처리하지 않으면? 최종적으로 JVM에서 처리. 예외 내용을 콘솔에 찍는다.
    throw는 사용자정의 예외. 강제로 예외를 발생시킴.

  • 바인딩 : 프로그램에 사용된 구성 요소의 실제 값 또는 프로퍼티를 결정짓는 행위. 하나를 다른 것으로 매핑시키는 것.

  • Class.forName()
    OracleDriver가 로드될 때, static필드가 실행되면서 DriverManager.registerDriver(defaultDriver)
    스스로를 DriverManager에 등록함. (해당 드라이버 안에 구현되어있음).
    자바에서는 어떤 DB든 동일하게 사용하기 위해 Connection과 Driver 인터페이스를 제공하고,
    각 벤더가 이를 implements하여 드라이버와 커넥션을 구현함.

  • DriverManager
    드라이버를 등록하고, 그 드라이버의 커넥션을 리턴해주는 클래스.
    각 벤더에서 구현한 드라이버, 커넥션을 이 DriverManager를 통해 사용함.

  • ResultSet
    쿼리의 처리 결과를 임시로 저장하는 객체. 가상의 테이블에 저장한다.(db로 부터 받은 임시공간)
    한번에 모든 결과를 가져올 수 없으므로 커서의 개념을 가지고 있음.
    최초의 커서 위치는 before the first row
    0번은 보통 그 컬럼에 대한 정보(컬럼명) 등을 가리킴.
    한 행씩 출력. rs.next()통해 있으면 다음 행 출력.

컴퓨터공학 지식, Fundement에 집중할 것!!!

profile
내가 보려고 쓰는 블로그

0개의 댓글