-
1. 객체지향(OOP) 3요소
- 클래스 단위 개발
캡슐화
- 관련된것들을 한군데 모음
- 재사용성 증가
- 접근 제한
- 은닉화
- getter/setter
- 다른 객체와의 독립성 유지로 전체적인 코드 유지보수 및 변경에 유연
상속
- 필드, 메서드
- 중복 선언 불필요
- 계층적 구조를 표현 가능(하이어락키)
- 개발 시간 절약, 중복 코드 감소 및 유지보수에 용이
다형성
- 오버라이딩을 통하여 다향한 형태로 변형 가능
- 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 함
- 인터페이스 타입 변환, 오버로딩 과 오버라이딩
2. JVM (Java Virtual Machine)
- Java 컴파일러 => Java ByteCode(.class) => JVM은 OS가 이해 할 수있도록 해석
- OS 상관 없음
- Class Loader => RunTime 시점에 클래스 인스턴스를 메모리에 로드3. 인터페이스 사용 이유
- 협업
- 재활용성
- 같은 동작하는 메서드
- 표준화
- 교체용이
- Ex_ encrypt 인터페이스 생성
=> SHA512 인터페이스 구현
=> AES256 인터페이스 구현
- 다중인터페이스 구현
- 상속은 1개, 인터페이스는 여러 구조 구현 가능
- 결합도를 낮출 수 있다.4. 박싱 언박싱
- 박싱
암시적
값 타입 => 참조타입으로 변환하는 프로세스
System.Objext 인스턴스 내부에 랩핑, 힙에 저장되기
20배 느림
- 언박싱
명시적
박싱된 데이터를 값 타입으로 꺼내는 프로세스
4배 느림
System.Clollections.Generic 사용 권장5. string 과 stringbuilder
- string은 참조타입 형태이기 때문에, 문자열을 조합 할때마다 새로운 class가 생성 => 이전 데이터 GC에 수집 => 부하
- Stringbuilder 버퍼 사이즈 지정 후, 부하가 발생하지 않음
- 문자열을 많이 조합 할 경우 stringbuilder 사용 권장6. msa (micro service architecture)
-SOA(Service Oriented Architecture)
- API GateWay를 통하여 독립적인 API를 호출
- 독릭적으로 개발, 전개
- 각기 다른 프로그래밍 언어로 구현 가능
- 스케일 아웃
- 서버 증설
- 스케일 업
- 장비 성능 업
- 로드 밸런서
- 트래픽 분산7. ASP.NET 페이지 수명 주기
Page_Init
가장먼저 발생, 초기화, 이벤트 맵핑
Page_Load
IsPostBack
Page_DataBind
DataBind 메서드 호출 시 발생
Page_PreRender
ViewState 상태가 저장되기 전 발생
Page_Unload
랜더링을 끝 마친뒤에 모든 작업이 마무리 할때 발생
8. .NET 상속 구조
9. 로깅 및 인증 처리
- log4net
- 오류 유형, 패턴, 파일/콘솔 로그10. MVC
- 디자인 패턴중 하나
Model
- 논리적 데이터 기반 구조
- 데이터베이스 조회 정보, 상수 등의 데이터
View
- 사용자에게 보여지는 화면
Controller
- Model 과 View 를 연결하는 클래스, 클래스들 간 정보 교환
- Backend & ForntEnd
- 역할 분담11. IIS
- 가장인증
- 통합인증
- 기본인증
- 익명인증
- 인증
- 가상 디렉터리
12. spring framework
경량 컨테이너로서 자바 객체를 직접 관리
의존성 주입
IOC : 제어의 역전, 사람이 아닌 프레임워크가 모든 작업을 제어
AOP : 관점 지향
트랜잭션/로깅/보안 등 공통적으로 사용하는 기능 분리 관리Intercepter, Filter
iBatis, Mybatis 등 DB 연결 라이브러리 인터페이스 제공
트랜잭션 관리 프레임워크 : xml, java, property
mvc 패턴
배치 : 쿼츠 기반, 대용양 자료 처리
스프링 모듈
DAO : JDBC, 트랜잭션
ORM : iBatis, JDO 관계
AOP :
WEB
MVC
13. 개발 방법론
- 폭포수 모델
- 분석 - 설계 - 구현 - 테스트 - 안정화
- 사전 계획
- 진행 상황 쉽게 파악 가능, 프로젝트 관리 용이
- 중간 중간 변경이 힘듬
- 산출물 중시
- 나선형 모델
- 리스크를 명백히 측정(위험 분석 추가)
- 점진적 개발
- 비용이 많이 들고 복잡한 시스템 개발에 용이
- 프로젝트 관리가 복잡
- 에자일 모델
- 프로젝트 시작 후 끊임없이 변화
- 문서 => 코딩 중시
- 다수의 작은 기능으로 분할 개발
- 중간 중간 버그 체크에 용이
- 고객의 요구에 대응하기 편함
- 정확한 계획이 없다면 비 효율적
14. 디자인 패턴
- 한 개의 인스턴스만 생성
- 생성자 private, 생성자는 클래스 내부에서만 호출
- getInstance
- 미리 만들진 객체를 복사하여 객체를 생성하는 방법
- 객체를 많이 만들어야 하는 경우, 코딩 량이 줄어들음
- 프로토타입 인스턴스 등록, 클론
- 중간의 프록시 클래스를 통해, 실제 해야할 일을 다른 클래스로 넘겨 주는 방법
- 시간이 많이 걸리는 작업을 할때 용이
- 창구를 일원화
- 싱글톤
- 프로토 타입 패턴
- 프록시 패턴(AOP)
- 템플릿 메서드 패턴
- 파사드 패턴
- NCS
- National Competency Standards
- 국가 직무 능력 표준
- 블라인드 면접
- 기업체에서는 인사관리 및 인재 채용 기준
- 교육 훈련 기관에서는 훈련 기준
15. .NET Framework
- 지원하는 OS가 다를 수 있음
- VisualStudio 버전 별 호환이 다름
버전
기타
2.0
- ASP.NET
- WinForms
- CLR
3.0
- WPF
- WCF
- WF
3.5
- LINQ
- Entity
4.0
- 병렬 처리
- Parallel LINQ
- 다이나믹 타입
4.5
- .NET API Store/UWP App
- Task-Based Async Model
4.6
16 인덱스
- 넌 클러스터드 인덱스는 기본적으로 클러스터드 인덱스를 포함
- 선택도가 중요
- 최대 1개
- 물리적 레코드를 배열
- 최대 249개
- 인덱스 영역을 만들고 약간의 여유를 남겨둠
- Insert 시 성능 저하
- Select 절에 포함되어 있는 경우 Look Up이 일어나지 않음
- 클러스터드인덱스
- 넌클러스터드인덱스
- Include
17. API
-
- 프로토콜
- 기능 위주 (SOA)
- XML
- 엄격한 규격 존재
- 캐시 사용 불가
- 아키텍쳐
- 리소스 접근 위주 (ROA)
- XML , JSON 등 다양한 포멧 지원, JSON 주로 사용
- 규격 없음
- 캐시 사용 가능
- SOAP
- REST
18. JOIN
- 옵티마이져
- 모수 중요
- LOOP를 돌면서 조건에 해당하는 데이터를 가져옴
- 인덱스가 없을 때
- 조건절로 정렬
- 인덱스가 없을 때
- 정렬 X
- 조건 컬럼 => hash function => 일치하는 데이터를 가져옴
- NL JOIN
- Sort Merge Join
- Hash Join
댓글