본문 바로가기

분류 전체보기

(71)
[Python] 이벤트 루프 이벤트루프 (event loop, 메시지 디스패칭 message dispatching) 프로그램의 중앙에 위치한 제어 흐름이다. 어떤 메시지가 큐에 들어가면 이벤트 루프가 큐에서 메시지를 꺼내 적절한 함수로 전달. 가장 많이 사용되는 이벤트 소스는 I/O이다. 그러나, I/O는 본질적으로 블로킹 작업이기 때문에 프로그램 실행 속도가 느려진다. 이런 문제를 해결하기 위해 비동기 모드(asyncronous mode)소켓을 사용해서 문제를 해결해본다. 단순히 소켓을 비동기모드로 설정하여도, 서버는 여전히 5초 지연 후에 응답을 보낼 것이다. 따라서, socket의 recv를 호출했을 때, 소켓은 읽을 데이터가 없다. 따라서 BlockingIOError가 발생한다. 이 문제를 해결하기 위해서 select를 사용..
MySQL Query 추적 1. MySQL root 로그인 2. general_log(query log) 확인 show variables like 'general%'; general_log 의 value 가 OFF 상태면, 로그 기록이 꺼져 있는 상태인것이다. general log를 ON 상태로 활성화 시키면, MySQL이 쿼리 요청 받는 즉시 general log에 기록한다. 3. general log 상태를 ON으로 바꾼다. set global general_log=on; 2번에서 show variables like 'general%' 를 했을 때, general_log_file 의 value에 해당하는 경로에 로그가 작성된다. 재시작할 필요없이 바로 적용되니 확인 가능.
intelliJ - git 연동하기 intelliJ와 git을 연동해서 사용할 수 있다. 1. intelliJ를 먼저 실행한 후에, [File] - [Settings]에 들어간다. 2. [Version Control] - [Github] 메뉴에 들어간 후, Add Account 로 연동할 git 계정을 입력한다. Add Account를 하면, git 페이지가 열리면서 계정 입력하는 부분이 나오는데 git에서 시키는대로 하면 연동이 된다! 간단하게 연동 가능하다
[Algorithm] 배열에서 이진검색 - JAVA 이진 검색 : 규칙이 있는 데이터 배열에서 아주 빠른 검색 수행 오름차순 혹은 내림차준으로 정렬된 배열에서 8 찾기. 중앙에 위치한 요소인 array[4] 부터 검색을 시작 검색하려는 값 8이 중앙값보다 크기 때문에, 중앙값 기준 뒤의 숫자 중 중앙값인 7과 비교 검색하려는 값 8이 7보다 크기 때문에, 7 기준 뒤의 숫자와 비교한 후 8 찾기 package exercise; import java.util.Scanner; public class test2 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int num = stdIn.nextInt(); int[] array = new int[num]; arr..
[Algorithm] 배열의 선형검색 - JAVA 1. 선형검색 : 무작위 데이터 배열에서 검색 수행 순차 검색이라고 생각하면 단순하다. 인덱스 0부터 차례로 검색을 진행한다. package exercise; import java.util.Scanner; public class test1 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int array_size = stdIn.nextInt(); int[] array = new int[array_size]; for (int i = 0; i < array_size; i++) { array[i] = stdIn.nextInt(); } int search_num = stdIn.nextInt(); int searc..
[Python] Python에서 fpdf 사용하기 파이썬 코드로 pdf 파일을 만들어야하는 경우, fpdf 모듈을 사용할 수 있다. from fpdf import FPDF pdf = FPDF() pdf.add_page() pdf.set_font('Arial', 'B', size=15) pdf.cell(200,10, txt="hello world", ln=2, align='C') pdf.output("test.pdf", 'F')
[Python] 딕셔너리 키 값 존재여부 확인 Python2 를 사용하는 경우, fruit_dict = {"apple": 3, "grape":5, "orange": 1} # key value가 apple이 존재할 경우, True # else: False print(fruit_dict.has_key("apple")) Python3 를 사용하는 경우, fruit_dict = {"apple": 3, "grape":5, "orange": 1} # apple에 해당하는 value 출력 print(fruit_dict.get("apple")) fruit_dict = {"apple": 3, "grape":5, "orange": 1} if fruit_dict["apple"]: print("apple exists") fruit_dict = {"apple": 3, "g..
[MySQL] 백업 도구 - mysqldump mysqldump? 적은 양의 데이터를 백업할 때 가장 간편하게 사용 가능 필요 권한 SELECT : 백업 대상 테이블의 데이터 조회 SHOW VIEW : 뷰 객체 백업 시 뷰 조회 TRIGGER : 트리거 객체 백업 LOCK TABLES : --single-transaction 옵션 사용하지 않고, 백업할 때 데이트 변경을 박기위한 테이블 단위 잠금 FILE : mysqldump의 결과 백업 파일 생성 및 디스크 저장 CREATE : 백업 파일 복구 권한 ALTER DATABASE : 프로시저, 트리거 백업 시 해당 캐릭터 인코딩 보존에 사용 전체 데이터 베이스 백업 mysqldump --all-databases [기타 옵션] -u[USER_NAME] -p[PASSWORD] > /data/table_a..