인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Language/Java

☕ 자바 직렬화(Serializable) - 완벽 마스터하기

자바의 직렬화 & 역직렬화 직렬화(serialize)란 자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용 할수 있도록 바이트 스트림(stream of bytes) 형태로 연속전인(serial) 데이터로 변환하는 포맷 변환 기술을 일컫는다. 그 반대 개념인 역직렬화는(Deserialize)는 바이트로 변환된 데이터를 원래대로 자바 시스템의 Object 또는 Data로 변환하는 기술이다. 이를 시스템적으로 살펴보면, JVM의 힙(heap) 혹은 스택(stack) 메모리에 상주하고 있는 객체 데이터를 직렬화를 통해 바이트 형태로 변환하여 데이터베이스나 파일과 같은 외부 저장소에 저장해두고, 다른 컴퓨터에서 이 파일을 가져와 역질렬화를 통해 자바 객체로 변환해서 JVM 메..

category_image
인파_
2023.02.13
(0)
IDE/IntelliJ

💽 IntelliJ - SerialVersionUID 자동 생성 설정

SerialVersionUID 자동 생성하기 인텔리제이 설정창을 띄운후 검색창에 serializable 입력 후 검색 결과가 나타나면, 다음 그림과 같이목록 하단 부분에 JVM languages > Serializable class without 'serialVersionUID' 체크 활성화를 하고 적용한다. 그러면 Serializable 을 구현한 클래스명에 마우스 커서를 올려놓으면 SerialVersionUID 자동 생성 버튼이 나오게 된다. 이를 클릭하면 자동으로 랜덤 해시값의 식별 번호가 해당 클래스에 자동으로 추가되게 된다.

category_image
인파_
2023.02.12
(0)
Language/JavaScript (WEB)

🌐 한눈에 이해하는 이벤트 흐름 제어 (버블링 & 캡처링)

HTML 이벤트의 흐름 HTML 문서의 각 엘리먼트들은 아래와 같이 태그 안의 태그가 위치하는 식으로 계층적으로 이루어짐을 볼 수 있다. 이러한 계층적 구조 특징 때문에 만일 HTML 요소에 이벤트가 발생할 경우 연쇄적 이벤트 흐름이 일어나게 된다. 예를들어 아래 3개가 중첩된 박스 영역에서 가장 자신 엘리먼트인 p 박스를 클릭하면 onclick 이벤트 스크립트가 p 뿐만 아니라 그의 부모인 div와 form 엘리먼트도 발생함을 볼 수 있다. FORM DIV P See the Pen event bubbleing 1 by barzz12 (@inpaSkyrim) on CodePen. 이러한 현상을 이벤트 전파(Event Propagation)라 부르며, 전파 방향에 따라 버블링과 캡처링으로 구분한다. 버블링..

category_image
인파_
2023.02.10
(0)
자료구조

🛠️ Singly LinkedList 실전 구현 강의 (JAVA)

Singly LinkedList 자료구조 Singly Linkedlist(단일 연결 리스트) 특징으론 다음과 같이 요약이 가능하다. 노드(객체)를 연결하여 리스트 처럼 만든 컬렉션 (배열이 아님) 데이터의 중간 삽입, 삭제가 빈번할 경우 빠른 성능을 보장한다. 하지만 임의의 요소에 대한 접근 성능은 좋지 않다. 특히 Singly Linked List는 단방향 연결 리스트이기 때문에 만일 리스트의 끝 요소를 탐색하려면, 처음(head)부터 끝까지 순회하며 탐색해야 하기 때문에 굉장히 효율이 떨어진다. (이를 개선한 것이 Doubly Linked List) 이밖에 데이터의 저장순서가 유지되고 중복을 허용한다. [JCF] 🧱 LinkedList 구조 & 사용법 - 정복하기 LinkedList 컬렉션 자바의 L..

category_image
인파_
2023.02.09
(0)
자료구조

🧱 ArrayList vs LinkedList 특징 & 성능 비교

