본문 바로가기

프로그래밍40

Ubuntu에서 Java 개발환경 세팅 언젠가는 해야 할 일이었고, 이제 위코드에서의 마지막 한 달이 시작되었다. 스프링 부트를 해야하니 일단 Java 개발 세팅을 해야해서 일단 VS Code에 Java 환경을 잡기로 했다. Visual Studio Code 설치 예전부터 써와서 익숙한 IDE이기도 하고 여러 언어에 대응할 수 있는 툴이다. 이전 두달동안 계속 Vim만 쓰다보니 VS Code도 쓰고 싶어졌다. code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications... 2020. 9. 14.
Conda 기본 Conda(콘다) 파이썬 가상환경(env) 설정을 돕는 도구 가상환경이란 프로젝트별로 독립된 공간을 설정해서 사용하는 패키지나 도구들이 다른 프로젝트의 요소와 충돌하지 않게끔 하는 것 Anaconda라는 파이썬 배포판에 포함되어 있지만 따로 설치도 가능하다. Conda 설치 https://docs.conda.io/en/latest/miniconda.html Miniconda — Conda documentation Miniconda Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on.. 2020. 7. 29.
Java - Java의 기본 클래스 (1) 20번째 강의는 자바의 기본 클래스에 대한 강의였는데, 길이가 길고 내용이 다양해서 두번으로 나눠서 정리해야겠다. 래퍼 클래스(Wrapper Class) 이름 그대로 무언가를 감싸는 역할을 하는 클래스이다. 래퍼 클래스는 기본 자료형 값을 인스턴스로 감싸서 인스턴스를 필요로하는 작업에 값을 사용 가능하도록 한다. 기본 자료형의 종류대로 각각의 래퍼 클래스가 존재한다. ex> Integer int1 = new Integer(1) 래퍼 클래스를 통해서 만들어지는 인스턴스는 "Immutabe"하다. immutable하다의 의미는 내부의 값을 변경할 수 없다라는 뜻 그렇다면 값의 수정 소요가 생긴다면? 값을 꺼내서 연산 또는 수정한 값을 이용해 새로운 인스턴스를 만들어야 한다! 래퍼 클래스의 박싱(Boxing).. 2020. 7. 25.
Java - JVM의 메모리 모델과 Object 클래스 19강까지 진행했다. 위코드 기간동안은 파이썬을 위주로 진행할 수 밖에 없어서 남은 강의들을 듣는데에 시간이 얼마나 걸릴지 모르겠다. 틈틈이 진행해야겠다. JVM(자바)의 메모리 모델 JVM의 메모리는 3가지의 영역으로 나누어 관리된다.공간을 나누는 목적은 메모리 제어의 효율성 확보가 목적 메소드 영역 메소드들의 바이트코드 Static 변수 메소드 영역에는 프로그램 실행에 필수적인 바이트 코드가 위치하는 영역이기 때문에 프로그램 실행 도중에 삭제될 일이 없기 때문에 static 변수도 이 곳에 위치한다. 이 영역은 프로그램이 완전히 종료될 때 없어진다고 볼 수 있다. 스택 영역 지역변수 매개변수 스택 영역에는 일반적인 변수들과 매개변수들이 위치하는 영역이다. 동시에 stack 자료구조의 특징인 LIFO구.. 2020. 7. 23.
Python - Class 파이썬도 당연하겠지만 Class를 사용할 수 있다. 관련된 내용을 정리해보자. 클래스 정의 예제 class Calculator: def __init__(self, id):#생성자 self.id = id#클래스 attribute(속성) def plus(self, num1, num2):#이하 클래스 method(메소드) return num1 + num2 def minus(self, num1, num2): return num1 - num2 def div(self, num1, num2): if num2 != 0: return num1 / num2 def check(self): return self.id 파이썬에서 클래스를 사용할 때는 주의할 점이 몇개있다. 클래스 이름은 첫문자를 대문자로 할 것 따르지 않았을 .. 2020. 7. 23.
Python - range와 scope range와 scope 사실 서로 별 관련은 없는 개념인데 겸사겸사 한꺼번에 정리한다. range range는 기본 제공되는 함수이다. 기본적으로 지정된 값만큼의 범위를 가진다고 이해하는게 좋다. 총 3개의 인수를 전달할 수 있고, 각각의 경우에 따른 세부 기능이 다르다. 인수 1개 - 0에서부터 인수로 입력한 숫자 - 1만큼의 범위를 가진다. 인수 2개 - 시작할 지점과 마무리 지점을 순서대로 지정한다. 시작 지점은 표시한 숫자부터, 마무리 지점은 인수 - 1 지점까지의 범위를 가진다. 인수 3개 - 인수 2개와 거의 동일하지만 3번째 인수의 값만큼 값을 건너뛰는 범위를 가진다. 사실 인수 2개를 사용하는 방법에도 기본값인 1이 적용된다. for i in range(4): print(i, end=', .. 2020. 7. 22.
Python - Decorator 파이썬에 있는 데코레이터라는 개념에 대해서 간단하게 정리해보자. closure 개념과 관련된 기능으로 어떤 함수가 실행되기 전에 먼저 실행되어야만 하는 조건을 가진 함수가 있다면 데코레이터를 적용하기 위해 만들어진 상황이다. def decorator_function(original_function): def wrapper_function(): print("함수가 호출되기 전") return original_function() return wrapper_function @decorator_function #1 def display_1(): print("display1 실행") @decorator_function #2 def display_2(): print("display2 실행") display_1() .. 2020. 7. 22.
Java - 예외처리 (2) 최근 많이 게을러졌다. 정신 차리자. 예외 클래스의 구분 Error Class 상속 시스템 오류 수준의 상황으로 프로그램 코드상에서 처리할 수 있는 수준의 문제가 아님 VirtualMachineError, IOError Exception Class 상속 코드 오류가 아닌 실행과정에서 발생하는 예외적인 상황을 표현하기 위한 클래스들 실질적인 예외처리 코드를 반드시 명시하거나, throws 키워드를 사용해서 해당 예외를 넘길것을 알려야 함 public void testCase1() throws IOException - throws 키워드 사용 예 throws 사용시 해당 메소드를 호출한 지점으로 계속해서 넘어감 여러가지 예외상황을 throws 할 것을 한꺼번에 표기할 수 있음. public void test.. 2020. 7. 17.
Java - 예외처리 (1) 이 다음에도 강의가 이렇게 길지는 모르겠는데 지금까지 중에선 제일 길어서 나눠서 정리해야겠다. 예외처리의 기본 예외란? - 사용자가 개발자의 예상과 다른 조작 또는 행동으로 인해서 생기는 상황으로 문법적인 오류가 아님 예외처리란? - 위와 같이 정의된 예외가 발생한 상황에 대한 처리 자바의 기본 예외처리 예외가 발생한 지점과 발생한 예외에 대한 정보 안내 프로그램 종료 if - else 문을 통해서 예외를 처리할 수 있으나, 이 경우에 코드의 다른 부분에 사용된 if - else 문과 목적을 따로 구별해야 하는 수고가 발생한다. -> 따라서 예외처리를 위한 문법이 제공됨 JVM이 예외를 처리하는 방식은 OS가 인터럽트를 처리하는 방식과 유사하다. 예외가 발생하면 예외처리를 위한 작업을 먼저 진행한 후에 .. 2020. 7. 12.