기본미션 # p.80의 shop_db의 회원테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기 선택 미션 # 데이터베이스 개체 3가지 설명하기 인덱스 인덱스는 책 속의 목차와 같은 역할을 합니다. 특정 데이터에 대해서 미리 색인을 해 놓습니다. 그래서 그 색인한 데이터들을 따로 모아 놓고, 질의를 할때 전체 데이터를 확인하는 것이 아닌 색인한 데이터에 있는 정보를 먼저 찾아서 검색의 속도를 높히는 작업입니다. 뷰 뷰는 테이블과 비슷한 개체입니다. 뷰는 실제로 데이터를 갖고 있지 않고 실제 데이터들의 링크를 갖고 있는 개념입니다. 보통 v_ 의 이름으로 네이밍 하는게 일반적 입니다. 쉽게 생각하면 리눅스의 심볼릭 링크로 보면 됩니다. 특정 데이터를 찾기 위해 링크를 걸어 놓고..
1. 스프링 버전을 올려라 ! 회사에서 사용중이던 Spring이 4.3.9.RELEASE 버전이었는데, 해당 버전이 너무 오래 되었기도 하고, EOL 이슈로 인해 마이그레이션을 해야 하는 상황이 발생했다. 그래서 현재 EOL 기간이 남은 Spring 버전을 조사하게 되었고 다음과 같은 결과를 보게 되었다. 1-1. Spring 버전 https://spring.io/projects/spring-framework#support Spring Framework The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind ..
클래스 로더 로딩, 링크, 초기화 순으로 진행된다. 로딩 클래스 로더가 .class 파일을 읽고, 그 내용에 따라 적절한 바이너리 데이터를 만들고 “메소드”영역에 저장 메소드 영역에 저장하는 데이터 FQCN → 클래스가 속한 패키지명을 모두 포함한 이름. ex) java.lang.String s = new java.lang.String(); 클래스 | 인터페이스 | 이늄 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 class객체를 생성하여 “힙"영역에 저장. 링크 Verify,Prepare,Resolve(optional) 세 단계로 나눠져 있다. verify: .class파일 형식이 유효한지 체크. preparation: 클래스 변수 (static 변수)와 기본값에 필요한 메모리 Resolve: 심볼..
클래스 로더 시스템 .class 에서 바이트 코드를 읽고 메모리에 저장. 로딩: 클래스 읽어오는 과정 링크: 레퍼런스를 연결하는 과정 초기화: static 값들 초기화 및 변수에 할당 메모리 메소드 영역 메소드 영역에는 클래스 수준의 정보(클래스 이름, 부모 클래스 이름, 메소드 ,변수) 저장. 공유 자원이다. 클래스의 필드, 메소드 정보, static 변수, 메소드와 생성자의 바이트코드, 각 클래스, 인터페이스에 관련된 런타임 상수풀이 저장 논리적으로 힙의 일부분이지만, 일반적으로 가바지 컬렉션 대상이 아니지만, JVM 벤더가 가비지 컬렉션 여부를 선택할 수 있다. Method Area는 JVM 벤더마다 다르지만, HotSpot에선 Permanent Generation 이라고 불린다. ava 8 부터는..
자바 가상머신 으로 자바 바이트 코드를 OS 에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다. 바이트 코드를 실행하는 표준 (JVM자체는 표준)이자 구현체(특정 밴더가 구현한 JVM)다. JVM 스팩 : https://docs.oracle.com/javase/specs/index.html JVM 밴더 : 오라클, 아마존 , Azul, …. 특정 플랫폼에 종속적 JRE(Java Runtime Environment): JVM + 라이브러리 자바 애플리케이션을 실행할 수 있도록 구성된 배포판. JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다. 개발 관련 도구는 포함하지 않는다.(그건 JDK에서 제공) JDK(Java Development..
프로그래밍 이란? 프로그래밍: 컴퓨터가 일을 수행 하도록 프로그래밍 언어로 명령어 집합(프로그램)을 만드는 일 컴파일 : 프로그래밍 언어를 컴퓨터가 실행 가는한 기계어로 만드는 일 컴파일러 : 기계어로 바꾸어 주는 프로그램 ( ex. 자바 컴파일러, gcc ) 자바 프로그래밍 자바의 역사 : 1991년 제임스 고슬링을 비롯한 선 마이크로 시스템스 연구원들이 처음 개발 가전, 휴대용 장치에 사용되는 소프트웨어 언어로 개발됨. 안정성이 중요 자바 프로그래밍의 특징 플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다. 객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다. 프로그램이 안정적이다. 풍부한 기능이 제공되는 오픈 소스이다. 객체 지향 프로그래밍이 무엇인가? 프로그램의 구현을 시간의 흐..
문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 이 문제는 그냥 문자열 문제다. 따라서 문자열로 체크를 하면된다..
1.Numpy란? Numpy는 Numerical Python의 줄임 말이다. C언어로 구현된 파이썬 라이브러리로, 고성능의 수치계산을 위해 제작 되었다. 앞으로 학습을 할때 배열이나 선형대수 등 고수준의 배열이나 벡터 등등의 계산이 필요한데 이 과학계산을 해주는 라이브러리이다. 생김새는 파이썬의 자료구조인 리스트와 비슷하지만 파이썬 리스트는 자바스크립트처럼 다양한 객체를 담을수 있는데, Numpy는 자바의 제네릭처럼 동일한 자료형만 담을수 있다는 점이다. 먼저 Numpy를 설치해야 한다. 앞 장에서 Anaconda를 설치했다면 설치가 되어 있겠지만 그렇지 않고 파이참 등 다른 툴을 통해서 개발을 한다면 커맨드 라인에 pip install Numpy로 설치를 한다. 설치가 되었다면 새로운 주피터 노트북을 ..
1.쥬피터 노트북 실행 쥬피터 노트북을 실행해보자. 쥬피터 노트북은 Anaconda3 폴더 안에 있다 클릭해서 실행해 주면 커맨드 라인이 실행되면서 자동으로 브라우저가 실행된다. 만약 브라우저가 자동으로 실행되지 않는다면 아마도 C드라이브에 설치하지 않아서 일 것이다. 그렇다면 브라우저를 켜고 http://localhost:8888혹은 http://127.0.0.1:8888로 접속하면 쥬피터 노트북이 실행된다. 쥬피터 노트북의 기본 경로는 윈도우 기준 C:\Users\"사용자명" 이다. 2.프로젝트 생성 프로젝트를 만드는 법은 폴더를 만드는 것과 같다. 오른쪽 상단의 New를 누르고 folder를 누르면 새 폴더가 생긴다. 폴더가 생성되면 Untitled Folder폴더가 생성이 되고 이름을 변경하고 싶..
학습을 하기 위해 가장 먼저 각종 S/W를 설치해야 한다. 파이썬 머신러닝을 익히기 위해서 필요한 패키지는 일반적으로 다음과 같다. 1. 머신러닝 패키지 2. 행렬/선형대수/통계 패키지 3. 데이터 핸들링 4. 시각화 등등 위의 패키지들을 일일히 하나씩 설치하는 방법도 있지만, 여기서는 Anaconda를 통해 한번에 설치해서 학습할 것이다. 파이썬으로 작성된 대부분의 패키지들은 커맨드 라인에서 pip install 명령어로 설치할 수 있지만 개별 패키지를 별도로 설치해야 하는 불편함이 있다. 하지만 Ananconda는 파이썬 기반의 머신러닝에 필요한 패키지들을 일괄적으로 설치해 준다. 먼저 Ananconda를 다운로드 하기 위해 https://www.anaconda.com/에 접속한다. 접속 한 후 pr..
머신러닝이란 ? 머신러닝의 개념은 다양하게 표현할 수 있으나, 일반적으로는 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다. 현실 세계의 매우 복잡한 조건으로 인해 기존의 소프트웨어 코드만으로는 해결하기 어려웠던 많은 문제점 들을 머신러닝을 이용해 해결해 나가고 있다. 많은 책들은 스팸메일 필터링을 대표적인 예로 많이 소개하고 있다. 스팸 메일은 단순히 특정 단어만으로 스팸이라고 분류하기 힘들다. 가령 '새끼' 라는 단어가 들어간다면 문맥상 이것은 사전적 정의인 '짚으로 꼬아 만든 줄' 이거나 '어린 짐승'을 뜻하는 것일수도 있기 때문에 문맥을 판단해서 패턴을 규정해야 하기 때문에 이 패턴을 규정하기 매우 어렵다. 하지만 머신러닝은 이러한 문제를 ..
인공 지능을 시작하려고 보니 일단 언어를 선택해야 했다. 나는 자바 개발자이기 때문에 처음에는 자바로 개발을 하려고 했다. 하지만 자바로 인공지능을 개발하기엔 생태계가 너무 좁았고, 다른 언어를 선택해야 했다. 그래서 구글링을 한 결과 가장 많이 사용하는 언어는 파이썬이었고 검색을 해보니 예제가 많아서 많은 추천을 받는 책을 토대로 공부를 시작하기로 했다. 그래서 언어는 파이썬을 선택하기로 했다. 자 그럼 파이썬에 대해 간단하게 알아보고 가자. 파이썬(Python)은 1991년 프로그래머인 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가..