<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://camon85.github.io/</id><title>주용의 블로그</title><subtitle>memo</subtitle> <updated>2023-08-12T22:47:56+09:00</updated> <author> <name>Jooyong Sung</name> <uri>https://camon85.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://camon85.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://camon85.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator> <rights> © 2023 Jooyong Sung </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>API Limit Rate</title><link href="https://camon85.github.io/posts/api-limit-rate/" rel="alternate" type="text/html" title="API Limit Rate" /><published>2023-08-12T00:00:00+09:00</published> <updated>2023-08-12T22:47:35+09:00</updated> <id>https://camon85.github.io/posts/api-limit-rate/</id> <content src="https://camon85.github.io/posts/api-limit-rate/" /> <author> <name>Jooyong Sung</name> </author> <category term="dev" /> <summary> 목적 과도한 트래픽을 방지하여 서비스 안정성을 유지 합니다. 특정 클라이언트가 서버 자원을 독점하지 못하도록 공정하게 분배합니다. 개발, 운영, 유료 키 등 차등 정책 적용 알고리즘 보통 아래 4가지 알고리즘으로 구현할 수 있다. Token Bucket: 가용한 토큰 개수만큼 요청 처리 Leaky Bucket: 일정한 속도 요청 처리 Fixed Window: 고정 간격 당 요청 수 제한 Sliding Window: Fixed Window 알고리즘의 경계 문제를 해결 Fixed Window 알고리즘 일정 시간 동안의 API 호출 횟수를 제한하는 방식입니다. 특정 시간 간격(예: 1분, 1시간)마다 허용된 최대 API 호출 횟수를 미리 정의하고, 해당 시간 간... </summary> </entry> <entry><title>Virtual Thread 살펴보기</title><link href="https://camon85.github.io/posts/virtual-thread/" rel="alternate" type="text/html" title="Virtual Thread 살펴보기" /><published>2023-07-30T00:00:00+09:00</published> <updated>2023-08-12T22:47:35+09:00</updated> <id>https://camon85.github.io/posts/virtual-thread/</id> <content src="https://camon85.github.io/posts/virtual-thread/" /> <author> <name>Jooyong Sung</name> </author> <category term="dev" /> <summary> Virtual Thread JEP 444: Virtual Threads JAVA 21 가상 쓰레드는 높은 처리량의 동시성 애플리케이션을 쉽게 작성할 수 있는 경량 쓰레드이다. Java 플랫폼에 가상 쓰레드가 도입된다. Thread per request 모델 웹 애플리케이션의 일반적이고 단순한 패턴 쓰레드 생성은 매우 느리고 자원을 많이 소모하기 때문에, 미리 생성하여 Thread Pool 을 통해 관리 한다. Java thread 와 OS thread Java의 thread는 OS의 thread와 1:1로 연결되어 있다. OS thread를 사용하기 쉽도록 추상화 되어있다. Java thread를 Platform thread 라고 부른다. 쓰레드가 데이터베이... </summary> </entry> <entry><title>Java 8 에서 Java 17 까지의 변경점 정리</title><link href="https://camon85.github.io/posts/java8tojava17/" rel="alternate" type="text/html" title="Java 8 에서 Java 17 까지의 변경점 정리" /><published>2023-07-01T00:00:00+09:00</published> <updated>2023-07-01T22:21:04+09:00</updated> <id>https://camon85.github.io/posts/java8tojava17/</id> <content src="https://camon85.github.io/posts/java8tojava17/" /> <author> <name>Jooyong Sung</name> </author> <category term="dev" /> <summary> 검토 하는 이유 사실 가장 큰 이유는 Spring Boot 때문.. Spring Boot 2까지는 Java 8이 최소 지원 버전이었지만, Spring Boot 3 부터는 Java 17이 최소 지원 버전이다. Spring Boot 3 시스템 요구사항 Spring Boot 지원 예정일 다른 언어들에는 이미 존재하는 문법적인 장점들이 업데이트 되고 있다. JDK 17 (LTS) 출시일: 2021년 09월 End Of Support: 2029년 9월 주요 변경점 JEP 286: Local-Variable Type Inference JAVA 10 지역 변수의 타입 추론 var list = new Arra... </summary> </entry> <entry><title>guava example - RangeSet, RangeMap</title><link href="https://camon85.github.io/posts/guava-example10-range/" rel="alternate" type="text/html" title="guava example - RangeSet, RangeMap" /><published>2017-05-24T00:00:00+09:00</published> <updated>2023-04-29T20:28:08+09:00</updated> <id>https://camon85.github.io/posts/guava-example10-range/</id> <content src="https://camon85.github.io/posts/guava-example10-range/" /> <author> <name>Jooyong Sung</name> </author> <category term="dev" /> <summary> view source 은근히 써먹을데가 있을 것 같다. RangeSet으로 범위 계산을 간단하게 할 수 있다. @Test public void openClosedTest() throws Exception { RangeSet&amp;lt;Integer&amp;gt; rangeSet = TreeRangeSet.create(); // 0 &amp;lt;= x &amp;lt;= 2 rangeSet.add(Range.closed(0, 2)); System.out.println(rangeSet); // [[0..2]] assertTrue(rangeSet.contains(0)); assertTrue(rangeSet.contains(1)); assertTrue(rangeSet.c... </summary> </entry> <entry><title>guava example - Multimap</title><link href="https://camon85.github.io/posts/guava-example09-multimap/" rel="alternate" type="text/html" title="guava example - Multimap" /><published>2017-05-24T00:00:00+09:00</published> <updated>2023-04-29T20:28:08+09:00</updated> <id>https://camon85.github.io/posts/guava-example09-multimap/</id> <content src="https://camon85.github.io/posts/guava-example09-multimap/" /> <author> <name>Jooyong Sung</name> </author> <category term="dev" /> <summary> view source 하나의 key에 여러개의 value를 put 할 수 있다. @Test public void multimapTest() throws Exception { // 하나의 key에 여러 value 셋팅 가능 Multimap&amp;lt;String, String&amp;gt; mpsTeam = ArrayListMultimap.create(); mpsTeam.put("dev", "jooyong"); mpsTeam.put("dev", "cjr"); mpsTeam.put("dev", "devhak"); mpsTeam.put("dev", "not yet"); mpsTeam.put("live", "jn"); mpsTeam.put("live", ... </summary> </entry> </feed>
