Computer Science 42

[Programming] Process & Thread 프로세스란? 프로그램은 하드디스크 같은 저장장치에 보관되어 있고 폰노이만 구조에서 프로그램이 실행된다는 것은 해당 코드가 메모리에 올라와서 작업이 진행된다는 의미입니다. 프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태입니다. 쉽게 말해, 프로세스란 실행중인 프로그램입니다. 하나의 CPU 즉 프로세서는 한 순간에 하나의 프로세스만 실행할 수 있습니다. 하지만 우리는 동시에 여러 프로그램을 사용합니다. 이것은 운영체제가 엄청나게 빠르게 CPU가 실행할 프로세스를 교체하고 있기 때문에 동시에 실행되는 것이 아니라 동시에 실행되는 것처럼 보이는 것입니다. 프로세스의 특징 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 (실행중인 프로그램) 메모리에 올.. Computer Science/Programming 2021. 9. 29.
[Docker] VM과 Container Virtual Machine Host OS위에 Guest OS를 가상화하는 방식입니다. 사용법이 간단하지만 각 가상 머신마다 전용 운영 체제가 있기때문에 가상머신에 구축된 애플리케이션을 실행할 때 메모리 사용량이 필요 이상으로 많아져 가상 머신이 호스트에 필요한 리소스를 모두 사용할 수 있습니다. 가상머신이 Host하는 애플리케이션과 함께 전체 운영체제와 관련 도구도 포함하기 때문입니다. 또한 운영 체제를 업데이트하거나 패치할 경우 기존 컴퓨터를 하나씩 업데이트해야 하고 각 게스트 OS를 개별적으로 패치해야 합니다. 하지만 Host OS와 Guest OS가 완벽하게 격리하기 때문에 강력한 보안 경계가 필요할 때 유용합니다. Container VM과 같이 가상화하는 방식은 무겁고 성능 문제가 발생하기에 프.. Computer Science/Programming 2021. 9. 25.
Web Server와 Web Application Server ( Static Pages / 정적 웹 페이지 / Dynamic Pages / 동적 웹 페이지 / 웹 서버 / 웹 앱 서버 / WAS / Container / Servlet / Web Container / Servlet Container) Static Pages (정적 웹 페이지) 저장된 그대로 사용자에게 전달되는 웹 페이지입니다. 서버에 저장된 데이터가 변경되지 않는 한 사용자는 고정된 웹 페이지를 보게 됩니다. 정적 웹 페이지들은 업데이트를 전혀 하지 않거나 거의 할 필요가 없는 내용에 적절합니다. 저장된 데이터만 보여줄 수 있어 서비스가 한정적입니다. 삽입/수정/삭제 등의 작업이 모두 수동적이므로 관리가 힘듭니다. Dynamic Pages (동적 웹 페이지) 서버가 사용자의 요청에 대하여 데이터를 가공한 후 생성되는 웹 페이지입니다. 사용자의 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게 됩니다. 같은 페이지라도 사용자마다 다른 결과의 웹 페이지를 볼 수 있습니다. 웹 사이트의 구조에 따라 삽입/수정/삭제 등의 작업이 용이.. Computer Science/Programming 2021. 9. 17.
[DataBase] 데이터베이스란? 데이터베이스란? 여러사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합입니다. 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있습니다. 데이터베이스의 특징 실시간 접근성 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 합니다. 지속적인 변화 데이터베이스의 상태는 동적입니다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지합니다. 동시 공유 데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 합니다. 내용에 대한 참조 데이터베이스에 있는 데이터를 참조할 때.. Computer Science/DataBase 2021. 9. 4.
Clean Architecture Robert C. Martin는 책에서 설계적인 측면에서 좋은 소프트웨어 설계는 필요한 시스템을 만들고 유지보수하는데 투입되는 비용을 최소화하는데 있다고 이야기 합니다. 좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작합니다. 좋은 아키텍쳐를 정의하는 원칙으로 SOLID 원칙을 들고 있습니다. SOLID 원칙의 목적은 중간(모듈) 수준의 소프트웨어 구조가 변경에 유연하며, 이해하기 쉽고, 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 되도록 하는데 있다고 합니다. #정책# 좋은 아키텍쳐의 목표는 시스템에서 정책을 가장 핵심적인 요소로 식별하고, 동시에 세부사항은 정책에 무관하게 만들 수 있는 형태로 구축하는 것이라고 이야기 합니다. 예를 들자면, 개발 초기에 데이터베이스가 어떤 데이터베이스인지.. Computer Science/Programming 2021. 8. 31.
[Design Pattern] Proxy Pattern 프록시는 대리인이라는 뜻으로 무엇인가를 대신 처리하는 의미입니다. 프록시 패턴은 프록시를 사용하는 방법 중에서 타깃에 대한 접근 방법을 제어하려는 목적을 가진 경우를 가리킵니다. 프록시 패턴의 프록시는 타깃의 기능을 확장하거나 추가하지 않습니다. 대신 클라이언트가 타깃에 접근하는 방식을 변경해주는 역할을 합니다. 타깃 오브젝트를 생성하기가 복잡하거나 당장 필요하지 않은 경우에는 꼭 필요한 시점까지 오브젝트를 생성하지 않는 편이 좋습니다. 그런데 타깃 오브젝트에 대한 레퍼런스가 미리 필요할 수 있습니다. 이럴 때 프록시 패턴을 적용하면 됩니다. 클라이언트에게 타깃에 대한 레퍼런스를 넘겨야 하는데, 실제 타깃 오브젝트는 만드는 대신 프록시를 넘겨주는 방식입니다. 그리고 프록시의 메소드를 통해 타깃을 사용하려.. Computer Science/Design Pattern 2021. 8. 18.
[Window] 환경변수 설정 1. 내 PC -> 속성 2. 고급 시스템 설정 3. 고급 탭 -> 환경 변수 4. 시스템 변수 탭 -> Path -> 편집 5. 새로 만들기 -> 환경변수 지정할 경로 설정 -> 확인 -> 확인 -> 적용 ex) Java : [자바 설치 경로]\bin MySQL : [MySQL 설치 경로]\bin OpenSSL : [OpenSSL 설치 경로]\bin Computer Science/Programming 2021. 8. 13.
[MySQL] DELETE DELETE는 행 단위로 삭제합니다. WHERE이 생략되면 전체 데이터를 삭제합니다. //예시 테이블// CREATE TABLE person ( name VARCHAR(5) NOT NULL, -- ex) 홍길동 height INT NOT NULL, -- ex) 178 address VARCHAR(2) NOT NULL -- ex) 서울, 경기, 강원, 경남, 경북, 전남, 전북, 충청 ); DELETE FROM [테이블 이름] WHERE [조건] -> DELETE FROM person WHERE height > 170 -> DELETE FROM person WHERE height > 170 LIMIT 5 출처 이것이 MySQL이다 Computer Science/DataBase 2021. 8. 10.
[MySQL] UPDATE 기존에 입력되어 있는 값을 변경하기 위해서 UPDATE문을 사용합니다. UPDAT도 사용법은 간단하지만 주의할 사항이 있습니다. WHERE은 생략이 가능하지만 WHERE을 생략하면 테이블의 전체의 행이 변경됩니다. //예시 테이블// CREATE TABLE person ( name VARCHAR(5) NOT NULL, -- ex) 홍길동 height INT NOT NULL, -- ex) 178 address VARCHAR(2) NOT NULL -- ex) 서울, 경기, 강원, 경남, 경북, 전남, 전북, 충청 ); UPDATE [테이블 이름] SET [열1 = 값1, 열2 = 값2, ...] WHERE [조건] -> UPDATE user SET name='김동환', height=178 WHERE name.. Computer Science/DataBase 2021. 8. 10.
[MySQL] INSERT INSERT는 테이블에 데이터를 삽입하는 명령어 입니다. //예시 테이블// CREATE TABLE person ( name VARCHAR(5) NOT NULL, -- ex) 홍길동 height INT NOT NULL, -- ex) 178 address VARCHAR(2) NOT NULL -- ex) 서울, 경기, 강원, 경남, 경북, 전남, 전북, 충청 ); 하지만, 생략할 경우에 VALUES 다음에 나오는 값들의 순서 및 개수가 테이블이 정의된 열 순서 및 개수와 동일해야 합니다. 열의 순서를 바꿔서 입력하고 싶을 땐 꼭 열 이름을 입력할 순서에 맞춰 나열해 줘야 합니다. INSERT [INTO] [테이블 이름(열1, 열2, 열3, ...)] VALUES (값1, 값2, 값3, ...) -> INSE.. Computer Science/DataBase 2021. 8. 10.