데이터베이스 사용의 의미 데이터 사용자가 데이터를 저장하는 곳에 직접 접근하지 않고 , 모든 것들은 데이터베이스에 일임해서 실질적으로 데이터에 접근하는 건 데이터베이스만 가능하도록 만든것이 데이터베이스의 사용의미이다. 즉, 데이터 사용과 데이터 관리 영역을 분리하여 바로 넘나들지 못하도록 못하도록 만든 것이 큰 의미이다. 데이터베이스의 특징 1. 데이터베이스 시스템의 자기 기술성 ▶ 데이터와 데이터의 정의 및 설명(메타데이터)을 포함 2. 프로그램과 데이터의 격리 및 추상화 ▶ 사용자에게 데이터에 대한 개념적인 표현을 제공하여 접근성을 향상 3. 다중 뷰 제공 ▶ 각 사용자가 관심을 갖는 데이터베이스의 일부만을 표현할 수 있는 기능 제공 4. 데이터 공유와 다수 사용자 트랜잭션 처리 ▶ 다수의 데이터 조..
선택구조 선택구조의 구문형식 - 구문형식 → 들여쓰기는 코드 블럭을 표현 → 특정 동작을 수행하는 한 라인 이상의 명령문 집합 → 스페이스 4칸 권고 (PEP-8) if 불리언식 : 명령문 1 명령문 2 선택구조의 실행흐름 → if 라는 선택구조에 의해서 명령문이 실행될수도 , 안될 수도 있다. 불리언식 - 비교연산자를 사용하여 결과가 불리언 타입으로 생성되는 표현식 불리언 타입 - 논리값이 참(True) 과 거짓 (False)의 값만 표현할 수 있는 데이터 타입 → True 또는 False 예약어를 사용하여 표현 → 비교 연산자를 사용한 표현식의 결과로 생성 원뿔 계산 프로그램 개선 - 기존 코드 # 반지름 사용자 입력 rad = int(input("반지름을 입력하세요 : ")) # 높이 사용자 입력 ..
제어구조의 이해 구조적 프로그래밍 패러다임 - 절차적 프로그래밍 패러다임의 하위개념 - goto문을 사용하지 않고 프로그램을 3가지 제어만으로 구성하는 프로그래밍 패러다임 → 순차 (sequence) 구조 → 선택(selection)구조 → 반복(interation) 구조 - 프로그램 실행흐름이 간결하고 작은 규모로 조직화하기 쉬움 순차구조 설계 > 생산 > 조립 - 실행의 흐름을 주어지는 명령의 위치적 흐름에따라 수행하는 구조 → 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조 선택구조 검사 > 정상 ? > 배송 > 불량 ? > 재생 - 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 결정하는 구조 → 실행 여부는 조건에 따라 결정 반복구조 설계 > 배송 > 설계 > 배송 > 설계..
프로그래밍 기초 숫자와 문자 숫자 - 정수(integer) : 소수점이 없는 숫자 - 실수(floating point) : 소수점이 포함되는 숫자 문자 - 유니코드(unicode) 기반 문자 또는 문자열 - 인용부호 " 또는 '를 사용하여 표 >> 문자가 하나이든, 여러개이든 파이썬에서는 모두가 문자타입 * unicode? → ASCII 코드 표는 실제 영국, 미국에서 사용하는 영문자와 특수기호만을 다룬다. 그 외 한글, 일본어, 중국어 등 영문자 외의 다른 나라의 언어들에도 별도의 코드표가 필요한데, 전 세계의 모든 문자들을 표현하기 위해 가변길이의 4byte로 문자를 표현하는 코드 체계를 유니코드(unicode) 라고 하며, 파이썬 3.0 부터는 모든 문자를 유니코드로 처리한다. 기본연산자와 표현식 ..
ls -l - 리눅스 시스템의 모든 파일과 디렉터리에는 접근권한(permission)과 소유권(ownership)이 부여된다. - 명령어 ls -l 은 파일 속성을 나타낸다. ls -l 명령어를 입력하면 위와 같이 파일 속성이 나온다. 예시로 파일 하나만 뽑아서 살펴보도록 하자 ! drwxr-xr-x@ 7 oyoon staff 224 12 7 2022 IdeaProjects 1. drwxr-xr-x - 파일 허가권(permission) - 파일 유형과 파일 접근 권한으로 구성 2. 7 - 물리적 파일 연결 개수 3. oyoon - 파일 소유자 명(USer Ownership) 4. staff - 파일 소유 그룹 명 (Group Ownership) 5. 224 - 파일 크기 (바이트 단위) 6. 12 7 2..
개요 배치 작업을 맡고 난 뒤 35만건 까지는 mybatis 문으로 어떻게든 만회했으나.. 4000만건 이상의 데이터를 배치작업 해야할수도 있는 상황이 생겨서 트랜젝션 관련 고민을 하게 되었다. 그래서 모든 동작이 끝나고 난 뒤 commit 하는 방식 대신, 수동으로 만들어서 for문 돌면서 insert 해줄때마다 commit을 수동으로 해주는 방법을 해야겠다고 생각했다. 1차로 작성한 코드 public Boolean excuteJob (){ Boolean result = false; List exampleVo = new ArrayList(); try{ mybatisEdbConfig.edbSqlSessionTemplate().getConnection(); deleteMenualTransactionExam..
대역폭(bandWidth) : 일반적으로는 네트워크에서 이동가능한 최대 전송속도로 정보를 전송할 수 있는 단위 시간당 전송량을 말한다. - 송신측에서 수신측으로 패킷을 보낼때는 각 패킷에 순서대로 번호를 붙여서 보낸다. 그럼 번호에 맞춰서 정렬하면 됨 * 컴퓨터간의 연결 : 컴퓨터 네트워크 * 인터넷 : 전 세계의 큰 네트워크부터 작은 네트워크까지 연결하는 거대한 네트워크 * 패킷 : 컴퓨터 간의 데이터를 주고받을 때 네트워크를 통해 흘러가는 작은 데이터 조각 * 큰 데이터 => 작은 패킷으로 분할 * 0과 1의 정보를 나타내는 최소단위 = 비트 (bit) * 8 bit = 1 byte ============================ 랜 (LAN, Local Area Network: 근거리 통신망) ..
새로운 할인 정책 개발 - 다형성 덕분에 새로운 정률할인 정책 코드를 추가로 개발하는 것 자체는 아무 문제가 없음 새로운 할인 정책의 문제점 - 새로 개발한 정률할인정택을 적용하려고 하니 클라이언트 코드 인 주문 서비스 구현체도 함께 변경해야함 - 주문 서비스 클라이언트가 인터페이스인 `DiscountPolicy` 뿐만 아니라, 구체 클래스인 `FixDiscountPolicy` 도 함께 의존 -> DIP위반 관심사의 분리 - 애플리케이션을 하나의 공연으로 생각 - 기존에는 클라이언트가 의존하는 서버 구현 객체를 직접 생성하고, 실행함 - 비유를 하면 기존에는 남자주인공 배우가 공연도 하고, 동시에 여배우도 직정 초빙하는 다양한 택임을 가지고 있었음 - 공연 구성, 담당배우 섭외,지정하는 책임을 담당하는 ..
새로운 구조와 할인 정책 적용 - 처음으로 돌아가서 정액할인 정책을 정률 (%) 할인 정책으로 변경해보자. - FixDiscountPolicy > RateDiscountPolicy : 어떤 부분만 변경하면 될까? "AppConfig"의 등장으로 애플리케이션이 크게 사용영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었다. 따라서 구성영역의 코드만 고치면 됨 !!! - `FixDiscountPolicy` > `RateDiscountPolicy` 로 변경해도 구성 영역만 영향을 받고, 사용영역은 전혀 영향을 받지 않는다. package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount...
관심사의 분리 - 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역(배우역할)이라 생각했을때, 실제 배역 맞는 배우를 선택하는 것은 누구인가? - 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할 지 줄리엣 역할을 누가 할지는 배우들이 정하는것이 아님 - 이전 코드는 마치 로미오 역할 (인터페이스)을 하는 레오나르도 딭카프리오(구현체,배우)가 줄리엣 역할(인터페이스)을 하는 여자주인공(구현체, 배우)을 직접 초빙하는 것과 같았음. - 디카프리오는 공연도 해야하고 동시에 여자주인공도 공연에 직접 초빙해야하는 "다양한 책임"을 가지고 있었다. >> 관심사를 분리하자 - 배우는 본인의 역할인 배역을 수행하는 것에만 집중해야한다. - 디카프리오는 어떤 여자주인공이 선택되더라도 똑같이 공연을 ..