보호되어 있는 글입니다.
분류 전체보기

친구의 질문 덕분에 새로운 고민거리가 생겼다. 복잡한 쿼리문을 만들더라도 디비에서 최대한 데이터를 가공해서 가져오는 게 좋을까, 아니면 간단한 쿼리문을 날려서(필요하다면 여러개를) 서버에서 데이터를 처리하는게 좋을까? 구글링을 해보니 많은 의견들이 있었는데, 재미있는 내용이 많아서 정리해보려고 한다. 자료1: 복잡한 비즈니스 로직은 서비스 레이어에 넣자 https://okky.kr/questions/676406 OKKY - 쿼리에서 연산해야할까요 자바에서 연산해야할까요 안녕하세요 초급개발자입니다요즘들어 계속 궁금한게 있는데단순계산할때에는 매퍼에서 연산해서 가져오는게 좋을까요 자바단에서 연산을 하는게 좋을까요...만약에 a, b, c를 뿌려야할 때a는 okky.kr 해당 댓글을 참고했다. 입장: 복잡한 비..
이번에는 JavaScript의 this에 대해 알아보려고 한다. javascript의 this는 다른 언어들과 조금 다르게 동작한다. Javascript의 this는 대부분의 경우 함수를 호출한 방법에 의해 결정된다. 그렇기 때문에 함수를 호출할 때마다 this가 가리키는 값이 다를 수 있고, 이는 혼동을 줄 수 있다. 이를 위해 ES5는 bind()메서드를 도입하여 함수를 어떻게 호출했는지에 상관없이 this값을 설정할 수 있도록 하였고 ES2015는 스스로의 this바인딩을 제공하지 않는 화살표 함수를 추가하였다. (화살표 함수는 렉시컬 컨텍스트 안의 this값을 유지한다) 이번에는 this의 동작방식의 예시들을 알아보고, 어떻게 사용해야하는지 알아보겠다! * 참고로 이 게시글의 예시들은 비엄격모드에..

자바스크립트에서 일정 시간 이후에 어떤 메서드가 호출되게 하고싶다면 setTimeout()과 setInterval() 함수를 사용할 수 있다. 둘의 사용법을 요약하면, setTimeout()은 지정된 함수를 한 번만 호출할 때 사용하고, setInterval()은 지정된 함수를 반복적으로 호출할 때 사용하는 함수이다. setTimeout() var timeoutId = setTimeout(functionRef, delay]); var timeoutId = setTimeout(functionRef, delay, param1, param2, ...); var timeoutId = setTimeout(code, delay, param1, param2, ...); //권장 x 지정된 시간이 만료된 후 함수나 코..

평생 못 갈 줄 알았던 플레가 되었다! 기념으로 후기 글을 써보려고 한다. 참고로 여기서 말하는 공부방법은 개인적으로 도움이 됐던 공부방법을 공유하는 거라 이 방법이 다른사람에게는 정답이 아닐 수 있다. 참고용으로만 읽고 자신과 잘 맞는 공부방법을 찾는 게 좋을 것 같다. 글쓴이는 알고리즘 관련 강의를 하나도 사지 않았고, 알고리즘 유형들은 대학교 수업에서 많이 접해서 어느정도 아는 수준이었다.(돌아가는 로직만 알고 코드는 짤 줄 몰랐다) 공부기간(2023.7 ~ 2024.2) 브론즈 문제를 찔끔찔끔 풀다가 작년(2023) 7월쯤부터 본격적으로 공부를 시작했다. 이후 개발동아리를 하면서 조금 손을 놓고있다가 9월 중반부터 싸피입과 전까지 계속 알고리즘을 공부했다. 싸피 입과 후에는 알고리즘 스터디를 하면..

최근에 MST를 공부해서 MST 뿌수기 시리즈를 해보려고 한다. 6497 전력난 - 골드4 https://www.acmicpc.net/problem/6497 6497번: 전력난 성진이는 한 도시의 시장인데 거지라서 전력난에 끙끙댄다. 그래서 모든 길마다 원래 켜져 있던 가로등 중 일부를 소등하기로 하였다. 길의 가로등을 켜 두면 하루에 길의 미터 수만큼 돈이 들 www.acmicpc.net 전체 간선의 길이가 최소가 되어야한다 최소 스패닝 트리를 생각할 수 있음 그냥 최소스패닝 트리를 잘 만들면 되겠다. 길의 수가 적다고 정해져있지 않으니 크루스칼, 프림 아무거나 해도 될 것 같다. Prim 알고리즘 풀이 class Node implements Comparable { int end; int distanc..
보호되어 있는 글입니다.
이번에는 MySQL의 풀 테이블 스캔에 대해 정리해보려고 한다. MySQL 서버에서 쿼리의 실행절차 쿼리가 실행되는 과정은 다음과 같다. SQL 파싱 최적화 및 실행계획 수립 결정된 실행계획을 이용해 스토리지 엔진으로부터 데이터를 가져옴 1. SQL 파싱 제일 처음에는 사용자로부터 받은 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리한다(파스 트리를 만든다) 이 부분은 MySQL 서버의 SQL 파서 모듈로 처리한다. SQL문장이 문법적으로 잘못된 경우 이 단계에서 걸러진다. 2. 최적화 및 실행계획 수립 SQL 파스 트리를 이용하여 어떤 테이블로부터 읽을지, 어떤 인덱스를 이용해 테이블을 읽을지 선택한다. 이 부분은 MySQL 서버의 옵티마이저에서 처리하며, 이후 쿼리의 실행계..
이전에 썼던 잘못된 글.. https://fladi.tistory.com/312 [DB] Unique index와 pk 최근 데이터베이스 인덱스에 대해 공부를 하고 적용시키는 과정에서 아직 모르는 부분이 있는 걸 발견하였다. 관계형 디비에서 pk를 지정하면 해당 pk는 unique인덱스가 이미 존재한다는 것이었다 fladi.tistory.com 작년에 다음과 같은 포스팅을 했었다. 이 때는 인덱스가 뭔지도 몰랐고, Unique인덱스도 처음 들어보는 이야기였다. Primary키를 왜 써야하는지 쓰면 뭐가 좋은지도 몰랐고 그냥 쓰라고 해서 썼었던 시절이었다. 그래서 구글링을 조금 해보면서 둘의 차이점을 블로그에 올렸었다. 하지만 최근에 Real MySQL 책을 읽고 디비를 공부하면서 내가 알고있던 지식이 잘..

최근 간단한 협업 프로젝트를 하면서 .gitignore때문에 고생한 적이 있었다. 그래서 개념을 확실하게 잡아두고, 다음부터는 .gitignore때문에 스트레스를 받지 않고싶어서 게시글을 작성한다. 내가 겪었던 상황을 그대로 재현했고, 이를 해결하는 과정도 담았다 초기 세팅 폴더를 2개 만들어줬다 src 폴더는 소스파일이 올라가는 곳으로, 깃허브에 올려야하는 파일들이 저장된다 bin 폴더는 컴파일된 .class파일이 올라가는 곳으로, 굳이 깃허브에 올릴 필요 없는 파일들이 저장된다 각각 올려야하는 파일, 올리면 안되는 파일을 넣어두고 초기 커밋했다 clone 받기 일단 클론을 받고 내가 수정할 곳을 수정해준다 bin 디렉토리 내부 파일은 변경시켰고 src파일에는 새로운 파일을 추가시켰다 i_want_pu..