주의 반복문에서 고루틴을 돌리면 신기하게 결과물이 나올 때가 있습니다. 아래 코드를 실행했을 때의 결과는 무엇일까요? import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup for _, text := range []string{"a", "b", "c"} { wg.Add(1) go func() { defer wg.Done() fmt.Println(text) }() } wg.Wait() } 만약 a, b, c가 랜덤으로 출력 것이라 생각하신다면 틀렸습니다 결과는 아래와 같습니다. c c c 왜 이런 일이 이유는 루프문이 고루틴보다 먼저 끝나서 고루틴에서 사용할 수 있도록 메모리를 힙으로 옮겼기 때문입니다. 즉 for문이 먼저 끝나서 text의 값은 마지막 ..
분류 전체보기
개요 https://www.acmicpc.net/problem/7489 생각을 잘못해서 몇 번 틀린 문제입니다. 간단하게 팩토리얼 수에서 최우측의 0이 아닌 값을 출력하면 되는 문제인데 아 10보다 큰수는 10의 나머지로 계산하면 더 계산이 빨라지겠구나라는 생각을 하여 아래 코드를 넣은 게 실수였습니다. 왜냐하면 25같이 특정 수와 만나면 10의 제곱이 되는 수가 존재하기 때문에 함부로 나머지 연산을 사용하면 안되는 거였죠 if result > 10 { result = result % 10 } 코드 위와 비슷한 코드가 들어갑니다. 문제에서 언급했듯이 70!은 부동 소수점 변수의 위치까지 넘어가는 매우 큰 수 이므로 이를 처리해야 하는 코드가 필요합니다. 그래서 아래 코드를 넣었습니다, 이 코드도 수가 더..
개요 https://www.acmicpc.net/problem/1920 해당 문제는 5년 전 고등학생때 했었던 문제입니다. 하도 풀어도 시간초과가 발생해서 포기했던 기억이 나네요. 어떻게 하면 M개의 난수가 A배열에 있는 지를 찾는지가 관건인 문제였습니다. 지금 보니 시간 복잡도를 조금만 줄이면 되는 문제로 이진 탐색으로 해결했습니다. 이진 탐색 알고리즘 알고리즘을 배우면 가장 먼저 배우는 알고리즘으로 작년에 다시 시도했을 때도 알고 있던 알고리즘이었습니다. 이를 적용할 생각이 없던 게 아쉽네요 정의는 아래 그림으로 보시면 이해하는 것이 편할 겁니다. 위하고 문제의 다른 점은 어떤 수들이 오는지 모르고 정렬되지 않고 입력된다는 점입니다. 탐색하면서 절반 씩 범위를 줄이기 때문에 시간 복잡도는 O(logN..
동시성이란 Go에서의 동시성을 설명하기에 앞서서 동시성이란 무엇이고 병렬성이랑 뭐가 다른지 확인해 봅시다. 병렬성 : 실제로 물리적으로 같은 시간에 계산되는 물리적 동시성 동시성 : 같이 실행될 거라는 논리적 동시성 이를 코드와 프로그램에 적용하면 아래와 같습니다. 동시성은 코드로 알 수 있는 것이고 병렬성은 실제 연산을 통해서 알 수 있다. 위 개념으로 아래 3가지 개념을 알 수 있습니다. 우리는 병렬적으로 실행될 거라 생각하며 동시성을 지닌 코드를 짠다. 멀티 코어 환경에서 코드를 짜더라도 진짜 병렬로 실행되는지 알기 어렵다. (플랫폼, CPU를 통해야 함) 그렇기에 병렬처리 여부는 컨텍스트(작업)의 의해 결정된다. 컨텍스트(Context) 컨텍스트는 동시성 환경에서 실행 중인 프로세스나 스레드, 혹..
개요이번 포스팅은 Golang을 할 때 가장 큰 장점으로 꼽히는 부분인 동시성(고루틴)과 크게 관련된 내용입니다.동시성 프로그래밍은 사실 쉽지 않습니다. 동시에 실행된다는 개념 때문에 프로그래머가 생각하는 순서와 실제 프로세스의 순서가 다를 수 있습니다.이 문제를 레이스 컨디션이라 부릅니다.레이스 컨디션 (Race Condition) : 개발자의 의도와 상관없이 프로세스의 순서가 바뀌어 결과가 일정하지 않은 문제 아래는 간단한 레이스 컨디션의 예제입니다.var num intgo func() { num++}()if num == 0 { fmt.Printf("The value is %d.\n", num)} 위 코드의 결과는 대부분 "The value is 0."로 출력될 겁니다.요즘 사용하는 컴퓨터의 수준은..
이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration 이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing 이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create) 이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller 이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination 이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read 이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete 이전글 : [PHP] 게시판 만들기 with MVC - 8부 Lock 이전글 : [PHP] 게시판 만들기 with MVC - 9부 Reply(..
이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration 이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing 이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create) 이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller 이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination 이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read 이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete 이전글 : [PHP] 게시판 만들기 with MVC - 8부 Lock 이전글 : [PHP] 게시판 만들기 with MVC - 9부 Reply(..
이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration 이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing 이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create) 이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller 이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination 이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read 이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete 이전글 : [PHP] 게시판 만들기 with MVC - 8부 Lock 이전글 : [PHP] 게시판 만들기 with MVC - 9부 Reply(..
이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration 이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing 이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create) 이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller 이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination 이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read 이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete 이전글 : [PHP] 게시판 만들기 with MVC - 8부 Lock Reply 이번에는 댓글 기능을 만들어봅시다. 지난번에 마이그레이션을 작..
이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration 이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing 이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create) 이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller 이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination 이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read 이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete Lock 이번 포스팅에는 잠긴 글 기능을 만들어봅시다. Post 테이블의 구조를 보면 lock 컬럼이 존재합니다. 이 값으로 잠긴 글인지 여부..