반응형

데이터 PM  직군 채용이 거의 없었으나.. 
타 기업에서 채용이 많아져 JD를 모아두고 어떤 역량이 필요한지
앞으로의 커리어를 어떻게 가져갈지를 생각해보기 위한 게시글입니다. 

 

 

데이터 PM의 RNR은 경우 큰 틀로 보자면 아래와 같을 것 같고

  1. 데이터 수집/가공/제공의 전반에 걸친 로드맵 설계 및 관리
  2. 데이터 관련 요구사항을 통해 커뮤, 분석, 정리하여 수집 시스템 및 서비스를 설계 ,개발, 연동, 트러블 슈팅

실제 업무를 진행하였을 때 있어야할 역량 및 우대사항은

  1. PM  
    • 프로젝트 리드 경험
    • 타 부서와 커뮤니케이션 경험 
    • 데이터 통한 지표 및 서비스 설계 경험
  2. Data
    1. SQL
    2. python (or R)
    3. bi (태블로 및 대시보드) 
    4. 로그 데이터 활용 경험 
    5. 개발 경험

하기에 데이터 PM 직군 공고를 모아두었습니다.

토스

Product Manager (Data)

토스 소개

토스(비바리퍼블리카)는 2015년 2월 공인인증서 없이 쉽고 빠르게 송금할 수 있는 간편 송금 서비스 ‘토스’를 선보인 이래, 보험과 결제, 증권, 은행 부문에서 여러 계열사를 출범시키며 국내 대표 핀테크 기업으로 성장했습니다. 대한민국 금융 혁신을 선도하고 있는 토스에는 각 분야 최고 수준의 역량을 갖춘 인재들이 모여 자율과 책임의 원칙 아래 상호 신뢰의 문화에서 일하고 있습니다.

어렵고 복잡한 금융 경험을 혁신해 가슴 뛰는 변화를 함께 만들어 나가며, 최고의 동료들과 함께 성장할 수 있는 곳에서 일하고 싶지 않으신가요? 대한민국 금융 혁신을 위해 새로운 도전을 함께 할 멋진 동료를 기다립니다.

합류하시면 함께 할 업무입니다

  • 데이터/AI Product Manager는 토스의 데이터/AI팀과 함께 토스 서비스의 사용자와 혹은 주변 동료인 사일로와 함께하는 플랫폼 및 머신러닝 서비스를 설계 및 운영하고 정책을 결정하는 일을 합니다.
  • 데이터를 이해하고, 머신러닝(데이터) 사이언티스트들과 협업하여 신규 서비스 및 기술을 개발하고 론칭하는 일을 하게 됩니다.고객 지향적인 서비스 정책을 설계하고 운영함으로서 지속 가능한 제품 개발을 지원합니다.
  • 급변하는 시장과 비즈니스 관계 속에서 정성/정량적으로 서비스를 진단하고 새로운 기회를 발굴합니다.
  • 이해 관계자와 협업을 통해 빠르고 정확하게 문제를 파악하고 해결합니다.
  • 서비스 운영 환경을 분석하고 개선하여 불필요한 리소스를 효율화 할수 있어야 합니다.
  • 운영 프로세스를 고도화하고 이를 자동화 할 수 있도록 지원합니다.

이런 경험을 가진 분을 찾습니다

  • IT 서비스를 운영해본 경험이 있으셔야 합니다.
  • 기술을 활용한 서비스를 운영 및 설계한 경험이 필요합니다.
  • 문제의 근본 원인을 찾고 규명을 할 수 있으며, 솔루션을 제시할 수 있는 분을 찾습니다.
  • 운영업무에 있어서 자기 주도적으로 개선 포인트를 도출할 수 있는 분과 함께 일하고 싶습니다.
  • 다양한 이해 관계자들과 원활한 커뮤니케이션이 가능한 분과 함께 일하고 싶습니다.

이런 경험이 있다면 더 좋습니다

  • 프로젝트 PM 역할을 3년 이상 경험하신 분이면 좋습니다.
  • AI/Data, 모바일 서비스 및 핀테크 관련 서비스 운영 경험이 있으신 분이면 좋습니다.

토스로의 합류 여정

  • 서류 접수 > 직무 인터뷰 > 문화적합성 인터뷰 > 최종 합격

 

 

우아한 형제들

[업무내용] 

- 데이터 분석을 통해 인사이트를 도출하고, 프로덕트의 중장기적인 방향성을 수립하는 일 

- 프로덕트의 개선을 위한 가설을 수립하고, 실험/평가를 통해 가설을 검증하는 일 
- 운영 상황에 대한 품질수준 목표를 수립하고 모니터링하여
  개선이 필요하거나 풀어야할 문제들을 발굴하고 과제화 하는 일
- 프로덕트실과 사업부서의 협업 과정에서 의견을 조율하고, 다양한 관점을 프로덕트에 담아내는 일


[지원자격]

- 3~8년의 데이터 분석가 경력이 있는 분 
- 데이터 분석을 통해 의미있는 인사이트를 도출해 본 경험이 있는 분 

- SQL을 활용한 데이터 추출 및 R, Excel 등을 활용한 데이터 분석이 능숙한 분
- 프로젝트를 주도적으로 수행해 성과를 낸 경험이 있는 분


[우대사항]

- Tableau, Redash 등의 툴을 활용해 대시보드를 구현해본 경험이 있는 분

- 숫자 기반의 논리적 추론 결과를 바탕으로 사업과 기술 측면에서 효과적으로 소통할 수 있는 분
- 다양한 부서와 협업하며, 이해와 존중을 바탕으로 유연하게 커뮤니케이션이 가능한 분
- 일의 처리과정을 효율화하고, 체계적인 프로세스를 설계해 본 경험이 있는 분
- 업무적 성장을 위해 지속적인 노력을 기울이며, 팀과 함께 성장하고 싶은 분

 

 

원티드

주요업무

• 데이터 수집/가공/제공의 전반에 걸친 로드맵 설계 및 관리
• 데이터 관련 요구사항 커뮤니케이션/분석/정리 및 제품/서비스 설계/연동/트러블슈팅
• 수집되는 데이터의 규격화 및 정합성 관리

 

자격요건

