본문 바로가기

Dev

(53)
Java로 문자열 xml 파일 파싱 xml 형태이지만 문자열로 저장된 코드에서 원하는 값을 파싱해 사용해야하는 상황이 발생했다. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(new StringReader(xml.toString()))); document.getDocumentElement().normalize(); NodeList tagLis..
Spring Boot JPA - BufferedReader로 CSV 파일을 읽어 DB에 저장하기 BufferedReader자바에서 입출력을 빠르게 받을 때 많이 사용했던 버퍼리더, 정확히 버퍼 리더가 무엇인가버퍼란 어떤 데이터가 전송 될 때 일시적으로 저장되는 영역이다. (캐시와는 다르다.) 어떤 데이터들을 한 번에 묶어서 전송하기 때문에 전송이 빠르다. BufferedReader br = Files.newBufferedReader(Paths.get(filePath));map을 사용해 임시 값 저장csv파일은 ,로 구분된 정보를 엑셀 형태로 보여주는 파일이다. 그러니까 텍스트로 옮기면이름, 나이, 사는곳김, 20, 서울박, 21, 부산이런식으로 구성되어 있다. 버퍼리더로 값을 받으면 한 행씩 정보를 받지 열(col)씩 받지 않기 때문에 맨 위 헤더들을 key값으로 갖는 hashm..
Spring Boot - RestClient 로 공공데이터 얻어오기 .
Spring 새로운 HTTP 클라이언트 - RestClient Spring 프레임워크가 제공하는 REST Request 엔드포인트RestClient - synchronous client with a fluent API.WebClient - non-blocking, reactive client with fluent API.RestTemplate - synchronous client with template method API.HTTP Interface - annotated interface with generated, dynamic proxy implementation.RestClient가장 최근 추가된 HTTP 클라이언트로, RestTemplate의 불편함 때문에 사용하던 WebClient는 MVC에서 사용하기 위해 block처리를 해줘야하는 번거로움과 쓰지않는 라..
Promise 문법 사용하기 Javascript는 파일 읽기, 쓰기, 등 많은 비동기 작업이 필요하다. 그 중 대표적으로 사용되는 것이 Promise이다.function promiseStudy(param){ return new Promise(function(resolve, reject){ setTimeout(function(){ if(param){ resolve("성공") }else{ reject("실패") } }, 3000) })}setTimeout( function(){ promiseStudy(true).then(function(temp){ console.log(t..
vector<int> 보다 vector<bool> 이 느리다? 문제를 풀다가 vector 로 요소 체크를 하면 통과하는데 vector 로 처리하니까 TLE가 발생했다.이게 뭔 개소리야가 절로나와서 찾아보니 bool의 저장 방식 떄문이었다.메모리 배치 및 엑세스 속도vector 의 경우내부적으로 int 타입의 배열과 비슷하게 배치된다.vector 의 경우메모리를 효율적으로 관리하기 위해 한 번에 여러개의 bool 값을 저장할 수 있는 bitfield로 구현된다. 즉, 하나의 정수에 여러 bool 값을 비트 단위로 저장하게 된다.그래서 만약 저장된 bool 값을 조작하려면 해당 비트를 조작하기 위한 비트마스크 연산이 추가로 필요하게 되어 오버헤드가 발생하기 때문에 vector은 속도가 저하게된다.결론은, bool 은 메모리 효율을 위해 시간 효율을 희생했다고 보면 된다..
URL에서 파일 경로를 다루는 방식과 왜 필요한가 파일을 다운받거나 요청할 때 개발자는 URL 을 통해 경로를 넘겨준다. scheme://host:port/path?query#fragmentscheme: 프로토콜 (예: http, https, ftp)host: 도메인 또는 IP 주소port: 서버 포트 (옵션, 기본 포트는 생략 가능)path: 자원의 경로 (파일 시스템에서의 위치와 유사)query: 쿼리 문자열 (옵션, 자원에 추가적인 정보를 전달)fragment: 문서의 특정 부분을 가리키는 조각 식별자 (옵션)서버 측 처리서버 측에서는 URL의 경로를 해석하여 해당 파일이나 자원을 찾는다. 웹 서버는 URL의 경로를 파일 시스템의 경로로 변환하여 요청된 자원을 제공한다. 예를 들어, Apache나 Nginx 서버는 URL을 파일 시스템의 경로와 매..
Java - Stream 으로 코드 최적화 List walkList = activityRepository.findByUsername(username); List res = new ArrayList(); for(Walk w : walkList){ res.add(new GetWalkDto(w.getDistance(), w.getAvg_heart_rate())); } return res; Walk 리스트를 가져와서 Dto에 맞게 리턴해주는 함수이다. 그러나 이것은 너무 길고 비효율적이다. stream 을 사용해 최적화할 수 있다. List walkList = activityRepository.findByUsername(username); return walkList.stream(..