반응형
반응형

📝프로세스

단순히 실행 중인 프로그램으로 프로세스는 단순한 껍데기일 뿐, 실제 작업은 스레드가 담당

 

📝스레드

프로그램은 여러 스레드로 돌아가고 있다 일반적으로 메인 쓰레드가 있고 내가 임의대로 만들어서 사용할 수도 있다 그러면 병렬적으로 처리하는 효과로 빠르게 처리가 가능하다.

 

📝멀티스레드

하나의 프로세스 내에서 다수의 스레드가 동시에 수행되는 것이다

 

📝동기식

순서대로 처리하는 것이고 (일반적으로 프로그래밍 동작과정)

 

📝비동기식

순서대로가 아닌 방식으로 처리한다 (멀티스레드)

 

📝동적

자동으로 자발적으로 해준다.

 

📝정적

수동으로 해줘야하는 것

반응형
반응형

📝MariaDB

오라클은 MySQL을 인수하면서 상업적으로 MySQL을 이용할 시 사용료를 내도록 정책을 바꾸어 버렸습니다

그러나 오라클의 정책에 반발한 AB사에서 핵심 창업자중 한 명이었던 몬티 와이드니어스가 2009년 동료들과 나와 MySQL코드 기반으로한 오픈소스 RDBMS를 개발한 것이 지금의 MariaDB입니다

상용으로 사용하기 위해서 돈을 내야하는 MySQL과 다르게 (교육용, 개발용은 상관 없음) MariaDB는 무료로 사용할 수 있습니다

그래서인지 오픈소스와 친숙한 리눅스(linux) 진영에서는 MySQL 대신에 MariaDB를 표준으로 채택하고 있습니다 MariaDB사가 제작한 오픈소스 RDMBS 소프트웨어입니다

 

 

📝데이터베이스

여러 사용자가 공유하고 동시에 접근가능한 데이터의 집합을 의미한다

 

  1. 오류가 있어서는 안되고 중복되면 안 된다 (데이터의 무결성)
  2. 파일 저장소가 변경하더라도 작성된 응용 프로그램은 전혀 영향을 받지 않는다 (데이터의 독립성)
  3. 접근이 허가된 사람만 접근 (보안)
  4. 데이터의 중복을 최소화 할 수 있다. (데이터 중복 최소화)
  5. 유지보수가 쉽다
  6. 데이터 손상이 발생해도 원래 상태로 복원 또는 복구할 수 있다

 

📝RDBMS (관계형 데이터베이스)

데이터베이스는 테이블이라는 최소 단위로 구성되어 있습니다.

 

아이디 회원 이름 주소
Dang 당탕이 경기도 부천시 중동
Jee 지운이 서울 은평구 중산동

 

📝CRUD

  • Create , Read , Update, Delete의 약어이다
    • CRUD를 구현하는게 기본적이다.

 

예를 들어서 게시판의 경우 게시글을 등록(Create) 게시글을 삭제(Delete) 게시글을 변경(Update) 게시글을 읽기(Read)

또한 아이디 생성, 아이디 삭제, 아이디 정보변경, 아이디 접속 같은 경우이다

따지고보면 무조건 들어가는 부분이다 그래서 게시글 CRUD구현하셨어요? 이렇게 물어본다고 한다.

 

  • Create
    • POST메서드를 사용해 서버에 정보 올려달라는 요청
  • Read
    • GET 메서드를 사용해 정보를 불러오는 요청
  • Update
    • PUT, PATCH 메서드정보를 바꾸는 요청
  • Delete
    • DELETE 메서드를 사용해 리소스 삭제
반응형
반응형

📝공통점 (C와 C++)

  1. Unix 운영체제의 개발을 위해 만들어졌고 프로그래밍 하는데 있어 제한점이 거의 없다
  2. 실행 속도가 빠르다
  3. 하드웨어에 밀접한 관계가 있다
  4. CPU의 속도나 메모리의 용량이 충분하지 않았기 때문에 프로그램의 크기는 작아야 했고 속도는 빨라야 해서 개발 되었다

 

