이펙티브 자바에서 말하는 직렬화(Serializable) 는객체의 상태를 바이트 스트림으로 변환하는 것을 의미한다.반대로 바이트 스트림을 다시 객체로 복원하는 과정은 역직렬화다.바이트 스트림을 사용하는 이유는네트워크, 파일, DB 등 출발지와 목적지 모두가 이해할 수
여러 스레드가 가변 데이터를 공유한다면 그 데이터를 읽고 쓰는 동작은 반드시 동기화 해야 한다.동기화하지 않는다면 한 스레드가 수행한 변경을 다른 스레드가 보지 못할 수도 있다.배타적 실행은 필요 없고 스레드끼리의 통신만 필요하다면 volatile 한정자만으로 동기화할
처음에 봤을 때 1\. 모든 칸을 돌면서 동시에 visited 갱신하면서, 국경선 열지 판단하는 것2\. 한번 열면 다 합쳐서 sum / N 해서 갱신하는 것3\. 차이가 L~R일 때까지 위 과정을 반복하는 것..이라고 생각하고 코드를 짰다.처음에 코드를 구현했을 때

아이템 69 - 예외는 진짜 예외 상황에만 사용하라 예외는 오직 예외 상황에서만 써야 한다. 절대로 일상적인 제어 흐름용으로 쓰여선 안 된다. 잘 설계된 API라면 클라이언트가 정상적인 제어 흐름에서 예외를 사용할 일이 없게 해야 한다.
5주동안 진행한 JSCODE 자바 스터디 참여 후기입니다.정기적으로 자바를 공부하는 습관을 들임내가 생각해보지 못한 면접 질문을 받아 공부해야할 시야를 더 넓힐 수 있었음!한 조에 3~4명으로 적당함평소에 궁금했던 고민들 짧게 물어볼 수 있음. 공부를 위한 책이나 블로
Garbage CollectionAssembled by GimunLee (2019-10-28)GoalGarbage Collection의 역할에 대해 설명할 수 있다.Garbage Collection의 메모리 해제 과정을 3단계로 설명할 수 있다.Generational
아이템 57 - 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 가장 강력한 기법은 '가장 처음 쓰일 때 선언하기'다. 거의 모든 지역변수는 선언과 동시에 초기화해야
깊이가 N이면 그때 합이 S인지 확인현재 arridx를 합한 경우도 고려해야되고 합하지 않은 경우도 고려해야 함S == 0일 때, 공집합이 생기므로 정답-1 해줘야 함
집이랑 치킨집을 따로 ArrayList로 관리dfs로 깊이가 M이면 치킨거리 계산해서 최소치킨거리 계산하게!한번 selected에 들어가서 조합 처리됐으면 백트래킹으로 복구시켜놓기👉 치킨집 M개 조합을 전부 탐색해서 최솟값을 구하는 문제치킨집 중 M개를 선택하는 모든

알림(Notification) 시스템은 모바일 푸시 알림, SMS 메시지, 이메일의 세 가지 주요 채널로 구성된다. 이러한 시스템은 수많은 사용자에게 안정적으로 이벤트를 전달해야 하므로, 확장성과 안정성을 모두 고려한 아키텍처 설계가 필요하다.어떤 종류의 알림실시간 시
동시성은 여러 작업이 “논리적으로 동시에 진행되는 것처럼 보이도록” 스케줄링하는 개념이고, 병렬성은 실제로 여러 작업이 같은 시점에 물리적으로 동시에 실행되는 상태를 말합니다.1예를 들어 단일 코어 CPU에서 여러 스레드를 번갈아 실행해 사용자에게 동시에 돌고 있는 것
✅ Item 49. 매개변수가 유효한지 검사하라 1. 왜 매개변수 검사가 중요한가? ✔ 메서드는 잘못된 입력을 절대 받아들이면 안 된다. 매개변수가 유효하지 않으면 즉시(fail-fast) 예외를 던져야 한다. 유효성 검사를 하지 않으면 다음 문제가 발생할 수 있
웹 크롤러: 검색 엔진에서 널리 쓰는 기술, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적검색 엔진 인덱싱: 크롤러는 웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스 만듦웹 아카이빙: 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모음웹 마이닝
arr를 계속 갱신하면서 가장 자리 판별하면 될듯가장자리란? 상하좌우 중 한 곳이라도 치즈가 없으면 탈락!가장자리인 곳은 2로 바꿔서.. 판별하면 되지 않을까답은 Queue로 만들어서 size 출력하고 poll()하기처음엔 어떤 알고리즘을 적용해야될지 감이 안 잡혀서
처음에는 어떤 방식으로 풀어야되지? 잘 모르겠어서 코드부터 써봤는데 알고보니 구현문제여서 그럴 수 밖에 없었다.n, dasom까지 받고 나머지를 배열로 받아 계속 Array.sorts하면서 비교했다. Array.sorts를 하면 내림차순으로 되는 줄 알고.. 있었는데
멀티쓰레딩은 현대 애플리케이션에서 필수적인 개념이며, 특히 웹 서버·백엔드 개발에서는 요청을 병렬로 처리하기 위해 스레드 활용이 매우 중요합니다. 아래에서 Java의 스레드 생성 방식부터 스레드 풀과 스프링이 대규모 스레드 풀을 사용하는 이유까지 정리해보겠습니다.Jav
bfs(int idx, int depth)로 한번만 main 메소드에서 실행시켜서 depth가 2를 초과되면 return하게 해야하나?라는 생각이 들어 그렇게 구현했는데언제 return해야되는지... 이게 한번만 쭉 갔다가 되돌아오면 되는 게 아니라 depth가 2이하
숫자 조합 + 연산자 조합을 일단 만들어서그걸 계산한 후에Math.max, Math.min으로 계산하기이렇게 3단계로 나눠야겠다고 생각했다.그래서 dfs 메소드를 두개로 나눠서 이걸 어떻게 조합하지..? StringBuilder? 이러고 헤맸는데 알고보니 dfs 안에서

중복 조합(Combination with Repetition)N과 M이 주어졌을 때,1부터 N까지 자연수 중에서중복을 허용해서비내림차순(오름차순 유지)으로길이가 M인 수열을 모두 출력예:N=4, M=2라면이런 식의 "중복 조합" 형태가 나온다.✔ 왜 start 파라미터
N×N 지도에서1 → 집이 있는 곳0 → 집이 없는 곳상하좌우로 연결된 집들은 하나의 단지를 이룬다.해야 할 일:전체 단지 개수를 구하고각 단지의 집 수를 오름차순으로 출력이 문제의 구조는 전형적인 2차원 BFS/DFS 영역 탐색 문제이다.인접한 1들이 연결된 “덩어리