일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- php
- Spring
- Gradle
- docker
- tool
- elasticsearch
- db
- redis
- AWS
- Oracle
- MySQL
- 요리
- ReactJS
- jsp
- ubuntu
- Web Server
- Git
- javascript
- 맛집
- linux
- springboot
- JPA
- Design Patterns
- it
- IntelliJ
- jenkins
- laravel
- Spring Boot
- devops
- java
- Today
- Total
목록2022/07 (18)
아무거나
Soft Limit, Hard Limit 각 계정 마다 하나의 프로세스가 가질 수 있는 file descriptor에 제한이 있다. Soft limit 는 새로운 프로그램이 생성되면 디폴트로 적용되는 제한 값 Hard limit 는 Soft limit 부터 늘릴 수 있는 최대 값 (root만 조정 가능) aws ec2 기준으로는 인스턴스 타입에 따라 limit가 조정된다. 즉, 서버 사양에 따라 limit를 증가시킬 수 있다. Java는 hard 옵션까지 파일오픈이되고 Python에서는 soft옵션까지만 file이 오픈되는 이유 openjdk에서는 -XX:+MaxFDLimit 옵션이 true 인 경우 setrlimit 으로 limit를 증가시키므로 hard 옵션까지 파일이 오픈된다. 설치된 java의 M..
오래전에 작성된 글을 복사해온거라 직접 테스트 해보는 것을 권장 ( 참고용 정도로만 올렸음 ) Scroll Down 구현 // Render DOM // ref가 지정된 곳으로 포커싱이 될 예정이다. forEach({ .... }) // 스크롤 다운 함수 async handleScrollDown() { if (this.scrollLocationRef && this.scrollLocationRef.current) { this.scrollLocationRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' }) } } // 실행되는 함수 // 동적 추가할 때 마다 새로 생성된 행의 Ref를 찾을 수 없어서 우선 재귀함수로 해결.. (__) this.h..
오래전에 작성된 글을 복사해온거라 직접 테스트 해보는 것을 권장 ( 참고용 정도로만 올렸음 ) Fragments: DOM에 별도 노드를 추가하지 않고 자식 목록을 그룹화 할 수 있다. // 1. Fragments를 사용하면 아래와 같이 된다. render() { return ( ) } // 2. Fragments를 짧은 구문으로 사용한 예시이다. // 짧은 구문은 많은 도구에서 아직 지원하지 않기 때문에 명시적으로 를 사용하자. render() { return ( ) } // 3. key가 있는 Fragments // Fragments에 key가 있다면 문법으로 명시적으로 선언해야 합니다. 예를 들어 정의 목록을 만들기 위해 컬렉션을 fragments 배열로 매핑하는 사용 사례이다. return ( {p..
오래전에 작성된 글을 복사해온거라 직접 테스트 해보는 것을 권장 ( 참고용 정도로만 올렸음 ) useRef 리액트를 사용하면서 가끔씩 직접 DOM을 선택해줘야하는 상황이 발생할 수 있다. 예를 들어 Element의 크기를 가져온다는지, 스크롤을 제어 한다는지 등 다양한 상황에 대해 대응하기 위하여 react에서는 ref를 사용하고 Functional Component에서 ref를 사용하기 위해선 useRef라는 React Hook 함수를 사용한다. import React, { useState, useRef } from 'react'; function InputSample() { const [inputs, setInputs] = useState({ name: '', nickname: '' }); const..
로컬세팅시 자주 사용하는 명령들을 귀찮아서 한 번에 저장하였다. Docker 설치(CentOS8) sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce Elasticsearch + Kibana + Cerebro 설치 (Docker Compose 또는 Docker 중 선택) Docker Compose [docker-compose.yml] version: '3.6' services: elasticsearch: image: 'docker.e..
최근에 JVM 관련 대화를 나누던 도중 메모리 영역에 대한 잘못된 설명을 해버린적이 있다. 반성하는겸 다시 정리하고자 해당 포스팅을 작성하게 된다. Java 메모리(with. JVM) 정의 Stack: 정적 할당된 메모리 영역 boolean, char, short, int, long, float, double.. 등과 같은 데이터 즉, 원시타입의 데이터가 값이랑 같이 Stack 에 할당된다. Heap 영역에서 Object 타입 데이터의 참조값이 Stack 에 할당된다. Stack 의 메모리는 Thread 당 하나씩만 할당된다. 즉, 새로운 Thread 생성시 그 해당 Thread 에 대한 Stack 이 또 새롭게 생성된며 각 Thread 끼리는 Stack 영역을 접근 할 수 없다. 간단한 사용예시 pub..
Garbage Collection 기존글: https://bkjeon1614.tistory.com/249 GC(=Garbage Collection) 불필요한 또는 더이상은 사용하지 않는 객체들을 메모리에서 제거함으로써 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 해준다. JVM Heap 구조 대부분의 객체는 금방 접근 불가능 상태(unreachable)가 된다. // 10,000 건의 NewObject 객체는 Loop 내에서 생성되고, 사용되지만 Loop 밖에서는 더이상 사용할 일이 없어진다. 이런 객체들이 메모리를 계속 점유하고 있다면, 다른 코드를 실행하기 위한 메모리 자원은 지속적으로 줄어들기만 할 것이다. // GC는 이렇게 한번쓰이고 버려지는 객체들 즉, 접근 불가능 상태가 된..
Java + Spring Boot 개발시에 빈번하게 작성되는 try ~ catch 또는 예외처리등을 간소화하며 에러를 공통으로 핸들링하기 위해 전역으로 사용되는 Exception Handler 객체를 만들어보자. @ControllerAdvice 사용한 방법으로 진행하자. 자세한 코드는 https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 를 참고하면 된다. Global Exception Handler 처리 에러 객체 생성 [ErrorResponse.java] import java.util.ArrayList; import java.util.List; import java.util.stream.Collector..
Optional 먼저 Optional 을 설명하기전에 NPE(=NullPointerException) 에 대해서 알아보자. NPE(=NullPointerException) 개발시 예외처리중 가장 많이 발생하는 오류가 NPE(=NullPointerException) 이다. NPE 를 방어하려면 null 여부를 검사해야 하는데 변수가 많을시에 코드의 가독성과 유지보수성이 떨어지기 때문에 null 대신 초기값을 사용하길 권장하기도 한다. Optional? Java8 에서 처음 도입되었으며 Optional 클래스를 사용하여 NPE를 방지할 수 있도록 도와준다. Optional 이란 Null 이 될 가능성을 가진 값을 객체로 감싸는 래퍼 클래스이다. 또한 하기 코드처럼 value 에 값을 저장하기 때문에 값이 n..
1. 좌측 메뉴에서 Settings > General 클릭 2. Merge requests 의 우측의 Expand 버튼 클릭 3. Merge suggestions > Default description template for merge requests 영역에 템플릿 작성 4. 다 완료하면 실제 Create Merge Requests 할 때 하기 이미지와 같이 내용이 보여지는걸 확인할 수 있다.