📝차이점 (C와 C++)

  1. C++은 C보다 개발이 훨씬 유용하다(객체지향)
  2. C는 처리속도가 C++보다 빠르다

 

📝C

프로세싱파워가 약하고 공간을 적게쓰는 특징이 있다 기계어에 가까워 수동이며 기계가 빨리작동한다

유닉스(운영체제) 개발용 언어로 개발되었다 운영체제는 거의 C언어로 만들어졌다 (이식성이 강함) 컴파일 과정이 단축

 

📝C++

C에 확장판 Class의 차이가 있다 기계어에 가까워 수동이며 기계가 빨리작동한다

 

📝C#

Java랑 비슷하다 기업용 언어 수동으로 이루어지지 않는다. 개발속도가 빠르다 (편리함)

반응형
반응형

📝Float vs Double

  • float 4바이트 실수형 < double 8바이트 실수형
  • double이 정밀도 높다(소수를 더 많이 표현 가능)

 

📝실수타입 vs 정수타입

  • 정수타입이 정수 처리가 실수처리보다 10배 빠르다

 

📝아스키코드

문자와 정수가 1대1로 연결된 코드 체계 (영어만 있다) 7비트로 한 문자 표현 1비트는 패리트비트를 써서 총 8비트

( 예 ) A를 저장할시 65를 저장합니다. )

 

  • (A~Z) 26 + (a~z) 26 + (0~9) 10 = 62 + 66 (특수문자) + (회사별 국가별) 128
  • 256 = 2^8 = 1byte한 문자를 처리하는데 필요한 경우의 수를 처리 가능합니다.
  • 128 ~127 (들어갈 수 있는 정수 범위) (8비트)

 

  • binary digit (bit)
    • 0 또는 1로 표현 함 2진수 → 010000101(2)



📝Bus

메모리와 cpu 사이 통로로 속도를 관여한다

 

📝버퍼 메모리

데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역으로 출력장치의 느린 속도 보완 실행과 동시에 다음 레코드를 미리 읽어서 주기억 장치에 저장함으로써 cpu가 필요한 레코드를 기다림이 없도록 하는 것

 

 

📝캐시

데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. (CPU와 주기억 장치 속도 차이 극복을 위해서) 

캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다

CPU 속도가 상대적으로 100으로 처리하면 다른곳에서 받는데 10속도가 걸려서 노는 시간이 생기므로 노는 시간을 없애준다

레지스터와의 차이는 레지스터의 경우 명령어들을 올려놓고 처리하기 위해 대기하는 거라면 캐시의 경우는 이미 처리했던 명령어이거나 데이터의 정보를 가지고 있기 때문에 빠르게 접근해서 원하는 결과값을 빠르게 줄 수 있다.

반응형
반응형

📝Java의 특징과 역사

Java의 특징에 대해서 알아봅시다. 프로그래밍언어로서 언어중에 탑3안에 들정도로 핫하죠

 

썬마이크로시스템즈사에서 한 번 쓰고 어느곳에도 실행 할 수 있게 하기 위해서 만들었고 웹과 인터넷의 출현으로 자바의 초점은 인터넷으로 옮겨지게 되었습니다.

썬마이크로시스템즈는 오라클과 인수합병 되었고 오라클로 넘어가게 되었습니다.

 

💗 장점

  1. C++과 같은 객체지향 언어 여러 방면 사용가능하다
  2. 이식성이 높다 (리눅스 , 유닉스 바로 호환가능) [플랫폼 독립적]
  3. 메모리를 자동으로 관리한다. (가비지컬렉터)
  4. 멀티스레드를 쉽게 구현 가능하다
  5. 동적로딩을 지원한다. 유지보수가 빠르고 쉽게 진행 할 수 있다 → 실행시 모든 객체 생성이 아니라 필요한 시점에서 로딩 해 객체 생성한다.
  6. 오픈소스 라이브러리가 풍부해 쉽게 개발한다.
  7. 자바는 바이트코드(.class)로 저장하기 때문에 그걸 실행하기 위해 JVM이 필요합니다 자바의 목표가 여러 환경에서 실행 가능하게 하기 위해 그렇게 저장합니다 즉 플랫폼 환경에 맞는 가상머신이 있다면 여러가지 환경에서 사용 가능합니다.

 