• 원티드의 기업문화, Wanted Way 와 잘 맞는 분 (https://bit.ly/3kT1BFQ)
• 데이터 분석가/데이터 엔지니어/서비스PM 등의 경력 2년 이상
• 웹/앱 제품 사용 중에 발생하는 유저행동 로그를 기획, 생성, 정합성 검증하여 분석에 활용하거나, 분석가에게 제공하는 업무 1년 이상
• Google Tag Manager등을 활용하여 웹/앱 이벤트를 다수 생성하고, 발생한 로그를 분석툴에서 뿐만 아니라 data warehouse에서 조회한 경험
• 현업에서의 데이터 지표 분석 툴 사용 경험 (Google Analytics, Google Tag Manager, Amplitude, Google Optimize, Appsflyer, Braze, Tableu 등)
• 다수의 데이터 소스에서 수집되는 데이터를 join 가능하도록 가공하거나, 플랫폼을 도입한 경험
• SQL 활용 능력 중급 이상
• 개발자 및 business side와의 커뮤니케이션에 문제가 없으신 분

 

 

 

카카오

데이터 프로덕트 PM은 이전에 없던 새로운 역할입니다. 서비스 PM/서비스 기획자/데이터 분석가/그로스 해커 등으로 알려진 역할을 데이터 프로덕트 개발 단계에 따라 수행하게 됩니다.

  • 데이터 분석가로서 데이터 탐색, 코어 알고리즘 구현, 성능 평가 및 사후 분석을 수행
  • 서비스 기획자로서 데이터 프로덕트의 컨셉과 목적, 사용자 가치를 정의하고 주요 기능을 설계
  • 프로젝트 매니저로서 프로덕트 개발에 필요한 자원과 일정을 관리

 

위의 업무는 개인의 경험과 역량에 따라 1인 혹은 소규모 팀으로 수행하게 되며, 제품 개발을 위해 디자이너/개발자/QA 등 다양한 전문가들과 소통하고 협업하게 됩니다.


지원자격

#필수사항

  • 데이터 분석가/퍼포먼스 마케터/서비스 PM 등의 직군에서 최소 1년 이상 업무 경력 보유자
  • 로그 수준의 데이터를 다루는 업무 최소 1년 이상 경험자 (데이터 분석가/데이터 엔지니어/서비스 개발자/통계학자 등 세부 분야는 무관)

 

#우대사항

  • 통계/알고리즘/위상수학/네트워크 이론 등 숫자를 다루는 학술 연구 경험 보유자
  • 신규 서비스 컨셉 도출부터 런칭까지 전체 프로세스 경험 보유자
  • Performance marketing/product optimization 등 실험 기반 업무 2년 이상 경험 보유자
  • 다양한 형태의 raw data를 다뤄본 경험 보유자

 

조이시티

조이시티의 게임 서비스를 이용하는 월간 수백만명의 글로벌 유저들을 대상으로

안정적인 클라우드 인프라를 구축하고 운영하고 있으며 

퍼블리싱 플랫폼을 통해 사용자에게 일관성 있는 편리한 기능과 경험을 제공하고 

데이터 플랫폼을 통해 사내 여러 부서들에 빅데이터 분석환경과 솔루션 제공하여 데이터 기반 의사 결정 활동을 지원하고 있습니다.

 

담당업무
- 게임 구조에 적합한 지표 로그의 설계 및 적용 
- 설계된 로그를 적용 및 활용하는 유관부서와의 커뮤니케이션, 협업 및 문서화 작업
- 적재된 로그 데이터의 품질 관리 
- 데이터 시각화 관련 업무 

- 데이터 pm(지표 로그 설계 , 적용, 품질관리 및 시각화)

- Google Cloud 의 data Product를 활용한 데이터 처리 고도화

- 데이터 기반의 product 백엔드 개발 
자격요건
- 유관 직무 (PM/ 개발/ 기획/ 분석/ 운영/ 데이터 QA/ 데이터 엔지니어) 중 한 가지 이상의 직무에 대한 경험 
- 데이터와 게임 서비스에 대한 관심 및 이해  
- 여러 유관 조직과의 커뮤니케이션을 원활하게 수행하실 수 있으신 분

우대사항
- 동종 업계 경력 또는 유관 학과 전공자 
- SQL 사용 가능자 또는 개발 경험자 
- 업무나 주변 정리를 체계적으로 하는 것을 즐겨 하시는 분

- 로그 처리 & 분석 경험이 있거나 유관 학과 전공 

- 대용량 데이터 처리 경험

 

 

 

카카오 뱅크

담당할 업무

[데이터프로덕트]· 데이터 기반 사업 과제 기획과 운영   - 추천 시스템과 이상탐지 솔루션 설계 운영   - 서비스 지표 구성이나 분석/모델링 관련 요구사항을 정의
   - 분석가 및 엔지니어들과 협업을 통한 과제 관리 지원

필수 경험과 역량

· 데이터 관련 플랫폼 기획 또는 운영 경험 3년 이상인 분

· 통계 또는 머신러닝 관련 내용을 이해할 수 있는 분

· 적극적이고 원만한 커뮤니케이션이 가능한 분

우대사항 

· Python, Java, Scala 등 프로그래밍 언어 사용 경험이 있는 분

· 전산/수학/통계 또는 관련 분야 학사 학위 이상인 분

· 추천 서비스/시스템 기획 및 운영 경험이 있는 분

· 이상탐지 관련 솔루션 설계 및 운영 경험이 있는 분

· 성과형 광고 플랫폼 설계 및 운영 경험이 있는 분

 

 

 

넥슨

데이터 플랫폼 기획/PM

주요업무


[조직소개]

- 인텔리전스랩스는 다양한 게임 정보를 활용해 ‘빅데이터’, ‘머신러닝·딥러닝’, ‘인공지능(AI)’ 기술과 공학적 사고를 통해 솔루션을 만들고 게임 사용자와 넥슨 구성원이 사용할 서비스를 제공하는 조직입니다.

- 인텔리전스랩스 소속 미들웨어플랫폼실은 게임 데이터를 표준 모델링하여 통합 서비스로 제공 하는 것을 목표로 합니다. 동시에 게임 빅데이터를 가공하여 사용자에게 실시간으로 제공하는 것을 목표로 합니다.

- 데이터 플랫폼 기획/PM은 게임과 게임을 구성하는 데이터에 대한 인사이트를 얻으실 있는 포지션으로, 많은 분들의 관심 부탁드립니다.

- [인텔리전스랩스 테크블로그 바로가기]

[업무소개]

- 게임 또는 연관 솔루션에서 사용할 공통화 된 API의 기획
- 개발 프로젝트 PM 및 유관부서간 커뮤니케이션
- 기술 문서 작성 및 관리
- 백오피스 기획 및 관리

지원자격


- 게임을 사랑하시는 분
- IT 관련 서비스 기획 또는 데이터 설계 경력 1년 이상

우대사항


- 메인 담당자로서 하나 이상의 서비스를 초기 컨셉 기획-제안-설계-런칭-운영까지 Full-cycle 경험이 있으신 분
- 게임 트렌드에 대한 지속적인 호기심과 새로운 아이디어 대해 주저없는 의견 제시가 가능하신 분

기타사항


- 본 공고는 채용 완료 시 조기 마감될 수 있습니다.
- 서류 접수 이후 한 달 이내 전형 결과를 안내드립니다.
- 국가보훈대상자는 관련 법규에 의거하여 우대합니다.

 

 

반응형
반응형

EC2  : 사용자가 아마존 머신 이미지로 부팅하여 인스턴스라고 불리는 가상 머신을 원 원하는 소프트웨어를 포함하여 구성하게 해줌

           / 스케일링이 가능한 애플리케이션 배치 장려
 

RDS : 분산 관계형 데이터베이스/ 관계형 DB의 스토리지, 연산 자원들을 스케일링 하는 것은 하나의 API 호출로 수행

            / EC2와 함께 사용하여 DB 설정, 운영, 백업 기능 편하게 사용하는 DB 전용서버

 

S3  


Elastic Beanstalk : EC2 + RDS 등 AWS 리소스들을 조합하여 완성된 어플리케이션 플랫폼 / PaaS
                                     / Docker 컨테이너를 기반으로 애플리케이션을 쉽게 배포하고, 운영하고, 관리하는걸 도와주는 AWS 서비스


테이블(8) : 학과 정보 / 경기 대진표 / 부스 정보 / 장기자랑 참가자 / 장기자랑 투표 정보 
          체육대회, 축제 공유하는 “푸드 트럭 정보 ” / 부스 별 방문 스탬프 “부스 스탬프 정보”
           / 추첨 , 투표 등에 의해 회원 테이블 생성 


테이블 : USER(중복 허용 X , 널 값 중복 가능) / POST / PAYCORDT(결제 / USER 1 : 결제 N) / COMMENT 시퀀스 생성 


아쉬운 점 : MyBatis

                    -> SQL 코드로 완전 분리 (기존 DAO에 모든 SQL 작성 , MAPPER 파일에 SQL 코드 입력하고 DAO에서 필요할때마다

                         가져옴,  코드 간결화 ,  유지보수성 향상)로 할 걸

                    -> JDBC(자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받게 하는 인터페이스 ) 

 

DAO : DB와 연결하게 하기 위해 데이터 접근하는 객체 /그래서 페이지당 커넥션을 하나만 가져오고 그 커넥션을 가져온 객체가 모든 DB와의 연결을 하는것이 DAO 객체입니다

 

VO(DTO) :직을 갖고 있지 않는 순수한 데이터 객체이며 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스

반응형
반응형

1. Hadoop 

  • 정의 : 여러 대의 컴퓨터 클러스터(연결되어 하나의 시스템 처럼 동작하는 집합)에서 대규모 데이터 세트를 분산 처리 할 수 있게 해주는 프레임 워크 / 파일을 블록단위로 저장, 마스터 - 슬레이브 구조 
  • 장점 : 멀티 노드로 부하를 분산시켜 처리 / 장비 추가 시 성능이 선형적으로 증가 / 저렴한 장비로 처리 가능 
  • 분산 코디네이터 : Zookeeper
    • 중앙 집중식 서비스 / 알맞은 분산 처리 및 분산 환경을 구성하는 서버 설정을 통합적으로 관리 
  • 분산 리소스 관리
    • YARN : 작업 스케줄링 및 클러스터 리소스 관리 위한 프레임워크 맵리듀스, 하이브, 임팔라, 스파크 등 다양한 APPLICATION이 안에서 작업 실행
    • Mesos : 클라우드 환경에 대한 리소스 관리
  • 데이터 저장 
    • HBASE : 분산 데이터베이스 / 구글 빅테이블이 원조 
    • HDFS : 분산 파일 데이터 저장 / 자바로 작성된 확장 
    • Kudu : 컬럼 기반 스토리지 : 데이터에 대한 빠른 분석 위해 설계 
  • 데이터 수집 
    • Chukwa : 분산 환경 생성되는 데이터 안정적으로 HDFS 에 저장하는 플랫폼 / 대규모 분산 시스템 모니터링 시스템
    • Flume : 많은 양 데이터 수집, 집계 및 이동위한 분산형 서비스 
    • Kafka : 데이터 스트림 실시간 관리, 대용량 이벤트 처리 위해 개발
  • 데이터 처리
    • Mahout : 분석 기계학습에 필요한 알고리즘 구축
    • Spark  : 대규모 데이터 처리 위한 빠른 속도 실행시켜주는 엔진 / 파이썬, R 등에서 대화형으로 사용  / 메모리를 사용해 맵리듀스보다 빠르다 
    • HIVE : 하둡 기반 데이터 솔루션 / SQL과 유사한 HIVEQL 언어 제공하여 쉽게 데이터 분석 할 수 있게 도와줌
    • MapReduce : 대용량 데이터를 분산처리하기위한 프로그램 / 정렬된 데이터를 분산처리(키 , 밸류 쌍으로 구분)하여 Map 하고 이를 다시 합치는 Reduce (지표 생성)과정을 거친다 

 

2. Container (도커 / 쿠버네티스)

- 빅데이터에서 컨테이너(운영체제 커널을 공유하는 경량의 가상화 환경)와 하둡을 접목시키는 기술 증가 

 

 

3. Elastic Search 기반 데이터 수집  

  • Logstash : 동적 데이터 수집 파이프라인
  • ElasticSearch : 분산형 RESTFul 검색 및 분석 엔진
  • kibana  : 엘라스틱서치 데이터 시각화

 

4. EC2 / RDS / Elastic Beanstalk / S3

  • EC2 : 사용자가 아마존 머신 이미지로 부팅하여 인스턴스라고 불리는 가상 머신을 원 원하는 소프트웨어를 포함하여 구성하게 해줌 / 스케일링이 가능한 애플리케이션 배치 장려
  • RDS : 분산 관계형 데이터베이스/ 관계형 DB의 스토리지, 연산 자원들을 스케일링 하는 것은 하나의 API 호출로 수행 / EC2와 함께 사용하여 DB 설정, 운영, 백업 기능 편하게 사용하는 DB 전용서버
  • S3 : 저장 서비스 / 하나의 AWS 리전 내 물리적 가용영역에 자동으로 분산 저장 
  • Elastic Beanstalk : EC2 + RDS 등 AWS 리소스 조합하여 완성된 어플리케이션 플랫폼  / PaaS

5. 의료 빅데이터 필요성 : DB 성능 확보하여 대용량 데이터를 기반으로 다양한 정보 분석 업무를 수행하여 의료 가치 있는 데이터 생성에 목적 / 시스템 성능 확보, 비정규화 및 테이블 병합 , 요약 테이블 적용, QL 튜닝 , 지속적인 성능 개선 활동 필요 

 

6. NoSQL 

- NOT ONLY SQL 

- RDBMS + 다른 특성 부가적으로 지원

- 기존의 관계형 데이터베이스보다 더 융통성 있는 데이터 모델 사용하고 데이터의 저장 및 검색 위한 특화된 매커니즘 제공 

- 특징

  • 테이블 조인 기능 없음
  • 비SQL 인터페이스 통한 데이터 액세스
  • 여러 대의 DB 서버를 묶어 (클러스터링) 하나의 DB 구성
  • ACID 미보장
  • 스키마, 속성 동적 정의
  • 중단 없는 서비스, 자동 복구 기능 지원
  • 오픈소스
  • 확장성 가용성 높은 성능 

- 종류 

  • WIDE COLUMMAR STORE : 구글 Big Table Paper 에서 유래 / Key Value => Column Family 데이터 모델 사용 
    • HBASE / Cassandra/ ScyllaDB
  • DOCUMENT DB : JSON, XML 같은 Collection 데이터 모델 구조 채택 
    • Mongodb

8. 머신러닝 R

- 머신러닝의 데이터 관리에 빅데이터를 사용할 수 있다.

- 대규모 데이터를 이용하기 위한 모델링을 컴퓨터가 알아서 하는 것이 머신러닝 

R  : 통계 처리 및 시각화 하는데 사용

 

9. 하둡 vs RDBMS 

  • 데이터 타입 : 하둡(정형, 반정형, 비정형) / RDBMS (정형)
  • 스키마 : 하둡(데이터 읽을 때 스키마 적용) / RDBMS(데이터 적재할 때 스키마 적용)
  • 좋은 사용법 : 하둡(대용량 데이터 처리) / RDBMS(복잡한 ACID 트랜잭션에 적용)
  • 속도 : 하둡(쓸 때 빠름) / RDBMS(읽을 때 빠름)

10. 빅데이터 4V?

속도 / 양 / 다양성 / 진실성(정확도 높아짐) / 가치

반응형
반응형

Telnet

- 원격 접속 서비스

- 특정 사용자가 네트워크 통해 다른 컴퓨터에 연결하여 그 컴퓨터에서 제공하는 서비스 받을 수 있는 인터넷 표준 프로토콜(컴퓨터, 네트워크 장비가 서로 통신하기 위한 규약)

 

ssh(Secure Shell)

- 세션을 감싸주는 텔넷 응용 프로그램

- 다른 사용자가 세션을 엿듣지 못하도록 => 암호화 되어 전송해 보안에 적합 

 

차이점

서버간의 통신 방법의 차이 (TCP / IP 패킷 정보 전달, 결과값 다시 서버에)

- TELNET : BYTE 스트림 형식으로 주고 받음 / 정보 노출 위험 큼 

- SSH : DES, RSA 등 고급 암호화 통해 통신 / 약간의 부하 생김 

 

##IP : 패킷 단위로 보낼 목적지 주소 할당 후 어디로 보낼지 결정하고 이를 전송 

    TCP :  IP 프로토콜 기반 위에서 전송되는 데이터들을 안정되게 전송 

반응형
반응형

 

1. 데이터 베이스 특징

  • 독립성(물리적 / 논리적)
  • 무결성(잘못된 데이터 발생 하는 경우 수 방지 => 유효성 검사 통해 구현)
  • 보안성(인가된 사용자들만 자원에 접근)
  • 일관성(연관된 정보 논리적 구조로 관리)
  • 중복 최소화(자료 중복, 데이터 중복 문제 해결)

2. 데이터베이스 성능 

  • 디스크 I/O 를 줄이는 것에서 시작
  • 디스크 헤더 위치 이동 없이 얼마나 많은 데이터를 한번에 기록하느냐에 결정됨
  • DB 쿼리 튜닝 : 랜덤 I/O 자체 줄여주는 것 목적

3. 인덱스 (= 색인)

  • DBMS 에서 저장 성능 희생하여 데이터 읽기 속도 높이는 기능 
  • 데이터가 정렬되어 들어간다 
  • 양이 많은 테이블에서 일부 데이터만 불러 올 때, 풀 스캔 시 처리 성능 떨어짐 
  • 종류
    • B +- Tree 인덱스 : 원래 값 이용해 인덱싱
    • Hash 인덱스 : 칼럼 값으로 해시 값 계산하여 인덱싱 / 메모리 기반 DB 에서 많이 사용 
    • B > Hash  -> 왜? ==> SELECT 질의 시 부등호 연산 포함되어 = 연산에 특화된 Hash는 적합하지 않다 
  • 생성 시 고려 해야 할 점 
    • 테이블 전체 로우 수 15 % 이하 데이터 조회 시 생성
    • 테이블 건수가 적으면 인덱스 생성 X -> 풀 스캔이 빠름
    • 컬럼 : 유일성이 좋거나 범위가 넓은 값을 가지고 NULL 값이 많이 없는 것을 지정
    • 자주 쓰는 컬럼을 앞으로 지정 
    • DML(insert, delete, update) 시 인덱스에도 수정 작업이 동시에 발생하기에 많은 인덱스 생성 시 성능 부하 
    • DML 이 많은 테이블은 인덱스 생성 X
    • SQL 쿼리가 인덱스를 활용할 수 있게끔 짜기 

4. 클러스터 인덱스 vs 넌클러스터 인덱스 (oracle)

  • 클러스터 인덱스 : 실제 DB의 데이터 파일에 정렬되어 있는 상태로 디스크 저장/  테이블 당 한개
                                     / 기본키 값이 비슷한 레코드 끼리 묶어 저장 
  • 넌클러스터 인덱스 : 실제 DB의 데이터 파일에 정렬되지 않는 상태로 디스크 저장 / 테이블 당 여러 개 

5. 정규화 

  • 중복 저장 시 갱신 이상 발생 -> 이를 해결하기 위해 정규화 과정 거침
  • X의 값이 Y의 값을 유일하게 결정하면, "X는 Y를 함수적으로 결정"
  • 갱신 이상 종류 
    • 삽입 이상 
    • 삭제 이상
    • 수정 이상
  • 정규화란?
    • RDB 에서 중복을 최소화 하기 위해 데이터를 논리적으로 구조화하는 작업
    • 1NF : 원자값을 가진다
    • 2NF : 완전 함수적 종속 
    • 3NF : 이행적으로 종속되지 않는다
    • BCNF
  • 단점 : JOIN 연산이 많아져 , 질의에 대한 응답시간이 느려질 수 있음 

6. 트랜잭션 

 

  • 작업의 완전성 보장 
  • 논리적 작업 셋이 모두 완벽하게 처리하거나 또는 처리하지 못할 경우 원상태로 복구해서 작업의 일부만 적용되는 현상 발생하지 않게 만들어주는 기능 
  • 성질 : ACID(원자성 + 일관성 + 고립성 + 지속성)
  • LOCK : 동시성 제어 VS 트랜잭션 : 데이터 정합성 보장 기능 

7. DeadLock

  • 정의 : 두 개 이상의 트랜잭션이 특정 자원의 잠금(lock)을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태
  • 빈도 낮추는 방법
    • 트랜잭션을 자주 커밋 
    • 정해진 순서로 테이블 접근
    • 읽기 잠금 획득 사용 피함
    • 복수 행의 연결에서 잠금을 획득해 갱신을 직렬화 하면 동시성은 떨어지지만 데드락 회피 가능 
  • 데드락 발생 순서 
    • 트랜잭션 1 -> B t 첫번째 행 잠금 획득
    • 트랜잭션 2 => A t 첫번쨰 행 잠금 획득
    • 트랜잭션 commit 하지 않은 채 서로의 첫 번째 행에 대한 잠금 요청 시 데드락 발생
//잠금 획득 
Transaction 1> create table B (i1 int not null primary key) engine = innodb;
Transaction 2> create table A (i1 int not null primary key) engine = innodb;

Transaction 1> start transaction; insert into B values(1);
Transaction 2> start transaction; insert into A values(1);

//commit 없이 잠금 요청
Transaction 1> insert into A values(1);
Transaction 2> insert into B values(1);
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

 

8. VIEW

  • 정의 : 물리적인 테이블을 근거한 논리적인 가상 테이블
  • 이유 
    • 복잡하고 긴 쿼리문을 뷰로 정의하면 접근 단순화 시킬 수 있다
    • 보안 유리 

9. 데이터 무결성 제약조건 

  • 정의 : 테이블에 부적절한 자료가 입력된 것을 방지하기 위해 컬럼에 대해 정의하는 여러 가지 규칙
  • 무결성 제약 조건 종류
    • NOT NULL : NULL X
    • UNIQUE : 중복된 값 X / 항상 유일값
    • PK : NULL  X / 중복된 값 X  / 테이블 한 개에 유일하게 존재 
    • FK : 참조되는 테이블 칼럼 값 존재 시 허용 / 부모 키가 부모 테이블의 PK 나 UNIQUE 로 설정되어 있어야
    • CHECK : 저장 가능한 데이터 값의 범위 , 조건 지정해 설정한 값(타당한 값)만 허용 

10. 시퀀스(오라클)

  • 시퀀스 생성 시 PK와 같이 유일한 숫자를 자동을 생성하는 발생기 
  • 보통 PK로 설정하여 사용 
  • 사용 이유 : 캐쉬에 상주하고 있어 데이터 불러오는 속도가 빠름 

11. 트리거

  • 정의 : 자동으로 실행되게 정의한 저장 프로시저, INSERT / UPDATE/ DELETE 문에 대한 자동 호출
  • 사용 이유 : 데이터 무결성 강화 / 업무 처리 자동화 / 업무 규칙 보장 

12. 데이터웨어하우스 

  • DB 축적 데이터를 공통의 형식으로 변환해 의사결정에 도움 주는 DB

13. ORACLE DB VS MySQL

  • ORACLE : 대규모 트랜잭션 처리 / 여러 서버에 대용량 DB 분산 / 절차 언어 통해 DB 내장 프로그램 작성 지원(트리거 , 독립실행)
  • MySQL : 단일 DB / 대용량 DB X / DB 복원 저장점 없음 (COMMIT, ROLLBACK만 존재)

14. JOIN 

  • 카티션 곱(Cartesian Product)
    • 두 개 이상의 테이블에 대해 연결 가능한 행을 모두 결합하는 조인 방법이며, WHERE 절에서 조인 조건절을 생략하거나 조인 조건을 잘못 설정하여 양쪽 테이블을 연결하여 조건에 만족하 는 행이 하나도 없는 경우에 발생 합니다. 
    • 예) SELECT * FROM DEPT A, EMP B 

 

  •  EQUI JOIN
    • SQL 문에서 가장 많이 사용되는 조인으로 조인 대상 테이블에서 공통 칼럼을 ‘=’ 비교를 통해 같은 값을 갖는 행에 대해서 연결하여 결과를 생성하는 조인 방법입니다.
    • 예) SELECT A.name FROM DEPT A, EMP B WHERE A.code = B.code 

 

  •  NON-EQUI JOIN
    •  조인 조건에서 ‘<’,’>’, BETWEEN a AND b’와 같이 ‘=’ 조건이 아닌 다른 종류의 연산자를 사용 하는 조인 방법입니다.
    • 예) SELECT A.name FROM DEPT A, EMP B WHERE A.code > B.code

 

  •   OUTER JOIN
    • 두 개 이상의 테이블 조인 시 한쪽 테이블의 행에 대해 다른 쪽 테이블에 일치하는 행이 없더 라도 다른 쪽 테이블의 행을 NULL로 하여 행을 Return하는 것이 OUTER JOIN 입니다.연산자 로는 (+)기호를 사용합니다.
    • 조인 조건에 만족하지 않는 행도 나타냄 
    • 예) SELECT A.name FROM DEPT A, EMP B WHERE A.code = B.code(+)

 

  •   SELF JOIN
    • 한 테이블 내 두 개의 칼럼을 연결하여 EQUI JOIN을 하는 방법

