본문 바로가기

전체 글

(424)
Effective Java 2/E, 이펙티브 자바 책 핵심요약 전체 목차 Github https://github.com/itdar/TIL/blob/main/books/effective_java/effective_java.md GitHub - itdar/TIL: Today I Learned Today I Learned. Contribute to itdar/TIL development by creating an account on GitHub. github.com Effective Java 2/E 서론 객체의 생성과 삭제 모든 객체의 공통 메서드 규칙9. equals를 재정의할 때는 반드시 hashCode도 재정의하라 클래스와 인터페이스 규칙13. 클래스와 멤버의 접근 권한은 최소화하라 규칙14. public 클래스 안에는 public 필드를 두지 말고 접근자 메서드를..
Linux 명령어: find Linux 명령어: find find 이름, 사이즈, 소유자, 날짜 와 같은 특정 조건을 가진 파일 또는 디렉토리를 찾는 명령 -exec 옵션으로 찾아낸 파일에 대해 특정 명령을 실행 가능 검색 옵션 옵션의 종류 내용 -name 원하는 이름의 파일을 찾아주며, 와일드카드(*,?,[])를 사용 가능 -type 찾고자 하는 것이 파일(f)인지, 디렉터리(d)인지, 링크(i)인지 등을 정한다 -user 지정한 사용자가 소유한 파일을 찾는다. -size 크기가 n인 파일을 찾는다. (-n, n, +n) -newer 지정한 파일보다 나중에 생성된 파일을 찾아준다. -empty 비어있는 파일을 찾는다. 동작 옵션 옵션의 종류 내용 -exec 찾아낸 파일을 인수로 지정한 명령을 수행한다 -print 찾아낸 파일의 전..
[LeetCode] 94. Maximum Number of Balls in a Box (TDD, 코테, 릿코드, tech interview) 풀이 코드 import java.util.ArrayList; import java.util.List; public class LeetCode_0094_BinaryTreeInorderTraversal { private List result = new ArrayList(); public List inorderTraversal(TreeNode94 root) { if (root == null) { return result; } recursiveInorderTraversal(root); return result; } private void recursiveInorderTraversal(TreeNode94 node) { if (node.left != null) { recursiveInorderTraversal(no..
프로세스의 메모리 주소 공간 (Memory address space of Process) 프로세스의 메모리 주소 공간 코드 데이터 힙 스택 현대의 모든 운영체제는 가상 메모리 기반으로 동작함 각 프로세스는 독립적인 가상 메모리의 주소 공간을 갖는다. 프로세스는 자신만 메모리를 독점하고 있다고 생각 코드 실행할 프로그램의 코드가 저장 프로그램 시작부터 끝까지 메모리에 남아있음 데이터 초기화 된 데이터 전역변수, 정적(static)변수, 소스코드 상의 문자열 실행파일에 데이터를 기록해야함 실행 파일의 크기가 크다.초기화 되지 않은 데이터 (BSS-Block Started by Symbol) 초기화 없이 해당 데이터의 사이즈만 기억함 해당 부분을 실행 할 때 할당 받으면서 0으로 초기화함 실행 파일의 크기가 작다. 힙 (Heap) 동적으로 할당한 메모리를 저장 개발자가 관리하는 메모리 영역 (할당..
Spring Security 5 OAuth 정리 (클라에서 서버까지) Spring Security 5 OAuth 정리 (클라에서 서버까지) SpringSecurity5 OAuth SpringSecurity5 이전의 AOuth OAuth Client 최소설정 및 주의할 점 OAuth Server 최소설정 및 주의할 점 SpringSecurity 란 스프링프레임워크 기반 인증(Authn), 인가(Authz) 프레임워크 스프링 기반 애플리케이션에서는 사실상 표준 (de-facto standard) Spring Security 5 스프링부터 2.0부터 스프링프레임워크 5.0 기반 새로운 기능: OAuth 2.0 Login 등 Spring Security 5 OAuth http.oauth2.Login() (대표적) 한방 사용이 가능해짐 (편리해짐) Spring Security 5 ..
Oracle to MySQL 변환 시 고려사항 (RDBMS) Oracle 에서 MySQL 로 변환.. 일반적인 변환 이유 고려할 사항들 RDBMS 변환 시 전체적인 계획 일반적인 변환 이유 비용문제 노후 시스템 개선 등 고려사항 데이터타입 Subquery alias (mysql 에서는 subquery에 alias 없으면 쿼리에러 발생) Mysql 은 대소문자를 구분함 (설치 시 구분여부 설정 가능) 함수 명칭 (IFNULL, NOW, CASE, CAST, DATE_ADD 등) Oracle 에서만 지원하는 구문/함수 들 (sequence, rownum, join, pivot 등) 계층형 쿼리 || (pipe_as_concat -> cancat_ws) 공백문자를 null로 취급하는 것의 차이 Dynamic where 차이 Byte 입력 및 byte 연산 차이 (함수 ..
[LeetCode] 1742. Maximum Number of Balls in a Box (TDD, 코테, 릿코드, tech interview) TDD로 알고리즘 풀이 후 리팩토링 리팩토링해서 함수만들고 하면 성능이 좀 떨어짐 테스트코드 package algorithm_sites.leetcode; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; public class LeetCode_1742_MaximumNumberOfBallsInABoxTest { private LeetCode_1742_MaximumNumberOfBallsInABox test = new LeetCode_1742_MaximumNumberOfBallsInABox(); @Test public void countBallsTest() { Assertions.assertThat(test.countBall..
[LeetCode] 2085. Count common words with one occurrence (코딩테스트, 테스트케이스 포함, 릿코드, tech interview) 깃허브에 커밋해서 문제풀이 블로그 포스팅은 잘 안했지만 재미로 쉬운거만 계속 풀고 있음 요새는 테스트케이스를 미리 추가해놓고 푸는 방식으로 하는 중 // Process // 1. Input 2 string arrays // 2. 한개 배열씩 반복한다. // 2.1. 중복안되는 것들의 배열을 각각 만든다. // 3. 중복안되는 것들의 배열 2개에서 서로 중복되는 개수를 센다. // 4. 개수 반환한다. public int countWords(String[] words1, String[] words2) { int result = 0; Set repeated = new HashSet(); Set set1 = new HashSet(); Set set2 = new HashSet(); // 2. for (Strin..