본문 바로가기

분류 전체보기35

VARCHAR vs TEXT for Index (MySQL) 개발 디비 어느 테이블에서 데이터 조회 시 풀스캔이 도는 것을 발견하여 확인해보니 인덱스가 없었,,, 충격과 함께 인덱싱 작업을 하였는데, 그럼에도 불구하고 실행계획을 보니 '풀스캔'이 돌더라는 ㅠ 인덱스를 걸고 본 DDL도 좀 특이했으니, create table 테이블 ( id bigint null, version text null ); create index idx_version on 테이블 (version(768)); 인덱스 생성 시 768 이라는 숫자가 나타나는 것은, 특히 VARCHAR, CHAR, 또는 TEXT 타입의 컬럼에 인덱스를 생성할 때 볼 수 있는 현상입니다. 이 숫자는 인덱스를 생성할 때 해당 컬럼의 문자 수를 제한하는 것을 의미합니다. MariaDB와 같은 일부 데이터베이스 시스템.. 2024. 3. 27.
[AI에게 물어본] Iterator vs Stream API AI에게 물어본 지식! 프로젝트 서비스단 로직 구현 중 급 고민 & 궁금쓰... GPT4에게 한번 슬~쩍 물어보았습니다. Iterator와 Stream API는 Java에서 컬렉션을 처리하는 두 가지 주요 방법입니다. 각각의 특징과 사용 시점에 대해 설명하겠습니다. 1. Iterator Iterator는 컬렉션의 요소를 순회하는 가장 기본적인 방법입니다. Iterator를 사용하면 컬렉션의 요소에 순차적으로 접근하고, 요소를 삭제할 수 있습니다. Iterator를 사용한 코드는 명령형 프로그래밍 스타일에 가깝습니다. 즉, '어떻게'를 기술하는 방식입니다. Iterator는 컬렉션의 상태를 변경할 수 있습니다. 예를 들어, iterator.remove() 메소드를 사용하면 현재 요소를 삭제할 수 있습니다.. 2023. 11. 30.
DB 쿼리 속도를 높이는데 너무나도 중요한 index MySQL select * from customer where first_name = 'gildong'; first_name에 index가 걸려있다면? full scan(table scan)보다 더 빨리 찾을 수 있다! O(N) -> O(logN) (B-tree based index) Index를 쓰는 이유 - 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해! - 빠르게 정렬(order by)하거나 그룹핑(group by) 하기 위해! Primary Key에는 index가 자동 생성된다. INDEX name_idx (name), UNIQUE INDEX team_id_backnumber_idx (team_id, backnumber) 2023. 10. 18.
vi ~/.zshrc -> alias sail="vendor/bin/sail" laravelboard % vi ~/.zshrc (vi 내에서 alias sail="vendor/bin/sail" 추가) laravelboard % sail zsh: command not found: sail 위와 같이 설정했는데 sail 명령이 zsh: command not found: sail 에러를 발생하는 이유는, alias 설정이 .zshrc 파일에 적용되지 않았기 때문. laravelboard % vi ~/.zshrc (vi 내에서 alias sail="vendor/bin/sail" 추가) laravelboard % source ~/.zshrc laravelboard % sail composer require laravel-lang/common --dev alias 설정을 적용하려면, 2번과 .. 2023. 10. 10.
[UNGRAMMAR 세번째이야기]가장 좋아하는 언어를 자바라 🙌 자바를 Java~ '가장 좋아하는 언어'가 무엇이냐고 물었을 때! (물어보신 분이 궁금하다면?! 👉 https://songacoding.tistory.com/84) 부끄럽게도 저는 바로 이거다! 하고 떠오르는 언어가 없었어요...🫣🫢 자바를 시작으로 웹 개발자를 꿈꾸게 되었는데,, 왜 저는 바로 자바가 떠오르지 않았을까요...?? 자바에 대한 애정과 관심이 그만큼 부족 했던 것 같다는 생각이 드네요 🥺 🥺 🥺 그래서 이번에는 자바에 대한 마음을 잡아보는 시간을 가져보았어요! 본인의 '자바 애정도' 🫶 궁금하신 분들도 함께 ✍️체크해보아요~ 자바의 애'정' Point 😇 포인터의 존재가 없다 ! 가비지 컬렉터로 인해 더 이상 개발자가 메모리 관리를 해야 할 필요가 없다 ! 객체지향을 즐기기에 안성맞춤~(?.. 2023. 6. 20.
객체의 불변성은 Builder 패턴으로 빌드업~! Spring과 진짜 초면인 우리 Builder 패턴은 객체 생성과 초기화를 유연하게 처리하기 위한 디자인 패턴입니다. Builder 패턴을 사용하면 복잡한 객체를 단계별로 구성하고 초기화할 수 있으며, 가독성과 유지보수성을 향상시킬 수 있습니다. Builder 패턴은 일반적으로 다음과 같은 구조로 구현됩니다: 빌더 클래스 (Builder Class): 객체 생성 및 초기화를 담당하는 빌더 클래스입니다. 필요한 속성을 설정하고 객체를 생성하기 위한 메서드들을 제공합니다. 제품 클래스 (Product Class): 빌더를 통해 생성되는 최종 객체입니다. 필요한 속성과 메서드를 가지고 있으며, 일반적으로 Getter 메서드를 통해 속성 값을 가져옵니다. 빌더 인터페이스 (Builder Interface, 선택.. 2023. 6. 12.
Mac MySQL 에러 ERROR 2002 (HY000).../mysql.sock' (2) MySQL을 설치하고나서 별 생각없이 'mysql -u root' 를 터미널에 딱! 입력 했는데...!! ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 무슨 일이 벌어진거죠...!?!?! 멘붕과 삽질의 끝에 찾아낸 방법 공유해봅니다 ㅠㅠ 😭😭 1. 터미널에서 다음 명령을 실행하여 MySQL 서버를 종료해요 brew services stop mysql 2. MySQL 데이터 디렉토리를 재설정하고 다시 시작합니다! 아래 명령어를 차례로 실행해주세요 (MySQL을 완전히 제거하고 재설치한 후 서버를 다시 시작하는 명령) brew uninstall mysql sudo rm -rf /usr/lo.. 2023. 6. 9.
[JavaScript] 프로그래머스_대문자와 소문자 까먹으면 볼라구 씀 대문자와 소문자 문제 설명 문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요. Array.from, forEach 문 function solution(my_string) { let arr = []; Array .from(my_string) .forEach((char) => { if (char === char.toUpperCase()) { arr.push(char.toLowerCase()); } else { arr.push(char.toUpperCase()); } }); return arr.join(''); } for of , 삼항연산자 function solution(my_stri.. 2023. 5. 26.