15. DB 설계 시 중요

  • 무결성을 보장하는 것
  • 무결성 보장 방법
    • (애플리케이션) 데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건 검증
    • (DB트리거) 트리거 이벤트 시 저장 SQL실행, 무결성 조건 실행
    • (제약조건) DB제약조건 기능 선언하여 무결성 유지

16. SQL 문장 종류

명령어 종류 

명령어 

설명 

데이터 조작어

(DML :  Data Manipulation Language

SELECT 

 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 한다.

INSERT

UPDATE

DELETE 

 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 말한다. 데이터 삽입, 수정, 삭제

 데이터 정의어

(DDL : Data Definition Language)

CREATE

ALTER

DROP

RENAME

TRUNCATE 

 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 부른다.

데이터 제어어

(DCL : Data Control Language) 

GRANT

REVOKE 

 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라고 한다. 

트랜잭션 제어어

(TCL : Transaction Control Language)

COMMIT

ROLLBACK

SAVEPOINT 

 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말한다. 

17. 데이터 유형

 데이터 유형

설 명 

CHAR(s) 

- 고정 길이 문자열 정보

- s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트 

- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다.

VARCHAR(2) 

- CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현)

- s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트

- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다. 

NUMERIC 

- 정수, 실수 등 숫자 정보 (Oracle은 NUMBER로, SQL Server는 다양한 숫자 타입 지원)

