Study

문제는 여기서 볼 수 있다. 간단히 설명하자면 여러 숫자가 포함되어 있는 배열이 주어지고, 해당 배열에서 세 개의 원소의 합이 0이 되는 경우의 수를 모두 찾는 것이다. 이것도 역시 예전에 풀어봤던 문제인데, 당시에는 브루트 포스로 풀어서 느린 성능을 보였다. 그리고 역시나 Discuss에서 굉장히 좋은 성능을 보이는 코드를 찾았었다. Discuss 코드를 보기 전에 스스로 풀어봤는데, 웬 걸! 그 코드와 같은 알고리즘을 생각해서 풀어냈다. 그런데 너무 코드가 길고 더러워서 블로그에는 예전에 찾았던 Discuss 코드를 남긴다. (분명 Discuss 어딘가에서 봤는데, 해당 글을 도저히 찾지 못하겠다 ㅠㅠ) 바로 코드 먼저 보자. class Solution: def threeSum(self, nums: ..
· Study/Java
앞서 작성한 JDK에 관한 글 마지막에 언급했던 것처럼 JDK를 다운로드하고 명령어 창에서 실행해보며, 이클립스에는 어떤 식으로 적용하면 될지 간략하게 적어본다. JDK 시작하기 자바 개발을 위해 JDK를 다운로드 했다면, 그것을 클래스경로(classpath)에 추가만 하면 된다. 사용할 자바 버전에 맞추어서 JDK를 다운로드 하면 되는데, 자바는 하위 호환성(Backward Compatibility)를 유지하므로 최신 버전 릴리즈를 다운로드해도 이전 버전의 환경에서도 사용 가능하다. 그래도 되도록이면 사용할 자바 개발 환경에 맞추어 다운로드하자. JDK 패키지 자바 버전을 선택했다면, 자바 패키지도 선택해야 한다. 패키지(Package)란 서로 다른 유형의 개발을 목적으로 하는 자바 개발 키트(JDK)..
· Study/Java
드디어 JVM, JRE 글에 이어 마지막인 JDK에 대한 글을 작성한다. Eclipse를 설정하면서 생겼던 'JRE와 JDK가 대체 뭐지'에 대한 궁금증부터 시작하여 여기까지 오게 되었다. 복습 및 예습 - JVM은 자바 프로그램을 실행하는 Java Platform 구성요소이다 (관련 글 1, 2, 3). - JRE는 JVM을 생성하는 디스크 상의 한 부분이다 (관련 글). - JDK는 개발자들이 JVM과 JRE에 의해 실행되고 구동될 수 있는 Java 프로그램을 생성할 수 있게 해준다. JDK란? Java Development Kit의 줄임말로, 말 그대로 자바 개발 키트. 즉, 자바로 애플리케이션을 만들 때 필요한 플랫폼 구성 요소들을 갖고 있는 키트이다. JRE은 물론, 컴파일러, 디버거 등의 개발..
정렬 알고리즘에 대해 찾아볼 일이 생겨 검색을 하다, 아래와 같이 좋은 사이트를 발견해서 글을 남겨둔다. www.java2novice.com/java-sorting-algorithms/ Java sorting algorithms - Java sorting algorithm programs I'm Nataraja Gootooru, programmer by profession and passionate about technologies. All examples given here are as simple as possible to help beginners. The source code is compiled and tested in my dev environment. If you come across any..
· Study/Java
자바 공부를 하다가 for-each문을 사용하는 여러 방법과 for문과의 속도 차이 등에 대해 찾다가, 좋은 사이트를 찾아서 저장하려고 남겨둔다. stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work How does the Java 'for each' loop work? Consider: List someList = new ArrayList(); // add "monkey", "donkey", "skeleton key" to someList for (String item : someList) { System.out.println(item); } What w... stackoverflow.com
· Study/Java
JRE에 대해 본격적으로 이야기하기 전에, 이전에 작성한 JVM에 대한 글을 먼저 보고 오는 것을 추천한다. JRE란? JRE란 Java Runtime Environment, 즉, 자바 런타임 환경이라는 뜻을 갖고 있다. 여기서 '런타임 환경'이란, 어떠한 소프트웨어를 실행하기 위한 또다른 소프트웨어다. 어떠한 소프트웨어, 그러니까 프로그램을 실행하기 위해 해당 프로그램을 구성하고 있는 클래스 파일을 로드하고, 메모리나 시스템 리소스 등에 대한 액세스를 확보한다. Java를 실행하기 위한 자바 런타임 환경(JRE)은 크게 아래 세 가지로 구성되어 있다. 자바 클래스 라이브러리(Java class libraries), 자바 클래스 로더(Java class loader), 자바 가상 머신(Java Virtu..
· Study/ETC
2020 우아한 테크 콘서트 2020년 12월 16일(수)부터 18일(금)까지 배달의 민족을 개발하고 운영 중인 우아한 형제들에서 테크 콘서트를 열었다. 시국이 시국이다 보니 온라인으로 개최되었고, 라이브 진행이 아닌 미리 찍어둔 영상을 유튜브 영상으로 올린 형식이었다. 현재는 오프닝 영상 빼고 다 내려갔지만, 8? 9? 가지 정도의 세션이 있었던 것으로 기억한다. 2020 우아콘의 핵심 오프닝만 봐도 알겠지만, 우아한 테크 콘서트(이하 우아콘)의 핵심은 '클라우드'였다. 거의 4년이라는 시간을 투자해 모든 개발 관련 기능들을 클라우드로 이관하고 아키텍쳐도 MSA 구조로 바꾸었다고 한다. 아마존과 넷플릭스의 사례가 떠오를 정도로 굉장히 거대한 레거시 시스템을 무사히 탈바꿈한 것으로 보인다. 2020 우아..
· Study/Java
지난 1편, 2편에 이어 마지막 3편이다. JVM이 어떻게 구성되어 있는지에 대해 알아본다. 이번 글도 역시 여기와 여기를 참고하며 작성하였다. JVM의 구성요소 자바 애플리케이션을 실행하기 위해 JVM은 자바 클래스 로더(Class Loader)와 자바 실행 엔진(Execution Engine)에 의존한다. 자세히 알아보기 전에 이전 글에서 보았던 그림을 다시 가져와 보자. JVM 자바 클래스 로더 (Class Loader) 자바에서는 모든 것이 클래스이며, 모든 자바 애플리케이션은 그러한 클래스로부터 만들어진다. 즉, 하나의 애플리케이션이 하나 또는 수천 개의 클래스로 구성될 수 있다는 말이다. 그러한 자바 애플리케이션을 실행하기 위해서는 컴파일된 .class 파일을 JVM 내로 로드(Load)하고 ..
· Study/Java
JVM에 대해 1편에 이어서 2편을 작성해본다. 1편에서는 JVM의 개념이나 정의, 용도 등을 알아보았다면, 이번 2편에서는 JVM의 세 가지 측면에 대해 알아본다. 이번 글도 여기와 여기를 참고하며 작성하였다. JVM의 3가지 측면 JVM에는 표준(Specification), 구현(Implementation), 인스턴스(Instance)의 3가지 측면이 있다고 할 수 있다. 표준(Specification) 표준, 즉, 다른 말로는 소프트웨어 사양이다. 여기서 "소프트웨어 사양(스펙)"이란, 어떤 소프트웨어 시스템이 어떻게 동작해야 하는 지를 정의한 인간이 읽을 수 있는 설계 문서이다. 이러한 문서의 목적은 엔지니어들이 이 문서를 보고 코딩할 수 있도록 하는 것이기 때문에 정확한 정의와 요구 사항 등을 ..