🔠 프로그래밍언어

    Java :: Collections Framework

    Java :: Collections Framework

    남궁성 저자의 Java의 정석 3판 스터디 Collections Framework 는 데이터 그룹을 다루고 표현하기 위한 단일화된 구조 라고 정의하고 있다 (Java API docs) 무슨 말인지는 천천히 읽어가다보면 이해가 될 것이다 🙂 Collections Framework 란 Collections Framework 은 컬렉션이나 다수의 데이터를 다루는 데에 필요한 다양한 클래스들을 제공하고 있다. 객체지향적 설계를 통해 표준화되어 있어서 사용법 익히기에도 편리하고 재사용성 높은 코드를 작성할 수 있다. 핵심 인터페이스 Collections Framework 에서는 Collection Data 그룹을 크게 3가지 타입으로 보고 각 컬렉션을 다루는데 필요한 기능을 가진, 3개의 인터페이스를 정의했다. ..

    Java :: 객체지향 프로그래밍 (1/2)

    Java :: 객체지향 프로그래밍 (1/2)

    남궁성 저자의 Java의 정석 3판 스터디 객체지향에 대해 놓치고 있는 부분을 다시 짚어보자. 객체지향이론의 기본 개념은 “실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.” 라는 것이다. 객체지향언어의 주요 특징은 아래와 같다. 1. 코드의 재사용성이 높다. 2. 코드의 관리가 용이하다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 그 중 객체지향언어의 가장 큰 장점은 “코드의 재사용성이 높고 유지보수가 용이” 하다는 것 ! 객체지향개념을 학습할 때는 재사용성 과 유지보수 그리고 중복된 코드의 제거 이 세 가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다. 클래스와 객체 클래스란 객체를 정의해놓은 것 또는 객체의 설계도 라고 정의할 수 있다. 객체는 실제..

    JAVA :: JVM의 메모리 구조

    JAVA :: JVM의 메모리 구조

    남궁성 저자의 Java의 정석 3판 스터디 어플리케이션이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. Method Area 프로그램 실행 중 어떤 클래스가 사용되면, JVM 은 해당 클래스의 클래스파일(*.class)을 읽어서 클래스 데이터를 이 곳에 저장한다. 클래스 변수도 이 영역에 함께 생성된다. Heap 인스턴스가 생성되는 공간, 인스턴스 변수들도 이 곳에 생성된다. Call Stack Method 가 호출되면 Call stack에 메모리가 할당되며, 연산의 중간결과 등을 저장하는 데에 사용된다. 이 메모리는 Method가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 Method 작업에 필요..

    JAVA :: 배열

    JAVA :: 배열

    남궁성 저자의 Java의 정석 3판 스터디 기초로 돌아가는 마음으로 Java의 정석을 읽으며 스터디를 시작했다 🙂 챕터마다 중요하거나 몰랐던 부분들을 정리해보고자 한다. 배열이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 배열의 선언과 생성 자바에서 배열을 생성할 때는 아래와 같이 한다. int[] arr = new int[5]; // 가능 int[] arr = new int[] {50, 60, 70} // 가능 int[] arr; arr = {50, 60, 70} // 이건 불가능 그런데, 길이가 0인 배열도 생성이 가능하다 ! int[] arr = new int[0]; 길이가 0인 배열을 생성하는 것은 어떤 의미가 있을까? Java에서 main method 실행할 때를 생각해보자. class..

    Python :: 15 - 텐서플로우로 딥러닝의 맛을 보자

    Python :: 15 - 텐서플로우로 딥러닝의 맛을 보자

    이번 글에서는 "딥러닝"에 대해 간단히 소개하고자 한다. 우리는 지난 글에서 기계학습에 대해서, 그 중에서도 선형회귀모델을 분석하는 간단한 예제를 진행했었다. 기계학습 중에서도 최근 큰 성공을 거두고 있는 딥러닝이라는 기술에 대해 알아보자. 인간의 뇌는 뉴런이라는 수많은 신경세포가 연결되어있다. 이들은 서로 화학적 신호를 주고 받는다. 인간의 뇌와 유사하도록 인공적인 신경세포를 흉내내는 프로그램을 컴퓨터 과학자들은 "퍼셉트론 perceptron" 이라고 한다. 퍼셉트론이 하나의 신경세포를 흉내내는 것이라면 인간의 뇌는 입력신호를 바로 출력으로 바꾸는 것이 아니라 입력신호를 받아 숨겨진 여러 층을 거친 뒤에 출력신호를 내어 놓을 것이다. 이것을 복잡하게 만들면 많은 층을 거쳐 가는 깊은 신경망의 될 것이다..

    Python :: 14 - 기계학습으로 똑똑한 컴퓨터를 만들자

    Python :: 14 - 기계학습으로 똑똑한 컴퓨터를 만들자

    우리는 이때까지 파이썬에 대해 공부해왔다. 여러 라이브러리들을 사용해보고, 다양한 데이터를 분석하는 것에 초점을 두었다. 이번에는 데이터를 기반으로 학습을 수행하는 기계학습의 원리를 알아보자. 파이썬은 이러한 기계학습을 공부하는 것에 있어서도 다양한 라이브러리를 지원해준다. 우리는 그 중 하나인 sckit-learn 을 이용하여 간단한 분석을 진행해보겠다. 우선 기계학습에 대해 알아보자. 컴퓨터가 사람처럼 스스로 배울 수 있다면 어떻게 될까? 우리는 이때까지 컴퓨터에게 특정 작업을 시키기 위해 프로그램을 작성하고 지시하였다. 하지만 컴퓨터가 데이터를 기반으로 스스로 학습할 수 있다면 컴퓨터는 더욱 더 복잡한 일을 할 수 있을 것이다. 예를 들면 알파고와 이세돌의 바둑 경기가 그렇다. 알파고에게 바둑 경기..

    Python :: 13 - 시각 정보를 다루어보자

    Python :: 13 - 시각 정보를 다루어보자

    우리는 앞선 장에서 판다스를 이용해 데이터를 다루는 것을 해보았다. 이번에는 이미지 데이터를 다루어 볼텐데 이미지란 컴퓨터에 저장된 2차원 시각 정보 파일이다. 디지털 이미지 데이터는 색상을 표현하는 점들이 모여 한 장의 이미지가 되는 비트맵 bitmap 방식과 점과 곡선, 면들이 수학적인 식으로 표현된 벡터 verbor 이미지로 나뉜다. 우리는 이번에 비트맵 방식에 대해서 다룰 것이다. 이미지에서 가장 작은 크기의 공간을 차지하며 하나의 색상 값을 가지고 있는 정보를 픽셀이라고 하고, 비트맵 방식의 이미지는 그림의 기본 구성요소를 의미하는 이 픽셀로 이루어진다. 가장 간단한 형태의 비트맵 이미지는 한 픽셀을 0과 1로 표현하는 이미지이다. 이때 0은 이미지 요소가 없음을 의미하므로 검정색, 1은 이미지..

    Python :: 12 - 판다스로 데이터를 분석해보자

    Python :: 12 - 판다스로 데이터를 분석해보자

    판다스는 무엇이고 왜 사용하는가? 우리는 지금 파이썬을 이용해서 데이터를 다루고 처리하는 것을 공부하고 있다. 이 때까지 파이썬은 많은 데이터를 가지고 연산하고 가공하는 데에 우수한 능력을 보여주었다. 그런데 엑셀 파일과 같이 테이블 형태의 데이터에 대한 통계적 분석이나 데이터 항목 사이의 연산 등에는 적합하지 않았다. 이 때 "판다스 Pandas" 를 이용한다. 판다스는 넘파이를 기반으로 한 도구이고 다음과 같은 특징을 갖는다. 빠르고 효율적이며 다양한 표현력을 갖춘 자료구조 다양한 형태의 데이터에 적합 핵심 구조 : Series, DataFrame 우리는 판다스로 무엇을 할 수 있을까? 판다스를 이용하면 CSV파일, 엑셀파일, SQL 데이터베이스에서 데이터를 읽어서 스프레드시트의 테이블과 유사한 데이..