얕은 복사(Shallow Copy)란? public class Human { String name; int age; public Human(){ } public Human(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 위와 같은 Human 클래스가 있다고 하자. 이 클래스를 다음과 같이 복사한 뒤 멤버 값을 변경해 보자. p..
스위치란? 네트워크에서 스위치란 소규모 비즈니스 네트워크 안에서 컴퓨터, 프린터 등 모든 디바이스를 서로 연결해주어 자원을 쉽게 공유할 수 있도록 하는 장치이다. 스위치는 L2(데이터 링크 계층)에 속하는 장치이다. 즉, MAC 주소를 기반으로 디바이스 위치를 파악하고 통신한다. 스위치는 브로드캐스트 도메인을 구분할 수 없다. 스위치는 ARP 등을 통해 불명확한 목적지를 가진 데이터를 처리할 때 모든 포트로 데이터를 퍼뜨리는 브로드캐스트를 한다. 참고) [네트워크] MAC주소와 ARP(Address Resolution Protocol)란? | MAC 주소의 필요성 MAC 주소란? IP 주소는 네트워크 계층(Network Layer)에서 사용되는 주소다. 반면 MAC 주소는 데이터 링크 계층(Data Li..
@Entity @Entity 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티이다 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션이 필수다 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X name 속성을 사용하면 JPA에서 사용할 엔티티 이름을 지정할 수 있다. 기본값은 클래스 이름을 그대로 사용한다 예시: @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; Member(){}// 생략하면 ..
영속성 컨텍스트란? 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻이다. 영속성 컨텍스트는 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다. 엔티티 매니저(EntityManager)를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다. 엔티티 생명주기 비영속(new/transient) 상태 : 영속성 컨텍스트와 관계가 없는 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속(managed) 상태 : 영속성 컨텍스트에 저장된 상태 //객체를 생성한 상태(비영속) Member member = n..
직렬화(Serializaion)란? 역직렬화(Deserialization)란? 직렬화는 객체를 저장 가능한 상태(예를 들어 디스크에 파일 형태 등) 혹은 전송 가능한 상태(네트워크 상의 데이터 스트림 형태)로 변환하는 것을 뜻한다 - 위키백과 - 쉽게 말해 직렬화는 객체를 저장, 전송할 수 있는 특정 포맷 상태로 바꾸는 과정이라고 할 수 있다. 역직렬화는 말 그대로 직렬화의 반대이다. 즉, 특정 포맷 상태의 데이터를 다시 객체로 변환하는 것을 뜻한다. 데이터 직렬화 포맷 CSV, XML, JSON 형태의 직렬화 사람이 읽을 수 있다 저장 공간의 효율성이 상대적으로 떨어지고, 파싱 하는 시간이 오래 걸린다 주로 데이터의 양이 적을 때 사용한다 Binary 직렬화 사람이 읽을 수 없다 저장 공간의 효율성이 ..
JPA(Java Persistent API)란? JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻한다. ORM 기술이란? ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술이다. 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고, ORM 프레임워크가 중간에서 매핑을 해준다. 더 자세한 내용은 다음을 참고) SQL Mapper 와 ORM 기술의 차이 Persistence Framework란? SQL Mapper와 ORM 기술에 대해 알아보기 전에 Persistence Framework에 대해 알아보자. 영속성(Persistence)은 프로그램이 종료되어도 데이터가 사라지지 않는 특성을 뜻한다. [그림 1]에서..
추상클래스(Abstract Class)란? 추상 클래스(Abstract Class)는 추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 이러한 특성 탓에 미완성 설계도라고 표현하기도 한다. 추상클래스는 상속을 위한 클래스이기 때문에 따로 인스턴스를 생성할 수 없다. abstract class 클래스{ ... public abstract void 메서드(); } class 앞에 "abstract" 예약어를 붙여 해당 클래스가 추상 클래스임을 나타낸다. 또한 메서드도 abstract 예약어를 붙여 추상 메서드를 선언할 수 있다. 추상 클래스는 추상 메서드를 가지지 않아도 괜찮다. 다만, 추상 메서드를 하나라도 가진다면 그 클래스는 추상 클래스가 된다. 추상 메서..
CES 2023 행사 개요 CES는 독일 IFA, 스페인 MWC와 함께 세계 3대 IT 전시회이다. CES 2023은 코로나 이전 대비 70-80% 수준 규모를 회복하며 팬데믹 발생 이후 최대 규모로 진행되었다. CES 2023 행사의 간략한 개요는 다음과 같다. 일시 : 2023년 1월 5일~8일 장소 : 미국 라스베이거스 컨벤션 센터 참가국 : 174개국 (미국 이외 국가의 등록객 비중 35%) 참가 기업 : 약 3200 기업, Fortune Global 500대 기업 중 323개 기업 참여, Interbrand 100대 기업 중 85개 기업 참여 참관객 수 : 약 12만명 주요 테마 : 웹 3.0/메타버스, 모빌리티, 디지털 헬스, 지속가능성, 인간안보 주요 테마 요약 1. 웹 3.0과 메타버스 웹..
꾸준한 성장 내가 기술 블로그를 처음 시작한 것은 2021년 7월부터다. 처음엔 하루 10명도 안 되는 방문자에 기뻐하곤 했는데 어느새 하루 평균 천 명이 넘는 방문자가 방문해주기 시작했다. 2022년에는 내 블로그에 317,901명이 방문해주었다. 꾸준히 방문자가 늘었으며 기타 유입도 크게 증가하였다. 기타 유입은 주로 현재 글에서 연관 있는 글들을 링크로 달아놓은 것들에서 발생했다. 블로그의 콘텐츠가 늘어감에 따라 방문자수도 유의미하게 증가한 해였다. 블로그 광고 수익 사실 구글에 "티스토리 일일 방문자 1000명 수익"을 검색해봐도 블로그마다 결과는 천차만별이다. 이는 CPC, CTR등이 다르기 때문이다. CPC는 Cost Per Click의 줄임말로, 광고 클릭에 대해 광고주가 지불하는 평균 금액..
프레임워크(Framework)란? 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 개본 개념 구조이다. -위키백과- 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. 예를 들어 Java 개발에서 사용되는 Spring 프레임워크나 Python 개발에 사용되는 Django, 안드로이드 앱개발에 사용되는 Androi..