CS 89

MySQL SYSDATE(), now()의 차이점

* SYSDATE() 함수가 실행될 때의 시간을 리턴한다. * NOW() 현재의 날짜와 시간을 리턴한다. * 추가적인 설명 SYSDATE() : 트랜잭션이나 쿼리 단위에 관계 없이, 그 함수가 실행되는 시점의 시각을 리턴한다. 따라서 위의 예시를 보면, 실행한 시각을 출력하는 것을 볼 수 있다. NOW() : 하나의 트랜잭션으로, now() 함수가 실행된 첫 시각을 리턴한다. 따라서 위의 예시를 보면, 실행한 첫 시각만을 출력하는 것을 볼 수 있다. 출처 - https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions 12..

CS/database 2022.03.20

Thread-safe의 의미

* Thread 쓰레드라는 것은 현재 cpu가 어디를 수행하는지를 알려주는 Program Counter를 여러개 두는 것이다. 쓰레드가 없을 때에는 프로세스 하나 당 Program counter도 하나만 있다. 그렇지만 쓰레드가 존재한다면, 프로세스 안에도 Program Counter도 쓰레드의 수만큼 존재하게 된다. 쓰레드의 존재 이유는 경제성에 있다. 쓰레드는 Program Counter를 제외하고 프로세스의 code section, stack space와 같은 다른 영역을 공유하게 되면서 경제성을 추구할 수 있다. 쓰레드를 사용하면 병렬성이 좋아지고, 자원이 절약된다. * Thread-safe Thread-safe란 멀티 스레드 프로그래밍 환경에서 모든 스레드가 올바르게 작동하고 여러 개의 스레드가..

CS/operating system 2021.08.10

Coding Convention

* Coding Convention 코드 개발의 품질에는 코드를 작성할 떄 규칙을 준수하는 것이 중요하다. 코딩 컨벤션은 형식 지정 뿐만 아니라 선택한 프로그래밍 언어 및 선택한 개발 프레임워크에 대한 코딩 규칙에 따라 결정되는 많은 요소에도 적용된다. Coding Convention은 다음과 같은 항목에 적용된다. 이름 짓는 방식과 변수 이름 등 식별자에 사용되는 대소문자 Camel 표기법으로 할것인지, Pascal 표기법, snake 표기법 등의 표기법 블록의 들여쓰기 스타일 - 탭을 쓸 것인지, 너비는 어떻게 할 것인지 등 대괄호 배치 방법 - 메소드 바로 옆에 붙일 것인지 한 줄 띄고 붙일 것인지 클래스 및 인터페이스 선언 등.... 그렇다면 coding convention은 왜 사용하여야 할까?..

HTTP(Hyper Text Transfer Protocol)

* HTTP(Hyper Text Transfer Protocol) HTTP는 웹 상에서 정보를 주고받을 수 있는 프로토콜이다. 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들어 클라이언트(웹 브라우저)가 HTTP를 통하여 서버에게 웹페이지(HTML)을 요청하면 서버는 요청에 응답하여 필요한 정보를 클라이언트에게 전달한다. 주로 TCP를 사용한다. 클라이언트는 서버에게 요청 메시지를 전달하며 서버는 응답 메시지를 보낸다. 클라이언트가 서버에게 보내는 요청 메시지는 다음과 같다. 요청 내용 보기) GET /images/logo.gif HTTP/1.1 헤더 보기) Accept-Language: en HTTP 메소드 요약 HTTP 메소드에 대해서는 따로 포스..

CS/network 2021.07.24

CHAR VS VARCHAR

* CHARACTER(s): CHAR 고정 길이 문자열 정보(Oracle, SQL Server 모두 CHAR로 표현한다. 이는 CHARACTER(s)의 줄임말이다 s는 기본 길이 1바이트, 최대 길이 Oracle 2,000바이트, SQL Server 8,000바이트를 가진다. s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당된 변수 값의 길이가 s보다 작은 경우에는 그 차이 길이만큼 공간으로 채워진다. 예) char(1000)인데 저장된 변수의 길이가 10이라면 나머지 990은 공백공간. -> 비효율적 * VARCHAR(s) CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2로 표현, SQL Server는 VARCHAR로 표헌한다.) s는 최소 길이 1..

CS/database 2021.07.20

에라토스테네스의 체

