4. String, StringBuffer, StringBuilder 차이 및 장단점
2023. 4. 6. 19:00
개념정리
Java 에서 문자열을 다루는 클래스 1. String vs StringBuffer/ StringBuilder String과 StringBuffer/ StringBuilder 클래스의 가장 큰 차이점은 String은 불변 (immutable)의 속성을 갖는다는 점 String str = "hello"; str = str + "world"; // [hello world] >> hello 에 world 문자열을 더해 "hello world"로 변경된게 아님 "hello"값이 들어가 있던 String 클래스의 참조변수 str이 "hello world"라는 값을 가지고 있는 새로운 메모리영역을 가리키게 변경되고, 처음에 선언했던 "helllo"로 값이 할당되어 있던 메모리 영역은 Garbage로 남아있다가 GC..
자바 스트림(Stream)
2023. 4. 6. 16:26
JAVA
스트림은 데이터 소스를 추상화 하고, 데이터를 다루는데 자주 사용되는 메소드들을 정의해 놓았다. 컬렉션에 저장되어있는 엘리먼트들을 하나씩 순회하면서 처리할 수 있는 코드 패턴. 람다식과 함께 사용되어 컬렉션에 들어있는 데이터에 대한 처리를 매우 간결한 표현으로 작성할 수 있음 스트림 생성 - 배열 스트림 String[] arr = new String[]{"a", "b", "c"}; Stream stream = Arrays.stream(arr); Stream streamOfArrayPart = Arrays.stream(arr, 1, 3); // 1~2 요소 [b, c] - 컬렉션 스트림 : 인터페이스에 추가된 디폴트 메소드 stream 을 이용해서 스트림을 만들 수 있습니다. public interface..
3. 자바 컴파일 과정
2023. 4. 5. 19:53
개념정리
자바는 OS에 독립적인 특징이 있음. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분인데요,,?! 그렇다면 JVM의 어떤 기능때문에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보자 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성 2. 자바 컴파일러가 자바소스파일을 컴파일함 . 이때 나오는 파일은 자바 바이트코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상머신이 이해할 수 있는 코드. 바이트 코드의 각 명령어는 1바이크 크기의 Opcode와 추가 피연산자로 이루어져있음. 3. 컴파일된 바이트 코드를 JVM의 클래스 로더에게 전달 4.클래스 로더는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역, 즉 JVM의 메모리..
2. 싱글톤패턴 (Singleton pattern)
2023. 4. 5. 19:40
개념정리
싱글톤 패턴이란? 애플리케이션이 시작될 때, 어떤 클래스가 최초 한번만 메모리를 할당하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴 즉, 싱글톤 패턴은 '하나' 의 인스턴스만 생성하여 사용하는 디자인 패턴 ( 인스턴스가 필요할때, 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 활용하는것) 생성자가 여러번 호출되어도, 실제로 생성되는 객체는 하나이며 최초로 생성된 이후에 호출된 생성자는 이미 생성한 객체를 반환시키도록 만드는 것 ( java에서는 생성자를 private으로 선언해 다른곳에서 생성하지 못하도록 만들고, getInstance()메소드를 통해 받아서 사용하도록함) 왜쓰나요??? 먼저, 객체를 생성할때마다 메모리 영역을 할당받아야함, 하지만 한번의 new를 통해 객체를 생성한다면 메모리 낭비..
개념 정리
2023. 4. 5. 17:03
개념정리
✔ 직렬화 ( Serialization ) 객체의 상태 혹은 데이터 구조를 기록할 수 있는 포맷으로 변환해줌 나중에 재구성 할 수 있게 자바의 객체를 JSON 으로 변환해주거나 , JSON을 자바객체로 변환해주는 라이브러리 ✔ Hash란 ? 데이터 삽입 및 삭제시, 기존 데이터를 밀어내거나 채우지 않고 데이터와 연관된 고유한 숫자를 생성해 인덱스로 사용하는 방법, 검색속도가 매우 빠름 ✔ 배열과 연결리스트의 차이? 배열은 인덱스를 가지고, 원하는 데이터를 한번에 접근하기 때문에 접근속도가 빠름 but 크기 변경이 불가능하며, 데이터 삽입 및 삭제시 그위치의 다음 위치부터 모든 데이터 위치를 변경해야함 연결리스트는 인덱스 대신 현재 위치의 이전/ 다음위치를 기억함 크기는 가변적, 인덱스 접근이 아니기 때문..
1. OOP 객체지향 프로그래밍
2023. 4. 5. 15:48
개념정리
순차적, 비구조적 프로그래밍 : goto문을 활용하여 이전에 작성했던 코드가 필요하면 그곳으로이동. -> 규모가 커질 수록 불편 절차적, 구조적 프로그래밍 : 반복될 가능성이 있들을 재사용이 가능한 함수(프로시저)로 만들어 사용 -> 추상적 객체지향 프로그래밍 : 특정한 개념의 함수와 자료형을 함께 묶어서 관리하기 위해 탄생 객체 내부에 자료형(필드)와 함수(메소드)가 함께 존재, 가능한 모든 물리적, 논리적요소를 객체로 만는 것 - 객체지향으로 구현하게되면 , 객체간의 독립성이 생기고 중복코드의 양이 줄어듦 - 독립성이 확립되어 유지보수에 도움 객체지향 프로그래밍 특징 1.추상화 (Abstraction) 필요로하는 속성이나 행동을 추출하는 작업 추상적인 개념에 의존하여 설계해야 유연함을 갖출 수 있음...
03.spring HandlerInterceptor
2023. 2. 24. 14:14
Framework/Spring
* Interceptor 해당 Controller가 실행되기전, 실행된 후에 낚아 채서 실행할 내용 작성가능 ex) 해당 요청을 할 수 있는 회원이 맞는지 " 로그인 여부 판단 " 해당 요청을 할 수 있는 권한의 회원이 맞는지 "권한체크" - preHandle(전처리) : DispatcherServlet이 Controller를 호출하기 전에 낚아 채는 영역 - postHandel(후처리): Controller에서 요청 처리 후 DispatcherServlet으로 뷰 정보가 리턴되는 순간 낚아채는 영역 >> 로그인전에는 마이페이지/글쓰기 하지 못하도록 설정 1. HandlerInterceptor implements하는 클래스 만들기 public class LoginInterceptor implements ..
02. Maven , Spring Framework
2023. 2. 20. 21:26
Framework/Spring
Maven 이란? 자바용 프로젝트 관리 도구로 , project object model(POM) XML 문서를 통해 해당 프로젝트의 버전정보 및 라이브러리 정보들을 통합하여 관리하는 프레임워크 라이브러리 종속성 : 일반적으로 프로젝트는 개발자가 필요한 라이브러리를 직접 찾아 추가해야하지만, Maven을 사용하면 pom.xml문서에 사용하고자하는 라이브러리를 등록하여 자동으로 프로젝트에 추가되게하여 라이브러리 관리의 편리성을 제공 POM 이란? POM(Project Object Model)은 하나의 프로젝트에서 사용하는 자바 버전 , 라이브러리 , 플러그인 구성을 통합하여 관리할 수 있게 각 설정 정보를 XML 로 문서화 한 것을 말한다 Spring Framework란 ? 자바플랫폼을 위한 오픈소스 애플리..
01. Spring 개발환경 구축
2023. 2. 20. 21:19
Framework/Spring
1. 개발환경 구축 프레임 워크 사용시 폴더 경로에 한글이 있을 경우 문제가 될 수 있으니 폴더명에 한글이 포함되지 않도록 함 1)Maven 설치 -> https://maven.apache.org/로 접속하여 다운로드 * Maven : 자바용 프로젝트 관리도구 ,Project Object Model(POM) XML 문서 를 통해 해당 프로젝트의 버전 정보 및 라이브러리 정보들을 통합하여 관리하는 프레임 워크이다 일반적으로 프로젝트는 개발자가 필요한 라이브러리를 직접 찾아서 다운로 드 및 추가해야 하지만 Maven 을 사용하면 pom.xml 문서에 내가 사용하고자 하는 라 이브러리를 등록하여 자동으로 프로젝트에 추가되게 하여 라이브러리 관리 및 버전 관리 의 편리성을 제공해준다 - 라이브러리들이 다운되어 ..
04. mybatis 페이징 처리
2023. 2. 15. 21:52
Framework/Mybatis
1. PageInfo vo클래스 생성 public class PageInfo { private int listCount; //게시글 갯수 private int currentPage; // 사용자가 요청한 페이지 private int pageLimit; //페이징바의 페이지목록 최대 갯수 private int boardLimit; //페이지에 보여질 게시글 최대 갯수 private int maxPage; //가장 마지막 페이지수 (listCount, boardLimit가지고 구함) private int startPage; // 해당 페이지 하단에 페이징바의 시작 수 (pageLimit, currentPage가지고 구함) private int endPage; //해당 페이지 하단에 페이징바의 끝수(start..