전체 글

Spring, Django, 코딩테스트 관련 지민의 TIL 블로그입니다!
· Java
1. java.lang.Object class 상속 관계에 있어 모든 클래스의 최상위 class이다. 2개의 주요한 method 제공 equals() 비교 : 메모리 위치가 같은 것인지, 의미 상 같은 것인지 비교가 다르다. == : 메모리 값 비교 equals 를 오버라이딩하지 않으면 메모리 주소 값을 비교한다. @Override public boolean equals(Object obj) { //인자로 들어온 객체 - Object ( 모든 객체가 들어올 수 있다.) // 인자로 들어온 인스턴스가 equals method를 가지고 있는 인스턴스의 내용과 같으면 같은 객체로 판별하는 로직 // 두 인스턴스의 데이터 타입이 같아야 하기 때문에 맞춰주어야 한다. Student target = (Student..
· Java
13. final keyword field 앞에 final이 올 경우 : 해당 필드가 값을 변경할 수 없다 . → 상수로 사용 method 앞에 final 이 올 경우 : overriding 못함. Class 앞에 final이 올 경우 : 해당 클래스를 아예 상속 할 수 없다. 14. abstract class ( 추상 클래스 ) 메서드의 선언만 있고, 정의가 없다. 선언만 되어있는 메서드 - 추상 메서드 클래스 내에 추상 메서드가 단 1개라도 존재한다면, abstract class로 잡아야 한다. 아직 완성되지 않은 클래스 → 인스턴스를 직접적으로 파생시킬수 없다. ⇒ 하위 클래스에서 상속 받아 @Override 을 해서 완성을 한다. 💡 왜 abstract class를 사용하는가? class간의 결합..
· Java
Exception 1. Exception 프로그램 실행 시 발생하는 다양한 형태의 오류. 서버 → 오류가 난다고 서버가 꺼지면 안된다. 만약 오류가 나고 코드로 처리하지 않으면 비정상 종료가 일어남. Exception Handling 을 하게 되면 프로그램을 비정상 종료시키지 않고, 지속적으로 실행시킬 수 있다. Java ⇒ 다양한 클래스의 Exception들로 제공된다. 최상위 Exception → 상속 → 상속… package exception; public class ExceptionTest { public static void main(String[] args) { System.out.println("일부러 예외상황을 발생시켜 보자."); // int result = 10 / 0; // excep..
· Java
4. JVM의 메모리 구조 JVM은 메모리를 용도에 따라 5개의 부분으로 나누어 관리함. Register 프로그램의 실행 포인터에 대한 정보를 저장하고 관리. 프로그램에서 건드릴 수 없는 영역. Runtime Constant Pool 상수 값이 들어가는 pool Method area Class 자체에 대한 정보가 들어가 있는 공간. ex) Method에 대한 정보가 들어가 있음 Class안에 정의된 Method에 대한 실행 코드도 들어가 있다. (Class가 처음 사용되는 시점. 딱 1번 실행되는 순간 메모리에 올라감) Heap area Instance가 생성되는 메모리 공간. instance variable의 공간이 생성됨 Method를 호출할 수 있는 실행 Pointer도 있다. Call stack ..
· 취업일기
3월 13일 하나 금융 TI에서 진행한 코딩테스트에 참여했다! 문제는 일반 문제 3문제ㅔ, SQL 3문제로 진행되었다. Python 문제 첫번째 문제는 동전의 최소 갯수를 구하는 문제였다.. N 원이 있으면 500원 100원 50,10원 으로 몇개의 동전으로 만들 수 있냐.... 기본적인 문제였던것 같다! 두번째 문제는 그래프 문제. 음 계속 4방향으로 움직일 수 있는 그래프 문제만 풀었는데 한번 움직이면 해당 방향으로만 움직이지 못하는 그런 문제였다... 세번째 문제는 친분이 있는 N명의 팀원으로 팀을 구성하고 해당 팀원들을 출력하는 문제였다. 해당 문제는 M번째 사람의 리스트에 친분이 있는 사람들을 넣어서 N명이 되면 출력해버렸다. SQL 문제 첫번째 문제는 기억이 ... 두번째 문제는 기본적인 문제..
· Java
진도표 5일차와 연결됩니다 우리는 라는 개념을 배웠습니다. 에 대한 감각을 익히기 위해서는 어떤 코드가 좋은 코드이고, 어떤 코드가 좋지 않은 코드인지 이론적인 배경을 학습하는 것도 중요할 뿐 아니라, 다양한 코드를 읽어 보며 어떤 부분이 읽기 쉬웠는지, 어떤 부분이 읽기 어려웠는지, 읽기 어려운 부분은 어떻게 고치면 좋을지 경험해보는 과정이 필요합니다. 이번 과제는 제시된 코드를 읽어보며, 코드를 더 좋은 코드로 고쳐나가는 과정입니다. 구글에 “클린 코드” 혹은 “클린 코드 정리”를 키워드로 검색해보면, 이론적인 배경을 충분히 찾아보실 수 있습니다. 🙂 그러한 내용들을 보며 제시된 코드를 더 좋은 코드로 바꿔보세요! (코드를 바꿀 때 왜 바뀐 코드가 더 좋은 코드인지 다른 사람에게 설명하신다고 생각해보..
· Spring
데이터 베이스를 사용해 만드는 API 기존의 코드들을 사용했을 때는 서버가 꺼졌다 켜지면 데이터가 날아갔다. 데이터 베이스를 사용해서 데이터를 저장하고 계속해서 쓸 수 있도록 하자. 데이터베이스를 사용하는 방법엔 Jdbc, JPA, Data JPA가 있다. 우선은 JDBC를 이용해서 데이터 베이스를 사용하자 진도표 4일차와 연결됩니다 우리는 GET API와 POST API를 만드는 방법을 배웠습니다. 👍 추가적인 API 들을 만들어 보며 API 개발에 익숙해져 봅시다! @PostMapping("api/v1/fruit") public void saveFruit(@RequestBody FruitRequest request){ String sql = "Insert into fruit(name, warehous..
· Spring
우리는 JdbcTemplate을 사용하는 과정에서 익명 클래스와 람다식이라는 자바 문법을 사용했습니다. 익명 클래스는 자바의 초창기부터 있던 기능이고, 람다식은 자바 8에서 등장한 기능입니다. 다음 키워드를 사용해 몇 가지 블로그 글을 찾아보세요! 아래 질문을 생각하며 공부해보면 좋습니다! 😊 [키워드] 익명 클래스 / 람다 / 함수형 프로그래밍 / @FunctionalInterface / 스트림 API / 메소드 레퍼런스 [질문] 자바의 람다식은 왜 등장했을까? 람다식과 익명 클래스는 어떤 관계가 있을까? - 람다식의 문법은 어떻게 될까? 1. 자바의 람다식은 왜 등장했을까? 람다식은 메서드를 하나의 식으로 표현한것! 메서드의 이름과 반환값이 없어지므로 익명함수라고도 불린다. 람다식으로 메서드를 변수처..
· Java
1.1 람다식이란? 메서드를 하나의 식으로 표현한 것이다. 함수를 간략하면서도, 명확한 식으로 표현할 수 있게 해준다. 함수형 언어의 특징을 가지고 있다. int[] arr = new int[5]; Arrays.setAll(arr,(i)->(int)(Math.random()*5)+1); 다음의 문장에서 (i)->(int) (Math.random()\*5)+1); 이 람다식이다. 메서드로 하는 일을 표현하자면 int method(){ return (int)(Math.random()*5)+1; } 이다. 모든 메서드는 클래스에 포함되어야 하기 때문에 클래스도 필요하고, 객체도 생성해야 메서드를 호출할 수 있지만, 람다의 등장으로 그럴 필요가 없어졌다. 람다는 메서드의 매개변수로 전달되는것도 가능하다. 1.2..
· Spring
진도표 2일차와 연결됩니다 우리는 GET API와 POST API를 만드는 방법을 배웠습니다. 👍 추가적인 API 들을 만들어 보며 API 개발에 익숙해져 봅시다! // example/Controller package com.group.libraryapp.controller.example; import com.group.libraryapp.dto.calculator.request.CalculatorMultiplyRequest; import com.group.libraryapp.dto.example.request.CalculatorReqeust; import com.group.libraryapp.dto.example.request.DayRequest; import com.group.libraryapp.dt..
jmboy
dev_jm