[Java] 프로세스와 스레드 - 1
·
BackEnd/Java
프로세스와 스레드멀티태스킹과 멀티프로세싱만약 프로그램을 두개 이상 동시에 실행한다고 가정해보자. 연산을 처리할 수 있는 cpu 코어는 1개만 있다고 가정한다. 하나의 cpu 코어가 매우 빠르게 두개의 작업을 번갈아 가면서 처리하게 되면 사람은 이것이 같이 동시에 실행된다고 느끼게 된다. 이렇게 각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할 기법이라고 한다. 그리고 이렇게 하나의 컴퓨터 시스템이 동시에 여러 작업을 수행하는 것을 멀티태스킹 이라고 한다. cpu에 어떤 프로그램이 얼마만큼 실행될지는 운영체제가 결정하는데 이것을 스케줄링 이라고 한다. 이때 단순히 시간으로만 작업을 분할하지는 않고, cpu를 최대한 활용할 수 있는 다양한 우선순위와 최적화기법을 사용한다...
[Java] 컬렉션 프레임워크 와 배열, 리스트
·
BackEnd/Java
배열과 같이 여러 데이터(자료)를 구조화해서 다루는 것을 자료 구조라 한다.자바는 배열 뿐만 아니라, 컬렉션 프레임워크라는 이름으로 다양한 자료 구조를 제공한다. 배열배열에서 인덱스 사용하면 매우 빠르게 자료를 찾을 수 있다.데이터를 넣거나 뺄때 처음부터 찾는게 아니라 인덱스 번째의 주소 값을 정확하게 입력하여 찾아가면 바로 찾을 수 있고, 그렇기 때문에 인덱스를 이용하면 빠르게 찾을 수 있음배열을 찾는 공식은 다음과 같다배열의 시작 참조 + (자료의 크기 * 인덱스 위치)만약 arr이라는 배열의 3번째 값을 찾는다고 했을때 공식을 적용하면 다음과 같다.(배열은 0번째 부터 시작이기 때문에 3번째가 곧 2번째 인덱스)arr[2] = x100(참조주소 예시) + (4byte(int) * 2) = 108결론..
[CS] 운영체제의 역할과 목표
·
공부중
운영체제 소개임베디드 시스템은 성능이 낮고, 메모리 크기가 작으며, 디스플레이 크기가 작아 특정 작업만 수행하는데, 여기에 사용하는 운영체제를 임베디드 운영체제 라고 부르며, 애플워치의 watchOS, 갤럭시 워치의 wearOS가 임베디드 운영체제에 해당한다.컴퓨터는 데이터로 이루어지고 이 데이터를 처리하고 출력 및 저장을 한다.컴퓨터가 데이터를 처리하면 의미있는 자료가 되는데 이를 정보라고 부르며, 데이터를 가공하여 가치있는 정보로 만드는 모든 기술을 IT라고 부른다 Information Technology운영체제는 모든 소프트웨어의 맨 위에 존재하는 최고의 소프트웨어이다.= 검사 디스크 조각 모음, 압축 프로그램과 같이 운영체제의 작업을 보조하는 역할의 소프트웨어가 등장하였고 이를 유틸리티 라고 부른..
[Java] 예외 계층과 실무에서의 예외 처리 방법
·
BackEnd/Java
언체크 예외는 체크 예외와 기본적으로 동일하다. 차이가 있다면 예외를 던지는 throws를 선언하지 않고 생략 할 수 있다. 생략한 경우 자동으로 예외를 던진다.RuntimeException을 상속받은 클래스는 언체크 예외가 된다.언체크 예외는 컴파일러가 체크 안하기 때문에 throws로 나열하지 않아도 됨.예외도 객체다. 필요한 필드와 메서드를 가질 수 있다.try catch finallytry -> 정상적인 흐름catch -> 예외 흐름finally -> 마무리 흐름finally 선언시 try catch블록의 흐름에 상관없이 finally 안의 로직은 반드시 실행하게 된다.try { client.connect(); client.send(data); } catch (NetworkCl..
[Java] Exception과 throw, throws, try catch 가 언제 사용 되는가
·
BackEnd/Java
저는 이전에 예외를 처리할 때, 그저 컴파일러에서 추천해주는 해결법으로 alt enter 클릭으로 수정하는 것 밖에 안했습니다. 에러를 대응 하는 방법을 잘 몰랐는데 이번에 공부하면서 알게 되었기 때문에 포스팅 합니다.Exception자바의 예외 처리는 다음 키워드를 사용한다.try, catch, finally, throw, throwsObject -> Throwable -> ExceptionRuntimeException을 제외한 Exception을 상속한 예외는 모두 컴파일러가 체크한다RuntimeException은 언체크 예외, 애플리케이션 구동중 발생하는 에러알 수 없는 에러이기 때문에 좋지못하다.예측 불가능한 에러는 좋지못한 에러 -> Unchecked Exception예측 가능한 컴파일 단계에서..
[Java] 추상 클래스와 인터페이스
·
카테고리 없음
좋은 프로그램은 "제약이 있는 프로그램" 이다추상 클래스동물과 같이 부모 클래스를 제공하지만 실제 생성되면 안되는 클래스를 추상 클래스라고 한다.상속을 목적으로 사용되고 부모 클래스 역할을 담당한다. 추상 클래스는 일반 클래스랑은 같은데 new 키워드로 생성이 안된다. 추상 메서드부모 클래스를 상속 받는 자식 클래스가 반드시 구현해야 하는 메서드를 부모 클래스에 정의 추상 메서드가 하나라도 존재하는 클래스는 추상 클래스로 선언해야한다. 추상 메서드는 기존 메서드와 완전히 같지만, 메서드 바디가 없고, 자식 클래스가 메서드를 반드시 오버라이딩 해야한다는 제약이 추가된 것이다. 정리: 추상 클래스는 인스턴스 생성 불가능. 추상 메서드는 추상 클래스 내부에 구현되어야함. 추상 클래스를 상속받은 자식 ..
[Git] Git에 대한 이해와 형상 관리 도구란?
·
공부중
Git 이란?Git은 간단하게 얘기하면 형상 관리 소프트웨어이다.명령어 단위로 이루어진 프로그램이다.Git 특징Git은 빠른 속도, 단순한 구조를 가지며 직관적이고 명확하다.분산형 저장소를 지원하며, 비 선형적 개발이 가능하다.많은 사람이 Git을 어렵게 느끼는 이유중 가장 큰 점은 협업에서 발생한다.Git을 단순 소스코드 버전관리 및 저장소 느낌으로 사용한다면 크게 어렵지 않다.Github기준으로 그냥 git add -> commit -> push해서 사용하면 크게 문제가 없을 것이다.이후 생성된 repository에서 그냥 clone하고 사용하거나 fork하거나 하면 되니까..단순하게 혼자 소스코드를 관리할래 라면 그냥 대충 찾아보고 써도 된다.하지만, Git은 위에도 말했듯이 형상 관리 도구 이다...
[DB] 효율적인 설계를 위해 어떤 SQL을 사용해야 할까? RDBMS vs NoSQL과 DB에서의 수직 확장(scale-up)과 수평 확장(scale-out)
·
BackEnd
1. RDBMS의 장단점 적어보기장점RDBMS는 스키마에 따라 데이터를 정의하기 때문에, 명확한 데이터 구조를 가짐각 데이터들은 중복없이 한 번만 저장하여 무결성을 유지할 수 있음.단점테이블-테이블 간의 쿼리를 작성할때, RDBMS는 JOIN문을 사용하게 되는데, 이 때문에 복잡한 쿼리가 만들어 질 수 있음.외래키를 사용하여 테이블을 구성하는 경우가 매우 빈번하기 때문에, scale-out 즉, 서버를 늘리는 과정이 매우 복잡하고 어려움데이터가 스키마로 정의되어 있기 때문에 유연한 데이터 관리가 힘듬.2. NOSQL의 장단점 적어보기장점NOSQL은 RDBMS의 단점과 반대로 데이터를 스키마로 정의하지 않기 때문에 자유로운 데이터 구조를 가질 수 있으며, 이는 사용자 입장에서 유연한 데이터 관리를 할 수 ..