- Oracle은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분의 자리 수를 지정한다.

ex> 정수 부분이 6자리이고 소수점 부분이 2자리인 경우 NUMBER(8,2) 

DATE

- 날짜와 시각 정보

- Oracle은 1초 단위, SQL Server는 3.33ms(millisecond) 단위 관리 

 

 

반응형
반응형

1. Spring이란?

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크

종속 객체를 생성해주고 조립해주는 도구 

  • 특징
    • 경량 컨테이너로 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하여 스프링으로 부터 필요한 객체 얻어 옴
    • POJO (Plain Old Java Object) 방식 프레임워크
      • 특정 인터페이스를 구현하거나 상속받을 필요 없어, 기존에 존재하는 라이브러리 등을 지원해, 용이하고 가벼움
    • 제어 역행(IOC) 기술 사용해 애플리케이션의 느슨한 결합 도모 
      • 컨드롤의 제어권이 프레임워크에 있어, 필요에 따라 스프링에 사용자의 코드 호출
    • 관점 지향 프로그래밍(AOP) 위한 풍부한 지원
      • 트랜잭션, 로깅, 보안 과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 , 따로 분리하여 관리할 수 있음
    • 의존성 주입(DI) 지원
      • 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크 서로 연결
    • 확장성이 높음

2. 스프링에서 공통 부분 관리

  • Filter  : 요청, 응답 거른 뒤 정제 / 스프링 컨텍스트 외부에 존재, 스프링과 무관한 자원에 동작
  • Interceptor  : 스프링의 DistpatcherServlet 이 컨트롤러를 호출하기 전, 후 끼어듬
                               스프링컨텍스트내부에서 Controller 요청, 응답 처리 
                               여러 개 사용 가능 
  • AOP : 로깅, 트랜잭션, 에러 처리 등 메서드 에서 조금 더 세밀하게 조정 

 

