필요하지 않은 디비 값까지 조회되는 운영이슈가 있었다. db 쿼리문 조회 시 검색조건에서 예외케이스 있음을 알게된 경험이 있다. 로그부터해서 api 까지 거꾸로 따라가다가 like 절에서 escape 처리가 필요했던 부분이다. 언더바( _ )가 포함된 이름을 조회 시 엉뚱한 결과가 조회될 수 있다. WITH temp AS ( SELECT 'STEVEN_KING' AS ename FROM dual UNION ALL SELECT 'StevenMarkle' AS ename FROM dual ) SELECT * FROM temp WHERE ename LIKE '%_%' 언더바(_)는 LIKE에서 사용하는 패턴 문자이기 때문에 해당 문자를 직접 조회할 수가 없다. 언더바(_)가 존재하는 이름만 검색하였지만 결과는..
맥에서는 homebrew를 이용하면 mysql 설치는 간단하다. homebrew를 설치해두면 다른 프로그램을 설치할 때도 편리하게 설치하고 삭제할 수 있어서 좋다. 1. mysql 설치 $brew install mysql 2. 보안 설정 root 사용자 비번, 원격접속, test 데이터베이스 등 보안관련 설정한다. $mysql_secure_installation 3. mysql 기동 $brew services start mysql 4. mysql 접속 root 권한자로 접속하고 password는 위 2번에서 설정한 값으로 엔터치면 된다. $mysql -u root -p 5. mysql 종료 $brew services stop mysql * mysql 삭제 방법 brew services stop mysql..
동적프로그래밍이란 동적계획법이라고도 부르는데 문제를 풀기위해 필요한 알고리즘이라기보다 문제를 푸는 방식을 말한다. 동적프로그래밍은 아래와 같은 특성이 있다. 복잡한 문제(complex problem)를 작은 문제(subproblems)로 나눈다. 작은 문제의 해는 복잡한 문제를 풀기위한 부분 해가 된다. 복잡한 문제를 풀기위한 작은 문제들은 자주 등장하기(중복) 때문에 작은 문제가 나타날때 마다 계산할 필요 없이 해를 저장해놨다가 동일한 문제가 나오면 재 활용하여 시간을 절약한다. 그럼 어떤 알고리즘 문제가 나왔을때 이것을 재귀(recursion)로 풀어야할지, 분할 & 정복(divide & conquer)으로 풀어야할지, 그리디 알고리즘(greey algorithm)으로 풀어야할지 아니면 동적프로그래밍..
address space 컴퓨팅에서 주소 공간(住所 空間)은 물리 메모리나 가상 메모리, 레지스터, 네트워크 호스트, 주변 기기, 디스크 섹터, 다른 논리적 실체나 물리적 실체에 대응되는 주소의 범위를 정의한 공간(집합)을 말한다. 예를들어, 프로세스의 주소 공간은 메모리에 적재된다. 처럼 생각할 수 있다. 주소 공간이 메모리랑 무슨 차이일지 생각했는데, 주소 공간은 개념적으로 주소들의 공간이고, 메모리는 말 그대로 데이터를 담는 곳 virtual(logical) address space VS virtual memory 가상 주소 공간 프로세스가 생성되며 독립적으로 할당받는 주소들로, 다양한 메모리 기법으로 물리적 메모리와 매핑된다. 가상 메모리 멀티 프로그래밍 환경의 효율을 위해 프로세스 메모리가 램뿐..
데드락이란? - 둘 이상의 프로세스에서 자기 자원은 놓지 않고(lock) 다른 프로세스가 자원을 내놓기를 바라는 상태 (wait) - 결과적으로 아무것도 완료되지 못해 무기한 기다리게 된다. - '교착 상태'라고도 부름 - 한정된 자원을 여러 곳에서 사용하려고 할 때 발생 데드락이 일어나는 경우 프로세스1과 2가 자원1, 2를 모두 얻어야 한다고 가정해보자 t1 : 프로세스1이 자원1을 얻음 / 프로세스2가 자원2를 얻음 t2 : 프로세스1은 자원2를 기다림 / 프로세스2는 자원1을 기다림 현재 서로 원하는 자원이 상대방에 할당되어 있어서 두 프로세스는 무한정 wait 상태에 빠짐 → DeadLock 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황에서 발생할 수 있다. 데드락 발생 ..

백준에서 Maaaaaaaaaze 문제를 풀고 다른 사람 풀이를 봤었다. 그런데, 배열 회전에서 차이가 있었다 처음 배열 회전 시킬 때, 그냥 한 칸씩 이동하는 과정을 여러 번 반복했었다. 하지만, 회전의 특징? 을 고려하면 더 빠르고 깔끔하게 코드를 짤 수 있었다. 말로 설명하는 것보단 그림을 보는 것이 바로 이해하기 좋기 때문에 그림으로 대체.. 이 그림대로 모든 좌표 ( y, x) 를 ( x, height - y - 1 )로 바꾸면 간단하게 90 회전한 배열을 구할 수 있다. 사실 이걸 몰라도 어떻게든 회전할 수 있지만, 이 방법을 알아두는게 좋을 것 같아 따로 정리했다. 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ..
동기화 synchronous 프로세스들이 동작은 맞추는 것 작업을 요청 후 결과 값이 나올 때까지 기다리는 것을 의미합니다. ( blocking ) 비동기화 asynchronous 프로세스들이 서로에 대해 모름 작업을 요청 후 결과값이 나올 때까지 기다리지 않고 다음 코드를 실행하는 것을 의미합니다. (non-blocking) 결과 값은 이벤트큐에 넣거나 백그라운드 쓰레드에 위임합니다. 언제 필요할까? 여러 프로세스(쓰레드)가 공유 자원을 동시에 사용할 때 문제가 발생할 수 있습니다. 이러한 상황을 race condition이라고 부르는데, 둘 이상의 프로세스( 또는 쓰레드)가 하나의 데이터에 접근할 때 동기화 되지 않은 상태 따라서, 프로세스를 공유 자원의 접근을 제한하여 문제가 생기지 않게 방지하는 ..

process vs thread process : 운영체제로부터 자원을 할당받은 작업의 단위 thread : 프로세스가 할당받은 자원을 이용하는 실행의 단위 Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령 ) Data (static): 전역변수, 정적변수, 배열 등 ( 초기화된 데이터 ) Heap : 동적 할당 시 사용 ( new(), mallock() 등 ) Stack : 지역변수, 매개변수, 리턴 값 ( 임시 메모리 영역 ) 프로세스 특징 - 프로그램이 메모리에 올라가 수행하는 작업의 단위 - 고유 공간과 자원을 할당받아 사용 - 프로세스의 생성 초기 프로세스는 부팅 시 OS로 받지만, 그 후 부모 프로세스에게서 fork(), exec(),, 와 같은 시스템 콜로 생성됩니다. - 시분..
- Total
- Today
- Yesterday
- 괄호 변환
- 오블완
- 백준
- programmers
- Brainf**k 인터프리터
- DP
- 라면공장
- 티스토리챌린지
- 주사위 윷놀이
- 자바
- 투포인터
- 3954
- 프로그래머스
- 카카오 2020 공채
- 큰 수 만들기
- 17825
- 찾아라 프로그래밍 마에스터
- 후보키
- 카카오2020 공채
- 게리맨더링 2
- java
- 짝지어 제거하기
- 124 나라의 숫자
- 문자열을 정수로 바꾸기
- 단체사진 찍기
- 2019 카카오 공채
- 2018 카카오 공채
- 17779
- 정수 내림차순으로 배치하기
- 가장 큰 정사각형 찾기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |