2024/03 12

[개발독서] 내 코드가 그렇게 이상한가요 (3~4장 클래스 설계 & 불변 활용하기)

성능이 중요한 경우 불변변수가 아닌 가변변수를 사용하라고 하는데, 불변변수가 가변변수보다 성능에 더 좋은 경우는 무엇이 있을지? 메모리 관리불변변수는 한 번 생성되면 변경할 수 없으므로 메모리 관리가 간단합니다. 하지만 가변변수는 값이 변경될 때마다 메모리를 할당하고 해제하는 오버헤드가 발생할 수 있습니다.캐시 일관성불변변수는 값이 변하지 않기 때문에 여러 스레드 간에 안전하게 공유될 수 있습니다. 이는 캐시 일관성을 유지하는 데 도움이 됩니다. 반면 가변변수는 값이 변경될 수 있기 때문에 캐시 일관성을 유지하는 데 추가적인 오버헤드가 발생할 수 있습니다.병렬화불변변수는 여러 스레드 간에 안전하게 공유될 수 있으므로 병렬화를 쉽게 할 수 있습니다. 가변변수의 경우 값이 변경될 때 동기화 메커니즘이 필요할..

[개발독서] 내 코드가 그렇게 이상한가요 (1~2장 잘못된 구조의 문제 깨닫기 & 설계 첫걸음)

1장 잘못된 구조의 문제 깨닫기 1.1 의미를 알 수 없는 이름 1.2 이해하기 어렵게 만드는 조건 분기 중첩 1.3 수많은 악마를 만들어 내는 데이터 클래스 1.4 악마 퇴치의 기본2장 설계 첫걸음 2.1 의도를 분명히 전달할 수 있는 이름 설계하기 2.2 목적별로 변수를 따로 만들어 사용하기 2.3 단순 나열이 아니라, 의미 있는 것을 모아 메서드로 만들기 2.4 관련된 데이터와 로직을 클래스로 모으기 1장 잘못된 구조의 문제 깨닫기가독성과 유지보수성!2명 이상 개발 시 필요한 것?프로그램 설계2명 이상 개발 시 코드 작성 방법?가독성: 이해하기 쉬운 코드유지보수정: 코드 추가/수정이 쉬운 코드가독성과 유지보수성이 떨어지는 코드?의미를 알 수 없는 이름중첩이 많은 코드public 변수가 많은 클래스함..

카테고리 없음 2024.03.19

[MySQL] 새로운 설정 시 MySQL 캐시 지우기? FLUSH PRIVILEGES

테이블 내 칼럼 타입 형변환을 해야 하는 상황이 발생해 타입변환 이전에 백업용으로 테이블을 복제해놓았는데 두 테이블 간 용량 차이가 나는 걸 발견했다. (백업용 테이블의 용량이 더 작은 상황) 그 이유는 바로 테이블을 복제할 때 인덱스 등으로 물려 있었던 MySQL 캐시는 날아간채로 복제됐기 때문이라고 한다. 즉 기존의 테이블은 가비지 컬렉션과 같은 데이터를 가지고 있었던 것이다. 사실 DB의 설정을 바꾼다는 것 자체가 자주 있어서는 안되는 일이지만 지금과 같이 어쩌다 어쩔 수 없이 설정 상의 변경이 필요한 경우에는 아래의 명령어를 통해 MySQL 캐시를 지워줘야 한다. FLUSH PRIVILEGES https://stackoverflow.com/questions/36463966/mysql-when-is..

카테고리 없음 2024.03.14

[MySQL] Cardinality는 항상 일정하지 않음? 인덱스를 다시 만드는 과정에서 새롭게 연산을 하며 매번 달라짐

칼럼의 중복도를 알 수 있는 Cardinality(중복도와 반비례)는 인덱스를 다시 만드는 과정에서 새롭게 연산을 하며 매번 달라진다는 사실..! 여러 칼럼을 인덱스로 생성할 때, Cardinality가 높은 -> 낮은 순으로 구성한다. https://stir.tistory.com/m/236 MYSQL INDEX 실무 활용기 우연히 INDEX를 실무에 (드디어)활용해 볼 기회가 생겨서 적어보는 글이다. INDEX에 관한 원리 및 설명은 여기를 참고. 문제의 쿼리 SELECT SQL_NO_CACHE * FROM USER WHERE add_id = '2bf-ad7c-1b24' 쿼리는 위와 같이 stir.tistory.com

언어/MySQL 2024.03.14