기초다지기

    [Java] 변수

    [Java] 변수

    1. 변수 1. 변수란 ? 단 하나의 값을 저장할 수 있는 메모리 공간 2. 변수의 선언과 초기화 int age; // 변수의 선언 age = 25; // 변수의 초기화 변수 타입 : 변수에 저장될 값이 어떤 타입인지를 지정해주는 것 (정수형, 실수형, 문자형 등등..) 변수 이름 : 메모리 공간에 이름을 붙여준 것 → 변수를 선언하면, 메모리의 빈 공간에 ' 변수 타입에 알맞은 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 '변수 이름'을 통해 사용 가능 🐯 왜 변수를 선언한 이후 반드시 변수를 초기화 해주어야될까? 메모리는 여러 프로그램이 공유하는 자원이다. 전에 다른 프로그램에 의해 저장된 garbage value가 남아있을 수 있기 때문에 반드시 초기화 해주어야 한다!! 3. 변수의 명명규칙 ..

    안드로이드 앱의 핵심 요소

    안드로이드 액티비티 안드로이드 앱은 액티비티라는 컴포넌트가 하나 이상 결합되어 생성된다. 액티비티는 앱의 기능을 갖는 단일의 독립 실행형 모듈이다. (리눅스의 프로세스로 실행됨) 하나의 사용자 인터페이스 화면 및 그 기능과 밀접하게 연관된다. 재사용과 교체 가능한 구성요소로 만들어져서 서로 다른 앱에서 공유할 수 있다. (새로운 이메일 액티비티를 작성하지 않고 기존 이메일 앱의 액티비티를 이용할 수 있음) 안드로이드 Activity 클래스의 서브 클래스로 생성되어야 하며, 앱의 다른 액티비티와 완전히 독립적으로 구현 되어야 함 액티비티는 다른 액티비티의 함수를 직접 호출할 수 없고, 데이터도 직접 액세스 할 수 없음 ( 그럼 어떻게 하라고 → 인텐트와 콘텐트 제공자를 사용해서 액티비티를 공유해라) 안드로..

    [Java] 자바 그리고 JVM

    [Java] 자바 그리고 JVM

    자바 언어의 특징 1. 운영체제에 독립적이다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이다. 자바 프로그램은 JVM하고만 통신하고 JVM이 자바 응용 프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달함 2. 객체지향 언어이다. 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체 지향 언어이다. 3. 자동 메모리 관리 (Garbage Collection) 가비지 컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다. 4. 네트워크와 분산처리를 지원한다. 5. 멀티 쓰레드를 지원한다. 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당함 6. 동적 로딩을 지원한다. 실행 시에 모든 클래스가 로딩되지 않고 ..

    인덱스

    인덱스

    인덱스 인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료구조이다. 테이블 내의 1개의 컬럼 혹인 여러 개의 컬럼을 이용하여 생성될 수 있다. 🐶 장점 : 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있음, 전반적인 시스템의 부하를 줄일 수 있음 🐱 단점 : 인덱스를 관리하기 위해 데이터베이스의 약 10%에 해당하는 저장공간이 필요함, 인덱스를 관리하기 위해 추가 작업이 필요함, 인덱스를 잘못 사용할 경우 오히려 승능이 저하되는 역효과 발생 가능 인덱스를 사용하는 것만큼이나 생성된 인덱스를 관리해주는 것도 중요하다. 그렇기 때문에 사용하지 않는 인덱스를 사용하면 좋은 경우 규모가 작지 않은 테이블 INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼 J..

    관계 데이터 연산

    관계 데이터 연산

    관계 대수와 관계 해석의 차이? 관계 대수와 관계 해석은 원하는 결과를 얻기 위한 처리 절차를 얼마나 자세히 기술하느냐에서 큰 차이를 보인다. 관계 대수 : 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어 관계 해석 : 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어 관계 대수와 관계 해석을 공부하는 이유? 새로운 데이터 언어가 제안되면 해당 데이터 언어의 유용성을 검증해야 하는데 검증의 기준 역할을 하는 것이 관계 대수와 관계 해석임. 기술할 수 있는 모든 질의를 새로 제안된 데이터 언어로 기술할 수 있으면 관계적으로 완전하다고 하고 이를 통해 해당 언어가 어느정도 검증됐다고 판단함. 그중 관계 대수에 대해서 알아볼 예정이다. 관계 대수 관계 ..

    연결리스트

    연결리스트

    연결리스트는 차례로 연결된 노드를 표현해주는 자료구조이다. 배열과 달리 특정 인덱스를 상수 시간에 접근할 수 없다. linked list 장점 : Linked list의 길이를 동적으로 조절 가능, 데이터의 삽입과 삭제가 쉬움 linked list 단점 : 임의의 노드에 바로 접근할 수 없음, 다음 노드의 위치를 저장하기 위한 추가 공간이 필요함, Cache locality를 활용해 근접 데이터를 사전에 캐시에 저장하기가 어려움, 거꾸로 탐색하기 어려움 Runner 기법 Runner(부가 포인터라고도 함)는 연결리스트 문제에서 많이 활용되는 기법으로 연결리스트를 순회할 때 두 개의 포인터를 동시에 사용하는 것이다. 이때 한 포인터가 다른 포인터보다 앞서도록 하는데 앞선 포인터가 따라오는 포인터보다 항상 ..

    관계 데이터 모델

    관계 데이터 모델

    관계 데이터 모델의 기본 용어 1. 속성(attribute) : 릴레이션의 열, 해당 파일의 필드에 대응하는 개념 2. 튜플(tuple) : 릴레이션의 행, 해당 파일의 레코드에 대응하는 개념 3. 도메인(domain) : 모든 값의 집합을 해당 속성의 도메인 (Integer, Varchar(10)과 같이 값이 가질 수 있는 범위 및 집합) 4. 널 값 : 릴레이션에 있는 특정 튜플의 속성 값을 모르거나, 적합한 값이 없는 경우 null이라는 특별한 값을 사용할 수 있음 5. 차수 : 하나의 릴레이션에서 속성의 전체 개수, 모든 릴레이션은 최소 1 이상의 차수를 유지해야함, 일반적으로 자주 변하지 않는다는 정적인 특징 6. 카디널리티 : 하나의 릴레이션에서 튜플의 전체 개수, 일반적으로 자주 변한다는 동..

    운영체제란?

    운영체제란?

    왜 운영체제를 공부하는가? 거의 모든 코드가 운영체제 위에서 실행되므로 운영체제 작동방식에 대한 지식은 적절하고 효율적이며 효과적이며 안전한 프로그래밍에 중요하기 때문이다. 운영체제란 무엇인가? 컴퓨터의 하드웨어를 관리하는 소프트웨어다. 운영체제는 또한 응용 프로그램을 위한 기반을 제공하며 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행한다. 운영체제가 할 일 1. 사용자 관점 : 사용되는 인터페이스에 따라 달라진다. 한 사용자가 자원을 독점하도록 설계되었으며 목표는 사용자가 수행하는 작업을 최대화하는 것, 이러한 경우 운영체제는 대부분 사용의 용이성을 위해 설계되고 성능에 약간 신경을 쓰고 다양한 하드웨어와 소프트웨어 자원이 어떻게 공유되느냐의 자원의 이용에는 전혀 신경을 쓰지 않음 2. ..

    해시 테이블

    해시 테이블

    해시 테이블은 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료구조이다. 해시 테이블의 시간 복잡도는 O(1)이다. 키와 값을 해시 테이블에 넣을 때 거치는 과정 키의 해시 코드를 계산 해시 코드를 이용하여 배열의 인덱스를 구함 배열의 각 인덱스에 키와 값으로 이루어진 연결 리스트가 존재 해시 함수의 두가지 성질 입력 원소가 해시 테이블 전체에 고루 저장되어 있어야 함 계산이 간단해야 함 ⭐️ 첫번째 성질이 중요: 이 성질을 잘 만족해야 서로 다른 두 원소가 한 주소를 놓고 충돌할 확률이 작아짐 해시 함수를 만드는 두 가지 방법 나누기 방법 : 해시 테이블 크기보다 큰 수를 해시 테이블 크기 범위에 들어오도록 수축시킴 h(x) = x mod m ⭐️ 여기서 m은 테이블의 크기..