본문 바로가기

분류 전체보기90

[Java Study 1주차] JVM은 무엇이고 자바 코드는 어떻게 실행하는 것인가 본 포스팅은 백기선님이 진행하시는 자바 스터디를 진행하며 혼자 공부하고 이해한 내용을 바탕으로 정리한 글입니다. 오류나 지적 사항이 있다면 댓글로 알려주시면 감사하겠습니다. 목표: 자바 소스 파일(*.java)을 JVM으로 실행하는 과정 이해하기 자바 프로그램은 어떤 과정을 거쳐서 실행될까? 자신이 사용하는 언어로 작성된 프로그램이 어떤 방식으로 동작하는지 아는 것은 매우 중요합니다. 그래야 문제가 발생하더라도 어떤 과정에 어떤 부분에서 문제가 생겼는지, 왜 이런 문제가 발생했는지 등을 이해할 수 있습니다. 이 글에서는 자바 프로그램이 어떻게 동작하는지 처음부터 끝까지 자세하게 알아보도록 하겠습니다. 컴퓨터 프로그램은 먼저 사람이 읽을 수 있는 프로그래밍 언어로 작성된 후 이를 컴퓨터가 알아들을 수 있는.. 2020. 12. 28.
자료형(Data Type)이 도대체 뭘까? 소설같은 자바를 읽으면서 새삼 새로웠던 부분이 데이터 타입과 관련된 부분이다. 파이썬 같은 동적 타입 언어 이외의 언어는 많이 다뤄보질 않아서 더욱이 생각해보지 못했던 질문인데, 그것은 바로 왜! 변수 앞에 자료형을 명시하느냐! 하는 것이다. 그냥 이 변수가 어떤 자료형인지 알려주기 위해서? 정도로 생각했는데 더욱 중요한 이유가 있었다. 간단히 말하면 데이터 타입은 메모리를 생성하기 위한 도구이며 자바에서 메모리를 생성하는 방법은 오로지 데이터 타입을 이용하는 것밖에 없다(왜 "자바에서"라는 말이 들어가는지는 모르겠는데 책에 그렇게 적혀있다;;). 만약 프로그래밍을 하는데 4 바이트의 메모리를 얻어내는 일이 매우 빈번하게 일어난다면 4 바이트의 메모리를 얻는 일반적인 방법이 필요할 것이다. 이를 위해 메.. 2020. 12. 26.
[백준]1157번 단어공부 - java[자바] 문제 단어공부 단어가 주어지면 가장 많이 사용된 알파벳을 반환하는 문제이다. 가장 많이 사용된 알파벳이 2개 이상이면 ?를 반환한다. 대소문자를 구분하지 않는다. 입출력 예 입력 출력 Mississipi ? zZa Z z Z baaa A 풀이 및 접근방법 문제를 보자마자 알파벳을 Key로 사용횟수를 Value로 하는 Map을 만들어서 이용하면 쉽게 풀이할 수 있겠다는 생각이 들었다. 너무 뻔한 풀이 같아서 각 알파벳의 아스키코드를 인덱스로 해서 사용횟수를 배열에 저장해서 풀어보려 했는데, 가장 많이 사용된 알파벳의 숫자가 두 개 이상인 경우에 코드가 복잡해져서 포기하고 그냥 Map을 사용했다. 코드 import java.util.Comparator; import java.util.HashMap; impo.. 2020. 12. 26.
우테코 3기 최종 코테 후기 최종 미션은 지하철 경로의 소요 시간과 총 거리를 계산하는 프로그램을 구현하는 것이었다. 결론부터 말하자면, 탈락이 거의 확실할 것 같다. 그래프를 한번도 이용해본 적이 없는데, 그래프를 이용하는 문제라서 많이 당황했던 것 같다. 최종 메일을 보내는 것도 실수로 마감 시간이 끝나고 4분 뒤에 보냈다. 이번 우테코 3기에는 참여하지 못하겠지만, 프리코스를 거치면서 앞으로 어떻게 프로그래밍을 공부해야 할지 어느정도 감이 잡혔다. 선발 과정 자체에서 배우는 것이 많았어서, 탈락하게 되더라도 준비한 기간이 아깝지는 않을 것 같다. 앞으로는 자바 공부와 스프링 공부에 시간을 많이 투자해야겠다. 아쉽지만 내년을 기약하며,,, 2020. 12. 19.
[Django] verbose_name_plural 메타 클래스, verbose_name_plural 어드민 패널을 만지다 보면 내가 등록한 모델 이름을 장고 어드민이 알아서 복수로 만들어 주는 것을 알 수 있다. 그럴때 가끔 -y 로 끝나는 단어의 끝에도 그냥 s를 붙이는 경우가 있는데, 이때 메타 클래스의 verbose_name을 이용해서 바꿔줄 수 있다. 모델 안에 내부 클래스로 메타 클래스를 추가하고 verbose_name_plural에 복수형으로 사용할 이름을 추가해준다. 2020. 11. 18.
[자료구조] 단일연결리스트 reverse 메서드 구현 (java) 단일연결리스트의 reverse 메서드를 구현해봅시다. 단일연결리스트의 객체는 head 정보, 그리고 노드는 다음 노드 정보만 가지고 있는 가장 단순한 형태의 단일연결리스트입니다. 코드로 표현하면 다음과 같습니다. public class SinglyLinkedList { Node head; static class Node { int data; Node next; } } 코드를 복잡하게 만들지 않기 위해서 toString()이나 add() 메서드는 이미 구현되어 있다고 가정하겠습니다. public class UnitTest { public static void main(String[] args) { SinglyLinkedList list = new SinglyLinkedList(); list.addLast(.. 2020. 11. 13.