LinkedList vs ArrayList 특징 비교 LinkedList가 각기 노드를 두고 주소 포인터를 링크하는 식으로 자료를 구성한 이유는 ArrayList가 배열을 이용하여 요소를 저장함으로써 발생하는 단점을 극복하기 위해 고안되었기 때문이다. ArrayList LinkedList 컬렉션 구성 배열을 이용 노드를 연결 (linked) 데이터 접근 시간 모든 데이터 상수 시간 접근 위치에 따라 이동시간 발생 삽입 / 삭제 시간 삽입/삭제 자체는 상수 시간 삽입/삭제 시 데이터 이동이 필요한 경우 추가시간 발생 삽입/삭제 위치에 따라 그 위치까지 이동하는 시간 발생 리사이징 필요 공간이 부족할경우 새로운 배열에 복사하는 추가 시간 발생 - 데이터 검색 최악의 경우 리스트에 있는 아이템 수 만큼 확인 ..

category_image
인파_
2023.02.08
(0)
자료구조

🧱 자바 LinkedList 구조 & 사용법 - 정복하기

LinkedList 컬렉션 자바의 Linked List는 ArrayList와 같이 인덱스로 접근하여 조회 / 삽입이 가능하지만 내부 구조는 완전히 다르게 구성되어 있다는 점이 특징이다. ArrayList는 내부적으로 배열을 이용하여 메서드로 이리저리 조작이 가능하게 만든 컬렉션이라면, Linked List는 노드(객체) 끼리의 주소 포인터를 서로 가리키며 링크(참조)함으로써 이어지는 구조이다. 위 그림을 보면 LinkedList는 각기 노드마다 화살표로 연결되어 리스트 형태로 나열되어 있는 것을 볼 수 있다. 여기서 노드는 하나의 객체라고 보면된다. 즉, 객체를 만들면 객체의 주소가 생기게 되는데, 노드마다 각기 객체의 주소를 서로 참조함으로서 연결 형태를 구성하는 것이다. 단일 노드를 그림과 코드로 표..

category_image
인파_
2023.02.07
(0)
자료구조

🛠️ ArrayList 자료구조 실전 구현 강의 (JAVA)

ArrayList 자료구조 ArrayList 특징으론 다음과 같이 요약이 가능하다. 연속적인 데이터의 리스트 (데이터는 연속적으로 적재 되있어야 하며 중간에 빈공간이 있으면 안된다) ArrayList 클래스는 내부적으로 Object[] 배열을 이용하여 요소를 저장 배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 크기가 고정되어있는 배열과 달리 데이터 적재량에 따라 가변적으로 공간을 늘리거나 줄인다. 그러나 배열 공간이 꽉 찰때 마다 배열을 copy하는 방식으로 늘리므로 이 과정에서 지연이 발생하게 된다. 데이터를 리스트 중간에 삽입/삭제 할 경우, 중간에 빈 공간이 생기지 않도록 요소들의 위치를 앞뒤로 자동으로 이동시키기 때문에 삽입/삭제 동작은 느리다. 따라서 조회를 많이 하는 ..

category_image
인파_
2023.02.06
(0)
IDE/IntelliJ

💽 IntelliJ - 자바 JDK 버전 변경 방법

인텔리제이 자바 버전 변경하기 내 컴퓨터에서 추가로 사용할 또다른 자바 JDK 버전을 설치하였다면, 인텔리제이에서도 별도로 자바 버전을 변경 해 주어야 한다. 왜냐하면 초기 설치된 자바 버전으로 자동으로 이미 등록되어 있기 때문이다. 이 포스팅은 자바 1.8 버전을 자바 9 버전으로 업그레이드하는 방법을 보여주며, 그 상위 버전도 똑같이 적용할 수 있다. Project Structure 설정 1. File → Project Structure (Ctrl + Alt + Shift + S)를 들어가서 Project 탭에서 SDK를 원하는 버전으로 바꿔준다. ※ 참고로 인텔리제이 자체에서 JDK를 간편하게 자동으로 다운받을 수 있으니 참고하자. 2. 그 다음 Modules 탭에서 Sources 탭을 누른 뒤 L..

