go
-
LeetCode: Two SumAlgorithm & Data Structure/LeetCode 2024. 11. 26. 22:28
Two Sum 문제 풀이: 두 가지 접근법문제 설명https://leetcode.com/problems/two-sum/ 배열 nums와 정수 target이 주어졌을 때, 합이 target이 되는 두 숫자의 인덱스를 반환하는 문제입니다.각 입력은 하나의 정답을 가지며, 동일한 요소를 두 번 사용할 수 없습니다.반환값은 인덱스 쌍으로, 순서는 상관없습니다.1. 브루트포스(Brute Force) 방법첫 번째로 떠오르는 직관적인 접근법은 모든 가능한 쌍을 검사하는 것입니다.이 방법은 단순하지만, 시간 복잡도가 높아 효율적이지 않습니다.시간 복잡도O(n²): 모든 요소를 두 번 반복하며 쌍을 검사하기 때문입니다.고랭 코드func twoSum(nums []int, target int) []int { for i..
-
자료구조: 해시테이블(Hash Table)Algorithm & Data Structure/DataStructure 2024. 11. 24. 17:11
해시테이블은 효율적인 데이터 저장과 검색을 위해 해시 함수를 사용하여 키(key)를 해시값(hash value)으로 변환하고, 이를 통해 데이터의 위치를 결정하는 자료구조입니다. 해시맵과 해시테이블은 개념적으로 유사하지만, 구현 방식과 충돌 해결 방법에 따라 차이가 있습니다. 이번 글에서는 해시테이블의 기본 개념부터 다양한 충돌 해결 방법까지 자세히 알아보겠습니다.해시테이블이란?해시테이블(Hash Table)은 키를 해시 함수로 해시값으로 변환하고, 이 해시값을 인덱스로 사용하여 데이터를 저장하는 자료구조입니다. 이를 통해 평균적으로 O(1)의 시간 복잡도로 데이터에 접근할 수 있습니다. 그러나 해시 함수의 성능과 충돌 해결 방법에 따라 실제 성능은 달라질 수 있습니다.해시테이블의 동작 원리해시테이블의 ..
-
golang: 고루틴(Goroutine) 연습해보기 초급편Back-End/Golang 2024. 11. 23. 14:58
고루틴 학습 교과서: Go로 배우는 동시성 프로그래밍서문Go 언어의 핵심인 고루틴은 경량 스레드로, 효율적이고 강력한 동시성 프로그래밍을 가능하게 합니다. 이 교과서는 고루틴의 기초부터 심화된 패턴까지 체계적으로 학습할 수 있도록 설계되었습니다. 각 단계별로 학습 포인트와 실습 예제를 통해 실력을 점진적으로 향상시킬 수 있습니다.1단계: 고루틴 기초학습 포인트고루틴의 정의 및 기본 사용법동기 실행과 비동기 실행의 차이점설명고루틴은 go 키워드를 사용하여 비동기로 함수를 실행할 수 있는 Go의 기본 단위입니다. OS 스레드와 비교해 메모리 오버헤드가 작으며, 런타임 스케줄러가 고루틴을 관리합니다.예제package mainimport ( "fmt" "time")func printMessage(msg stri..
-
자료구조: 해시맵(Hash Map)Algorithm & Data Structure/DataStructure 2024. 11. 23. 10:52
해시맵은 키(key)와 값(value)을 효율적으로 저장하고 검색하기 위한 자료구조입니다. 해시 함수를 사용하여 키를 특정 인덱스로 매핑함으로써, 데이터에 대한 빠른 접근이 가능합니다. 이 글에서는 해시맵의 기본 개념부터 Concurrent HashMap과 Ordered HashMap에 이르기까지 자세히 알아보겠습니다.해시맵이란?해시맵(Hash Map)은 키-값 쌍을 저장하는 자료구조로, 키를 해시 함수(hash function)에 통과시켜 해시값(hash value)을 생성하고 이를 인덱스로 사용합니다. 이를 통해 평균적으로 O(1)의 시간 복잡도로 데이터에 접근할 수 있습니다.해시맵의 동작 원리해시맵은 다양한 개념과 용어로 구성되어 있으며, 각 요소가 유기적으로 작용하여 효율적인 데이터 저장과 검색을..
-
golang: init functionsBack-End/Golang 2024. 11. 21. 18:05
Go의 init 함수 다루기: 사용 방법 및 주의사항Go 언어에서 main 함수는 프로그램의 시작점을 나타내며, 해당 함수가 종료되면 프로그램의 실행도 종료됩니다. 그러나 init 함수는 main 함수와 함께 특별한 역할을 합니다. 이번 블로그에서는 Go의 init 함수에 대해 깊이 있게 알아보고, 그 사용 방법과 주의사항에 대해 살펴보겠습니다.init 함수란 무엇인가?init 함수는 패키지 블록 내에서 정의되며, 다음과 같은 목적으로 사용됩니다:복잡한 변수 초기화: 초기화 표현식으로 처리할 수 없는 복잡한 변수를 설정할 때.프로그램 상태 확인 및 수정: 시작 시 필요한 설정이나 상태를 확인하고 조정할 때.리소스 등록: 플러그인이나 핸들러를 등록할 때.일회성 작업 수행: 캐시 생성이나 데이터 로드 등 한..
-
byte는 왜 사용하나요? (java, golang)Back-End/Language 2024. 11. 19. 22:06
Java와 Golang 모두에서 byte 데이터를 자주 사용합니다. 다만 두 언어의 설계 철학과 활용 사례에 따라 byte의 사용 빈도와 방식이 조금 다릅니다. 이를 간략히 정리하겠습니다.Java에서 byte 사용Java는 byte를 많이 사용하는 언어 중 하나입니다. 이는 주로 Java의 저수준 I/O 처리, 네트워크 통신, 데이터 직렬화와 같은 작업에서 필요하기 때문입니다.주요 사용 사례1. 파일 입출력Java의 InputStream과 OutputStream은 데이터를 byte 단위로 처리합니다.텍스트 데이터뿐만 아니라 이미지, 영상, 바이너리 파일을 처리할 때도 필수적입니다.FileInputStream fis = new FileInputStream("example.txt");byte[] buffer..
-
golang: godoc 철학과 사용방법Back-End/Golang 2024. 11. 18. 22:27
Go 언어는 문서화를 매우 중요하게 생각합니다. 좋은 문서는 소프트웨어를 더 접근 가능하고 유지보수하기 쉽게 만들어줍니다. 이를 위해 Go는 코드와 문서를 밀접하게 연계시키는 도구인 godoc을 제공합니다. 이번 글에서는 godoc의 철학과 사용 방법, 그리고 예시를 통해 godoc에 대해 자세히 알아보겠습니다.godoc의 철학godoc의 핵심 철학은 문서는 코드와 함께 발전해야 한다는 것입니다. 이를 위해 godoc은 Go 소스 코드와 그 주석을 파싱하여 HTML이나 텍스트 형식의 문서를 생성합니다. 이러한 접근 방식은 다음과 같은 장점을 제공합니다:코드와 문서의 일치성: 문서가 코드와 동일한 저장소에 있기 때문에, 코드 변경 시 문서도 함께 업데이트됩니다.간단한 주석 규칙: 특별한 문법이나 마크업 없..
-
golang: 고언어의 철학(Clear is better than clever)Back-End/Golang 2024. 11. 16. 22:17
"Clear is better than clever"("명확성은 영리함보다 우수하다)는 Go 언어의 설계 철학 중 하나로, 코드의 가독성과 명확성을 우선시해야 한다는 원칙을 뜻합니다. 이는 Go 언어 설계자들이 Go 언어의 단순하고 직관적인 사용성을 강조하면서, 복잡하거나 지나치게 "영리한" 코드 작성을 피하자는 철학입니다.세부 설명Clear (명확성):코드를 읽는 사람이 쉽게 이해할 수 있는 코드를 작성하는 것을 지향합니다.코드가 직관적이어야 팀원이나 후임자가 코드를 읽고 수정하거나 유지보수하기 쉽습니다."이 코드는 무엇을 하는지 바로 알 수 있는가?"를 기준으로 작성.Clever (영리함):지나치게 복잡하거나 고도의 기술적인 구현(트릭)을 사용한 코드.한 번에 많은 일을 처리하거나, 너무 축약된 표현..