일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- dfs
- 다이나믹프로그래밍
- STL
- BFS
- 프로그래머스
- jvm
- 딥러닝
- 라인
- 릿코드
- 백준
- Java
- 알고리즘
- 벤쿠버
- binary search
- 모두를 위한 딥러닝
- 파이썬
- Python
- 프로그래밍언어론
- 스프링 프레임워크
- Spring Framework
- 머신러닝
- spring
- 백트래킹
- DP
- C++
- 스타벅스
- 라인플러스
- C/C++
- leetcode
- 시애틀
- Today
- Total
목록Study (35)
케이스윔의 개발 블로그
STL의 여러 컨테이너를 사용해보면서 내부적으로 어떻게 구현이 되어있는지에 대한 고민을 해보지 않았던 것 같다. 그래서 vector를 사용해서 push_back()을 할 때에는 당연히 삽입이므로 시간복잡도가 O(1)일 거라 생각했다. 이번에 한 문제를 풀면서 O(N)이라는 걸 알게 됐다. STL에서 삽입, 삭제에 시간복잡도가 O(1)로 사용할 수 있는 컨테이너는 list다. list는 들어만 보고 vector나 queue를 쓰면 되니까 크게 필요성을 느끼지 못했었다. 그런데 시간복잡도에 대한 고려를 해보면서 시간제한이 있는 문제를 풀 때는 list를 써야된다는 것을 알았다. list 는 시퀀스 컨테이너이고, 노드 기반의 컨테이너이다. (vector와 deque는 배열 기반 컨테이너)따라서 list는 중간..
데이터베이스에서는 각 transaction 의 속성을 정의하여 수행할 수 있는데 SET TRANSACTION ~ 으로 시작하는 명령어를 통해 새로운 트랜잭션을 시작할 수 있다. 기본적으로 4가지가 있다.1. READ UNCOMMITED : 말 그대로 커밋하지 않은 트랜잭션까지도 읽는다. 현재 트랜잭션이 읽으려고 하는 시점에 다른 트랜잭션에서 해당 데이터를 수정하면 그 수정된 데이터를 읽을 수 있다. - read lock 이 필요없음2. READ COMMITED : 커밋된 트랜잭션까지 읽겠다! 현재 트랜잭션이 읽으려고 하는데 다른 트랜잭션이 해당 데이터를 수정해도 해당 트랜잭션이 커밋을 안했다면 수정되지 않은 데이터를 읽어온다. statement level 의 read consistency를 가지고 있고 ..
요즘 Jupyter로 데이터 분석을 하고 정리하는데 진작에 이걸로 보고서를 작성할 걸 그랬다! ipynb 파일을 html로 변환하는 건 엄청 쉽다. $ jupyter nbconvert --to html 변환할파일명.ipynb 이렇게 해주면 위의 사진처럼 2줄이 뜨면서 바로 html 파일로 변환되고 보고서파일로 그대로 사용할 수 있다!
요즘 장고로 웹서버를 구축해서 프로젝트를 진행하면서 다양한 것들을 시도해보는 것 같다. 그 중에 하나가 elasticsearch를 연동하는 것이었는데! 정말정말 힘들었다. 일단 설치할 때 버전을 잘못골라서 거의 참고할 수 있는 문서가 영어로도 찾기가 힘들었다. 그래서 처음에 설치를 했다가 다시 지우고 새 버전을 깔고, 장고 프로젝트의 데이터베이스와 연동하는 작업을 했다. 내가 사용하고자 한 목적은 프로젝트에서 저장해야하는 데이터가 너무 많았기때문에 elasticsearch와 kibana를 통해서 좀 더 시각화하여서 데이터를 쉽게 분석해보고 싶었기때문이다. 거의 한글로 된 문서는 없었고, 아니 0%라고 할 수 있을 것 같다! 안그래도 영어를 잘못하는데 열심히 읽어가며 따라서 했는데도 원하는 결과가 안나와서..
django로 웹서버를 구축하고 프로젝트를 진행하던 와중 https 설정을 해야 할 일이 생겼다. 사실 http, https 차이점만 공부해봤었지 이렇게 적용을 해본 적은 없었다. 그래서 구글링을 통해서 이것저것 찾아보았는데, 2가지의 방법이 있었다. 1. PythonAnywhere에서 Lets' Encrypt 보안인증서를 적용하는 방법2. openSSL 을 이용하여 인증기관을 만들고 Self signed certificate(SSC) 인증서 발급받아 적용하기 1번은 어느 사이트에 한글로 쉽게 설명이 되어있었는데 생각보다 절차가 번거로워 보였고, 무료 인증서를 발급 후 인증기관에 적용요청까지 해야 해서 시간이 좀 걸린다고 했다! 그래서 나는 2번을 택했고 최대한 한글로 된 문서를 찾으려 했지만 잘 정리되..
튜플은 리스트랑 비슷한데 소괄호를 쓴다. ex) x = ('hi!', 'hello'); print(x[2]) #hello를 출력한다.튜플은 순서를 보존한다. 튜플은 수정할 수 없다. immutable한 속성! (리스트는 수정가능)그냥 값을 저장하고 접근만 할 거라면 리스트보다 효율적이다. 그냥 효율적이라서 사용한다!튜플은 count, index만 사용가능하다.(x, y) = (4, 'hi')와 같이 할당이 가능하다! x=4 y='hi' 와 같이 할당됨좌변에 튜플을 쓸 수 있다는 것은 함수가 튜플을 return 할 수 있다는 것이다.튜플은 여러값에 대해 서로 비교가 가능하다! 대박 (0, 1, 2, 3) true 결판날 때까지 앞에서 부터 차례대로 비교한다!딕셔너리의 item..
연관 배열이라고 할 수 있당 물건에 포스트잇으로 라벨을 붙이는 것과 같은 것! (property maps : Perl / PHP, hash maps : Java, property bags : C# / .Net )ex) purse = dict() #딕셔너리를 만든당purse['money'] = 12 #money 라는 인덱스로 12를 저장print(purse) # {'money': 12} 라고 출력됨 in을 통해서 딕셔너리에 해당 인덱스가 있는지 확인할 수 있다.get을 통해서 값이 있는지 확인하고 없다면 해당 값을 지정해줄 수 있다!ex) count.get(name, 0) #해당값이 있는지 확인하고 있다면 해당값을 반환, 아니라면 해당인덱스에 0을 저장! list('딕셔너리명') 을 통해서 딕셔너리의 값들..
리스트를 공부해보자!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 신기하군 리스트안에 또 리스트가 있을 수 있고 한 아이만 또 리스트고 나머지는 그냥 변수일수있군리스트는 가변형이당(문자열은 변경할 수 없었당)range(4) -> [0, 1, 2, 3] 이걸 이용해서 반복문을 쉽게 이용할 수 있당 ex ) for i in range(len('출력하고자 하는 문자열리스트'): print('리스트의 i번째 원소')리스트도 '+' 연산자를 통해서 더할 수 있다! a = [1, 2, 3] b=[4, 5, 6] 이라면 c = a+b = [1, 2, 3, 4, 5, 6] 이당리스트도 [:] 를 통해서 자를 수 있다! a[ : 2] 라고 하면 [1, 2] 만을 잘라올 수 있당dir('알고싶은 타입')을..