전체 글 135

[DataBase] 무결성 데이터 무결성이란 데이터의 정확성과 일관성을 유지하고 보장된 상태를 의미합니다. 여기서 정확성이란 중복이나 누락이 없는 상태라고 말할 수 있습니다. 또 일관성이란 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태라고 설명됩니다. 데이터베이스에서 데이터 무결성이 갖는 중요성은 데이터 가치와 데이터 신뢰성 측면으로 설명할 수 있습니다. 데이터 가치는 업무에서 사용자에게 의미 있는 정보를 제공하는 것이 목적입니다. 또 데이터 신뢰성은 항상 정확하고 오류가 없는 데이터가 데이터베이스에 저장되어 있어 신뢰성 있는 데이터를 제공한다는 의미를 가지고 있습니다. 데이터 무결성 설계를 안 했을 때의 문제점 모든 데이터 무결성을 DBMS로 보장 받을 수 없습니다. 어차피 업무적인 데이터 무결성은 애플리케이션 로직.. Computer Science/DataBase 2021. 10. 28.
[Java] 연산자 ( Operator ) '연산자'는 연산을 수행하는 기호를 말합니다. 우리가 아는 사칙연산 부호를 비롯해서 다양한 연산자들이 존재합니다. 연산자가 연산을 수행하려면 반드시 연산의 대상인 '피연산자'가 있어야 합니다. 상수, 변수 또는 식(Expression)을 '피연산자'로 사용할 수 있습니다. '연산자'와 '피연산자'를 조합하여 계산하고자 하는 바를 표한 것을 식(Expression)이라고 합니다. '피연산자'의 개수로 연산자를 분류하기도 하는데, '피연산자'의 개수가 하나면 '단항 연산자', 두개면 '이항 연산자', 세개면 '삼항 연산자'라고 불립니다. 대부분은 '이항 연산자'이고 삼항은 ' ? : ' 하나뿐입니다. - 3 - 5 위 처럼 식이 존재하는 경우 두개의 연산자가 포함되어 있는데, 둘 다 같은 기호로 나타내지만 .. Language/Java 2021. 10. 23.
[Java] 변수 (Variable) 하나의 값을 저장할 수 있는 메모리 공간입니다. 여기서 메모리 공간은 RAM을 의미합니다. 메모리 공간을 1Byte 단위로 나누고 0부터 연속적인 번호를 부여하였는데 이것을 메모리 주소라고 합니다. 원래 메모리의 값을 저장하거나 읽을 때 메모리 주소를 이용해야하지만 이 메모리 주소는 숫자로 구성되어 사람이 기억하기 불편합니다. 그래서 특정 메모리 영역에 이름을 부여하고 주소대신 이름을 이용하여 메모리의 값을 저장하거나 읽을 수 있게 해주는게 변수입니다. 변수는 단 하나의 값만 저장할 수 있기때문에 변수에 새로운 값을 저장하게 되면 기존에 있던 값은 사라지고 새로 저장한 값만 남게 됩니다. 변수를 선언하는 것은 값을 저장할 공간을 마련하는 것 입니다. 변수의 선언하는 방법은 변수 타입과 변수 이름으로 선언.. Language/Java 2021. 10. 16.
[Algorithm] Vector Vector는 ArrayList와 동일한 내부구조를 가지고 있습니다. ArrayList와 마찬가지로 Vector 내부에 값이 추가되면 자동으로 크기가 조절되며 그다음 객체들은 한 자리씩 뒤로 이동됩니다. 하지만 Vector와 Arraylist의 한가지 다른 점이 있는데 Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드들을 실행할 수 없고, 하나의 스레드가 실행을 완료해야만 다른 스레드들이 실행할 수 있습니다. 그래서 멀티 스레드 환경에서 안전하게 객체를 추가하고 삭제할 수 있습니다. 단점 벡터는 항상 동기화되는 장점이자 단점을 가지고 있습니다. 스레드가 1개일때도 동기화를 하기 때문에 ArrayList보다 성능이 떨어집니다. Arraylist는 기본적인 기능은 벡터와 .. Algorithm 2021. 10. 6.
[Java] SOLID 목적 변경에 유연합니다. 이해하기 쉽습니다. 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 됩니다. SRP (Single Responsibility Principle) : 단일 책임 원칙 클래스는 단 한 개의 책임을 가져야 한다는 원칙으로 클래스가 변경되는 이유는 단 한 개여야 한다는 의미입니다. 응집도는 높고 결합도는 낮은 프로그램을 뜻합니다. 설계를 잘한 프로그램은 새로운 요구사항과 프로그램 변경에 영향을 받는 부분이 적습니다. 변경의 이유가 단 하나여야만 한다라는 것은 하나의 모듈은 오직 하나의 액터만 책임져야 한다는 뜻입니다. 그렇다면 '책임'은 무엇일까요? 해당 클래스에 어떤 '액터'들이 의존하게 되는지를 생각해봐야 올바르게 준수 할 수 있습니다. 여기서 '액터'란 시스템이 동일한 .. Language/Java 2021. 9. 29.
[Java] 객체 지향 언어 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍의 패러다임 중 하나로 객체의 관점으로 프로그램을 설계하는 방법입니다. 작은 문제들을 해결할 수 있는 객체들을 만든 뒤, 이 객체들을 조합해서 큰 문제를 해결하는 상향식(Bottom-Up) 해결법을 도입했습니다. 이 객체란 것을 일단 한번 독립성/신뢰성이 높게 만들어 놓기만 하면 그 이후에 그 객체를 수정 없이 재사용할 수 있으므로 개발 기간과 비용이 대폭 줄어들게 됩니다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소포트웨어 개발에 많이 사용됩니다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 직관적인 코드 분석을 가능하게 하는 장점을 갖.. Language/Java 2021. 9. 29.
[Programming] Process & Thread 프로세스란? 프로그램은 하드디스크 같은 저장장치에 보관되어 있고 폰노이만 구조에서 프로그램이 실행된다는 것은 해당 코드가 메모리에 올라와서 작업이 진행된다는 의미입니다. 프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태입니다. 쉽게 말해, 프로세스란 실행중인 프로그램입니다. 하나의 CPU 즉 프로세서는 한 순간에 하나의 프로세스만 실행할 수 있습니다. 하지만 우리는 동시에 여러 프로그램을 사용합니다. 이것은 운영체제가 엄청나게 빠르게 CPU가 실행할 프로세스를 교체하고 있기 때문에 동시에 실행되는 것이 아니라 동시에 실행되는 것처럼 보이는 것입니다. 프로세스의 특징 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 (실행중인 프로그램) 메모리에 올.. Computer Science/Programming 2021. 9. 29.
[Kotlin In Action] 코틀린이란? Android와 Web Application Server 개발에서 Java를 대체할 목적으로 IDE 전문 개발사인 JetBrains에서 만든 언어입니다. Java를 대체하기 위한 목적으로 개발된 언어로 언어적으로는 최신의 패러다임을 적용하여 Java의 약점을 보완하여 Java에서 사용하는 JVM에서는 호환될 수 있게 만들어졌습니다. 특징 자바와 마찬가지로 정적 타입 지정 언어입니다. 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻입니다. 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없습니다. 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 됩니다.. Language/Kotlin In Action 2021. 9. 29.
[Android] 액티비티의 생명주기 (Activity Lifecycle) Activity 클래스는 활동이 상태 변화(시스템이 활동을 생성, 중단 또는 다시 시작하거나, 활동이 있는 프로세스를 종료하는 등)를 알아차릴 수 있는 여러 콜백을 제공합니다. 개발자는 이러한 생명 주기 콜백 메서드를 통해 Activity의 작동을 제어 할 수 있습니다. 예를 들어 스트리밍 동영상 플레이어를 빌드하는 경우, 사용자가 다른 앱으로 전환할 때 동영상을 일시중지하고 네트워크 연결을 종료하는 행동을 제어할 수 있습니다. 각 콜백은 Activity 상태 변화에 적합한 특정 작업을 실행할 수 있도록 합니다. 적시에 알맞은 작업을 하고 적절하게 전환을 처리하면 앱이 더욱 안정적으로 기능할 수 있습니다. 예를 들어 수명 주기 콜백을 잘 구현하면 앱에서 다음과 같은 문제가 발생하지 않도록 예방하는 데 도.. Domain/Android 2021. 9. 28.
[Spring] JPA (2) 왜 JPA를 사용해야 하는가? JPA는 자바 0RM 기술에 대한 API 표준 명세다. 쉽게 이야기해서 인터페이스를 모아둔 것입니다. 따라서 JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야 합니다. Hibernate, EclipseLink, DataNucleus이 있고 보통 Hibernate를 많이 사용합니다. JPA라는 표준 덕분에 특정 구현 기술에 대한 의존도를 줄일 수 있고 다른 구현 기술로 쉽게 이동할 수 있는 장점이 있습니다. 그리고 JPA 표준은 일반적이고 공통적인 기능의 모음이다. 따라서 표준을 먼저 이해하고 필요에 따라 JPA 구현체가 제공하는 고유의 기능을 알아가면 됩니다. 1. 생산성 JPA를 사용하면 다음 코드처럼 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를.. Domain/Spring 2021. 9. 28.