본문 바로가기

Dev

(58)
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(..
Java의 객체 정렬과 객체 우선순위 큐 난 C++를 사랑하는데... 기업들은 C++를 사랑하지 않는다..ㅠㅠ 그래서 코딩테스트를 준비해야하기 때문에 요즘 자바로 C++로 풀었던 것들을 다시 풀고있다. 그러다가 개인적으로 자바에서 가장 불편한 부분이 바로 정렬과 우선순위큐 였는데 이번 기회에 한번에 정리하고 가겠다. 예제는 강의실 배정 문제이다. 이 문제는 아주 베이직하게 정렬과 우선순위큐를 활용해야하는 문제이기 때문에 가져왔다. 예제31 33 42 3 -> 여기서 정렬했을 땐  1 33 42 3 순으로 나와야하고 세개가 모두 우선순위큐에 있다면 3 41 32 3 순서로 나와야한다. Comparator 와 Comparable 의 차이잠시 영어시간을 가져보면 전자는 비교자, 후자는 비교할수있는? 이런 뜻이다. 그러니까 전자는 실제 sort 함수에..
JavaScript - var, let , const 차이 최근 자바스크립트를 공부하면서 세개의 차이가 궁금해졌다. const의경우는 다른 언어들에도 많은 한 번 결정되면 절대 변하지 않는 변수임을 당연히 알고 있다. var과 let의 차이는 뭘까? 1. 범위 function varScope() { if (true) { var x = 10; } console.log(x); // 10 - 함수 스코프를 가지므로 접근 가능}function letScope() { if (true) { let y = 10; } console.log(y); // ReferenceError - 블록 스코프를 가지므로 접근 불가}varScope();letScope(); var는 함수 범위를 가지기 때문에 블록을 벗어나도 접근이 가능하..
JavaScript - 자바스크립트의 클래스 자바스크립트는 특이하다.. 클래스를 구성하는데 클래스의 구성원들을 컨스트럭터(생성자)에서 결정한다. class Korean { constructor(name, age) { this.name = name; this.age = age; this.country = 'Korea'; } addAge(age) { return this.age + age; }} 그리고 자바스크립트 답게 메소드의 형식은 지정할 필요가 없고 private public 이 없다. 기본적으로 모두 public 이다.하지만 함수 앞에 #을 붙이면 프라이빗을 정의된다. 메소드 이름 앞에 #이라니 조금 생소하다..!! class Pet { constructor(name, age) { console..
javascript - 객체 정렬 개발을 하다보면 가장 많이 쓰이는 함수가 정렬이 아닐까 싶다.그리고 정렬은 각 언어들마다 조금씩 쓰는 법이 달라서 이번 기회에 자바스크립트의 정렬에 대해 정리하고자 한다. const user = [ { name: '홍길동', age: 40 }, { name: '임꺽정', age: 12 }, { name: '주몽', age: 23 }, { name: '척준경', age: 88 },];// 나이순 오름차순const result1 = user.sort((a, b) => a.age - b.age); console.log('result1: ', result1);/* { name: '임꺽정', age: 12 }, { name: '주몽', age: 23 }, { name: '홍길동', age: 4..