반응형
카드 발동 제네릭 와일드카드?(feat. 이펙티브 자바)
프로그래밍 언어/Java2024. 11. 20. 13:07카드 발동 제네릭 와일드카드?(feat. 이펙티브 자바)

이펙티브 자바 스터디를 하고 있는데, 2주전까지의 파트는 제네릭이었음 보통 Controller 짤 때 Map에 때려 넣는 곳이 진짜 많은데 Map이랑 같이 제네릭을 많이 쓰는 것 같음그래서 한 번 공부하면 머리에 남지도 않으니 제네릭에 대한 것 전부 다 정리해보자 그리고 코틀린에서는 겸사겸사 제네릭 어떻게 쓰는지, 있는지도 알아보자.1. 제네릭을 알아보기 전, 공변과 불공변에 대해 알아보자.배열은 공변이고, 제네릭은 불공변이다.공변은 자기 자신과 자식 객체로 타입 변환을 허용해주는 것이다.🍂 먼저, Java 타입 계층 구조 알아보기Object가 최상위 클래스Java의 모든 클래스는 Object를 직접 또는 간접적으로 상속받는다. 이는 모든 참조 타입이 Object 타입으로 취급될 수 있음을 의미한다.S..

NullPointException에 대해 알아보자.
프로그래밍 언어/Java2024. 10. 29. 13:34NullPointException에 대해 알아보자.

예전에 작성한 독서 후기인 필독 개발자 온보딩 가이드 2장에 보면 NullPointException에 대한 설명을 적어뒀는데 자바 기본 다시 공부하면서 나와서 한 번 더 정리할 겸 정리해봄NullPointException1. Null이란?택배를 보낼 때 제품은 준비가 되었지만, 보낸 주소지가 아직 결정되지 않아서, 주소지가 결정될 때까지는 주소지를 비워둬야 한다.참조형 변수에는 항상 객체가 있는 위치를 가르키는 참조값이 들어간다. 그런데 아직 가리키는 대상이 없거나 가리키는 대상을 나중에 입력하고 싶다면? null을 넣어둘 수 있다.null은 값이 존재하지 않는, 없다는 뜻으로 만약 계속 인스턴스를 아무도 참조 하지 않는다면 JVM의 GC(가비지 컬렉션)가 더이상 사용하지 않는 인스턴스라 판단하고 해당 ..

러스트 외부함수
프로그래밍 언어/Rust2024. 10. 28. 15:27러스트 외부함수

러스트 프로그래밍 언어에서 외부 함수 인터페이스(FFI, Foreign Function Interface)를 활용하여러스트 코드에서 C로 작성된 함수와 일부 C++로 작성된 함수를 호출할 수 있다.러스트는 시스템 프로그래밍 언어로서 메모리 안전성을 강조하지만, 기존의 C/C++로 작성된 라이브러리를 활용하거나 시스템 호출을 직접 다루어야 하는 경우가 많다. 이때 FFI는 러스트 코드가 외부 함수와 데이터를 교환할 수 있게 해주는 중요한 메커니즘이다.1. FFI(외부 함수 인터페이스) 개요외부 함수 인터페이스(FFI)는 두 가지 이상의 프로그래밍 언어가 서로의 코드를 호출할 수 있도록 하는 메커니즘이다. 이는 주로 시스템 프로그래밍, 운영 체제 API 호출, 네트워크 통신, 하드웨어 제어, 고성능 연산이 ..

러스트 스터디 Week 6 오류처리 발제
프로그래밍 언어/Rust2024. 10. 25. 10:01러스트 스터디 Week 6 오류처리 발제

노션 정리 : 좀 더 색깔이나 덧글로 모르는 단어까지 걸어두고 조금 더 정갈하게 정리해뒀다. 발표를 위한 발제글 올리기This chapter covers the two different kinds of error handling in Rust: panic and Results.Rust에서의 두 가지 에러 처리 방법인 패닉(panic)과 결과(Result)를 다룬다.Ordinary errors are handled using the Result type. Results typically represent problems caused by things outside the program, like erroneous input, a network outage,or a permissions problem. Th..

Chater 12. 연산자 오버로딩
프로그래밍 언어/Rust2024. 10. 25. 09:56Chater 12. 연산자 오버로딩

