분류 전체보기

· 기본
ORM(Object Relational Mapping) OOP에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB에서 쓰이는 테이블을 자동으로 연결하는 것(mapping) 서로 호환되지 않기 때문에 불일치가 발생 -> ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 해결 -> 따로 SQL문을 작성할 필요없이 객체를 통해 간접적으로 DB를 조작 RDB의 테이블을 객체화 시켜서 SQL문을 직접 작성하지 않고 조작할 수 있게 만들어 주는 것 장점 SQL문이 아닌 클래스의 메서드를 통해 DB 조작 가능 매우 편리, 가독성 증가, 부수적인 코드 감소 단점 복잡성이 커질 때 잘못 설계하게 되면 성능 저하시키고 일관성을 무너뜨릴 수 있다 속도를 위해 튜닝이 필요한 경우에는 결국 SQL문을 사용해야..
· 기본
인스턴스를 하나만 만들 수 있으며 새로운 인스턴스 생성 요청 시 이미 만들어진 인스턴스를 전달 장점 하나의 인스턴스만 존재하므로 고정된 메모리 영역을 사용하며 메모리 낭비를 방지할 수 있다 해당 인스턴스를 통해 데이터 공유가 쉽다 단점 테스트가 어렵다 여러 곳에서 사용하기 때문에 내부 데이터가 쉽게 변하기 때문에 변인통제가 쉽지 않다 클라이언트가 객체에 의존하게 된다 내부에서 새로운 인스턴스를 생성을 시도해서 만들어진 인스턴스를 가져오는 방식 때문에 의존성이 생긴다 -> 컨테이너를 활용해서 의존성 주입을 하면 해결 가능 여러 곳에서 인스턴스 참조 시에 동시성 문제가 발생할 수 있다 자식 클래스를 만들 수 없다 내부 상태를 변경하기 어렵다
· 기본
프로그래밍 언어 해석 방식 컴파일 : 한 언어로 이루어진 코드를 다른 언어로 바꾸는 것 AOT 컴파일 : 소스 코드를 미리 기계어로 컴파일해서 실행 JIT 컴파일 언어 : 소스 코드를 바이트 코드로 1차 컴파일하고 그 바이트 코드를 실행하는 VM으로 구성 인터프리터 언어 : 소스 코드를 한줄 한줄 읽어서 그때마다 번역해서 수행 메모리 관리 방식 비관리(Unmanaged) : C, C++ 동적 할당된 메모리의 해제가 자동으로 이루어지지 않음 메모리 직접 접근이 가능함 관리(Managed) : Java, C#, Python, Go 동적 할당된 메모리의 해제가 가비지 컬렉터에 의해 자동으로 이루어짐 메모리 직접 접근을 차단함 정적, 동적 타입 정적 타입 : C, C++, Java, C#, TypeScript ..
· 기본
의존성 클래스 간에 의존성이 있다 = 클래스 간에 의존관계가 있다 = 한 클래스가 변경되면 다른 클래스가 영향을 받는다 한 클래스를 수정하면 해당 클래스와 의존성이 있는 다른 클래스들도 영향을 받아 수정해야 할 수도 있다 이는 확장성이나 유지 / 보수의 측면에서 좋지 않다 인터페이스를 이용해서 특정 클래스 사이에서의 의존성을 없앨 수 있다 주입 클래스 외부에서 객체를 생성하여 해당 객체를 클래스 내부에 주입하는 것 A, B, C 클래스가 내부에서 D 클래스의 인스턴스를 만든다고 할 때 A, B, C 클래스는 각자 자신이 만든 D 인스턴스를 가진다 이러한 것을 A, B, C 클래스가 D 클래스와 강하게 결합되어 있다고 한다 만약 D 클래스를 E 클래스로 바꿀려고 할 때 우리는 A, B, C 클래스에서 D ..
· 기본
HTTP 서버와 클라이언트 사이에 어떻게 교환할지 정해놓은 프로토콜 요청(request)와 응답(response)로 구성 주로 80번 포트 사용 HTTP Version HTTP / 0.9 GET만 존재 응답도 극도로 단순 -> 오류, 상태 코드 없음 Header가 없어서 HTML 문서만 전송 가능 HTTP / 1 POST, HEAD 추가 Header 개념이 도입 -> 메타데이터를 주고 받고 프로토콜을 유연하고 확장 가능하도록 개선됨 Content-Type 도입으로 HTML 이외의 문서 전송 기능이 가능해짐 상태 코드 추가 커넥션 하나당 요청 하나와 응답 하나만 처리 가능했음 HTTP / 1.1 Persistent Connection 지정한 timemout 동안 커넥션을 닫지 않는 방법을 통해 커넥션의 사..
· 기본
온 프레미스 서버의 하드웨어 부분과 소프트웨어 부분 둘다 직접 관리하는 방식 하드웨어적인 관리 측면이 너무 번거롭고 힘들고, 비용이 크다 클라우드 서버의 하드웨어 부분은 빌려서 사용하고, 소프트웨어적인 부분만 직접 관리하는 방식 대부분의 클라우드 서비스들은 가동시간 기준으로 결제가 되는 시스템 서버리스 클라우드 서비스 업체가 특정 코드를 실행하는 데 필요한 컴퓨팅 리소스와 스토리지만 동적으로 할당한 다음 그 부분에 대해서만 비용을 청구하는 클라우드 실행 모델 개발자가 서버리스에 업로드한 함수는 24시간 내내 돌아가는게 아닌 휴면 상태에 들어간다. 그러다가 사용자 요청이 오는 순간 서버리스는 잠들어 있는 함수를 깨우고 실행시켜 요청한 작업을 수행하게 한다. 그리고 다시 함수는 잠에 들게 한다. 대기상태를 ..
· 기본
프록시 서버(Proxy Server) 클라이언트와 서버 사이에서 데이터를 전달해주는 서버 데이터 캐싱을 목적으로 많이 사용된다 클라이언트는 빠른 응답을, 서버는 부하 감소를 얻을 수 있다. 하지만 캐시 히트가 적은 경우 거쳐야할 단계가 더 늘어나서 오히려 느려질 수 있다 포워드 프록시 서버(Forward Proxy Server) 내부 클라이언트들의 요청을 받아서 외부 서버에서 데이터를 받아와서 클라이언트에게 응답해주는 서버 외부에 요청을 보내는 주체는 프록시 서버이기 때문에 클라이언트의 IP와 같은 정보가 숨겨진다 내부에서 보내는 요청들을 프록시 서버에서 관리할 수 있다 리버스 프록시 서버(Reverse Proxy Server) 클라이언트는 서버에 요청하는 것이 아닌 프록시로 요청하게 되고, 프록시가 서..
시작 Highlighters에서 extension을 통해서 feed를 생성하면 다른 그룹원들에게 notification이 가는 기능을 구현하고자 한다. HTTP 기본적으로 client와 server는 http로 통신을 한다. http는 client에서 server에 request를 보내주면 그에 맞춰 server가 client에게 response를 전달하는 방식이다. server는 response를 보내면서 client와의 연결을 끊어버리고(connectionless), client의 상태를 보존하지 않는다(stateless). 그렇기 때문에 http 방식으로는 server가 먼저 client에 data를 전송할 수 없다. push notification은 특정 이벤트가 발생했을 때 그에 대한 정보를 s..
초혼
'분류 전체보기' 카테고리의 글 목록 (6 Page)