3. MVC 패턴(MODEL, VIEW, CONTROLLER)

model1 : 구분 필요없는 내용 / 주먹구구식, 작은 프로그램

model2 : 내용, 형식에 따라서 파일을 분류해서 프로그래밍 (MVC) /여러명이 작업

 

MODEL

  • 논리적 데이터 기반 구조 표현
  • 데이터와 관련된 저장, 가공
  • 데이터베이스, 처음 정의하는 상수, 초기값, 변수 
  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 함
  • 뷰, 컨트롤러에 대해 어떤 정보도 알지 말아야 한다
  • 변경 일어나면, 변경 통지에 대한 처리 방법을 구현

VIEW

  • 사용자에게 보여지는 화면 
  • 컨트롤러에 값을 받고 화면에 보여줌 
  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  • 모델이나 컨트롤러 같이 다른 구성 요소들을 몰라야한다
  • 변경이 일어나면 변경통지에 대한 처리 방법 구현

Controller

  • model, view 내의 클래스들 간 정보 교환
  • model, view를 가지고 있어 값을 처리하고 화면에 보여주는 것 
  • 데이터와 사용자인터페이스 요소들을 잇는 다리 역할
  • 모델, 뷰에 대해 알고 있어야 한다.
  • 모델, 뷰 변경 모니터링

