본문 바로가기

home

(268)
Comparator&Comparable 인터페이스 자바에서 객체를 정렬할 때 Comparator 인터페이스와 Comparable 인터페이스를 자주 사용합니다. 두 인터페이스의 차이점에 대해 알아보겠습니다. 먼저 Comparator 인터페이스는 정렬하는 메소드가 객체에 있지 않습니다. Comparator 인터페이스를 구현한 TestObjComparator 클래스는 정렬 메소드 compare를 재정의하고 있습니다. Comparator 인터페이스 구현할 때 TestObj 클래스를 제너릭으로 받아서 TestObj의 속성 val1과 val2를 기준으로 오름차순으로 정렬하고 있습니다. 먼저 val1 기준으로 오름차순으로 정렬하고, val1이 같은 경우 val2 기준으로 오름차순으로 정렬합니다. TestObj 객체를 생성한 뒤 리스트에 추가하고 TestObjComp..
git commit revert git commit을 잘못한 경우 되돌리려면 reset을 해도 되지만 commit 이력을 남기고 싶다면 revert를 사용하면 됩니다. revert 할 commit을 선택한 뒤 "Revert Commit"을 클릭합니다. 해당 commit이 revert 된 것을 확인할 수 있습니다. revert를 하게 되면 해당 commit의 작업 이력은 제거되지만 commit이력은 남아있기 때문에 history 관리 측면에서 유용합니다.
git commit reset 로컬 저장소에 commit을 잘못해서 삭제해야 하는 경우 reset을 사용하면 됩니다. reset은 기존 commit 이력을 지우는 것입니다. 삭제하려는 "Test Class commit2" 메시지의 commit과 코드입니다. "Test Class commit2"라는 commit을 취소하려면 그 이전의 commit을 선택하고 Reset을 클릭합니다. 여기서 reset 옵션에 대해 설명드리면 Soft: commit을 삭제하고 이력에서 제거하지만, 작업 트리와 인덱스는 제거하지 않음 Mixed: commit을 삭제하고 이력에서 제거하고 인덱스는 제거하지만, 작업 트리는 변경하지 않음 Hard: commit을 삭제하고 이력에서 제거하고 인덱스와 작업트리의 변경 내역까지 모두 제거 cf) 작업트리: 프로젝트 파..
신고 결과 받기 프로그래머스에서 신고 결과 받기 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 설명의 위의 링크에서 확인하시면 됩니다. 한 유저에 대한 중복 신고 횟수를 1회로 처리하기 때문에 신고 정보를 가지고 있는 report 배열을 Set으로 변환합니다. 유저별 신고한 ID 목록 저장하는 infoMap을 생성하는데 id_list 배열의 순서를 지키기 위해 LinkedHashMap을 사용합니다. 그리고 유저별 신고당한 횟수..
Elastic Search bulk API 엘라스틱서치 bulk API를 사용하면 여러 건 이상의 데이터를 한 번에 추가할 수 있습니다. "test_index"이름의 인덱스를 등록합니다. 인덱스에 저장할 json 파일을 작성합니다. json파일에 대해 간략히 설명하면 {"index": {"_index": "test_index"}}는 저장될 도큐먼트의 인덱스 정보입니다. 1라인: "_index" 필드 옆에 "_id"를 추가해서 도큐먼트에 아이디 속성을 줄 수 있지만 저는 엘라스틱서치가 정해주는 _id로 하고 싶어서 생략했습니다. ex) {"index": {"_index": "test_index", "_id":1}} 2라인: 추가될 도큐먼트의 필드정보입니다. test_id는 1, test_field1는 aaa, test_field2 1 이 인덱스에 ..
Elastic Search 검색 결과 다운로드 엘라스틱서치 검색 결과 다운받는 방법은 간단합니다. 위의 명령어는 curl을 통해 엘라스틱서치 검색 쿼리를 전달하고 리다이렉션을 통해 검색 결과를 json으로 다운받고 있습니다. 해당 json 파일을 조회하면 위와 같이 검색 결과를 확인할 수 있습니다.
Elastic Search 검색 쿼리 엘라스틱서치 검색 쿼리 작성하는 방법입니다. 얼마 전에 추가한 지하철 인덱스를 예시로 하겠습니다. 위의 검색 쿼리 예제를 설명하면 1라인: GET 메소드를 통해 metro 인덱스 검색 3라인: metro 인덱스의 모든 필드 조회 4라인: 검색 결과 시작위치 5라인: 검색 결과 조회 개수 6~10라인: 검색 결과 조회 방법, rgst_date 필드를 내림차순 정렬 DB쿼리로 비유하면 select * from metro order by rgst_date desc limit1 와 비슷하다고 할 수 있습니다. 다음 검색 쿼리 예제는 15라인: metro 인덱스의 metro_name, metro_line, on_number, off_number, total_number 필드 조회 16~20라인: metro_nam..
csv parsing lambda stream 자바에서 csv 파일 파싱하는 방법은 여러 가지가 있는데 그중에 람다와 스트림을 사용하는 방법이 있습니다. 파싱 할 csv 파일은 공공데이터 포털에서 받은 "서울시 지하철호선별 역별 승하차 인원.csv" 파일입니다. 사용일자, 호선명, 역명, 승차총승객수, 하차총승객수, 등록일자로 구성된 csv 파일입니다. 지하철 정보를 저장할 MetroInfo 클래스입니다. csv 파싱 예제 코드에 대해 설명하면 14~15라인: try-with-resources를 사용하여 FileReader, BufferedReader 객체의 close를 자동호출 처리 FileReader, BufferedReader 둘 다 AutoCloseable 인터페이스 구현 클래스 17~29라인: Cosumer 람다 표현식을 사용하여 csv 파..