category_image
인파_
2023.02.05
(0)
자료구조

🧱 Arrays.asList() 와 List.of() 차이 한방 정리

자바에서 리스트를 만드는 방법 자바에서 리스트를 만드는 방식은 대표적으로 3가지 정도 존재한다. 하나는 생성자로 직접 리스트 객체를 인스턴화 시키는 것이고, 좀 더 간편하게 원소가 들은 리스트를 한방에 생성하기 위해 별도로 Arrays.asList() 와 List.of() 메서드를 지원한다. public static void main(String[] args) { // 생성자 방식 List arrayList = new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3); // Arrays 클래스의 asList 메서드 List asList = Arrays.asList(1, 2, 3); // List 인터페이스의 of 메서드 (jdk 9) L..

category_image
인파_
2023.02.03
(0)
자료구조

🧱 ArrayList vs Vector 동기화 & 성능 차이 비교

멀티 쓰레드 환경에서의 ArrayList 와 Vector ArrayList와 Vector 클래스 모두 배열(Array)를 기반으로 한 컬렉션이다. 실제 두 메서드 구성 및 사용법을 보면 거의 비슷하며 기능상 동일하다. 하지만 한 가지 다른 점이 있는데 바로 메서드에 synchronized(동기화) 키워드 유무이다. 그리고 이 synchronized 키워드는 자바에서 매우 중요한 개념이다. 자바는 기본적으로 멀티 쓰레드 환경을 고려한 프로그래밍 언어이다. 그래서 자바스크립트와 같은 왠만한 인터프리터 언어 보단 성능이 좋다. 그러나 각 쓰레드마다 어느 데이터에 동시에 접근하여 삽입과 삭제와 같은 수정을 행할경우 개발자 의도와는 다르게 오동작의 문제점이 발생하게 된다. 이를 경쟁 상태(Race Conditio..

category_image
인파_
2023.02.02
(0)
자료구조

🧱 자바 Vector 구조 & 사용법 정리

Vector 컬렉션 Vector은 ArrayList와 같이 List 인터페이스를 상속받는 컬렉션 프레임워크이며, 사용법은 ArrayList와 크게 다르지 않다. 컬렉션 프레임워크가 나오기전에 가변 개수의 배열이 필요할 때 과거에 사용되었으며, 현대에는 성능 상 사용하지않고 ArrayList를 사용한다. 다만 호환성을 위해서 제거하지않고 남겨두었다고 보면 된다. 오래된 클래스를 굳이 배울 필요가 있나 싶겠지만, 멀티 쓰레드 환경에서의 Vector 컬렉션의 동기화에 대해 짚고 넘어갈 필요가 있기 때문이다. Vector 사용법 Vecotor 컬렉션의 메서드 구성은 ArrayList와 거의 같다고 보면 된다. 메 서 드 설 명 boolean add(E element) 벡터의 맨 뒤에 element 추가 void..

category_image
인파_
2023.02.01
(0)
자료구조

🧱 자바 ArrayList 구조 & 사용법 정리

ArrayList 컬렉션 자바의 컬렉션 프레임워크를 접한다면 가장 먼저 배우는 컬렉션이 ArrayList 일 것이다. 자료구조(Data Structure) 이라고 해서 무언가 방대하게 느껴져 접근이 어려울 것 처럼 느끼겠지만, ArrayList는 배열의 상위호환 버전 정도로 이해하면 된다. 기존의 배열만으로는 자료를 담고 관리하는데 약간 불편함이 있어서 나온 것이 ArrayList 이기 때문이다. ArrayList 특징 연속적인 데이터의 리스트 (데이터는 연속적으로 리스트에 들어있어야 하며 중간에 빈공간이 있으면 안된다) ArrayList 클래스는 내부적으로 Object[] 배열을 이용하여 요소를 저장 배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 크기가 고정되어있는 배열과 달리..

category_image
인파_
2023.01.31
(0)