일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- backjoon
- baekjoon
- python
- DB
- 프로그래머스
- JPA
- 플러터
- 백준
- 자바
- spring
- 파이썬
- 시큐리티
- 데이터
- 자바스크립트
- 네트워크
- 스프링
- 데이터베이스
- Flutter
- Java
- CS
- springboot
- postgresql
- javascript
- Spring Security
- 리눅스
- CS지식
- Oracle
- 자료구조
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 스프링부트
- Today
- Total
목록자바 (23)
Jin's Dev Story
직렬화 (Serializaion)직렬화는 객체를 저장 가능한 상태 혹은 전송 가능한 상태(네트워크 상의 데이터 스트림 형태)로 변환하는 것객체를 저장, 전송할 수 있는 특정 포맷 상태로 바꾸는 과정역직렬화 (Deserialization)특정 포맷 상태의 데이터를 다시 객체로 변환하는 것데이터 직렬화 포맷CSV, XML, JSON 형태의 직렬화사람이 읽을 수 있음저장 공간의 효율성이 상대적으로 떨어지고, 파싱 하는 시간이 오래 걸림주로 데이터의 양이 적을 때 사용Binary 직렬화사람이 읽을 수 없음저장 공간의 효율성이 상대적으로 높고, 파싱 하는 시간이 빠름주로 데이터의 양이 많을 때 사용모든 시스템에서 사용 가능java 직렬화java 시스템 간의 데이터 교환이 필요할 때 사용Serializable 인터..
제네릭(generic) 데이터의 타입을 일반화한다는 것을 의미 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 제네릭 장점 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있음 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있음 제네릭의 선언 및 생성 class MyArray { T element; void setElement(T element) { this.element = element; } T getElement() { return element; } } public void test(){ List example = new ArrayList(); method1(example); // 제네릭 타입이 일치하지 않기 때문에 컴파일 에러 발..
공통점 new 연산으로 클래스를 한 번만 만듦 문자열 연산 시 새로 객체를 만들지 않고 크기를 변경함 메서드가 동일 가변성을 가짐 코드 String str = "strA"; StringBuilder sbd = new StringBuilder(); StringBuffer sbf = new StringBuffer(); sbd.append("sbdA"); sbf.append("sbfA"); System.out.println("String 객체의 주소 : "+str.hashCode()); System.out.println("StringBuilder 객체의 주소 : "+sbd.hashCode()); System.out.println("StringBuffer 객체의 주소 : "+sbf.hashCode()); str..
정적(static) 한 번 정해놓으면 변하지 않고 계속 유지되는 성질 정적할당 대체로 Stack 영역에 메모리를 할당 정적언어 변수의 Type을 컴파일 시에 결정하는 것 Java, Kotlin, C 등의 언어 변수에 넣을 데이터에 따라 자료형을 지정해주어야 함 장점 실행 시점에 어떤 메서드를 호출할지 알아내는 과정 필요 없이 메서드 호출이 빠름 컴파일러가 프로그램 정확성을 검증하기 때문에 실행 프로그램이 오류로 중단될 가능성이 적음 유지보수 쉬움 단점 Type 설정을 해줘야 함 동적(dynamic) 실시간으로 상황에 따라 변경이 가능한 것 ArrayList나 객체 즉, 동적 메모리 Heap에 생성되는 것들 동적할당 Heap 영역에 메모리를 할당 동적언어 변수의 Type을 컴파일 실행 시에 결정 JavaS..
디자인 패턴 자주 사용하는 설계 형태를 정형화해서 이를 유형별로 설계 템플릿을 만들어둔 것 객체지향 언어를 이용해 프로그래밍 할 때 디자인 패턴을 사용한다면 보다 효율적이고 재사용성이 높은 설계 가능 유지보수 용이 디자인 패턴의 종류 GoF(Gang of Four)가 정의하는 디자인 패턴 → 총 23가지 생성 패턴(Creational Pattern) 객체를 생성하는 것과 관련된 패턴으로 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화 하도록 만들어 줌 유연성 높일 수 있고 코드를 유지하기 쉬운 편 종류 Factory Method : 생성할 객체의 클래스를 국한하지 않고 객체 생성 Singleton : 한 클래스에 한 객체만 존재하도록 제한함 Prototype : 기존 객체를 복제함으로써 객체를 ..
절차 지향 프로그래밍 일련의 절차 또는 기능으로 코드를 구성하는데 중점을 둔 프로그래밍 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식 C, Visual Basic, Fortran, Pascal 등 특징 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 접근 방식으로 설계됨 데이터와 함수를 별개로 취급함 모든 함수는 데이터 공유가 가능 정해진 순서대로 입력해야 하므로 순서가 바뀌면 결과를 도출하기 어려움 프로그램이 커질수록 구조가 복잡해져 유지보수가 어려움(소형 프로젝트에 적합)