서로 분리하여 각자의 역할에 집중하게 개발하고 유지 보수성, 애플리케이션 확장성, 유연성이 증가하고 , 중복코딩 또한 사라진다

 

4. 장고 VS 스프링

장고 

  • PYTHON + MVC 패턴 + 관습 지향 + ORM + 라이브러리 => 완전 고수준 프레임워크
  • 스크립트 언어 사용하기에 디버깅이 굉장히 수훨 
  • 동시요청 처리능력은 좋지 않음
  • 주요 기능
    • MVC 패턴 기반 MVT
    • ORM(Object relational mapping)

스프링

  • JAVA Servlet + MVC 패턴 + DI, AOP + 라이브러리
  • 아파치 + 톰캣 + 스프링 + MYSQL 조합
  • 컴파일 언어 이기에 배포가 까다로움
  • 주요 기능
  • DI (Dependency Injection) : 의존 관계 주입
    •  각각의 계층이나 서비스 간에 의존성이 존재할 경우 Spring이 서로 연결시켜 준다.
  • AOP (Aspect Orientated Programming) : 관점 중심 프로그래밍
    •  여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 AOP를 지원한다.
반응형
반응형

<알고리즘>

1. array,  linked list

배열 : 데이터를 물리적 주소에 순차적으로 저장, 인덱스를 가지고 있으며 특정 데이터에 바로 접근할 수 있어 속도가 빠르다

연결리스트 : 데이터를 저장할 때 데이터 + 다음 데이터 물리적 주소까지 같이 저장  / 첫 노드 부터 원하는 노드까지 링크를 따라가야 접근 가능하기에 접근 속도는 떨어짐 

 

  • 속도 : 데이터에 대한 접근 속도 (배열 > 연결리스트)
    • 배열 : index 만 있으면 O(1) 접근
    • 연결리스트 : 최소 한 번은 리스트를 순회하여야 하므로, O(n)에 접근
  • 데이터 삽입 속도 : 경우에 따라 다르지만(전체적으로 배열 < 연결리스트)
    • 배열에 공간이 많이 남아있고 맨 끝에 삽입 한다면 O(1)이 가능하지만 매우 드뭄
      • 배열은 중간, 맨 앞에 삽입 할 경우 데이터를 한 칸씩 미뤄야 하고
      • 데이터 삽입 시 모든 공간이 다 차버렸다면, realloc() 또는 새로이 할당하여 메모리 공간 확장 필요
    • 연결리스트 : 어느 곳에 삽입하던지 O(n) 시간 접근 
  • 데이터 삭제 속도 : 경우에 따라 다르지만(전체적으로 배열 < 연결리스트)
    • 위와 비슷하다
    • 연결리스트의 경우 예외 조건 처리를 꼼꼼히 필요로 함 
  • 삽입 삭제가 빈번하다면 연결리스트의 , 이미 만들어진 구조에서 데이터 접근만 필요로 하면 배열

2. 버블 정렬

서로 인접한 두 원소를 검사하여 정렬하는 알고리즘(인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환)

  • 특징 
    • 장점 : 구현이 매우 간단
    • 단점 : 순서에 맞지 않은 요소를 인접한 요소와 교환 / 배열에서 모든 요소들과 교환해야 왼쪽 -> 오른쪽으로 이동 가능

3. 퀵 정렬

  • 리스트 안에 있는 한 요소(피벗) 를 가지고 이를 기준으로 삼아 분할하고 분할된 부분 리스트 정렬 후 
    두 개의 정렬된 부분 리스트를 합하여 전체 리스트 한다
  • 분할-> 정복 -> 결합 

4. 힙 정렬

  • 완전 이진 트리 이용해 내림차순 기준으로 정렬

5. 합병 정렬

  • 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬 , 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법 
  • 분할 -> 정복 -> 결합

정렬 알고리즘 시간복잡도 비교 

6. ArrayList<>란

 : 배열의 확장판. 배열의 크기를 임의적으로 변화시킬 수 있음, list에 들어갈 데이터 타입 설정 가능

    (add, remove, isEmpty, size, get, indexOf 등의 메소드가 있음)

 

