제가 응원하는 롯데랑 키움 경기 보느라 지금 글을 씁니다. 둘이서 경기하면 어떻게 하냐고요? 그건 좀 난감한 질문이네요. 뜬금없이 야구 이야기를 하다니. 오랫만에 ps에서 쓸 법한 알고리즘을 해 보겠습니다. 슬라이딩 윈도우라고, 코테에서 은근히 나오는 친구가 하나 있습니다. 톡에서도 질문을 받았었고요. 그것만 잠깐 해 보도록 하겠습니다. 아래의 문제를 생각해 보겠습니다. 길이가 n인 배열이 있습니다. 이 중에서 (부분 순서하고는 다른) 부분 배열을 뽑을 건데 제가 좋아하는 팀인 롯데는 1번 이상, 키움은 2번 이상 나와야 합니다. 그러한 조건을 만족하는 최소 부분 배열의 길이는 어떻게 될까요? 라는 문제를 생각해 보겠습니다. 일단 brute한 해결책을 먼저 생각해 보겠습니다. 0번 인덱스를 기준으로 보면..
전체 글 검색 결과
리눅스 시스템을 셋팅하면서, sudo와 su 명령어는 꽤 많이 사용하였습니다. 예를 들어, 우분투에서 sudo apt update 라던지, 아니면 sudo su라던지. 먼저 sudo를 보시면, execute a command as another user라고 되어 있습니다. 이것을 해석하면, 명령어를 다른 유저로 실행을 한다는 의미입니다. 예를 들자면 A라는 명령어를 cho로 실행할 수도 있지만 cho2로도 실행할 수 있고, root로도 실행할 수 있을 겁니다. -u 옵션을 주면, user가 실행하게 되는데요. other than 이라는 것이 있습니다. 원래 default 값은 보통 root인데, -u user 이렇게 옵션을 주면, 예를 들어서 sudo -u user C 라고 입력을 하면, C라는 명령어를..
crud를 구현하실 때, update 문도 상당히 많이 쓰는 편입니다. 예를 들어 게시물 수정. 그렇게 내용이 길지는 않으니 천천히 보셔도 좋을 듯 싶습니다. 먼저 instructor 테이블을 보겠습니다. 전체 레코드의 모든 필드들을 조회하기 위해서 select * from instructor 쿼리를 입력하였습니다. 이것을 salary 내림차순으로 정렬하였습니다. 저는 이 중에서 2번째와 3번째의 salary 값에 집중해 보도록 하겠습니다. update 다음에 테이블 명이 오고, set 다음에 어떠한 필드를 어떤 값으로 업데이트 할 것인지가 옵니다. 이 예제는, 모든 교수들의 연봉을 10% 인상하는 쿼리입니다. 실행 후에, 다시 instructor 테이블을 보시면, 모든 교수의 연봉이 10% 인상된 것을..
제 데스크탑 컴퓨터에 Ubuntu 20.04를 설치하였습니다. 그런데, 제 'cho' 라는 계정으로, sudo su라는 것을 입력하였을 때, 'cho'의 암호만 입력하면, root로 로그인을 할 수 있었습니다. cho로 sudo su를 수행했습니다. 적절한 인증을 거친 후에, root가 되었다는 것을 확인할 수 있는데요. 제가 쓰던 또 다른 환경에서는, 다른 유저로 sudo su를 했을 때, 'cho'라는 유저로 로그인을 하면, 실패를 하고 reported가 될 거라는 문구가 떴습니다. 왜 그럴까요? 이러한 의문을 해결하기 위해서, 이들을 관리할 법한 파일들을 보도록 하겠습니다. pwd 디렉터리로 가 보겠습니다. 여기서 ls 명령어를 입력하면, 꽤 많은 파일과 폴더들이 나오는 것을 볼 수 있는데요. 이 ..
race condition은 경쟁 상태를 의미합니다. 둘 이상의 무언가가 자원에 접근한다고 생각하면 어떨까요? 그리고 그것의 상태를 바꾸려고 한다면 어떨까요? 아래 프로그램을 보겠습니다. 리소스인 LinkedBlockingQueue가 있습니다. BlockingQueue는 쉽게 말해 동기화가 된 큐라고 생각하시면 됩니다. Executor 내부 구현에 쓰이기도 합니다. 여기에서 BlockingQueue에 대해 심도 있는 내용을 다루지 않겠습니다. 여기에서는 내부적으로 lock을 이용해서 Thread Safe 하다는 것 정도만 이해하셔도 무난합니다. Worker1은 Queue에 수를 추가합니다. 0부터 99까지 순서대로 추가를 합니다. 그리고, Worker2는 수를 뺍니다. Main 함수에서는 worker1과..
최근댓글