정렬 알고리즘에 대해 찾아볼 일이 생겨 검색을 하다, 아래와 같이 좋은 사이트를 발견해서 글을 남겨둔다. 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..
불로소득을 향하여
자바 공부를 하다가 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
JRE에 대해 본격적으로 이야기하기 전에, 이전에 작성한 JVM에 대한 글을 먼저 보고 오는 것을 추천한다. JRE란? JRE란 Java Runtime Environment, 즉, 자바 런타임 환경이라는 뜻을 갖고 있다. 여기서 '런타임 환경'이란, 어떠한 소프트웨어를 실행하기 위한 또다른 소프트웨어다. 어떠한 소프트웨어, 그러니까 프로그램을 실행하기 위해 해당 프로그램을 구성하고 있는 클래스 파일을 로드하고, 메모리나 시스템 리소스 등에 대한 액세스를 확보한다. Java를 실행하기 위한 자바 런타임 환경(JRE)은 크게 아래 세 가지로 구성되어 있다. 자바 클래스 라이브러리(Java class libraries), 자바 클래스 로더(Java class loader), 자바 가상 머신(Java Virtu..
2020 우아한 테크 콘서트 2020년 12월 16일(수)부터 18일(금)까지 배달의 민족을 개발하고 운영 중인 우아한 형제들에서 테크 콘서트를 열었다. 시국이 시국이다 보니 온라인으로 개최되었고, 라이브 진행이 아닌 미리 찍어둔 영상을 유튜브 영상으로 올린 형식이었다. 현재는 오프닝 영상 빼고 다 내려갔지만, 8? 9? 가지 정도의 세션이 있었던 것으로 기억한다. 2020 우아콘의 핵심 오프닝만 봐도 알겠지만, 우아한 테크 콘서트(이하 우아콘)의 핵심은 '클라우드'였다. 거의 4년이라는 시간을 투자해 모든 개발 관련 기능들을 클라우드로 이관하고 아키텍쳐도 MSA 구조로 바꾸었다고 한다. 아마존과 넷플릭스의 사례가 떠오를 정도로 굉장히 거대한 레거시 시스템을 무사히 탈바꿈한 것으로 보인다. 2020 우아..
지난 1편, 2편에 이어 마지막 3편이다. JVM이 어떻게 구성되어 있는지에 대해 알아본다. 이번 글도 역시 여기와 여기를 참고하며 작성하였다. JVM의 구성요소 자바 애플리케이션을 실행하기 위해 JVM은 자바 클래스 로더(Class Loader)와 자바 실행 엔진(Execution Engine)에 의존한다. 자세히 알아보기 전에 이전 글에서 보았던 그림을 다시 가져와 보자. JVM 자바 클래스 로더 (Class Loader) 자바에서는 모든 것이 클래스이며, 모든 자바 애플리케이션은 그러한 클래스로부터 만들어진다. 즉, 하나의 애플리케이션이 하나 또는 수천 개의 클래스로 구성될 수 있다는 말이다. 그러한 자바 애플리케이션을 실행하기 위해서는 컴파일된 .class 파일을 JVM 내로 로드(Load)하고 ..
JVM에 대해 1편에 이어서 2편을 작성해본다. 1편에서는 JVM의 개념이나 정의, 용도 등을 알아보았다면, 이번 2편에서는 JVM의 세 가지 측면에 대해 알아본다. 이번 글도 여기와 여기를 참고하며 작성하였다. JVM의 3가지 측면 JVM에는 표준(Specification), 구현(Implementation), 인스턴스(Instance)의 3가지 측면이 있다고 할 수 있다. 표준(Specification) 표준, 즉, 다른 말로는 소프트웨어 사양이다. 여기서 "소프트웨어 사양(스펙)"이란, 어떤 소프트웨어 시스템이 어떻게 동작해야 하는 지를 정의한 인간이 읽을 수 있는 설계 문서이다. 이러한 문서의 목적은 엔지니어들이 이 문서를 보고 코딩할 수 있도록 하는 것이기 때문에 정확한 정의와 요구 사항 등을 ..
JDK, JRE를 공부하다가 JVM이라는 용어가 많이 나와 공부한 결과를 글로 남긴다. 여기와 여기의 글이 많은 도움이 됐다. 글이 길어져 2, 3편으로 나누었다. JVM이란? Java Virtual Machine의 약자로 말 그대로 "자바 가상 머신"이며, 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. (가상 머신이란 어떠한 프로그램을 실행하기 위한 물리적인 환경, 즉, 하드웨어를 소프트웨어로 구현한 것이다) JVM의 주요 기능은 시스템 메모리를 관리하면서 자바 기반의 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다. 간단히 말하면 어떠한 환경에서든 Java 코드의 변경 없이 실행되게 해준다. 중요하게 볼 부분은 "메모리를 관리(Garbage Collection, GC)"한다는 것과 "이식..
이 문제도 반 년 전쯤에 풀었던 문제다. 복습 겸 내 풀이와 가장 빠른 풀이를 남겨본다. 문제는 여기에서 확인해보면 된다. 문제 설명 간단하게 문제를 설명하자면, 한 문자열에서 가장 긴 Palindrome을 찾는 것이다. 여기서 Palindrome이란, '회문'이라고도 불리며, 앞에서 읽어도 뒤에서 읽어도 같은 문자열을 뜻한다. 예를 들면, 'abcba'나 'abba'는 Palindrome이라고 할 수 있다. Palindrome인지 확인하는 함수는 Two Pointer 방법이나, 파이썬에서는 [::-1]을 이용하면 쉽게 구현할 수 있다. 내 풀이 코드 먼저 보자. import re class Solution: def isPalindrome(self, s:str) -> bool: return s == s[..
앞서 작성한 1편과 2편에 이은 마지막 3편이다. 서브넷 마스크에 대해 간단히 작성해보려고 한다. 서브넷 마스크(Subnet Mask)란? 서브넷 마스크는 'Subnet'과 'Mask'라는 두 단어로 이루어져 있는데, 뜻을 풀어쓰면 아래와 같다. '하위(Sub) 네트워크(net)를 구분하는 표기(Mask) 법' 이게 무슨 소린가 싶지만, 이럴 땐 역시 비유를 들어 생각해보는 것이 최고다. 어떠한 2층짜리 주택이 있다고 하자. 이 주택을 소유하고 있는 사람은 2층에서 거주 중이며, 1층에는 세를 주어서 다른 가족이 들어와 살고 있다. 이 주택에 거주하고 있는 두 가구는 주소는 거의 같지만, 소유주는 '2층'에, 세입자는 '1층'에 살고 있으므로 주소의 마지막 부분이 엄연히 다르다. 그래서 택배나 우편물을 ..