7. hash란?

 : 내부적으로 배열을 사용(HashTable)하여 데이터를 저장, 검색 속도가 빠름.

 데이터 삽입/삭제시 기존 데이터를 밀어내거나 채우지 않고, 데이터와 연관된 고유한 숫자를 생성해 이를 인덱스로 사용.

 

8. equals와 HashCode?

(equals) 동일한 내용을 가진 객체인지를 비교

(hashcode) 동일한 객체인지 구별하기 위해 고유한 정수 값으로 출력

 

9. 스택과 큐의 차이

: (stack) Last in First out

   -> 함수를 호출 할 때, 현재 함수에서 사용되는 값을 스택에 넣고, 작업이 끝나면 함수를 리턴하고 스택에 넣었던

       값을 꺼내는 방식으로 동작

 (Queue) First in First out 

   ->프로세스 처리, CPU 관리, 프린터 큐 등에 사용

반응형
반응형

<자바 문법 및 특징>

1. 자바 특징

현실 세계의 객체를 필드와 메서드로 정의한 Class 기반으로 실제 메모리가 잡혀 만들어진 부품과 같은 객체들을 조합해

전체 프로그램을 완성해 나가는 개발 기법

  • oop : 객체 지향 언어 
  • 가비지 컬렉션에 의해 메모리 자동 관리
    • 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원 회수하는 것
    • 시스템에서 가비지컬렉션을 수행하는 부분 : 가비지 컬렉터
  • 멀티 쓰레드 지원
  • JVM 위에서 동작하기 때문에 특정 OS에 종속적이지 않고 이식성이 좋으며 보안성이 좋다
  • 다양한 오픈 라이브러리들이 존재한
  • 추상화 :  객체의 공통적인 특징을 속성을 변수로 / 공통된 기능을 메소드로 만듬/일반메서드사용
    • 추상 메서드 : 메서드의 정의부만 있고, 구현부는 있지 않는 메서드
    • 추상 클래스 : 추상 메서드를 적어도 하나 이상 가지고 있는 클래스로 자식 클래스에서 오버라이딩(재정의)
                               필요한 추상메서드를 가지고 있기 때문에 객체화 할 수 없다.
  • 캡슐화 , 은닉화 : 외부 객체에서 구현 방식 알 수 없도록 숨기고 별도로 접근할 수 있는 getter/setter 메서드를 통해 접근하는 방식
  • 상속 : 부모 class를 자식이 접근할 수 있도록 물려 받는 방식
    • 변수와 메소드를 그대로 쓰므로 코드 중복을 줄이고
    • 객체 사용하는 클래스의 외부 관점으로 봤을 때, 묶어서 처리(upcasting)할 수 있으므로 효율적인 코드
  • 다형성 : 부모 class 타입으로 해당 부모를 상속받는 여러 자식 class를 대입하는 성질 
                  : 서로 다른 class로 부터 만들어진 객체이지만 같은 부모 class 타입으로 대입할 수 있는 성질
    • 오버로딩
      • 하나의 클래스 내에 이름이 같은 여러 개의 메서드 정의
      • parameter, return 타입 등이 다른데, 수행 내용이 본질적으로 동일 할 때 사용
    • 오버라이딩
      • 부모 클래스의 메소드를 자식 클래스에서 재정의

2. 객체와 클래스의 차이점

  • 클래스 : 현실 세계의 객체 속성과 동작을 추려내 필드와 메서드로 정의한 것 "아직 메모리가 할당되지 않은 상태"
  • 객체 : 클래스라는 설계도를 기반으로 실제 메모리가 잡힌 것을 의미,
                이런 객체를 조합해 전체 프로그램을 완성해나가는 방식 OOP

3. Servlet , JSP

  • Servlet : Container 가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것(html in java)
  • jsp : html 기반에 java코드를 블록화하여 삽입 (java in html)

4. GET, POST

  • GET : 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용 
    • 보안성이 떨어지고 , 길이 제한이 있다
    • POST 보다 상대적으로 전송 속도가 post보다 빠름
    • 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩 되어 URL에 붙는다
  • POST : 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용
    • HTTP 메시지로 넘어온 엔티티를 새로운 자원으로 등록 : 201 response
    • 보안성이 높고, 속도가 get 보다 느리다
    • 객체들의 값도 전송 가능 
    • PUT(식별자 포함하여 웹 서버에 데이터를 전달)과는 비슷하게 작동

5. Call by reference , Call by value

  • Call by reference : 매개 변수가 원래 주소에 값을 저장
  • Call by value : 주어진 값을 복사하여 처리 

6. interface?

모든 메서드가 구현부가 없는 추상메서드, abstract 키워드 붙이지 않아도 자동으로 모든 메서드는 추상 메서드로 정의

  • 인터페이스는 추상화와 다르게 메서드 선언만 가능
  • 변수도 자동으로 final static 키워드가 붙는다. 

7. 접근제한자

  • public(접근 제한자가 없다/ 같은 프로젝트 내 어디서든 사용 가능 )
  • protected(같은 패키지 내, 다른 패키지에서 상속받아 자손 클래스에서 접근)
  • default (같은 패키지 내에서만 접근 가능)
  • private (같은 클래스내에서만 접근 가능)

8. 소켓 통신 (tcp/udp)

  • tcp (transmission control protocol)
    • 연결형 서비스 제공
    • 높은 신뢰성 보장
    • 데이터 흐름 , 호잡 제어
    • 3,4 -way handshaking(데이터 수신 여부 확인)
    • 전이중, 점대점 서비스
  • udp (user datagram protocol)
    • 비연결형 서비스 제공
    • 신뢰성 낮음
    • 데이터 전송 순서 바뀜
    • 데이터 수신 여부 확인 과정 없음
    • tcp 보다 전송 속도가 빠름

9. Primitive type , Reference type

  • Primitive type : 변수에 값 자체 저장
    • 정수 / 실수 / 문자 / 논리형
    • wrapper class (간단한 데이터를 객체로 만들어야 할 경우)를
      통해 객체로 변형 가능 (int, char 제외하고 다른 자료형들은 맨 앞 알파벳을 대문자로 바꿔준다)
  • Reference type : 메모리상에 객체가 있는 위치 저장
    • class , interface , array

10. 세션, 쿠키 사용 

  • Session : 웹 브라우저의 캐시에 저장(서버에 저장)되어 브라우저가 닫히거나 서버에 삭제 시 사라진다
                      쿠키에 비해 보안성이 좋다
  • Cookie : http 한계를 극복 / 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트를 매개 
                               아이디 , 비밀번호 / Client PC에 저장, 다른 사용자에 의해 임의 변경 가능 
  • 쿠키 대신 세션 사용하면 되는데 안하는 이유?
     -> 세션에 저장하면 서버의 메모리가 과도하게 사용되어 서버에 무리가 감

