분류 전체보기 (222) 썸네일형 리스트형 [이펙티브자바] 아이템11. equals를 재정의하려거든 hashCode도 재정의하라 equals를 재정의할 때 hashCode를 재정의하지 않으면 HashMap이나 HashSet같은 컬렉션의 원소로 클래스의 인스턴스를 사용할 때 문제가 된다. Object 명세 규약 equals 비교에 사용되는 정보가 바뀌지 않으면 몇 번을 호출해도 hashCode는 같은 값을 리턴한다. 어플리케이션이 재실행되면 값이 달라질 수도 있다. equals(Object)가 두 객체를 같다고 판단하면 hashCode도 같아야 한다. equals가 다르다고 hashCode도 다른 값을 반환할 필요는 없다. 하지만 다른 값을 반환해야 해시테이블의 성능이 좋아진다. @Getter @Setter @AllArgsConstructor public class User { private int id; private int ph.. 백준 3085번 사탕 게임 자바 풀이 ❓문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오. 🔠 입력 첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50) 다음 N개 줄에는 보드에 채워져 있는 사탕의 색상이 주어진다. 빨간색은 C, 파란색은 P, 초록색은 Z, 노란색은 Y로 주어진다. 사탕의 색이 다른 인접한.. 백준 2309번 일곱 난쟁이 자바 풀이 ❓문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. 🔠 입력 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. 🖨️출력 일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁.. [이펙티브자바] 아이템10. equals는 일반 규약을 지켜 재정의하라 equals메서드는 많은 경우에 Object의 equals가 정확히 비교해주기 때문에 꼭 필요한 경우가 아니라면 재정의하지 말자. equals를 재정의 하지 말아야하는 경우 각 인스턴스가 본질적으로 고유하다. 인스턴스가 가지는 값보다 동작하는 개체임을 나타내는 게 더 중요한 클래스(Thread) Thread클래스는 Object의 equals로 충분함 인스턴스의 논리적 동치성을 검사할 일이 없다. java.util.regex.Pattern의 equals를 재정의해서 두 Pattern인스턴스가 같은 정규표현식을 나타내는지 검사할 필요가 없다. 상위 클래스에서 재정의한 equals가 하위클래스에도 딱 들어맞는다. 클래스가 private이거나 package-private이고 equals메서드를 호출할 일이 없다.. [이펙티브자바] 아이템9. try-finally보다는 try-with-resources를 사용하라 자바 라이브러리에서 close메서드를 호출해 직접 자원을 닫아 줘야하는 경우가 있다. (InputStream, OutputStream, java.sql.Connection 등..) 자원을 닫을 때 finalizer는 믿을 수 없다. 2022.02.24 - [책리뷰/이펙티브자바] - [이펙티브자바] 아이템8. finalizer와 cleaner사용을 피하라 전통적인 방법으로는 try-finally가 쓰였다. try-finally 구문의 문제 static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(.. wsl2 우분투 cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running? wsl2에서 docker실행할 때 계속 저 에러가 나는데 뜨문뜨문 할 때마다 계속 검색하는 내 자신이 싫어서 남겨놓음. $docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? $systemctl start docker System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down $sudo /etc/init.d/docker start $docker ps Spring Boot security Oauth2 로그인 연동 (구글/카카오) Spring security 스프링 시큐리티는 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크다. Spring 기반 애플리케이션을 보호하기 위한 사실상의 표준이다. 인증과 권한 부여를 제공하는데 중점을 둔 프레임워크. Spring Security Oauth 프로젝트는 더이상 제공되지 않고 Spring Security에서 포괄적인 Oauth2 지원을 제공한다. Google Oauth2 연동 SetUp 1. 프로젝트생성 구글 개발자 콘솔 API Project를 선택 🔽 🔽 2. API 및 서비스 > Oauth동의화면 🔽 Oauth동의 화면에서 앱이름과 사용자지원이메일, 개발자 연락처 정보를 입력한다. 🔽 범위에서 범위 추가 또는 삭제를 통해서 userInfo.email, profile, openid를 .. [이펙티브자바] 아이템8. finalizer와 cleaner사용을 피하라 자바에서는 두 가지 객체 소멸자를 제공하는데 Finalizer는 예측불가능하고 위험하며 대부분 불필요하다. 자바9에서 deprecated되었다. 그 대안으로 Cleaner를 사용하는데 Finalizer보다는 덜 위험하지만 예측불가능하며, 느리고, 불필요하다. 자바에서 접근할 수 없는 객체 자원을 회수하는 역할은 GC가 한다. 비메모리 자원을 회수하기 위해서는 try-with-resource, try-finally를 사용해 해결한다. 사용을 피해야하는 이유1 언제 수행될지 모른다. finalizer와 cleaner로 제때 실행되어야하는 작업은 절대 할 수 없다. 타이밍이 중요한 작업은 절대 사용하면 안된다. 예를 들어, 파일 닫기를 처리한다면 시스템이 finalizer나 cleaner실행을 게을리 해서 동.. 이전 1 ··· 12 13 14 15 16 17 18 ··· 28 다음