개발일지/자바74 Virtual Thread, 기존 스레드 모델 차이점 Java의 JDK 21에 새롭게 도입된 Virtual Thread는 기존의 커널 스레드(Kernel-Level Thread, KLT)와 사용자 스레드(User-Level Thread, ULT) 모델을 개선한 기능입니다. 이 글에서는 기존 스레드 모델과 Virtual Thread의 차이점, 그리고 이를 통해 얻을 수 있는 장점을 초보자도 쉽게 이해할 수 있도록 정리해 보겠습니다.기존 Java 스레드 모델 이해하기기존 Java의 스레드 모델은 주로 KLT와 1:1로 매핑되어 운영되었습니다. 이 모델에서 Java는 각 스레드가 운영체제의 커널에 의해 관리되었고, 멀티코어 CPU의 자원을 효율적으로 활용할 수 있었습니다. Java의 java.lang.Thread는 결국 커널 스레드로 실행되며, JVM은 이를 J.. 개발일지/자바 2024. 11. 8. 스프링 부트에서 JPA 활용 1. JPA란 무엇인가?JPA는 자바 애플리케이션에서 관계형 데이터베이스를 손쉽게 사용할 수 있게 해주는 ORM(Object-Relational Mapping) 기술입니다. 객체지향 프로그래밍 언어인 자바와 관계형 데이터베이스 간의 데이터를 쉽게 전송할 수 있도록 돕습니다.ORM(Object-Relational Mapping): 객체 지향적인 자바 코드와 관계형 데이터베이스 간의 변환을 자동으로 처리합니다. 이를 통해 개발자는 SQL을 직접 작성하지 않아도 데이터베이스와 상호작용할 수 있습니다.엔티티(Entity): JPA에서 데이터베이스 테이블과 매핑되는 자바 클래스를 의미합니다. 이 클래스를 통해 데이터베이스의 레코드를 자바 객체로 쉽게 다룰 수 있습니다.엔티티 매니저(EntityManager): 데.. 개발일지/자바 2024. 10. 29. 네이버 날씨 크롤링해서 현재 지역 날씨 조회하기 package crwaling; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.Scanner; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Crw { public static void main(String[] args) { S.. 개발일지/자바 2023. 12. 22. 웹 클롤링 원하는 요소 접근하기 결과 contains를 사용해서 현재 온도라는 글자가 포함된 영역에 접근을해서 접근한 데이터로 다시 select를 한다 그때 span이라는 태그에서 blind라는 클래스를 가진곳에서 contains를 사용해서 현재 온도라는 글자를 포함하는지 다시 한번더 확인하면서 접근한다. 개발일지/자바 2023. 12. 22. Request시 URL 파라미터 아스키코드 디코딩 하는법 1. URL 파라미터 아스키코드를 문자열로 디코딩 import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; public class URLDecoderExample { public static void main(String[] args) { try { // 인코딩된 URL 문자열 String encodedUrl = "%EB%82%A0%EC%94%A8"; // URL 디코딩 String decodedUrl = URLDecoder.decode(encodedUrl, StandardCharsets.UTF_8.toString()); // 결과 출력 System.out... 개발일지/자바 2023. 12. 22. 크롤링해서 이미지 파일 다운받기 package test; import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Iterator; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Test01 { public static void main(String[] args) { // 크롤링할 대상 URL final Strin.. 개발일지/자바 2023. 12. 21. Base64 인코딩, 디코딩 1. JAVA에서 제공하는 클래스를 이용하는 방식 package test; import java.util.Base64; import java.util.Base64.Decoder; import java.util.Base64.Encoder; public class Test { public static void main(String[] args) { String text = "test"; byte[] targetBytes = text.getBytes(); // Base64 인코딩 /////////////////////////////////////////////////// Encoder encoder = Base64.getEncoder(); byte[] encodedBytes = encoder.encode(ta.. 개발일지/자바 2023. 12. 17. Stream API Stream API - stream과 다른 개념 (파일 I/O , 소켓 X -> 완전히 다른 개념) - java 8 버전부터 추가된 유용한 클래스 - 자바에서는 많은 양의 데이터를 저장하기 위해서 배열이나 컬렉션 프레임 워크를 사용한다. 그러면 코드의 길이가 너무 길어지고, 가독성도 떨어지며 코드의 재사용이 거의 불가능하다. - 반복자 (iterator) -> 스트림 API를 도입했다. 스트림 API를 이용하면 배열이나 컬렉션 등 모두 거의 같은 방법으로 다룰 수 있게 된다. * 스트림 API의 동작 흐름 스트림이라는 클래스가 생성 스트림의 중간 연산 스트림의 최종 연산 - 한번 생성한 스트림은 재사용이 불가능하다. (단 한번만 사용이 가능하다) - 스트림은 원본 데이터를 변경하지 않는다. -.. 개발일지/자바 2022. 11. 8. Http통신으로 JSON 객체 여러개 가져오기(리스트), 파싱하기 while문을 활용해서 모든 json객체를 읽어낸다. 파싱하기 개발일지/자바 2022. 10. 31. Gson(라이브러리), Gson을 java로 변환하는 방법, 얕은복사, 깊은 복사 Gson라이브러리 다운받기 (2.8.9버전 사용하였음) https://mvnrepository.com/artifact/com.google.code.gson/gson 1.Gson을 java로 변환하는 방법 2.값을 하나씩 꺼내는 방법 3.얕은 복사 (주소 값'을 복사한다는 의미입니다 ) 4. 깊은 복사('실제 값'을 새로운 메모리 공간에 복사하는 것을 의미) 개발일지/자바 2022. 10. 31. JAVA로 HTTP통신해보기 & Jsonparsign json 데이터 주소 https://jsonplaceholder.typicode.com/todos/ Json Parsign하기 개발일지/자바 2022. 10. 31. ArrayList를 활용한 로또번호 생성하기 개발일지/자바 2022. 10. 8. 이전 1 2 3 4 ··· 7 다음