일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- baeldung
- 데비안
- d
- 코드로배우는스프링웹프로젝트
- iterator
- 처음 만나는 AI수학 with Python
- 티스토리 쿠키 삭제
- 처음 만나는 AI 수학 with Python
- 리눅스
- 서버설정
- 선형대수
- 구멍가게코딩단
- 자바편
- 자료구조와함께배우는알고리즘입문
- /etc/network/interfaces
- 알파회계
- 목록처리
- 스프링 시큐리티
- resttemplate
- Kernighan의 C언어 프로그래밍
- 이터레이터
- 스프링부트핵심가이드
- ㅒ
- 코드로배우는스프링부트웹프로젝트
- 네트워크 설정
- 친절한SQL튜닝
- 페이징
- GIT
- network configuration
- 자료구조와 함께 배우는 알고리즘 입문
- Today
- Total
목록Books (15)
bright jazz music
https://catnails.tistory.com/577 [프레임워크 없는 프론트엔드 개발] 1.1. 순수함수를 이용한 렌더링 구현https://github.com/hojuncha997/frameworkless-front-end-dev GitHub - hojuncha997/frameworkless-front-end-dev: 프레임워크 없는 프론트엔드 서적 학습 리포지토리프레임워크 없는 프론트엔드 서적 학습 리포지토리. Contributcatnails.tistory.com 이전 포스팅에서 다뤘던 view.js의 함수는 DOM 을 조작하는 함수가 하나뿐이었다. 이번에는 해당 함수를 기능별로 나누었다.프로젝트 디렉토리의 루트 경로에 view 디렉토리를 만들고 아래의 파일을 만들어 주었다. 1. /view 디..

https://github.com/hojuncha997/frameworkless-front-end-dev GitHub - hojuncha997/frameworkless-front-end-dev: 프레임워크 없는 프론트엔드 서적 학습 리포지토리프레임워크 없는 프론트엔드 서적 학습 리포지토리. Contribute to hojuncha997/frameworkless-front-end-dev development by creating an account on GitHub.github.com* css, 라이브러리 등의 파일들은 여기에 기록하지 않았다. 위 리포지토리에는 남아 있으므로 참고할 것* 브라우저에서 file://경로/index.html 로 접근하면 CORS 정책 오류 때문에 자바스크립트 파일을 가져오지 ..
JDK가 제공하는 제네릭 타입과 메서드를 사용하기는 쉽다. 그러나 제네릭 타입을 새로 만들기는 어렵다. 그러나 배워둘 가치가 있다. 아래의 스택 코드를 보자. import java.util.Arrays; import java.util.EmptyStackException; public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { //생성시 크기가 16인 Object타입의 배열 생성 => elements에 할당 elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public..
배열과 제네릭 타입의 차이 배열 배열은 공변(covariant, 함께 변함)한다. Sub가 Super의 하위타입이라면 배열 Sub[]는 배열 Super[]의 하위타입이 된다. 제네릭 제네릭은 공변하지 않는다. 서로 다른 타입 Type1과 Type2가 있을 때, List은 List의 하위 타입도 아니고 상위 타입도 아니다. 리스트를 사용해야 하는 이유 1 : 런타임이 아닌 컴파일 시에 오류를 검출하기 위해 배열을 사용했을 때 : 런타임이 되어서야 오류가 발생함. public class Test { public static void main(String[] args){ Object[] objectArray = new Long[1]; objectArray[0] = "타입이 달라 넣을 수 없다"; //런타임에 ..
제네릭을 사용하면서 컴파일러 경고를 마주하게 된다. 그 종류는 아래와 같다 비검사 형변환 경고 비검사 메서드 호출 경고 비검사 매개변수화 가변인수 타입 경고(참고 https://donghyeon.dev/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C%EC%9E%90%EB%B0%94/2021/04/18/%EC%A0%9C%EB%84%88%EB%A6%AD%EA%B3%BC-%EA%B0%80%EB%B3%80%EC%9D%B8%EC%88%98%EB%A5%BC-%ED%95%A8%EA%BB%98-%EC%93%B8-%EB%95%8C%EB%8A%94-%EC%8B%A0%EC%A4%91%ED%95%98%EC%9E%90/) 비검사 변환 경고 제거하기 쉬운 경고의 예 대부분의 비검사 경고는 쉽게 제거 가능하다. ..
제네릭을 사용하는 이유 제네릭을 사용하면 컬렉션이 담을 수 있는타입을 컴파일러에 알려주게 된다. 따라서 컴파일러는 알아서 형변환(캐스팅) 코드를 추가할 수 있게 된다. 이는 컬렉션에 엉뚱한 타입의 객체가 들어오는 것을 차단한다. 결과적으로 프로그램이 더욱 안전하고 명확해진다. 제네릭이 사용되기 이전의 문제들 자바에서 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때마다 형변환(캐스팅)을 해야 했다. (귀찮음) 그런데 누군가 컬렉션에 엉뚱한 타입의 객체를 담아 두었다면 런타임에 형변환 오류가 나곤 했다. (오류 발생) 제네릭은 java 5부터 지원하기 시작했다. 제네릭이란 클래스와 인터페이스 선언에 타입 매개변수(type parameter)가 쓰이면 이를 제네릭 클래스 또는 제네릭 인터페이스라고 한다. ..
아래 페이지를 참고하였다. http://www.tcpschool.com/java/java_generic_various 제네릭 메소드(Generic method) 제네릭 메소드란 메소드의 선언부에 타입 변수를 사용한 메소드를 의미. 이 때 타입변수의 선언은 메소드 선언부에서 반환 타입 바로 앞에 위치 public static void sort(...) { ... } 아래 예제에서 제네릭 클래스에서 정의된 타입변수 T와 제네릭 메소드에서 사용된 타입변수 T는 별개의 것임을 주의. class AnimalList { ... public static void sort(List list, Comparator
아래의 페이지를 참고하였다. http://www.tcpschool.com/java/java_generic_various 타입 변수의 제한 제네릭은 'T'와 같은 타입변수를 사용하여 타입을 제한한다. 이 때 extends 키워드를 사용하면 타입변수에 특정 타입만을 사용하도록 제한할 수 있다. 예시 class AnimalList { ... } 위와 같이 클래스의 타입변수를 제한하면 클래스 내부에서 사용되는 모든 타입변수에 제한이 걸린다. * 이렇게 타입변수를 제한하는 경우, 인터페이스를 구현할 때도 implements가 아닌 extends 키워드를 사용해야 한다. //인터페이스 interface WarmBlood { ... } class AnimalList { //implements를 사용해서는 안 된다. ..
아래의 페이지를 참고하였다. http://www.tcpschool.com/java/java_generic_concept Generic 자바에서의 제네릭은 데이터의 타입을 일반화 한다는 것을 의미(generalize) 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 컴파일 시에 미리 타입검사를 수행하면 아래와 같은 장점을 가진다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. JDK 1.5 이전에는 여러 타입을 사용하는 대부분의 클래스나 메소드에서, 파라미터나 반환 값으로 Object를 사용했다. 이 경우 반환된 Object 객체를 다시 원하는 타입으로 타입 ..
이곳의 예제를 참고하였다. https://cloudstudying.kr/challenges/429 package com.example.demospring.testFile; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestUpcasting { public static void main(String[] args) { // 다양한 객체 생성 Bird bird = new Bird(); Helicopter copter = new Helicopter(); Rocket rocket = new Rocket(); // 인터페이스 타입으로 그룹화 //1. 어레이 Flyable[] flyableThing..