java

JAVA

[JAVA] compareTo

[가장 큰 수] 라는 정렬 알고리즘 문제를 풀다가 접했다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 직접 정렬을 하는 방식으로 풀려고 했지만 시간 초과가 계속 발생했다. 문제의 해결책은 compareTo 라는 함수를 사용하는 방식. + 이어진 두 수의 크기를 비교하는 방법이 핵심아이디어이다. 🍺 java.util.Comparator 클래스에 있는 하위 메서드 compareTo 이다. // 문자형(대소문자구분) StrA.compareTo(StrB); A != B -> return 다른 문자 개수; 동일한 문자로 시작 하지 않을 경우 + 중간은 같은 문..

JAVA

[JAVA] JSP와 서버사이드렌더링(SSR)

🍅 회사에서 기존 신규 프로젝트를 진행 할 때에 어떤 방식으로 개발할 지에 대해 잠깐 이야기 한 적이 있다. 단순히 JSP를 개발 속도가 빨라서, 개발에 익숙하니까. 기존에 했던 프로젝트와 비슷한 구조로 간다면 구현이 빠르니까. 라는 말에 납득을 하긴했지만, 한편으로는 레거시한 방법을 쓰는게 싫다라는 막연한 생각이 있었다. 그 외에는, 코틀린을 써보자 리액트로 나누자. 등등 여러 의견이 있었다. 러닝커브를 의식하지 않고, 결정만 내린다고 한다면. 왜 레거시를 싫어하는지? 왜 JSP가 레거시라는 인식을 가졌는 지, 생각해봤지만, 이유는 모르고 그냥 잘 안쓰니까, 요즘 안쓰기도 하고, 그냥 프론트 백 분리가 추세니까라는 이유만 생각이 났었다. 나는 왜 JSP에 거부감을 가졌는지 장단점을 파악해서 이유를 알아..

JAVA

[JAVA] Gabage Collection

→ 가비지 컬렉터(GC) 애플리케이션의 동적 메모리 할당 요청을 자동으로 관리한다. 운영 체제에서 메모리를 할당하고 반환. 애플리케이션이 요청할 때 해당 메모리를 애플리케이션에 전달. 응용 프로그램에서 아직 사용 중인 메모리 부분을 확인. 애플리케이션에서 재사용할 수 있도록 사용하지 않은 메모리를 회수. JAVA는 프로그램 코드에서 메모리를 지정하거나 해제하지 않는다. 객체를 Null로 지정하는 것은 상관없지만, System.gc()메서드를 호출하는 것은 시스템의 성능에 매우 큰 영향을 끼친다. * System.gc() 메서드는 가비지를 탐색 및 정리하는 작업이고 상당히 무거운 작업이다. 공식 문서에 따르면 대부분의 VM 종료시까지 유지되는 초기화 시 할당된 객체 외에는 위의 그림과 같은 그래프에 해당한..

AWS

[AWS S3] 임시테이블을 활용한 1억 4천만건 데이터 삭제 요청

https://girinprogram93.tistory.com/62 [CURSOR PAGING] 커서 페이징처리. 🥞 오프셋 기반 페이징에서 -> 커서 방식 페이징으로 변경하기 전에 미리 알아보려 한다. 🥞🥞 오프셋 기반 페이징의 단점 : LIMIT / OFFSET 을 이용할 경우 offset이 늘어나는 양에 따라 비효율적인 girinprogram93.tistory.com 작업 환경 : java 1.8 / spring boot / gradle / jdbcTemplate / tomcat 9.06 / MySQL 🍔 지난번의 커서 기반 페이징 S3 삭제 요청에 이어서 최종본이다. ( 지금은 삭제된 데이터를 전수검사하고 있다. ) 🥣 상황 : S3 스토리지에 삭제 대상인 특정 오브젝트가 1억 4천만건이 존재하며..

ALGORITHM

JAVA 미로탐색 / BFS

😒 BFS / Breadth-First Search / 너비 우선 탐색 너비 우선 탐색 : 하나의 정점에서 시작해서 차례로 모든 정점을 방문하게 된다. 따라서 특정 도시에서 다른 도시로 가거나, 미로의 최단 거리를 찾거나, 보통은 두 좌표 사이의 ( 노드 사이의 ) 최단 경로 혹은 임의 경로를 찾기 위해 쓴다. 🥕 구현 시, 특정 좌표 ( 노드 ) 를 방문한것에 대한 여부를 반드시 검사해야 한다. 검사하지 않는다면 무한 루프에 빠질 위험이 존재한다. 방문한 노드를 차례로 꺼낼 수 있는 자료 구조인 Queue 를 사용. 즉 선입선출이 원칙이다. 🥕 왜 최단 거리가 되는가 ? https://wikidocs.net/125662 참조 : 미로탐색과 같은 문제를 BFS를 구현하다보면, 누구나 한 번씩은 의구심을 ..

JAVA

java 정규 표현식

🤢 하고 싶은 것. : {"param" : " "param1" "param2" "param3" "} --> {"param" : ""} 결과 먼저: temp = "바꾸고 싶은 문자열"; String regx = "\"\"[^,|}]+"; temp = temp.replaceAll(regx,"\"\""); String tt = "{" + "\"type\":\"80\"" + ",\"src_path\":" + "{\"path\":\"/Storage/highres/2022/01/06/106145/106145.mxf\"" + ",\"src_id\":\"\",\"src_pwd\":\"\",\"src_strg_id\":0,\"src_strg_nm\":\"\"}" + ",\"tgt_path\":" + "{\"path\":..

ALGORITHM

정렬 알고리즘 / 삽입 / 퀵 / 듀얼 피벗

시작은 테스트 케이스는 통과하는 데, 반례가 뭔지 모르겠다 하지만, 정답을 푼 사람들의 답은 아주 간결했다. Arrays.sort(vv1, new Comparator() { @Override public int compare(T o1, T o2) { return 0; } }); 이 부분이 포인트. Arrays.sort 는 기본적으로 오름차순이지만, 아니라면 오버라이드를 통해 정렬 기준을 정해준다. 시간초과가 뜬 실패한 코드와 달리, 장황하게 for문을 안돌려도 된다. 내부적으로 Arrays.sort 가 처리하고 있겠지라고 생각해서 들어가 봤다. 왜 이거 쓰는지 궁금한 사람이 또 있었다. OKKY | 자바의 Arrays.sort는 왜 Dual-Pivot Quicksort를 사용하나요? 정렬공부를 하다 자바..

ALGORITHM

해시, 위장

✍ 아무것도 안입는 경우를 생각하는 게 조금 어려웠다. ✍ 옷의 가지수를 계산해서, map 타입에 ( key(의상종류) , value(개수) )를 넣어야 할 것이라고, 생각했지만 ✍ 안입는 경우가 있다는 것을 계산에 넣지 못 한 점이 아쉬웠음. ✍ 따라서 ( 의상 종류 , 개수+1 ) 로 계산하고, ☁ 전체 경우의 수 중에 하나도 ( 아무아무것ㅎ도 안입는 경우) 는 빼려고 했다. ☁ 아무것도 안입는 것 = 아무것도 안입고 + 아무것도 안입고 ... 이므로 1가지 경우의 수만 나오기 때문에.. public static int Solution (String[][] clothes) { int answer = 0; String[] tt = new String[clothes.length]; Map tempMap ..

girin_dev
'java' 태그의 글 목록