분류 전체보기

    코루틴이란?

    그동안 멈춰왔던, 글쓰기를 시작해보려고 합니다.현재 내가 쓰는 언어인 kotlin에 대해서 좀 더 알아보고, 공부할 수 있는 시간을 가져보겠습니다.kotlin docs에 있는 코루틴에 관한 내용 번역과 제가 공부한 내용들을 정리해보겠습니다. 코루틴이란?코루틴은 suspendable computation이다. 개념적으로 쓰레드와 비슷하다. 나머지 코드를 실행시키는 동시에, 코루틴에서 로직을 실행시킨다는 점에서 비슷히다. 하지만, 코루틴은 특정 쓰레드에 국한되지 않는다. 한 쓰레드에서 실행을 멈추고 다른 쓰레드에서 실행을 시킬 수 있다.코루틴을 경량의 쓰레드로 생각할 수 있다. 하지만, 실제 사용에서 쓰레드와 매우 다르게 만드는 중요한 차이점이 몇 가지 있다.여기서 suspendable computation..

    Auto Commit 오해

    Auto Commit 오해

    글을 쓰게 된 계기 다른 팀원의 auto commit에 관한 발표를 듣고 궁금한 점이 생겼다. Application 단에서, hikariCP의 auto commit 설정을 false로 하면, 디비에 요청시에, auto commit을 set하는 쿼리들이 날아가지 더 이상 날라가지 않아, DB 부하를 줄일 수 있고, DB 커넥션을 얻는 시간을 지연 시켜, 자원을 효율적으로 사용할 수 있다는 발표였다. 여기서 나는 궁금증이 생겼다. HikcariCP의 auto commit 설정을 false로 하면, 트랜잭션의 auto commit 설정은 DB의 설정을 따라갈 것이다. 그래서, 우리 회사의 경우에는 auto commit이 true로 되어 있기에, 해당 transaction의 auto commit이 true가 설..

    [프로그래머스] 미로 탈출 [python]

    [프로그래머스] 미로 탈출 [python]

    문제 bfs로 풀면되는 문제이다. 출발점-> 레버 + 레버 -> 도착점 두 합의 최소를 구하면 된다. 코드 from collections import deque def solution(maps): answer = 0 startDot, leverDot, endDot = None, None, None for i in range(len(maps)): for j in range(len(maps[i])): if maps[i][j] == "S": startDot = (i,j) elif maps[i][j] == "L": leverDot = (i,j) elif maps[i][j] == "E": endDot = (i,j) else: continue startToLever = bfs(maps,startDot, leverD..

    [프로그래머스] 혼자 놀기의 달인 [python]

    [프로그래머스] 혼자 놀기의 달인 [python]

    문제 결국 풀어여 되는 건 간단한데, 문제가 너무 장황하다. dfs로 사이클이 있는 그래프를 찾고, 그래프의 노드의 수가 많은 것들을 곱하면 되는 문제이다. dfs로 그래프들을 모두 구한 후, sort를 하고 가장 큰 두 개를 골랐다. 그래프가 하나만 있을 수도 있기 때문에, 미리 0을 넣어서 무조건 두 개의 그래프가 생길 수 있도록 하였다. 코드 def solution(cards): global cnt answers = [0] isChecked = [False for i in range(len(cards) + 1)] for i in range(1,len(cards) + 1): cnt = 1 if isChecked[i] == False: isChecked[i] = True dfs(cards, i, isC..

    [프로그래머스] 후보키 [python]

    [프로그래머스] 후보키 [python]

    문제 조합과 구현을 섞어 놓은 문제였다. 구현을 잘 한다면 풀 수 있는 문제이다. 코드 def solution(relation): global answer answer = 0 candidates = [] for i in range(1,len(relation[0]) + 1): ## 조합 combination([], i, 0, relation, candidates) return len(candidates) def combination(comb, maxLen, nextN, relation, candidates): global answer if isInCandidates(comb, candidates): return if maxLen == len(comb): if canUseCandidateKey(comb, r..