일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ChainMap
- Oracle
- spring
- defaultdict
- 쓰는이유
- 싱글톤
- 청크
- GCP Storage
- PYTHON
- select
- 파이썬
- orderedDict
- 백준
- Spring Framework
- 리스트 자르기
- DAO의 분리
- 데이터베이스
- react
- 자바
- 스프링
- 개발기록
- 싱글톤 레지스트리
- java
- DAO
- overriding
- null
- JIT
- 오버라이딩
- 121
- 외부조인
- Today
- Total
목록전체 글 (45)
PengTory
유클리드 호제법이란? (최대공약수 구하기) 유클리드 호제법 또는 유크리드 알고리즘은 2개의 자연수 또는 정식의 최대 공약수를 구하는 알고리즘의 하나이다. 호제법이란 두 수가 서로 상대방 수를 나누어 결국 원하는수를 얻는 알고리즘을 나타낸다. 예시 * mod란 나머지 연산을 의미한다. 1071, 1029의 최대공약수 1) 1071은 1029로 나누어 떨어지지 않기 때문에 1071 mod 1029를 계산한다. => 42 2) 1029는 42로 나누어 떨어지지 않기 때문에 1029 mod 42를 계산한다. => 21 3) 42는 21로 나누어떨어진다. => 최대공약수: 21 24와 18의 최대공약수 1) 24와 18은 나누어 떨어지지 않기 때문에 24 mod 18을 계산한다. => 6 2) 18은 6으로 나누..
오버라이딩이란? 오버라이딩이란 상속 관계에 있느 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것을 말한다. 자바에서 자식 클래스는 부모 클래스의 private을 제외하고는 모든 메소드를 상속받는다. 상속받은 메소드는 그대로 사용할 수 도 있지만 필요에 의해 재정의해 사용할 수 있다. 따라서 메소드 오버라이딩이란 상속받은 부모 클래스의 메소드를 재정의해 사용하는 것을 말한다. 오버라이딩의 조건 오버라이딩은 메소드의 내용만 새로 작성하는 것이기 때문에 메서드의 선언부는 부모의 것과 완전히 일치해야 한다. 따라서 오버라이딩 성립을 위해서는 아래 조건이 만족되어야한다. 1) 메소드의 선언부는 기존 메소드와 완전히 같아야한다. 2) 메소드의 반환 타입은 부모 ..

SpringBoot를 사용해 이미지를 함께 저장해야하는 POST API를 만들고 있다. 공부용으로 항상 사용하던 AWS s3 말고 GCP storage를 사용해보고 있다. GCP storage는 s3와 굉장히 비슷하게 이루어져있는 것 같다. 이번 프로젝트에서도 GCPService 클래스를 만들어 GCP storage에 이미지를 올리고 url을 받아 DB에 저장주는 방식을 사용했다. 파일을 업로드하는 코드는 아래와 같다. @Service @Slf4j public class GCPService { @Value("${SPRING_GCP_BUCKETNAME}") private String bucketName; @Autowired private Storage storage; public List uploadFil..

초 난감 예외처리 try{ // ... } catch(SQLException e){ } // 예외를 잡고 아무 것도 안함 -> 만들어선 안됨 try catch문을 써서 예외를 잡아낸 것은 좋지만 catch문 안에 아무것도 쓰지 않아 넘겨버리는 것은 위험하다. 왜냐하면 프로그램 실행 중 오류가 있어 예외가 발생했는데 이를 무시하고 계속 진행하기 때문이다. 그렇다면 cath문 안에 e.printStackTrace() 혹은 System.out.println(e)와 같이 메시지를 출력하는 방법은 어떨까? 잠깐 해결된 듯 보이지만 다른 로그나 메시지에 금방 묻혀 찾기 어려울 것이다. 그렇다면 정상적인 예외처리를 하기 위한 방법을 적어보겠다. 예외의 종류와 특징 자바에서 throw를 통해 발생시킬 수 있는 예외는 ..
LeetCode 문제를 풀던중 아래와 같은 형식으로 양식이 주어진 것을 보았다. Optional[TreeNode] 와 관련해서 찾아보던 중 파이썬에 Typing이라는 것이 있는 것을 알고 정리해보았다. class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: Typing 파이썬은 변수의 타입을 일일이 명시하지 않아도 되고 특정 변수의 타입이 중간에 바뀌어도 되는 동적언어이다. 다른 언어에 비해 배우기 쉽고 빠르게 프로그래밍이 가능하다는 장점이 있지만, 잘못된 타입을 사용하여 예상치 못한 에러를 마주할 수 있다는 단점이 있다. 이러한 문제를 해결하기 위해 최근 이러한 동적 언어들에 타입을 명시하고자 하는 수요가..

JDBC try/ catch/ finally JDBC 수정 기능의 예외처리 코드 앞서 만든 UserDao 코드에서는 많은 점을 개선 했지만 아직 예외상황에 대한 처리가 없다는 문제점이 있다. 기존의 deleteAll() 코드를 보자. public void deleteAll() throws SQLException{ Connection c = dataSource.getConnection(); // 여기서 예외가 발생하면 바로 메소드 실행이 중단됨 PreparedStatement ps = c.prepareStatement("delete from users"); ps.executeUpdate(); ps.close(); c.close(); } 정상 처리가 된다면 메소드를 마치기 전 close() 를 호출해 리소드..
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ 1번 시도 -> 잘 돌아가는가 했으나 Time Limit Exceeded 2중 for문을 사용해 브루트포스 방법으로 모든 경우의 수를 돌려보려 했으나 시간복잡도가 O(n^2)여서 Time Limit에 걸린 것 같음 이중 for문을 사용하지 않는 방식을 고려해보자 class Solution: def maxProfit(self, prices: List[int]) -> int: # small이 무조건 가장 작은 값이 아님 -> 계산을 한 값을 넣어야 할 것 같음 small = prices[0] profit = [] minIndex = 0 for i in range(len(prices)): if pr..
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 짜는 문제이다. 나는 이 문제를 모든 경우를 대입해보는 브루트포스 - 재귀 방법으로 풀어보았다. go()라는 함수에는 합을 나타내는 sum과 문제에서 제공해주는 정수 n 값을 인자로 받는다. 함수의 종료 조건은 다음과 같다. 1) 1,2,3 들의 합(sum)이 n을 넘어가면 함수를 종료 2) sum과 n이 일치하면 우리가 찾는 결과이기 때문에 count를 +1 해준다. sum이 아직 n보다 작다면 1을 ..