일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 애자일
- 엘라스틱서치
- 코딩테스트
- Baekjoon
- Spring
- JPA
- 그리디
- framework
- 코딩
- ES
- Elasticsearch
- 자바
- spring boot
- API
- 백준
- 그리디알고리즘
- 알고리즘
- 클린코드
- Java
- database
- 개발자
- 데이터베이스
- 애자일프로그래밍
- 프레임워크
- cleancode
- 스프링
- 애자일기법
- 읽기쉬운코드
- 개발
- 코드
- Today
- Total
목록전체 글 (172)
튼튼발자 개발 성장기🏋️
나는 순수 전기차를 사용하고 있기 때문에 전기차 충전소를 자주 이용한다. 집밥이라고 불리는 집 충전소에서도 거의 매일 이용하고 있는데, 공용 충전소인 만큼 최대 충전 시간이 법적으로 정해져 있다. 여기서 이웃주민들끼리 문제가 생기기 시작한다.충전을 사용하지 않더라도 충전소에 주차를 해놓거나 충전이 다 되어도 이동주차를 하지 않는 비매너 행동과 법적으로 정해진 시간 이상 주차를 해놓는 경우가 매일 생긴다. 새벽출근에 저녁퇴근하는 나는 평일에 충전을 할 수 없는 경우가 종종 생겨 스트레스가 이만저만이 아니다.거기다 푸르지오 스마트홈을 통해 전기차 충전소 각 자리의 상태(충전 중 혹은 충전 가능)를 알 수 있는데, 매번 주차장 앞에서 앱을 키고 조회하기가 번거롭기도 하고 푸르지오 서버가 이슈가 많고 하루에 몇..
더보기GO 언어 관련해서 기본적인 문법 내용은 github에 정리해두었다. 변수, 상수 그리고 열겨형변수를 선언할 때 변수 명에는 공백을 포함하지 않은 문자, 숫자, 언더스코어(_)를 사용할 수 있고 숫자는 첫 글자에 사용할 수 없다. golang에서는 대소문자를 구분한다는 점에 유의해야한다. 참고로 golang은 camel case를 사용하는 것을 권장한다.변수를 선언하는 방법은 크게 4가지가 있다.var 키워드로 선언하고 var 다음에 변수 이름과 타입을 표기한다.같은 타입인 변수를 선언할 경우 콤마(,)로 구분하여 선언할 수 있다.서로 다른 타입의 변수를 선언할 경우 소괄호로 묶어서 한 번에 선언할 수 있다.변수 선언과 동시에 값을 정의할 경우 타입을 생략할 수 있고, := 연산자를 사용할 수도 있..
리스트 연산에서 데이터 공유하기불변성(Immutable)은 함수형 프로그래밍의 중요한 개념 중 하나다. 불변 데이터 구조를 사용할 때, 데이터를 수정하는 대신 새로운 데이터 구조를 반환하여 이전 데이터 구조를 변경하지 않는다. 그러나 불변성을 유지하는 것이 항상 성능을 저하시킬 수 있다는 걱정이 있다. 특히 리스트와 같은 데이터 구조에서는 원소를 추가하거나 수정할 때마다 데이터의 복사본을 만들어야 하기 때문에 성능에 영향을 미칠 수 있다.하지만 데이터 공유라는 기법을 활용하면 성능 저하를 최소화하면서 불변성도 유지할 수 있다. 데이터 공유는 이전 데이터 구조의 일부를 그대로 사용하고, 변경된 부분만 새로운 객체로 생성하는 방식이다. 이를 통해 리스트의 연산에서 메모리와 성능을 최적화할 수 있다.불변 리스..
1. 재귀 (Recursion)란 무엇인가?재귀는 어떤 문제를 해결할 때, 그 문제를 더 작은 동일한 문제로 나누어 해결하는 방식이다. 이때, 자신을 호출하는 방식으로 문제를 풀어나가며, 조건을 만족하면 더 이상 재귀를 하지 않고 결과를 반환한다.재귀 함수는 보통 두 가지 주요 요소를 포함한다.기저 조건(Base Case): 재귀를 멈추는 조건으로, 일반적으로 가장 작은 문제를 해결하는 형태다.재귀 호출(Recursive Case): 더 작은 문제를 해결하기 위해 자기 자신을 다시 호출하는 부분이다.아래 팩토리얼을 구하는 재귀 함수 예시를 보자. 팩토리얼은 n! = n * (n-1) * (n-2) * ... * 1로 정의되며, 이를 재귀적으로 계산할 수 있다. fun factorial(n: Int): I..
코틀린(Kotlin)은 함수형 프로그래밍(FP)을 지원한다. 코틀린에서는 함수가 중요한 구성 요소로, 이를 통해 간결하고 표현력 있는 코드를 작성할 수 있다. 일단 함수형 프로그래밍의 기본 개념인 부분 함수(partial function), 전 함수(pre-function), 커리한 함수(currying) 에 대해 설명하고, 이를 어떻게 활용할 수 있는지 알아보자. 1. 부분 함수(Partial Function)부분 함수는 입력값에 대해 정의된 범위 내에서만 동작하는 함수다. 즉, 어떤 함수가 모든 가능한 입력에 대해 정의된 것이 아니라, 일부 입력에 대해서만 유효한 함수일 때 사용된다. 이 개념은 주로 예외 처리나 특정 조건에 맞는 함수를 정의할 때 유용하다.예를 들어, 코틀린에서 map 함수는 nul..
1. 자원 관리Java에서 자원 관리에는 Java 7부터 도입된 기능으로 try-with-resources 문을 사용한다. AutoCloseable 또는 Closeable 인터페이스를 구현한 객체에 대해 자원 해제를 자동으로 처리할 수 있도록 한다.Kotlin에서는 use 확장 함수를 제공하여 자원을 자동으로 닫는 기능을 간결하게 구현할 수 있다. 이 방식은 Java의 try-with-resources 구문과 유사하지만, Kotlin의 확장 함수를 활용해 더 간결하고 직관적으로 작성할 수 있다.간결성: Kotlin의 use 함수는 확장 함수로 제공되어, 자원을 자동으로 닫는 코드가 매우 간결하고 직관적이다. 자원 해제 처리를 명시적으로 작성할 필요 없이 use 블록 안에서만 자원을 사용할 수 있다.안전성..
1. 패키지패키지는 여러 클래스를 묶어서 네임스페이스를 제공하는 개념이다. 패키지를 사용하면 이름 충돌을 방지하고, 코드의 구조를 명확히 하며, 다른 프로그램에서 클래스들을 쉽게 가져다 쓸 수 있게된다.네임스페이스 관리: 같은 이름을 가진 클래스를 여러 개 정의할 수 있게 해준다. 예를 들어, com.example.utils와 com.example.models 같은 서로 다른 패키지에 같은 이름을 가진 클래스가 있을 수 있다.코드 관리: 프로젝트를 더 나은 구조로 나누어 관리할 수 있게 해준다.접근 제어: 패키지 내에서 클래스를 어떻게 접근할 수 있는지 제어할 수 있다.Kotlin에서의 패키지 사용법Kotlin에서는 package 키워드를 사용하여 클래스를 패키지에 포함시킨다. 패키지는 코드 파일의 첫 ..
1. 필드와 변수Java에서 클래스의 필드는 반드시 명시적으로 선언된 타입과 함께 접근 제어자가 필요하다. 반면, Kotlin에서는 필드 선언이 더 간결하고 유연하다. Kotlin은 기본적으로 val(불변 변수)과 var(가변 변수)로 구분하며, var는 Java의 mutable 변수와 비슷하고, val은 Java의 final 변수와 유사하다.Java code와 Kotlin code를 비교해보자.val은 name처럼 불변(읽기 전용) 필드를 정의하며, var는 age처럼 가변 필드를 정의한다.Kotlin에서는 getter와 setter를 자동으로 생성해준다. name은 val이기 때문에 setter가 없고, age는 var이므로 setter가 자동으로 생성된다. public class Person { ..