Chater 12. 연산자 오버로딩01. 도입2장에서 살펴본 망델브로 집합 플로터에서는 복수평명 위의 수를 표현하기 위해 num 트레이트의 Complex 타입을 사용한 예시가 아래와 같음#[derive(Clone, Copy, Debug)]struct Complex { /// 복소수의 실수 부분 re: T, /// 복소수의 허수 부분 im: T,}보통 복소수의 형태는 a+bi 형식으로 나타낼 수 있으며, 여기서 a는 실수 부분이고 b는 허수 부분이다. T는 제네릭 타입으로, 실수 부분과 허수 부분이 다양한 수치 타입을 가질 수 있도록 한다.예를 들어, 복소수 3+4i를 표현하기 위해 Complex 구조체를 사용할 수 있다.let z = Complex { re: 3, im: 4 };Complex 수는 기본 ..

Rust가 떠오른 이유 : 안전성, 쾌적한 사용 - 우아한 스터디 및 잇츠 스터디
프로그래밍 언어/Rust2024. 10. 25. 09:45Rust가 떠오른 이유 : 안전성, 쾌적한 사용 - 우아한 스터디 및 잇츠 스터디

TMI프로그래밍 러스트 책에 있는 것을 정리스터디잇츠 우먼 스터디 1기 Rust 스터디에 선발되어서 이번주부터 스터디 하게 됨현재 배달의 민족과 잇츠 2기 뽑는 중난 1기라서 우아한 스터디만 신청 가능함우아한 스터디링크 : [모집] 우아한스터디 2024 여름시즌모집 기간 : 5/8 ~ 5/14활동 기간: 6/1 ~ 7/31잇츠스터디링크 : 서울 우먼잇츠 X 우아한스터디모집 기간 : 5/8 ~ 5/14활동 기간: 6/1 ~ 7/31Rust를 쓰는 이유 - chapter 1텍스트1. C언어, C++언어의 문제점int main(int argc, char **argv){ unnsigned long a[1]; a[3] = 0x7ffff7b36cebUL; return 0;}이 프로그램에는 결함이 있다. ..

이펙티브 자바 item 01. 생성자를 대신 정적 팩토리 메서드를 고려하라
프로그래밍 언어/Java2024. 10. 24. 14:42이펙티브 자바 item 01. 생성자를 대신 정적 팩토리 메서드를 고려하라

1장 들어가기이 책은 성능에 집중하는 부분은 많지 않다. 대신 프로그램을 명확하고, 정확하고, 유용하고, 견고하고, 유연하고, 관리하기 쉽게 짜는데 집중한다.기술 용어는 대부분 자바8용 언어 명세를 따르며, 자바가 지원하는 타입은 인터페이스(interface), 클래스(class), 배열(array), 기본 타입(primitive) 총 네 가지다.애너테이션(anntation)인터페이스의 일종열거 타입(enum)클래스의 일종참조 타입(Reference type)인터페이스, 클래스, 배열즉, 클래스의 인스턴스와 배열은 객체(object)인 반면, 기본 타입 값은 그렇지 않다.클래스의 멤버필드(field)메서드(method)멤버 클래스멤버 인터페이스메서드 시그니처는 메서드 이름과 입력 매개변수(paramete..

🤔 자바 기초 배울 때 앞쪽에 나오는 상속 왜 현업에서는 잘 안쓴다고 하는 걸까? (feat. 코틀린에서 상속은?)
프로그래밍 언어/Java2024. 10. 24. 10:11🤔 자바 기초 배울 때 앞쪽에 나오는 상속 왜 현업에서는 잘 안쓴다고 하는 걸까? (feat. 코틀린에서 상속은?)

이펙티브 자바 스터디를 9월부터 하고 있는 중인데 저번주 주제 중에 상속을 아무때나 사용하지 말고 주의해서 사용하라라는 주제가 나왔었다.. 근데 주의점이 너무 많아서 그러면 상속을 안쓰면 되는 거 아닌가요? 하는 말이 나왔었음 스터디원이 정리한 것 중에 아래와 같은 글도 있었다.💬 Java의 창시자인 제임스 고슬링(James Arthur Gosling)이 한 인터뷰에서 "내가 자바를 만들면서 가장 후회하는 일은 상속을 만든 점이다"라고 말했다.조슈야 블로크의 Effective Java에서는 상속을 위한 설계와 문서를 갖추거나, 그럴 수 없다면 상속을 금지하라는 조언을 한다.따라서 추상화가 필요하면 인터페이스로 implements 하거나 객체 지향 설계를 할땐 합성(composition)을 이용하는 것이..

반응형
image