일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조
- ResponseBody
- @RunWith
- jdbc연결안됨
- IT기본지식
- EC@
- 서블릿용어
- api문서만들기
- 서버기본
- RequestBody
- import안될때
- fcmwebpush
- 게시판댓글
- 롬복
- 크리스탈리포트이미지삽입
- 이미지누끼
- openaddressing
- 크리스탈레포트누끼
- 타임존설정
- 오라클오류
- 크리스탈레포트그림
- 크리스탈레포트이미지
- git
- 크리스탈리포트이미지
- 추상클래스
- Ajax
- JDBC
- 스토리지기본
- 타임존
- lombok
- Today
- Total
목록Stack/Java (10)
엠마의 개발공부일지
기존에 8버전을 쓰다가 11버전으로 변경해야 하는 프로젝트가 생겨서 기록해보는 "버전변경방법" 인텔리제이에서 6곳을 변경해주면 된다 (5곳 - 버전변경선택 / 1곳 - 원하는 JDK선택) Project Structure창 (단축키 : SHIFT+CTRL+ALT+S) * Project 1) SDK 변경 2) Language Level 변경 * Module 3) Language Level 변경 * SDKs 4) 원하는 JDK를 선택한다(JDK는 한 폴더에 모아두는것을 추천!) Project Setting (단축키 : CTRL+ALT+S) * Build,Execution,Deployment -> Build Tools -> Gradle 5) Gradle JVM 변경 * Build,Execution,Deploym..
배열(Array) 리스트(List) 정의 - 그룹관리 - 하나의 변수에 여러 정보를 담기위함 (반복문과 결합) - 빈틈없는 데이터의 적재 =시퀀스 : 순서가 있는 데이터의 모임 순서여부 O (메모리에 연속되어저장) X (메모리에 분산되어저장) 데이터 삽입/삭제 랜덤접근은 쉽지만 삽입삭제어려움 랜덤접근불가(데이터 삽입삭제쉽다) 인덱스여부 O X (인덱스없이 순차적 저장) 길이 초기에 미리 길이설정함 유동성있음(삽입삭제쉬우므로) 그렇다면 Arraylist의 특징은👀? Arraylist : List 인터페이스를 상속받은 클래스 중 하나로 배열과 리스트의 특징을 일부 갖고있다 Arraylist 특징 origin - 인덱스사용 : 0부터 시작 - 메모리에 연속되어 저장 배열(Array)의 특징 - 크기가 가변적(..
서비스/리포지토리/도메인을 작성하고, 스프링에서 DI를 이용하여 초기세팅을 할때 SOLID의 DIP(구현체가아닌 인터페이스에 의존)가 지켜지도록하기위해 생성자로 구현체를 넣어주었다. 이 코드만으로도 너무 깔끔하지만, 한단계 더 편하고 깔끔하게 코드를 정리할 수 있다. 생성자 주입하려는 클래스에 @RequiredArgsConstructor를 추가하면 윗부분에 Lombok라이브러리가 추가된다. 이 상태에서는 @RequiredArgsConstructor부분에 빨간줄이 그어지는데, 이는 밑에 @Autowired가 붙은 생성자가 있기때문이다(중복) @RequiredArgsConstructor는 final이 붙은 필드들의 생성자를 자동으로 만들어주는기능이다. 그래서 생성자와 충돌이되기때문에 빨간줄이 뜬다 아래와 같..
Java JUnit 테스트에서 assertThat구문은 어떤조건이 참인지 확인하는 구문이다 [사용예시] assertThat구문에서 많이 사용하는 메서드인 isEqualTo 와 isSameTo를 비교해보겠다. [isSameTo] 일반 Primitive type의 변수는 값을 저장한다 a에는 5라는 값이 저장된다 int a = 5; 반면 일반타입의 변수는 값의 주소를 저장한다. car에는 새로만든 Car객체의 주소값이 저장되어있다. Car car = new Car(); isSameTo는 주소값을 비교하는 메서드이다. String a = "apple"; String b = a; 이 경우 a에는 apple문자값의 주소가 저장되어있고, b에는 a의 주소값이 똑같이 저장된다. 이경우 아래와 같이 표현된다 asser..
*지네릭스란? : 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에, 컴파일 시의 타입체크를 해주는 기능 : 클래스 or 인터페이스에 어떤타입의 변수를 넣고싶은가? 를 먼저 생각해봐야한다. : 타입을 파라미터로 가지는 클래스 or 인터페이스, 컴파일시 구체적인 타입이 결정됨. public class 클래스명 {....} public class 인터페이스명 {....} *지네릭스의 필요성 장점 : 타입안정성 제공, 타입체크와 형변환 생략이 가능하므로 코드가 간결해진다 Car 클래스 Main클래스 - car클래스의 멤버변수 object는 타입이 Object형(최상위 클래스, 그래서 모든타입을 다 저장가능) - 그래서 main클래스에 String타입도 object타입도 모두 담을 수 있지만, 꺼낼때 형변환..
실제 현업에서의 개발자들은 서비스에 적용될 코드보다 테스트코드를 작성하고 테스트하는데 많은 시간을 쓴다고 한다. 정상동작하는 코드부터, 오류가 날 코드까지 미리 다 테스트를 해보는데 그 코드를 JUnit으로 돌려본다고하니 엄청 중요한것같다. 그래서 일반 JAVA코드랑 JUnit코드를 비교해 보려고한다. 1. 일반Java로 작성한 Test : 가입(join)한 정보와, 저장소에 저장된 정보를 가져와서 동일한지 확인해보는 test [결과] : 내가직접 println해서 어떤값이 들어왔는지 text를 확인해 봐야한다(test라고 하기엔 무리가있는 느낌이다) 코드가 간단하니 text확인이 간단하지만, 코드가 복잡해진다면 text를 일일이 확인하기엔 어렵다. 2. JUnit Test사용 : Test에서는 1)주어..
1. JAVA입출력 API * InputStream 사용법 InputStream (추상)클래스를 이용해서 객체만든다. 또는 다른 클래스의 메소드에서 반환되는 타입객체를 얻는다 read()메서드를 이용해서 데이터를 가져온다(1byte씩, 느리다, 더이상불러올게없으면 -1반환) read(), read(byte[]) 두개의 메서드를 이용할 수 있다.
인터페이스 : 모든 메서드가 추상메서드인경우(추상클래스보다 한단계 위의 추상) 적는 모든메서드는 추상으로 간주되기때문에 abstract를 붙여줄 필요없다. 인스턴스가 존재하지 않는 지점(그러므로 초기화 필요없음) 객체생성 불가 구현객체가 같은동작을 보장하기위한 기능 다중상속가능 📌추상클래스와 인터페이스의 차이점 : 이 둘은 용도에 따라서 골라사용한다. 추상클래스 : 조상클래스의 기능을 완벽히 똑같이 사용하고싶을때 인터페이스 : 조상클래스의 기능을 재정의하여 사용하고싶을때 추상클래스(미완성설계도) : 동일기능을 묶어 놓는 클래스로, 상속을 통해 자식객체에서 완성[단일상속] 인터페이스(기본설계도) : [다중상속] 인터페이스로만 상속하여 쓴다면, 모든기능을 재정의 해서써야하는 불편함이있다. 그렇기때문에 추상클..