분류 전체보기255 자바 기본 - 제네릭 제네릭은 자바 기본과 객체 지향(4) 에서 잠깐 언급한 적이 있다. 간단하게 복습해보자면 다음과 같다. Primitive Type은 Generic Type에 사용 불가하다. Reference Type은 Generic Type에 사용 가능하다. Generic이 무엇이길래 그럴까? 이번에 알아보자. GenericsJava에서 Generics는 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 객체별로 다른 타입의 자료가 저장될 수 있도록 한다. 컬렉션 클래스나 메소드에서 사용할 내부 데이터 타입(type)을 파라미터(parameter) 주듯이 외부에서 지정하는 타입을 변수화 한 기능이다. ArrayList list = new ArrayList(); 위의 코드 처럼 괄호가 제네릭이다.. 2024. 11. 6. 자바 기본 - 예외 개발을 하다보면 .. 반드시 마주하는 것이 예외이다. 예외에 대해서 알아보자. Error vs Exception자바에서는 실행 시(runtime) 발생할 수 있는 오류를 에러와 예외 2가지로 구분한다. 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 메모리 부족(OutofMemoryError)이나 스택 오버 플로우(StackOverflowError)처럼 발생하면 복구할 수 없는 심각한 오류이고 예측 불가능하다. JVM 실행에 문제가 생긴 것 논리 에러, 컴파일 에러, 런타임 에러논리 에러 : 논리적 에러는 버그라고 생각하면 된다. 프로그램의 실행에는 문제가 없지만, 결과가 예상과 달라 사용자가 의도한 작업을 수행하지 못해 서비스 이용에 문제가 될 수 있다. (ex. 수량에 음수.. 2024. 11. 6. 자바 기본 - 문자열 Java에서 String은 reference type(참조형 변수)이다. 복습 : 지난주에 정리했던 자바 기본과 객체 지향(4)에서 reference type은 heap에 생성되고 다루어진다고 하였다. 불변(Immutable)Java에서 String 객체의 값은 변경할 수 없다.변경할 수 없다는 것은 heap 영역에서 해당 객체가 가리키고 있는 데이터 자체가 변화할 수 없다는 것을 의미 String a = "Hello";a = a + " World";출처블로그 여기서 a는 Hello World가 출력되겠지만, heap에는 Hello와 Hello World 2개가 있다. a는 단순히 새로운 String 객체를 참조한 것이다. (hashCode() 를 통해 살펴보면 다르다는 것을 알 수 있다.) 이는 문.. 2024. 11. 5. 자바 기본과 객체 지향 (5) - 다형성과 상속, 추상화 객체 지향을 알고 있다면, 다형성과 상속에 대해 들어보았을 것이다. 다형성과 상속에 대해 알아보자. 다형성 다형성은 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질로, 객체 지향에서는 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성이다. 장점 : 코드 재사용성이 높아진다. 동일한 코드가 다른 클래스에서 재사용될 수 있으므로, 코드의 중복을 줄이고 생산성을 향상시킬 수 있다.유연성이 높아진다. 객체의 형식을 추상화하고 이를 다른 객체에서 동일한 인터페이스를 사용할 수 있어 객체 간의 결합도를 낮출 수 있다. 코드 가독성이 좋아진다. 동일한 이름을 가진 메서드나 연산자가 상황에 맞게 서로 다른 동작을 수행하기 때문에, 코드의 가독성이.. 2024. 10. 31. 자바 기본과 객체 지향 (4) 자바를 이해하기 위해 필요한 기본 개념들을 몇가지 정리해보자. main 메서드의 static 자바의 main 메서드는 왜 static 일까? 간단하게 정리하면, 다음과 같다. main 메서드는 프로그램의 시작점으로, 프로그램이 실행되면 가장 먼저 호출되는 메서드이다. 따라서, main 메서드는 누군가 호출하기 전에 미리 메모리에 있어야 하기 때문에 static을 붙인다. 만약, main이 메모리에 없다면, 시작점인 main() 메소드를 호출하려고 하는데 메모리에 main()이 없어 실행할 수 없게 된다. static이 뭐길래? static은 java 프로그램이 실행하기 전에, static 함수나 static 변수를 첫 단계로 메모리에 올려 프로그램을 실행시킨다. (static이 실행 시 1순.. 2024. 10. 31. 자바 기본과 객체 지향 (3) - 동일성과 동등성 Java로 개발 하다보면, 처음에 == 과 eqauls()의 차이에 부딪히게 된다. == 이생각한 대로 동작하지 않아 당황하게 되기 때문이다. 이에 대한 차이를 이해하기 위해 동일성과 동등성이 무엇인지 살펴보고, == 과 equals()가 어떻게 다른지 알아보도록 하자. 동일성 vs 동등성동일성: 두 객체가 완전히 같은 경우를 의미한다. 여기서 "완전히 같다"는 것은 두 객체가 사실상 하나의 객체로 간주될 수 있다는 것이다. 즉, 두 객체의 메모리 주소가 같다는 것을 의미한다.동등성: 두 객체가 같은 정보를 갖고 있는 경우를 의미한다. 객체의 주소가 다르더라도 내용이 같으면 동등하다고 할 수 있다. 즉, 두 객체의 값이 동일하다는 것이다. 그렇다면, Java에서 == 은 왜 생각한 대로 동작하지 않을까?.. 2024. 10. 31. 자바 기본과 객체 지향 (2) - JDK, JRE, JVM Java를 사용하다 보면 자주 접하게 되는 용어들이 있다. 이 용어들은 비슷하게 느껴지기도 해서, 이번 기회에 알아보고자 한다. 위에 그림에서 볼 수 있듯이, JDK는 JRE와 JVM을 모두 포함하고 있다. 그럼 JDK가 무엇일까? JDK (Java Development Kit) JDK는 자바 개발 키트의 약자로 개발자들이 자바로 개발하는 데 사용되는 SDK 키트이다. 그래서 JDK 안에는 자바 개발 시 필요한 라이브러리 들과 javac, javadoc 등의 개발 도구들이 포함되어 있다. 또한, 자바 프로그램을 실행하기 위한 JRE도 포함하고 있다. SDK ? SDK(Software Development Kit)는 소프트웨어 개발 키트로 하드웨어 플랫폼, 운영체제 또는 프로그래밍 언어 제작사.. 2024. 10. 31. 자바 기본과 객체 지향 (1) - 자바의 특징과 프로그램 실행 과정 자바는 대표적인 객체 지향적 프로그래밍 언어이다. 이러한 자바의 자바의 기본과 객체 지향에 대해 알아보자. Java의 특징Java의 특징은 7가지 이다. 객체 지향 언어 : 자바는 대표적인 객체 지향 언어이다. -> 캡슐화, 상속, 추상화, 다형성이 잘 적용된 언어이다. 컴파일 언어와 인터프리터 언어의 특성을 모두 가지고 있다. : 자바 소스코드는 먼저 자바 컴파일러에 의해 바이트 코드로 변환되고, 이 바이트 코드는 자바 가상 머신(JVM)에서 인터프리트 되어 실행된다. 모든 운영체제에서 실행 가능: 자바로 작성된 프로그램은 운영체제와 상관 없이 모두 실행될 수 있다. 자동 메모리 관리 : JVM에서 가비지 콜렉터가 데몬 쓰레드에 의해 Garbage Collection이 일어난다. 이때 불필요한 메모리르.. 2024. 10. 31. FastAPI - ToDo 서비스 기능 만들기 (1) ToDo 서비스는 할 일을 적고 수행 여부를 체크하는 서비스이다. ToDo 서비스의 기능은 다음과 같다. GET 전체 ToDo 조회 : /api/v1/todos 단일 ToDo 조회 : /api/v1/todos/{id} POST ToDo 생성 : /api/v1/todos PATCH ToDo 수정 : /api/v1/todos/{id} DELETE ToDo 삭제 : /api/v1/todos/{id} 코드는 todos의 하위 폴더로 src 폴더 내부의 main.py에 작성된다. 우선, 간단한 테스트를 해보기 위해 가상 환경을 실행하고 root path에 get 요청을 보내보자. 코드는 다음과 같다. from fastapi import FastAPI app = FastAPI() @app.get("/") def h.. 2023. 12. 29. FastAPI - 환경 설정하기 FastAPI를 사용하여 할 일을 적고 수행여부를 체크하는 서비스를 만들어보자. FastAPI는 파이썬 프레임워크로, 파이썬 3.6 부터 제공되는 트렌디하고 높은 성능을 가졌다. FastAPI의 특징은 다음과 같다. API 문서 자동 생성 (Swagger와 ReDoc 스타일 동일) 의존성 주입 위주의 설계를 통한 DB 등에 대한 관리 편리 비동기 동작으로 빠른 성능 보장 Pydantic을 사용한 Validation 체크 뛰어난 공식문서 가이드 요구되는 환경은 다음과 같다. Python 3.10 이상 Docker MySQL 8.0 IDE : PyCharm Python 3.10, Docker, PyCharm이 설치되어있다고 가정한 상태에서 프로젝트를 생성해보자. 다음의 명령어를 통해 가상 환경을 생성, 실행.. 2023. 12. 29. 멘토님 피드백 반영 (3) & 회고 마지막 멘토님 피드백 반영 및 오픈소스 활동에 대한 회고를 해보려고 한다. [원철 멘토님 피드백] 1) 폴더 및 파일명 cloudmssql → mssql 로 변경 2) sensitive 속성 함께 추가하기 & 패스워드 validation 조건에 backtick이 빠짐 참고 : https://github.com/dusdjhyeon/terraform-provider-ncloud/commit/ba1a9bd694b1e6fe5b2381239c87e5bf809f4583 "user_password": { Type: schema.TypeString, Required: true, Sensitive: true, ValidateDiagFunc: validation.ToDiagFunc(validation.All( valid.. 2023. 12. 7. 멘토님 피드백 반영 (2) 멘토님들께서 계속해서 피드백을 주셨다. [원철 멘토님 피드백] 1) cloud_mssql.go에서 region_code attribute 삭제하기 2) IntDivisibleBy(1433) 대신 IntBetween(1433, 1433) 이나 IntInSlice([]int{ 1433}) 또는 validation 함수를 추가하는 형태로 변경 "port": { Type: schema.TypeInt, Optional: true, ValidateDiagFunc: validation.ToDiagFunc(validation.Any( //validation. validation.IntBetween(10000, 20000), validation.IntBetween(1433, 1433), // 변경 부분 )), Descr.. 2023. 12. 7. 이전 1 2 3 4 5 6 7 8 ··· 22 다음