본문 바로가기

728x90

IT 일기

What is GoRoutine? Go루틴은 고에서 concurrency(동시성)을 다루기 위한 도구이다. concurrency에 대한 설명은 parallelism과의 차이를 통해 설명하는게 이해에 가장 좋은듯 하다. Concurrency VS Parallelism 비유적 표현으로 설명하자면 한 광대가 "저글링 돌리기 => 훌라후프 10개 하기 => 공 타기" 순차적으로 관객에게 보여주면 concurrency이고 "저글링을 돌리면서 훌라후프 10개를 하면서 공 타기"를 동시에 하면 Parallelism이다. 그럼 Go루틴은 왜 Concurrency일까? 이를 이해하기 위해선 Go루틴이 어떤 구조로 동작하는지 살펴볼 필요가 있다. How Go routine work G = Goroutine M = OS Thread P = Processor.. 더보기
#1 html,css & Go - slice [1] html, css https://github.com/dlgusrb3456/Front_with_go GitHub - dlgusrb3456/Front_with_go Contribute to dlgusrb3456/Front_with_go development by creating an account on GitHub. github.com html.. 은 간단하게 태그 종류( , ...) 와 태그에 붙일 class, id 의 차이 정도 알게됐다. css에서는 많은 것을 알게 됐다. 1. box-sizing : boarder의 기준을 어디로 잡을거냐? 에 대한 내용이다. content-box, border-box 두가지 종류가 있는데 content의 경우 내부 요소를 기준으로 width, height를 잡.. 더보기
Go Slice 사용법, 구조 그리고 append() 원리까지 Deep Dive Go array는 정적 배열이고 동적 배열은 Slice이다. 기본적인 사용법은 간단하다. 선언 및 초기화 방법들 var slice []int //크기가 0이고 요소 타입이 int인 slice 생성 var slice []int = []int{1,2,3} // 크기가 3이고 요소로 1,2,3을 갖는 슬라이스 var slice = []int{1, 5: 2, 10: 3} //[1 0 0 0 0 2 0 0 0 0 3] 5번째에 2를 10번째에 3을 넣어서 초기화 var slice = make([]int, 3) // 크기가 3이고 각 요소는 type별 default로 초기화 (int의 경우 0임)\ var slice = make([]int, 3,5) // len == 3 , cap == 5 순회 for i:=0; .. 더보기
임의의 요소의 값보다 요소의 값이 다 작은 경우가 한번이라도 있다면? 프로그래머스 인사고과 문제의 포인트이다 완호네 회사는 연말마다 1년 간의 인사고과에 따라 인센티브를 지급합니다. 각 사원마다 근무 태도 점수와 동료 평가 점수가 기록되어 있는데 만약 어떤 사원이 다른 임의의 사원보다 두 점수가 모두 낮은 경우가 한 번이라도 있다면 그 사원은 인센티브를 받지 못합니다. [[2,2],[1,4],[3,2],[3,2],[2,1]] 이런 배열의 경우 4번째 요소인 [2,1]은 2번째,3번째 요소보다 모든 요소의 값이 작기 때문에 걸러진다. 이제 최대 100000개의 요소가 들어있는 배열에서 요소들을 걸러야 하는데 10만개라서 N^2으로는 풀이를 할 수 없다. 하지만 정렬을 이용하면 N으로 풀이가 가능하다. 첫번째 요소를 기준으로 내림차순 정렬, 두번째 값 기준으로 오름차순 정렬을.. 더보기
Understand SOLID in Go https://en.wikipedia.org/wiki/SOLID SOLID - Wikipedia From Wikipedia, the free encyclopedia Object-oriented software engineering design principles This article is about the SOLID principles of object-oriented programming. For the fundamental state of matter, see Solid. For other uses, see Solid (disambiguatio en.wikipedia.org SOLID는 Object-oriented design을 더욱 understandable, flexible, and mainta.. 더보기
vscode Terminal 설정 변경 (Go에서 sqlite3 사용하기) Go에서 sqlite3을 사용하는 과정에서 생긴 문제가 있다. sqlite3을 사용하기 위해선 다음의 단계를 거친다. 1. sqlite3 다운로드 2. sqlite3 path 등록 1. sqlite3 다운로드 https://www.sqlite.org/download.html SQLite Download Page Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Templa.. 더보기
Two ways to implement DFS. (Recursive or Stack) https://youtu.be/CUTXL4NFTGE 이 영상이 가장 빠르고 효과적이게 DFS, BFS의 구현 방법의 종류와 동작 과정을 설명하신것 같다. DFS를 구현할 때 습관적으로 재귀를 사용해왔는데 정확도가 너무 떨어졌다. 생각이 너무 복잡해짐 (종료조건, return 값, return 후에 처리해줘야 하는 값들 등등 머리가 너무 아픔) 체크해야 할것이 많다는 것은 그만큼 실수할 확률이 늘어난다는 의미와 같다. 그래서 이제 stack으로 DFS를 구현해보고자 한다. (stack도 별반 다를바 없으면 어카지 ㅋㅋ) 예시 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매.. 더보기
HTTP/1.1 persistent-connection 사용 예시 네트워크를 공부하다 보면 "그래서 이걸 어디다 써먹지"라는 생각을 할 때가 많다. HTTP에 대해 공부하던 중 1.1 버젼의 persistent-connection을 실제로 구현해서 확인해보는 글이 있어 가져왔다. (가져왔다 == 번역 + 주관적 의견 추가) 구현 언어는 Go다. (최근에 Go를 공부해서 이해할 수 있는 건진 모르지만 코드가 갱장히 짧으니 이해할 수 있을 것이다) 1. HTTP의 stateless HTTP 1.0에 들어서며 http의 구조에 content-type을 적을 수 있는 Header 타입이 추가되며, 인터넷상의 많은 데이터 정보를 url을 통해 주고 받을 수 있게 됐다. 이것이 의미하는 바는, 이전 버전에 비해 server와 data를 주고 받을 일이 많아졌다는 것이다. 하지만 .. 더보기

728x90