분류 전체보기

자바는 가비지 컬렉터가 있으므로, 개발자는 메모리 관리에 신경쓰지 않아도 된다고 오해할 수 있으나, 사실을 전혀 그렇지 않다. 물론 C같은 언어에 비해 신경쓸 부분이 적어지는건 사실이지만.. 다음 코드를 보며 설명을 이어가겠다. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack(){ elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e){ ensureCapacity(); elements[size++] = e; } public ..
똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. 재사용은 빠르고 세련되다. 특히 불변 객체는 언제든지 재사용할 수 있다. 다음 코드는 하지 말아야 할 극단적인 예시이다. String s = new String("신동훈"); 이 문장은 실행될 때마다 String 인스턴스틀 새로 만든다. 완전히 쓸데없는 행위다. 생성자에 넘겨진 "신동훈" 자체가 이 생성자로 만들어내려는 String과 기능적으로 완전히 똑같다. 이 문장이 반복문이나 빈번하게 호출되는 메서드 안에 있다면 쓸데없는 String 인스턴스가 수백만 개 만들어질 수도 있다. String s = "신동훈"; 이 코드는 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용한다. 이에 관련되서는 아..
· 🐳 TIL
오늘 공부한 내용 이펙티브 자바 - 아이템 3~5 정리해서 포스팅 백준 bfs/dfs 1문제 풀기 스프링 @Service, @Controller 등에 record 타입 적용해보기 역직렬화를 통해 싱글톤 깨부수기, 방어하는 방법 공부 💭느낀 점 & 배운 점 스프링 @Service, @Controller등의 스프링 빈을 record 타입으로 만들어서 사용해 보았다. 일단은 잘 동작하지만, 함부로 써도 될지는 잘 모르겠다. 역직렬화를 통해 싱글톤이 깨지는 것을 테스트해보고, 이를 방어하기 위해 readResolve를 구현해보았다. 싱글톤으로 관리되는 스프링 빈도 역직렬화 과정을 통해 싱글턴이 깨질 수 있음을 공부하였다. 그러나 조금 물어보니 이를 따로 방어하면서까지 사용하지는 않는 것 같았다. 🔥내일 공부할 ..
대부분의 클래스들은 하나 이상의 자원(클래스)에 의존한다. 책에서는 맞춤법 검사기를 예로 들었는데, 한번 살펴보자. 여기 사전에 의존하는 맞춤법 검사기가 있다. 정적 유틸리티를 잘못 사용한 예 public class SpellChecker { private static final Lexicon dictionary = new Lexicon(); private SpellChecker() {} //객체 생성 방지 public static boolean isValid(String word){ //... } public static List suggestions(String typo){ //... } } 위처럼 SpellChecker를 정적 유틸리티 클래스로 만들면 유연하지 않고 테스트하기가 어렵다. 싱글턴을 잘..
개발을 하다 보면 단순히 정적 메서드와 정적 필드만을 담은 클래스(유틸리티 클래스)를 만들고 싶을 때가 있을 것이다. 객체 지향적으로 사고하지 않는 이들이 종종 남용하는 방식이기에 그리 곱게 보이지는 않지만 분명 나름의 쓰임새가 있다. 예컨대 java.lang.Math와 java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리)를 모아놓을 수도 있다. 마지막으로 final 클래스와 관련한 메서드들을 모아놓을 때도 사용한다. final 클래스를 상속해서 하위 클래스에 메서드를 넣는 건 불가능하기 때문이다. 만약 정적 멤버만 담은 유틸리티 클래스를 만들 때, 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어준다. 하지만 우리는 유틸리티 ..
싱글턴(Singleton)이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴에 대해서는 필자가 정리해 둔 글을 참고하자. [Spring] 싱글톤 컨테이너 (feat. 싱글톤을 구현하는 여러 방식) 싱글톤 싱글톤 패턴은 어떤 클래스의 인스턴스가 오직 하나만 생성되는 것을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 패턴이다. 싱글톤 구현 1. Eager Initialization (이 ttl-blog.tistory.com 클래스를 싱글톤으로 만들면, 이에 대한 테스트코드 작성이 어려워질 수 있다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 가짜(Mock) 구현으로 대체할 수 없기 때문이다. 싱글턴을 구현하는 방..
BFS와 DFS 시간 제한메모리 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 163706 57810 34044 34.656% 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력..
· 🐳 TIL
오늘 공부한 내용 이펙티브 자바 - 아이템 8 공부 자바 최적화 공부 백준 bfs/dfs 1문제 풀기 💭느낀 점 & 배운 점 다시 백준을 시작하기러 했다..! AnA 회장이 되기도 했고.. 알고리즘도 꾸준히 하기는 해야할 거 같아서.. 사실 요즘 이래저래 현타를 조금 많이 느껴서, 우선 알고리즘도 진행하며 개강 전 조금 쉬어가는 시간을 가지려구 한다. 🔥내일 공부할 내용 이펙티브 자바 - 아이템 3~8 정리해서 포스팅 공부 자바 최적화 공부 이것이 우분투 리눅스다 - 챕터 4 이어서 공부 스프링 핵심 원리 고급편 - 리플렉션 공부 오라클 데이터베이스 - 서브쿼리 공부 모던 자바 인 액션 - 5.7.1 부터 오늘 공부한 내용 포스팅
말 랑
'분류 전체보기' 카테고리의 글 목록 (141 Page)