11. 해쉬, 암호화

  • 해쉬 : 단방향 암호화 / 복호화 불가능 / 데이터 보안에 중점
  • 암호화 : 양방향 암호화 / 복호화 가능 / 통신 보안 중점
    • Symmetric key (비밀키 : des / aes) / Asymmetric key(공개키 : dsa , rsa) 

12. HTTP (Hyper Text Transfer Protocol)

  • 웹브라우저와 웹서버가 서로 데이터를 주고 받을 때, 사용하는 규약
  • 도메인 + URL(자원 위치) , 도메인 + URI(자원 식별자) 통해 요청, 서버가 요청에 따른 응답(.html) 해줌
  • 특징
    • Connectless + stateless : 클라이언트 이전 상태 알 수 없으므로(쿠키와 세션 필요)
    • keep-alive : 지정된 시간 동안 연결 끊지 않고 연결된 상태 유지
      웹 서버 연결 -> html 문서 다운로드 -> 필요한 img , js, css 다운 -> 연결 끊음
  • http method 
    • GET : 정보를 요청하기 위해 사용 (READ)
    • POST : 정보를 입력하기 위해 사용(CREATE)
    • PUT : 정보를 업데이트 하기 위해 사용 (UPDATE)
    • DELETE : 정보를 삭제하기 위해 사용 (DELETE)
  • Request Header : 웹 브라우저가 웹 서버에 요청할 때 작성
    • 유저가 서버 측에 요청한 정보
  • Response Header : 웹 서버가 작성해서 웹 브라우저에 응답할 때 작성
    • 유저의 요청(request)에 서버 측의 응답(response)정보
  • https : http는 데이터 key와 , value 가 모두 표시되기 때문에 중요한 데이터 일 때 감춰야 함(HTTPS) 

13. REST API 

  • 서버에 리퀘스트 할 때, 자원의 ID와 자원에 대한 처리(HTTP 메소드)를 포함하여 리퀘스트 되도록 하는 것
  • 고유 자원에 대한 처리 URI로 나타낸 것
  • 라우터 상에서 HTTP 메소드 (GET, POST, PUT, DELEE) 와 실제 자원에 대한 처리 (CRUD)를 맵핑 시켜야함
  • HTTP method + 모든 개체 리소스화
    + URL 디자인(라우팅 :
    클라이언트 요청에 대한 응답을 어떻게 이어줄 것인가 처리 / 자원에 대한 처리를 주소에 나타내지 않는다. )

14. 아파치, 아파치 톰캣

  • 아파치 : HTTP 웹 서버(클라이언트의 요청을 기다리고 요청에 대한 데이터(정적 데이터)를 만들어서 응답하는 역할)
  • 톰캣 : WAS(Web Application Server/ 서블릿 컨테이너) : 웹 서버와 웹 컨테이너 결합
    • 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행
    • 웹 컨테이너 : 클라이언트의 요청이 있을 때, 내부 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에게 돌려줌
      • JSP, 서블릿 처리 / 서블릿 수명 주기 관리 / 요청 URL을 서블릿 코드로 매핑 / HTTP 요청 수신 및 응답 / 필터 체인
  • 둘의 차이 : 웹 서버와 웹 어플리케이션 차이-> 단순 정적 데이터 (이미지나 단순 HTML)를 처리하는 서버라면 아파치 
    -> 동적 데이터 (DB 연결, 데이터 조작) 등 과 같은 처리 는 WAS

15. 동기, 비동기 

  • 동기 (synchronous) 
    • 요청과 그 결과가 한 자리에서 동시에 일어남
    • A노드와 B 노드 사이의 작업 처리 단위(transcation)을 동시에 맞추겠다
    • 장점 : 설계가 매우 간단, 직관적 / 단점 : 결과가 주어질 때 까지 아무것도 못하고 대기해야한다.
  • 비동기 (asynchronous)
    • 요청한 그 자리에서 결과가 주어지지 않음
    • 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
    • 장점 : 결과가 주어지는 데 시간이 걸리더라도 그 시간 동안 다른 작업할 수 있으므로 자원을 효율적으로 사용
      단점 : 동기보다 복잡

16. 쓰레드 , 프로세스

  • Process : 운영체제에서 실행 중인 하나의 프로그램(하나 이상의 쓰레드 포함)
  • Thread : 프로세스 내에서 동시에 실행되는 독립적인 실행 단위 (stack메모리)
    • 장점 
      • 빠른 프로세스 생성
      • 적은 메모리 사용
      • 쉬운 정보 공유
    • 단점
      • 교착상태(다중 프로그래밍 체제에서 하나 , 그 이상의 프로세스가 수행 할 수 없는 어떤 특정 시간 /
                           하나의 메서드를 여러 개의 쓰레드가 한번에 사용하게 되면 데드락 발생)
  • Thread 와 Process 차이
    • 이 프로세스 내에서 실행되는 각각의 일을 스레드 
    • 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 됨
    • 자바에서 main()메서드를 수행하기 위한 목적으로 제공된다 하여 main 쓰레드라 불린다 
    • 서로 메모리 공간을 공유하지 못해, IPC(Inter process communication) 방식이 필요

17.자바의 메모리 영역(간단하게 설명)

  • 메서드 영역 : static 변수, 전역변수, 코드에서 사용되는 Class 정보 등.
    • 코드에서 사용되는 class들을 로더로 읽어 클래스별로 런타임 필드데이터, 메서드 데이터 등을 분류해 저장
  • 스택(Stack) : 지역변수, 함수(메서드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리
  • 힙(Heap) : new 연산자를 통한 동작할당된 객체들이 저장되며, 가비지 컬렉션에 의해 메모리가 관리

 

18. 컬렉션 프레임워크 

다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화 된 방법을 제공하는 클래스 집합

즉, 데이터를 저장하는 자료 구조, 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현

인터페이스를 사용해 구현

  • List 인터페이스
    • 순서가 있는 데이터 집합, 데이터 중복 허용
    • vector , arraylist , linkedlist , stack , queue
  • Set 인터페이스
    • 순서가 없는 데이터 집합, 데이터 중복 허용 x
    • hashSet, TreeSet
  • Map 인터페이스
    • 키와 값의 한 쌍으로 이루어지는 데이터 집합, 순서가 없음
    • 키는 중복 허용 x, 값은 중복 가능
    • haspmap , treemap, hashtable, properties

19. 제네릭

코드 블럭 내부에서 쓸 자료형을 외부에서 지정하는 기법

하지 않으면, 원하지 않는 자료형이 입력되었을 때 오류를 컴파일 시점에 잡아낼 수 없다

클래스<사용할 타입>

 

20. 자바 재귀함수

자기 자신을 호출하는 함수 

원래 범위의 문제에서 더 작은 범위의 하위 문제를 먼저 해결함으로 원래 문제 해결 

꼭 재귀호출이 끝나는 종료 조건이 있어야 한다

 

반응형

+ Recent posts