⚠️ 단점

  1. 자바는 실행을 위해 가상머신을 거쳐 다른 언어에 비해 실행속도가 느리다
  2. 예외처리는 잘 되어 있지만 일일이 처리해 줘야하는 불편한 점이 있다.
  3. 다른 언어에 비해 코드 길이가 긴 편이다

 

📝자바 라이프사이클

  1. 소스코드 작성
  2. 컴파일 →  바이트 코드로 변환
  3. 클래스 로딩 클래스 로더가 .class 파일을 JVM에 올려 놓는다
  4. 바이트코드 검증바이트 코드 로딩 후 JVM 내부에서 유효성 검사를 해서 유효하지 않으면 실행하지 않는다
  5. Just-In-Time (JIT) 자바 바이트 코드를 실행하는데 일반적으로 인터프리터 방식을 사용하는데 이럴 경우 한줄 씩 읽으면서 실행하기 때문에 실행 속도가 느리다. 이를 해결하기 위해 JIT 컴파일러를 도입 후 속도에 대한 이슈를 해결했다 인터프리터 대신 바이트코드를 네이티브 코드(기계어)로 변환시킨다
  6. 실행위 과정을 통해 변환된 기계어 코드는 JVM에서 실행됩니다
  7. 메모리관리 → JVM주기적으로 체크하며 메모리 효율 및 누수 등의 문제를 방지합니다.
  8. 종료 → 자바 프로그램이 실행을 마치면 JVM은 자원을 해제하고 종료시킵니다.

 

  • 부트스트랩 클래스 로더 (Bootstrap Class Loader)
    • JVM을 실행시키기 위한 핵심 클래스들을 로딩합니다.
  • 확장 클래스 로더 (Extension Class Loader)
    • 자바의 확장 클래스들을 로딩합니다. [Java9 이후 Platform Loader로 변경]
  • 시스템 클래스 로더 (System Class Loader)
    • $CLASSPATH에 설정된 경로를 탐색해 로딩합니다 [일반적으로 우리가 만든 클래스 파일을 로딩]

 

출처 :https://engkimbs.tistory.com/606

 

 

📝레지스터 구조

 

CPU는 RAM과 연결되어 있지만 보조기억장치에 바로 엑세스 불가능합니다.

CPU는 메모리에 있는 정보를 가져와서 CPU에서 처리후 메모리로 다시 보낸다

 

  • register
    • CPU에 해당 부분으로 엄청 빠르게 처리한다 [특정한 목적에 사용되는 일시적인 기억 장치]
    • 32bit =  = 4byte = 42억.... ( 1byte = 256 표현가능 ) 4바이트인 int형은 –21억 ~ 21억까지 표현 가능 → 한번에 429...을 처리 가능하다 그 값을 넘을 경우 register를 합쳐서 사용한다
    • 8비트 컴퓨터 한번에 8비트를 처리가능 -128 ~ 127 를 한번에 처리 가능 101011 이런식 16bit이면 300000000 + 40 을 처리할 때 레지스터가 16bit라서 범위를 넘어서 두개를 합쳐서 써야한다


레지스터는 명령어 등을 저장하는 임시공간이다. (RAM 역할을 하고 있다고 생각하면 됨)

 

   

 

📝C++ 메모리 구조

무슨 종류냐에 따라 저장되는 구조가 다릅니다.

 

 

🔗 참고 및 출처

https://engkimbs.tistory.com/606

https://yozm.wishket.com/magazine/detail/1979/

반응형