일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Next.js 14
- jvm
- ollama langflow
- JPA
- 헤더 설정
- 도커
- header setting
- SpringBoot
- dto valid
- memcached
- 초기 세팅
- 초기 구축
- docker 설치
- NextJS
- spring
- React
- 리눅스
- java8
- Java
- custom valid
- java9
- CentOS6
- generate entity
- generate pojos
- docker
- spring boot
- MySQL
- swagger
- JavaScript
- jpa entity자동
- Today
- Total
목록4. JAVA (76)
개발자의 길

EhCache란? EhCache란 자바 기반 캐시로 오픈 소스이다. 클러스터 기능도 지원하며 로컬 오픈 소스 캐시 라이브러리라고 이해하면 좋다. 즉, 기본으로 스프링부트의 기본 캐싱 기능처럼 스프링 어플리케이션과 함께 존재하는 캐시로 사용할 수도 있고 별도 프로세스 외 배포까지 지원하는 등 메모리, 디스크 저장을 지원하며 멀티 CPU도 동시 접근하도록 할 수 있다. 기본 JVM 메모리에 저장된다. redis처럼 별도 서버 설치 없이 기본 사용할 수 이써 가볍게 사용하기 좋은 캐시 엔진이다. EhCache 2 구현하기 EhCache는 현재 버전 2와 버전 3가 있다. 버전 3의 경우 JSR-107과의 호환성이 좋아졌고 javax.cache 지원 등으로 ehcache 2보다 좀 더 발전했지만 ehcache에..

개발을 하다보면 어라? 이 데이터 계속 똑같이 사용되고 업데이트 될 일이 없는데? 하는 것들이 보인다. 데이터 업데이트가 자주 이뤄지지도 않고 자주 호출되는 데이터인데 계속 DB에 가서 데이터를 가져온다. DB에 한 번 갔다 하는데도 적은 데이터의 경우는 매우 그 시간이 짧지만 많은 데이터면 데이터일 수록 그 시간이 점점 늘어나 나중에는 사용자가 불편을 느낄 정도로 데이터를 가져오는 시간이 길어진다. 그럴 때 캐싱(Caching) 기능을 사용해서 똑같은 데이터는 DB에서 가져오지 않고 미리 캐싱해놓은 데이터를 가져오고 만일 데이터 업데이트가 이뤄지면 캐싱된 데이터를 업데이트하고 캐싱된 데이터가 너무 자리를 많이 차지하면 아예 캐싱된 데이터를 지워버리는 등 DB에 가서 데이터를 가져오지 않고 그보다 가깝고..
자주 까먹는 소스..맨날 할때 마다 찾아보기 귀찮.. private final String LOCAL_PATH="/home"; public void writeFile(String fileName, String writeContents) { try { // 1. 파일 객체 생성 //폴더 생성 File localFolder = new File(LOCAL_PATH); if(!localFolder.exists()) { if (localFolder.mkdir()) { log.info("폴더 생성:" + LOCAL_PATH); } else { log.error("폴더 생성 에러"); } } File localFile = new File(localFolder, fileName); // 2. 파일 존재여부 체크 및 생..
은근 자주 쓰는데, 할때 마다 헷갈리고, 찾아본다.. public void readUrlFile(String url) { StringBuffer sb = new StringBuffer(); BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(new URL(url).openStream())); String inputLine; while((inputLine = in.readLine()) != null) { sb.append(inputLine+"\n"); } in.close(); } catch (Exception e) { System.out.println("error:"+e.getMessage()); } finally { ..

Annotation(@)은 사전적 의미로는 주석이라는 뜻이다. 자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. meta data : 데이터를 위한 데이터) 다음은 어노테이션의 용도를 나타낸 것이다. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다. 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다. 실행시(런타임시)특정 기능을 실행하도록 정보를 제공한다. 기본적으로 어노테이션을 사용하는 순서는 다음과 같다. 어노테이션을 정의한다. 클래스에 어노테이션을 배치한다. 코드가 실행되는 중에 Reflection을 이용하여 추가 정보를..
swagger-ui를 적용하면 아주 편하고 좋다. 하지만, 이건 개발서버에서만 노출해야 하고, real(prod)에서는 비노출 하는게 맞다. 환경(phaze) 별로 활성/비활성 하는 방법을 3가지 적겠다. 셋중 하나를 적용하면 된다. 1. 설정파일(application) 설정 application.properties 파일 설정의 경우 [prod 설정 (application-prod.properties)] -> springfox.documentation.enabled=false [dev 설정 (application-dev.properties)] -> springfox.documentation.enabled=true application.yml 파일 설정의 경우 [prod 설정] springfox: docu..
JPA에서 현재까지 사용했던 검색은 아래와 같다. 식별자로 조회 EntityManager.find() 객체 그래프 탐색 e.g. a.getB().getC() 하지만 현실적으로 이 기능만으로 어플리케이션을 개발하기에는 무리이다. 그렇다고 모든 엔티티를 메모리에 올려두고 어플리케이션 내에서 필터하는 것은 현실성이 없는 소리이다. 즉, 데이터베이스에서 필터해서 조회해올 무언가가 필요하고, 그게 객체지향 쿼리 언어(JPQL)이다. JPQL은 엔티티 객체를 조회하는 객체지향 쿼리 언어이다. 문법은 SQL과 비슷한데, 실제론 SQL을 추상화 한것이기 때문에 특정 데이터베이스에 의존하지 않는 특징이 있다. SQL과 비슷하게 SELECT, UPDATE, DELETE 문을 사용할 수 있다. (참고로 엔티티 저장은 그냥 ..
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectTest { public static void main(String[] args) throws ClassNotFoundException { // 클래스 정보를 가져온다. Class cls = Class.forName("ReflectCls"); // 가지고 있는 멤버 변수를 출력해보자. public 멤버 변수만 가져온다. Field[] fields = cls.getFields(); for( Field field : fields ){ System.out.println..

정규표현식(Regular Expression)이란 컴퓨터 과학의 정규언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 입니다. 개발을 하다보면 전화번호, 주민등록번호, 이메일등과 같이 정해져있는 형식이 있고 사용자가 그 형식대로 제대로 입력했는지 검증을 해야하는 경우가 종종 있습니다. 이런 입력값을 정해진 형식에 맞는지 검증해야 할 때에는 정규표현식을 사용하면 쉽게 구현할 수 있습니다. 자주 사용하는 정규 표현식 정규 표현식 설명 ^[0-9]*$ 숫자 ^[a-zA-Z]*$ 영문자 ^[가-힣]*$ 한글 \\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail ^\d{2,3}-\d{3,4}-\d{4}$ 전화번호 ^01(?:0|1|[6-9])-(?:\d{3}|\d{..
import java.util.*; public static int[] mergeDupl(int[] a, int[] b){ HashSet sumVal = new HashSet(); for(int val : a){ sumVal.add(val); } for(int val : b){ sumVal.add(val); } int[] c= new int[sumVal.size()]; int idx =0; for(int val: sumVal){ c[idx]=val; idx++; } return c; } 합치기만 하고 싶으면, HashSet 대신에 그냥 HashMap 으로 하면 된다. Set 객체가 중복 제거 할때 많이 쓰는데, 보통 쓰는게 HashSet : 순서 보장 안함 LinkedHashSet : 들어간 순서로 저장..