본문 바로가기
반응형

text/common9

mysql order by equal? mysql order by column 시 column value가 같을 경우, sort 순서는 보장되지 않는다. (결과값이 달라질 수 있다.) 왜? 쉽게 생각해서 table에 저장된 row순으로 출력 되지 않을까 싶은데, 실제로는 table의 row는 disk에 순서대로 저장되지 않고, insert, delete, update 를 거치면서 물리적으로 저장된 순서가 바뀔 수 있고, 그것보다는 order by 사용시 index를 사용하지 못하는 경우, filesort 알고리즘을 이용하게 되는데 해당 알고리즘은 정렬 수행 시 메모리에 임시 테이블을 만들거나, 너무 커서 메모리에 저장 못하면, 메모리가 아닌 디스크에 쓴 뒤 (일부 sort → merge) 반복 동작이 수행되는데, merge 작업 시 순서가 보.. 2023. 12. 5.
maven multi binding 문제 시 해결 회사에서 옛날에 만든 걸 리팩토링해보려다가 maven 옮겨오는 것부터 문제가 생겼다. spring 키려고 하니 자꾸 맨앞에 아래와 같은 오류가 생겼는데 해석하자면 " slf4j binding 하려고 보니 동일한 모듈이 여러 개라서 그중에 멀 쓸지 모르겠다. 내 맘대로 하나 쓴다? " 에러 메세지 이긴 한데 동작하는데 문제없지 않을까 싶다가도 글씨가 빨간색이니 이번 기회에 고치는 방법 알고가자 싶어서 정리하는 겸 적어본다. 우선 pom.xml 파일을 보면 dependency로 추가한 것 중 꼬인 게 분명 있다. 하지만 어떤 패키지가 뭘 가지고 있는지 어떻게 아냐? maven 설정이니 maven을 설치해준다. ( maven 설치 - ref. https://benggri.tistory.com/23) cmd창에.. 2023. 10. 12.
변수 메모리 할당 (간단 정리) 메모리 할당 프로그램이 실행되어 메모리에 올라갈때는 해당 프로그램이 사용가능한 메모리 영역을 os로 부터 할당 받는다. 할당 받은 메모리는 크게 4부분으로 나뉜다. 데이터 영역 코드 영역 스택 영역 힙 영역 데이터 영역 상수 값, 정적 변수, 글로벌 변수 등이 할당, 선언된다. 프로그램의 실행과 함께 메모리위에 올라가고, 종료와 함께 메모리에서 해제된다. 그렇기 때문에 정적 변수에 메모리가 큰 값을 할당하는 걸 조심해야 한다. 코드 영역 프로그램의 코드(명령어)가 저장된 공간이다. 해당 명령어를 통해 프로그램의 실행이 제어 된다. 스택 영역 함수 실행시 해당 영역에 필요한 메모리가 할당된다. 함수 내 지역변수, 매개변수, 함수 리턴값 등이 메모리 위에 올라간다. 함수 종료시 해당 영역은 해제되며 재귀 함.. 2023. 7. 31.
transaction에 대한 구구절절 transaction이 뭔지? 수행 시 분할할 수 없는 작업의 단위 작업 수행이 되던가(commit) / 아니면 해당 작업 전체가 취소 (rollback) DB에서는 부분적으로 업데이트되어 부정합이 일어나는 걸 방지하기 위해 동작하는 작업의 최소 단위를 의미 acid 성질 데이터의 부정합을 막기 위해서는 아래의 ACID 라는걸 만족해야 한다 원자성(Atomicity) 위에 적어 놨듯이 하나의 작업이 더 이상 쪼갤 수 없음을 의미 하나의 작업이 모두 commit 되던가 / 모두 rollback 되어야 함 예를 들어 100개의 행에 대한 update 작업을 하나의 transaction으로 처리할 때 99개의 작업 완료 + 1개의 작업 실패 시 100개 전부 update 작업 X (rollback) 일관성(C.. 2023. 7. 26.
(내가 몰라서 한) TCP와 UDP의 간략한 정리 네트워크를 학교 다닐 때 제대로 안 해서 누가 물어보면 아무 대답도 못하는 사람이 되어버렸다. 그래서 공부하는 겸에 TCP, UDP에 대한 간단한 설명을 적어본다. TCP, UDP 둘 다 OSI 레이어 중 전송 계층 (transport)의 프로토콜의 한 종류다. 전송 계층의 경우 목적지에 데이터를 정확히 전달하기 위한 계층이다. (하위 레이어인 물리, 데이터 링크, 네트워크 계층 만으로 목적지에 데이터가 덜렁 도착하기는 한다.(고 한다..!)) 전송계층은 역할은 오류를 점검하는 기능 전송된 데이터의 목적지가 어딘지(어떤 어플리케이션인지) 식별하는 기능 크게 두가지로 볼 수 있다. 또한 특징으로는 “신뢰성/정확성” 과 “효율성” 두 가지 다른 특성을 가지고 있는데, 신뢰할 수 있고 정확한 데이터 전달하는 .. 2022. 12. 5.
POST 길이, 용량 제한 php 문법을 보다가 POST 부분에 php는 이렇다고 해서 갑자기 궁금해진 건데 과연 post 요청은 제한이 없나? (그렇다고 알고 있는데 진짜 그런가?) 현재 주로 사용중인 사항은 java+tomcat 8.0(로컬, 테스트) / 8.5 (본 서버)인데 톰캣은 설정을 통해 post 요청 한계를 변경 가능하다. maxParameterCount ⇒ 파라미터 개수 (-1로 설정 시 no limit) maxPostSize ⇒ 값의 크기 지정 (-1로 설정시 no limit) 실제로 설정 변경 시 적용이 되는지 아래의 블로그를 통해 확인할 수 있다. 기존 10000개가 넘는 파라미터 송신 시 마지막이 잘리는 걸 확인하고, 파라미터 변경 ( maxParameterCount 변경) 후 값이 제대로 넘어가는 걸 확인.. 2022. 11. 25.
자꾸 찾아보기 귀찮아서 쓰는 apache2.4 + php5.x 세팅 까먹을까 봐 쓰는 (자꾸 찾아보기 귀찮아서 쓰는) 아파치 웹서버 + php 세팅 php 버전과 apache 버전이 맞아야 함!! php ver : 5.4.45 (VC9, win32, x86) apache 2.4.23 (win32, VC10) -> https://www.apachelounge.com/download/additional/ Apache Additional downloads Keep Server Online If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation. A donation makes a contribution towards the.. 2022. 11. 24.
VScode 뭐가 자꾸 안돼서 세팅 사용하다 보니 불편한 점이 있었는데, 나중에 내가 찾아보려고 이렇게 적는다. (차후 추가될 예정!) 코드 모두 접기, 펴기 이번에 js 파일 함수 별로 주석 처리하려고 보니 인텔리제이(community버전)는 /** */으로 지원을 안 하길래, js 폴더만 따로 VScode로 열게 됐다. 그런데 인텔리제이에서는 코드 블록들을 괄호 기준으로 ctrl+shift+"+"(모두 펴기) / ctrl+shift+"-" (모두 접기) 기능이 있다. 그래서 vscode도 분명 있으리라 생각하고 찾아보니 [vscode] 코드 접기 펼치기 단축키 [vscode] 코드 접기 펼치기 단축키 Ctrl + Shift + [ : 현재 영역 접시 Ctrl + Shift + ] : 현재 영역 펼치기 Ctrl + K + 0(숫자) : .. 2022. 10. 20.
멀티컬럼 PK는 왜? 어느 날, 친구에게 이런 카톡을 받았다. 이런 상황에서는 학생_수업 테이블에는 PK(primary key)를 만들어야 하는가에 대한 질문이었다. 나는 항상 테이블을 만들 때 PK를 기본으로 만들고 시작했었는데 (생각 없이) 생각해보자니 저 상황일 때도 만들어야 하는가? 에 대한 고찰 없이 무지성으로 만들었었다. 그럼 질문이 생긴다. PK는 모든 테이블에 꼭 필요한가? 학생-수업 테이블에서 FK 두 개를 묶어서 PK로 만들어 사용해도 되는가? PK를 구글링 해보면 잘 정리된 블로그가 많으니 해당 블로그를 통해 자세히 살펴보면 좋을 것이다. 위키 백과의 PK에 대한 설명 부분을 가져왔다. 테이블에서 정보 값(각 행)을 식별하기 위해 만들어진 null값이 허용되지 않고 중복이 허용되지 않는 키라고 볼 수 있다.. 2022. 8. 6.
반응형