쥬웰채송화 입니다!일반채송화를 정원 꽃밭에 심으면 다음해 봄부터 씨앗에서 자연발아해 나오는 채송화를 제거하는게 일거리가 됩니다. 쥬웰 채송화는 씨앗이 없어서 줄기 삽목으로 번식된답니다. 뻗어 나가는 줄기를 잘라 삽목을 하면 바로 뿌리가 내리고 꽃을 피웁니다. 건조한 곳에서도 아주 잘 자라고, 서리올때까지 계속해서 피고 지고를 반복합니다. 문제는 씨앗이 없어서 번식을 못하니 가을 서리오기 전에 색상별로 화분에 심어 실내에서 얼지 않게 보관을 했다가 봄에 다시 화단에 심어 번식시키면 됩니다. 겨울에도 따뜻한 곳에 두면 꽃을 피웁니다. 꽃도 크고, 색상도 아주 아름답습니다. 색상은 빨강, 분홍, 보카시 3종 랜덤입니다. 15cm 1포트에 10촉씩 심어져 있으니 화분에서..
수입작약으로 흰겹꽃 페스티바 맥시마입니다.묵은둥이로 15여촉 내외입니다.현재 꽃봉우리 달고 갑니다.작약은 추위에 강해 전국 노지월동 잘 됩니다. (배송품입니다)https://smartstore.naver.com/bulbfarm/products/13513266151?nt_source=tistory&nt_medium=social 수입 작약-페스티바 맥시마(15촉내외) : 명일원[명일원] 구근을 전문으로 수입, 재배하는 꽃농장 명일원입니다.smartstore.naver.com
아마릴리스 티카 스타 입니다!!페루에서 수입한 아마릴리스 구근입니다. :D지금 화분에 식재하여 실내에 두시면 2~3개월 후에 개화합니다.화분에 식재시 구근의 3분의 1이 겉으로 드러나게 즉 3분의 2가 묻히게 심는게 좋아요.심고나서 물한번 듬뿍주세요!!담부터는 화분 흙이 마르면 한번씩 주시면됩니다.물을 너무 자주 주면 과습이 됩니다.햇빛을 많이 보여주어야 웃자람을 막을 수 있답니다.^^지금 바로 화분에 심어도 무방합니다.구근을 좀 더 건조시킨 후 그대로 겨울동안 신문지에 싸서박스에 넣어 보관했다가봄에 화분이나 정원에 심어도 좋습니다.노지에 심는 경우엔 물을 주지 않는게 좋아요 :) (배송품입니다)https://smartstore.naver.com/b..
Redis Cluster 동작 원리 Deep DiveHash Slot 분산 구조부터 Hash Tag, Client-side Routing 아키텍처까지1. Hash Slot — 데이터 분산의 기본 단위Redis Cluster는 데이터를 16,384개의 Hash Slot으로 분할해 여러 노드에 분산 저장한다. 각 노드는 전체 슬롯 범위의 일부를 담당하고, 특정 키가 어느 노드에 저장될지는 슬롯 번호로 결정된다.슬롯 계산 공식slot = CRC16(keyname) % 16384예를 들어 3개 노드로 구성된 클러스터라면 슬롯은 다음과 같이 나뉜다.노드담당 슬롯 범위Node A0 – 5,460Node B5,461 – 10,922Node C10,923 – 16,383user:1001 이라는 키가 있다고 하면:CRC..
들어가며게시판, 주문 내역, 로그 조회 화면을 만들다 보면 누구나 한 번쯤 겪는 문제가 있다."첫 페이지는 빠른데, 뒤로 갈수록 점점 느려진다."OFFSET 기반 페이징의 고질적인 성능 문제다. 이 글에서는 커버링 인덱스와 ROWID를 조합하여 대량 OFFSET 페이징의 성능을 개선하는 기법을 정리한다. 다만 Oracle 12c 이후부터는 옵티마이저가 이 최적화를 자동으로 수행하는 경우가 많으므로, 이 기법이 실제로 필요한 상황과 그렇지 않은 상황을 함께 다룬다.1. 문제: 왜 OFFSET이 커지면 느려지는가아래와 같은 전형적인 페이징 쿼리를 보자.SELECT *FROM ordersORDER BY created_at DESCOFFSET 100000 ROWS FETCH NEXT 20 ROWS ONLY;이 ..
PageableExecutionUtils란?Spring Data 라이브러리(org.springframework.data.support)에서 제공하는 헬퍼 클래스로,Page 객체(페이징 결과)를 생성할 때 불필요한 Count 쿼리 실행을 생략(Skip)하여 성능을 최적화해 줍니다.왜 PageableExecutionUtils가 필요한가?Spring Data JPA의 기본 페이징은 항상 2개의 쿼리를 실행1) content 조회 2) select count(*) ...마지막 페이지라면?요청한 size보다 결과가 적다면?더 이상 페이지가 없다는 것이 이미 명확하다면?→ count 쿼리는 쓸데없는 비용❌ 잘못된 방식long count = query.fetchCount(); //무조건 count 쿼리 실행됨List..
패턴 1 — Surrogate Key 방식 (가장 일반적)equals / hashCode 아예 구현하지 않음객체 동일성 = JVM 참조 동일성HashSet에 넣어도 안전id가 바뀌어도 hashCode 불변Hibernate 프록시도 안전@Entityclass Member( var name: String) { @Id @GeneratedValue var id: Long? = null}영속성 컨텍스트(1차 캐시)JPA는 이미 객체 동일성 컨텍스트를 갖고 있다같은 ID → 같은 객체 인스턴스 하나만 사용val m1 = em.find(Member::class.java, 1L)val m2 = em.find(Member::class.java, 1L)m1 === m2 // true////////..
@Entitydata class Member( @Id @GeneratedValue val id: Long = 0, var name: String)equals()와 hashCode() 문제: data class는 생성자에 있는 모든 필드를 사용하여 equals와 hashCode를 자동으로 만듦id = null (or 0) 인 상태로 엔티티 생성HashSet 또는 HashMap key로 사용persist() → DB가 id 생성Hibernate가 id를 새 값으로 변경hashCode() 변경 → 컬렉션에서 못 찾음equals / hashCode는 변하지 않는 식별자를 사용해야 한다순환 참조 및 지연 로딩 실패: 만약 생성자에 연관 관계(@OneToMany 등)가 포함되면, hashCod..
Body에 선언 - 안전한 Kotlin Entity 패턴 id는 클래스 바디에서 var로 선언id가 null이면 "아직 DB에 저장되지 않은 비영속(Transient) 상태자동 생성이 아니면 서비스/팩토리에서 member.id = "값" 형태로 세팅JPA는 프록시 객체 생성을 위해 기본 생성자가 필요자동으로 기본 생성자를 만들어주는 라이브러리 "plugin.noarg", "org.jetbrains.kotlin.plugin.jpa"Body에 선언하면 직접 equals와 hashCode를 구현하기 용이JPA Entity의 동등성은 오직 PK(Primary Key)로만 판단해야 안전영속화 전(Transient) 객체끼리 비교할 때도 동등으로 보고 싶은 경우는 PK 비교 안됨@Entityclass Member(..