Java

· JVM
안녕하세요. 요즘 JVM Garbage Collector 에 대해 공부를 하면서 GC 알고리즘에 대해 알게되었는데요. 그러다 문득 JVM 버전마다 기본 GC 알고리즘이 무엇인지 궁금해졌어요. 그래서 구글링을 열심히 해보았는데 오라클 공식사이트에는 제대로 된 내용이 잘 안보이더라구요. 스택오버플로에서 정리해준 내용이 있긴 하지만 직접 눈으로 봐야 속이 시원하기 때문에 제 노트북 콘솔에서 확인해보려해요.  1. Hotspot JVM 설치 우선 오라클 홈페이지에서 Jdk 를 버전별로 다운받았어요.  그리고나서 각 Jdk 를 설치해주었어요. 설치를 완료하고나니 C:\Program Files\Java 경로에 아래처럼 폴더가 생겼어요.  jdk 폴더를 기준으로 JVM GC 알고리즘을 확인해볼게요.  2. Hotsp..
· Java
개발하면서 한글 문자를 초성, 중성, 종성으로 분리해야할 필요가 생겼는데요. 구글링하면서 알게된 내용을 정리해보려해요. 우선 한글은 유니코드라는 글로벌하게 약속된 체계에 의해 고유한 식별값이 부여되어 있는데요. '가' 라는 글자는 44032 이고, '힣' 이라는 글자는 55203 으로 할당되어 있어요. 그런데 이 식별값이 그냥 부여된 게 아니라는 것이 중요한 포인트입니다. 바로 완전한글 결합공식 에 의해 생성된 식별값이였던거죠!!!  (초성 인덱스 * 21 + 중성 인덱스) * 28 + 종성 인덱스 + 0xAC00  0xAC00(44032) 은 유니코드 체계에서 한글이 시작되는 지점으로 '가' 를 나타내요. 위 공식에 쓰이는 초성, 중성, 종성 배열은 아래와 같아요. 초성 배열(19개)"ㄱ", "ㄲ", ..
· Java
1. 트리 구조 데이터 조회시 문제점화면 개발을 하면서 장비 목록을 트리 구조로 보여줘야하는 부분이 있었다. 리프노드인 장비 아이템이 모두 존재하는 경우에는 문제가 되지 않았지만 검색 결과로 한 카테고리에 장비 아이템이 없는 경우에 문제가 발생했다.장비 아이템이 없는데 '가스설비 - 측정설비 - 계량기' 카테고리 메뉴가 노출되는 것이었다. 이것은 문제였다. 사용자에게 보여주어야하는 화면은 아래와 같았기 때문이다.그래서 이 부분을 SQL과 Java Stream을 사용하여 문제를 해결해보려고 한다. 2. SQL로 메뉴 데이터 조회데이터베이스는 MariaDB 10.4.27 버전을 사용했다. 먼저 테스트에 사용할 테이블을 만들어준다.-- 최상위 구분 Part 테이블CREATE TABLE `part` ( `no..
· Spring/JPA
1. 엔티티 매니저 팩토리와 엔티티 매니저EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");엔티티 매니저 팩토리는 생성 비용이 많이 비싸다. 그래서 엔티티 매니저 팩토리는 한 개만 만들어서 애플리케이션 전체에서 공유하도록 설계되어 있다. 이러한 점 덕분에 여러 스레드가 동시에 접근해도 안전한다. 보통 데이터베이스를 하나만 사용하는 애플리케이션은 EntityManagerFactory를 하나만 생성한다.  EntityManager em = emf.createEntityManager();반면 엔티티 매니저는 만드는데 비용이 거의 안 든다. 그래서 엔티티 매니저는 필요할 때마다 생성하여 사용한다. 엔티티 매니저는 여러 스레드..
· Spring/JPA
1. JPA 란 무엇인가 JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준입니다. 그리고 ORM(Object Relational Mapping)은 객체와 관계형 데이터베이스를 매핑해주는 기술입니다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해줍니다. 자바 진영에는 다양한 ORM 프레임워크들이 있는데 그중에 하이버네이트 프레임워크가 가장 많이 사용됩니다. 하이버네이트 외에도 EclipseLink, DataNucleus 등의 ORM 프레임워크들이 있습니다. JPA는 자바 ORM 기술에 대한 API 표준 명세이고, 하이버네이트는 이를 구현한 JPA의 구현체이다.  2. 엔티티 매니저 사용JPA에서 알아두어야 할 중요한 클래스로는 Pers..
· Java
Java8 의 Stream 에 대해 알고는 있지만 제대로 써 본적이 없었는데 망나니 개발자님 블로그를 보다가 Stream API 연습문제 풀이 글이 있어서 문제들을 풀어보았다. 1번 문제 모음 [데이터]이름, 취미, 소개김프로, 축구:농구:야구, 구기종목 좋아요정프로, 개발:당구:축구, 개발하는데 뛰긴 싫어앙몬드, 피아노, 죠르디가 좋아요 좋아좋아너무좋아죠르디, 스포츠댄스:개발, 개발하는 죠르디 좋아박프로, 골프:야구, 운동이 좋아요정프로, 개발:축구:농구, 개발도 좋고 운동도 좋아 [문제 1]위와 같은 데이터를 조회하여 각 취미를 선호하는 인원이 몇 명인지 계산하여라.users.stream() .flatMap(user -> user.getHobbies().stream()) ..
나말지
'Java' 태그의 글 목록