분류 전체보기 135

[DataBase] 데이터베이스란? 데이터베이스란? 여러사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합입니다. 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있습니다. 데이터베이스의 특징 실시간 접근성 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 합니다. 지속적인 변화 데이터베이스의 상태는 동적입니다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지합니다. 동시 공유 데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 합니다. 내용에 대한 참조 데이터베이스에 있는 데이터를 참조할 때.. Computer Science/DataBase 2021. 9. 4.
Clean Architecture Robert C. Martin는 책에서 설계적인 측면에서 좋은 소프트웨어 설계는 필요한 시스템을 만들고 유지보수하는데 투입되는 비용을 최소화하는데 있다고 이야기 합니다. 좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작합니다. 좋은 아키텍쳐를 정의하는 원칙으로 SOLID 원칙을 들고 있습니다. SOLID 원칙의 목적은 중간(모듈) 수준의 소프트웨어 구조가 변경에 유연하며, 이해하기 쉽고, 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 되도록 하는데 있다고 합니다. #정책# 좋은 아키텍쳐의 목표는 시스템에서 정책을 가장 핵심적인 요소로 식별하고, 동시에 세부사항은 정책에 무관하게 만들 수 있는 형태로 구축하는 것이라고 이야기 합니다. 예를 들자면, 개발 초기에 데이터베이스가 어떤 데이터베이스인지.. Computer Science/Programming 2021. 8. 31.
[Spring] DTO vs VO vs Entity DTO Data Transfer Object, 데이터 전송 객체라고 불리며 계층(Layer)간 데이터 교환을 위해 사용하는 객체입니다. 로직을 가지고 있지 않은 순수한 데이터 객체이며 getter/setter 메서드만 가지고 있습니다. 데이터를 전송하는 바구니라고 생각하면 됩니다. VO Value Object, 값 객체라고 불리며 특정한 값 그 자체를 표현하는 객체입니다. 서로 다른 이름을 가진 VO의 인스턴스가 모든 속성값이 같다면(hashCode, equals) 같은 객체라고 볼 수 있습니다. 또한 생성된 후 상태 변경이 불가능한 객체의 불변성을 보장합니다. DTO와 다르게 로직을 포함할 수 있습니다. Entity Entity는 실제 DB의 테이블과 매핑되는 데이터입니다. 또한 가변 객체로 생성 후 .. Domain/Spring 2021. 8. 31.
[Design Pattern] Proxy Pattern 프록시는 대리인이라는 뜻으로 무엇인가를 대신 처리하는 의미입니다. 프록시 패턴은 프록시를 사용하는 방법 중에서 타깃에 대한 접근 방법을 제어하려는 목적을 가진 경우를 가리킵니다. 프록시 패턴의 프록시는 타깃의 기능을 확장하거나 추가하지 않습니다. 대신 클라이언트가 타깃에 접근하는 방식을 변경해주는 역할을 합니다. 타깃 오브젝트를 생성하기가 복잡하거나 당장 필요하지 않은 경우에는 꼭 필요한 시점까지 오브젝트를 생성하지 않는 편이 좋습니다. 그런데 타깃 오브젝트에 대한 레퍼런스가 미리 필요할 수 있습니다. 이럴 때 프록시 패턴을 적용하면 됩니다. 클라이언트에게 타깃에 대한 레퍼런스를 넘겨야 하는데, 실제 타깃 오브젝트는 만드는 대신 프록시를 넘겨주는 방식입니다. 그리고 프록시의 메소드를 통해 타깃을 사용하려.. Computer Science/Design Pattern 2021. 8. 18.
[Spring] JDBC와 Transaction 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. DB는 그 자체로 완벽한 트랜잭션을 지원합니다. SQL을 이용해 다중 로우의 수정이나 삭제를 위한 요청을 했을 때 일부 로우만 삭제되고 나머지는 안 된다거나, 일부 필드는 수정했는데 나머지 필드는 수정이 안 되고 실패로 끝나는 경우는 없습니다. 하나의 SQL 명령 을 처리하는 경우는 DB가 트랜잭션을 보장해준다고 믿을 수 있습니다. 하지만 여러 개의 SQL이 사용되는 작업을 하나의 트랜잭션으로 취급해야하는 경우도 있습니다. 문제는 선행 SQL을 성공적으로 실행했지만 후행 SQL이 성공하기 전에 장애가 생겨서 작업이 중단되는 경우입.. Domain/Spring 2021. 8. 18.
[Android] Hash Key (카카오 Api / 네이버 Api / 구글 Api) 2021-08-13 수정 Android에서 카카오, 네이버, 구글 Api를 연동할때, HashKey를 입력해 달라는 경우를 많이 볼 수 있습니다. 이런 경우 필요한 키의 종류는 Debug Key와 Release key가 있습니다. Debug Key와 Release Key를 구분하는 것은 Build Variants가 Debug(개발용)이냐 Release(배포용)이냐라고 생각하시면 됩니다. Debug Key는 개발할 때만 사용하는 것으로 안드로이드 개발환경에 기본적으로 저장되어 있는 인증서 바이너리에 대한 해시값이고, Release Key는 실제 앱을 배포할 때 사용하는 인증서 바이너리에 대한 해시값입니다. Hash Key를 구하는 방법은 두가지가 있습니다. 1. 터미널을 이용하여 구하는 방법(추천) 2. .. Domain/Android 2021. 8. 14.
[Android] Keystore 생성하기 ( Android KeyStore / Release / Debug / APK / Bundle ) 1. Build -> Generate Signed Bundle / APK 2. Android App Bundle 또는 APK 선택 3. Create New 4. Key store path 설정 -> Password와 Password Confirm 입력 #Alias는 기억하기 쉽게 경로 설정에서 작성한 File Name과 맞춰주시는게 편할 수 있습니다.# #Alias는 ReleaseKey를 찾을 때, 사용 될 수 있기때문에 기억하기 쉽게 작성하는게 좋습니다.# #keystore와 비밀번호는 절대 분실하면 안됩니다# 5. 공백 기입 ( 전부 기록할 필요는 없습니다. ) -> OK 6. Next 7. Finish Domain/Android 2021. 8. 13.
[Window] 환경변수 설정 1. 내 PC -> 속성 2. 고급 시스템 설정 3. 고급 탭 -> 환경 변수 4. 시스템 변수 탭 -> Path -> 편집 5. 새로 만들기 -> 환경변수 지정할 경로 설정 -> 확인 -> 확인 -> 적용 ex) Java : [자바 설치 경로]\bin MySQL : [MySQL 설치 경로]\bin OpenSSL : [OpenSSL 설치 경로]\bin Computer Science/Programming 2021. 8. 13.
[MySQL] DELETE DELETE는 행 단위로 삭제합니다. WHERE이 생략되면 전체 데이터를 삭제합니다. //예시 테이블// CREATE TABLE person ( name VARCHAR(5) NOT NULL, -- ex) 홍길동 height INT NOT NULL, -- ex) 178 address VARCHAR(2) NOT NULL -- ex) 서울, 경기, 강원, 경남, 경북, 전남, 전북, 충청 ); DELETE FROM [테이블 이름] WHERE [조건] -> DELETE FROM person WHERE height > 170 -> DELETE FROM person WHERE height > 170 LIMIT 5 출처 이것이 MySQL이다 Computer Science/DataBase 2021. 8. 10.
[MySQL] UPDATE 기존에 입력되어 있는 값을 변경하기 위해서 UPDATE문을 사용합니다. UPDAT도 사용법은 간단하지만 주의할 사항이 있습니다. WHERE은 생략이 가능하지만 WHERE을 생략하면 테이블의 전체의 행이 변경됩니다. //예시 테이블// CREATE TABLE person ( name VARCHAR(5) NOT NULL, -- ex) 홍길동 height INT NOT NULL, -- ex) 178 address VARCHAR(2) NOT NULL -- ex) 서울, 경기, 강원, 경남, 경북, 전남, 전북, 충청 ); UPDATE [테이블 이름] SET [열1 = 값1, 열2 = 값2, ...] WHERE [조건] -> UPDATE user SET name='김동환', height=178 WHERE name.. Computer Science/DataBase 2021. 8. 10.