* 에라토스테네스의 체 고대 그리스의 수학자인 에라토스테네스가 발견한 소수(1과 자기자신으로만 나누어지는 수)를 찾는 방법이다. 내용은 다음과 같다. - 알고리즘 1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 2. 2는 소수이므로 오른쪽에 2를 쓴다. 3. 자기 자신을 제외한 2의 배수를 모두 지운다. 4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. 5. 자기 자신을 제외한 3의 배수를 모두 지운다. 6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. 7. 자기 자신을 제외한 5의 배수를 모두 지운다. 8. 위 과정을 계속 반복하면 원하는 구간의 모든 소수가 남는다. 이 때, 100까지의 소수를 구할 때 어디까지 위의 방법을 반복해야 할까? 예를 들어서 17의 배..

CS/algorithm 2021.07.19

Cache (캐시)

사실 컴퓨터구조 글이지만 카테고리 만들기 뭐해서 그냥 운영체제 카테고리에 작성한다. * Cache(캐시)? 데이터나 값을 미리 복사해놓는 임시 장소이다. 원래 데이터 저장 장치에서 데이터를 불러오는 것보다 캐시 접근 시간은 훨씬 빠르다는 장점이 있다. 또한 값을 다시 계산하는 시간을 절약하고 싶을 때 사용한다. 캐시에 데이터를 미리 복사해높으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근이 가능하다. 기본적으로 데이터를 미리 복사하여 저장해두는 메모리를 의미한다. 휘발성의 성질을 갖는다. * CPU 캐시 대용량의 메인 메모리 접근을 빠르게 하기 위해 CPU 칩 내부나 바로 옆에 탑재하는 작은 메모리이다. 메모리 접근 속도가 늘어나는 것에 비해 CPU의 처리 속도가 훨씬 빠르게 일어나고 있기 때..

CS/operating system 2021.07.14

HTTP 요청 Method

HTTP는 요청 메소드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 각각의 메소드는 서로 다른 의미를 구현하지만, 일부 기능은 메소드 집합 간에 서로 공유하기도 한다. * HTTP 요청 Method의 종류 * GET 서버에 존재하는 정보를 요청한다. 이 때 반환되는 정보는 정보가 아니라 특정 정보(리소스)의 표시(표현)이다. GET을 사용하는 요청은 오직 데이터를 받기만 한다. 캐싱을 수행하기 때문에 캐싱되지 않는 요청은 GET 요청 메소드가 적합하지 않을 수 있다. * HEAD GET 메소드의 요청과 동일한 응답을 요구하지만, RequestBody를 포합하지 않는다. header만 가져온다. * POST 서버에 정보를 생성하는 것을 요청한다. 서버 상태의 변화를 일으킨다. Reques..

CS/network 2021.07.13

Agile 애자일

* 애자일(Agile)? 폭포수 모델등의 고전적인 방법론과의 가장 큰 차이는 적은 문서를 지향하고, 실제 개발(실용적인 측면을 강조한 개발 방법론)을 지향하는 방법이다. 애자일 방법론 장단점 소프트웨어 개발 각 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서, 요구사항을 더하거나 수정하면서 소프트웨어를 완성해 나간다. 커다란 소프트웨어를 개발하는데 요구사항 분석이나 설계를 완벽하게 하기 어려울 때 적합한 개발 방법론이 될 수 있다. 그리고 적은 문서 작성을 목표하고 실제 개발을 지향하는 방법론이기 때문에 실제 작동하는 소프트웨어는 기존 폭포수 모델 방법론과 다르게 빠르게 확인 할 수 있다는 장점 또한 있다. 하지만 실용적인 측면에서 개발하기 때문에, 체계화된 문서가 적을 수 있다는 단점이 ..

Hash (해쉬)

* Hash? 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 특징: 뭘 넣든 비슷한 길이의 알 수 없는 난수가 결과로 출력된다. 글자가 한 글자만 바뀌어도 완전히 다른 결과가 출력된다. 출력값으로 임의의 값을 예측할 수 없다. 같은 내용을 입력 값으로 주면 결과값은 언제나 같다. 이를 이용해 해시 테이블이라는 자료구조를 사용할 수 있으며 해시 값 자체를 index로 사용한다. 따라서 시간 복잡도는 O(1)로 매우 빠른 데이터 검색이 가능하다. * Hashing 과정 키(Key) ----> 해시 함수(hash function) ----> 해시값(hash value) [이름] [해싱과정] [index(hash value) : data] * 키(key) : 매핑 전 원래 데이터의 값 * 해시..

CS/algorithm 2021.07.10