跳至主要内容

博文

目前显示的是 2021的博文

MySQL-IF, IFNULL, NULLIF

IF(expr1, expr2, expr3) expr1이 true면 expr2를 리턴하고 그렇지 않은 경우 expr3를 리턴 IFNULL(expr1, expr2) expr1이 NULL이면 expr2를 리턴하고 NULL이 아니면 expr1을 리턴 예) IFNULL(name, '') = '' : name컬럼이 공백 여부를 체크 NULLIF(expr1, expr2) expr1 = expr2 true이면 NULL를 리턴하고 그렇지 않으면 expr1을 리턴 예) NULLIF(name, '') is null : name column값이 empty일 때 NULL 값이 리턴

Spring Cache

Cache 추상화 이해하기 핵심부분에서 추상화는 Java method에 캐싱을 적용함으로써 캐시에 보관된 정보로 메서드의 실행 횟수를 줄여준다. 즉 대상 메서드가 실행될때마다 추상화가 해당 메서드가 같은 인자로 이미 실행되었는 확인하는 캐싱 동작을 적용한다. 해당 데이터가 존재한다면 메서드를 실행하지 않고 결과를 반환하고 존재하지 않는다면 메서드를 실행하고 그 결과를 캐싱한 뒤에 사용자에게 반환해서 다음번 호출시에 사용 할 수 있게 한다. Spring cache는 cache 추상화를 지원하는데 EhCache, Redis, Couchbase 등 캐시 저장소와 빠르게 연동하여 bean으로 설정 할 수 있도록 도와준다. 선언적인 어노테이션 기반의 캐싱 @Cacheable  메소드에 지정 가능하고 지정된 메서드의 캐시 설정에 따라 데이터가 한번 생성되면 데이터가 캐싱되며, 다음 호출 시에 캐시에 저장된 데이터가 리턴된다. @Cacheable 설정 옵션은 다음과 같다. value 캐싱 공간의 대표 명칭 key Spring Expression Language(SpEl)으로 key생성을 지정  지정하지 않으면 모든 파라미터를 조합한 해시코드 값을 키로 생성 condition 조건부 캐싱. SpEL로 지정하고 표현식이 true면 메서드를 캐시 사용가능한 SpEL evaluation context 이름 위치 설명 예시 methodName root object 호출되는 메서드의 이름 #root.methodName method root object 호출되는 메서드 #root.method.name target root object 호출되는 대상 객체 #root.target targetClass root object 호출되는 대상 클래스 #root.targetClass args root object 대상을 호출하는데 사용한 인자(배열) #root.args[0] caches root object 현재 실행된 메서드 캐시의 컬렉션 #root.caches[0].name a...

Spring에서 Resource 내 파일 경로

Spring project에서 Resource 하위의 파일 경로 정보  public class MainTest { public static void main (String[] args) throws IOException , ParseException { JSONParser parser = new JSONParser() ; URL in = MainTest. class .getClassLoader().getResource( "test.json" ) ; String path = in.getPath() ; } } /Users/.../Project/test/XXX_test/target/classes/test.json  프로젝트의 target 폴더 path 정보를 얻을 수 있다. 컴파일 시 /src하위의 모든 파일들이 /target 폴터 하위에 생성이 되고 프로그램 실 시 /target 하위의 클래스 파일(*.class)과 resource 파일들을(*.xml , *. properties etc) 가지고 구동이 된다.

AOP(Aspect Oriented Programming)

AOP(Cross-Cutting) 핵심적인 기능에서 부가적인 기능을 분리한다. 분리한 부가기능을 Aspect라는 모듈 형태로 만들어서 설계하고 개발하는 방법 Aspect 구성 Aspect: 부가기능을 담고 있는 객체 Advise: 실질적인 부가기능을 담은 구현체, Aspect는 '무엇'을 '언제' 할지를 정의 @Around, @Before, @After, @AfterReturning, @AfterThrowing PointCut: 부가 기능이 적용되어야 할 대상(메소드)을 선정하는 방법 execution(), @annotion, 등등 execution( 리턴 타입   타겟이 되는 메소드  argument-매개변수 ) ex) execution( * com.dashboard.service.DashboardService (..) ) JointPoint: Advise가 적용될 위치, controller에서 정의된 method들의 args(매개변수)를 담고 있는 객체 import org.aspectj.lang.JoinPoint ; import org.aspectj.lang.annotation.Aspect ; import org.aspectj.lang.annotation.Before ; import org.aspectj.lang.annotation.Pointcut ; import org.slf4j.Logger ; import org.slf4j.LoggerFactory ; import org.springframework.beans.factory.annotation.Autowired ; @Aspect public class UserAuthAspect { private static final Logger logger = LoggerFactory. getLogger (AccountAuthAspect. class ); @Autowired private UserAuthService userAuthS...

GIS

GIS 데이터 유형 Vector : 현실 세계를 점, 선, 면으로 표현  Raster : 현실 세계를 픽셀 단위로 표현 점, 선, 면을 Feature라 함 여러개의 Feature가 모이면 Dataset 여러개의 Dataset이 모이면 DataSource dataset은 geometry공간좌표(x, y)와 attribute로 구성 좌표계(coordinate system) 지리적인 데이터정보들을 통합하여 사용할 수 있도록 위치를 정해줌 좌표계의 종류 지리좌표체계 투영좌표체계 https://m.blog.naver.com/PostView.nhn?blogId=rsmilee&logNo=220651379673&proxyReferer=https%3A%2F%2Fwww.google.com%2F Pan 패닝: 마우스 움직임에 따라 해당되는 지도 영역이 보이는것? http://mcms.daegu.ac.kr/user/chodh/user_source/gis01.htm OpenStreetMap은  Mercator projection( "EPSG:3857" )을 사용 ol.proj.transform로 지리좌표( 경도 위도 ) 를  Mercator projection좌표계로 전환 축척 - 지도상에서 1유닛이 나타내는 거리값 Resolution(지도 해상도) - 현재 축척에서 1픽셀이 표현하는 거리값 https://www.muhanit.kr/%EA%B8%B0%EC%88%A0%EB%B8%94%EB%A1%9C%EA%B7%B8/openlayers%EC%9D%B4%EC%9A%A9-map%EC%9C%BC%EB%A1%9C%EB%B6%80%ED%84%B0-%EC%B6%95%EC%B2%99-%EA%B5%AC%ED%95%98%EA%B8%B0 Layer -  热度图层(heatmaplayer) 、 图片图层(imagelayer) 、 切片图层(tilelayer)  和...

Oracle Cloud Infrastructure

  OCI 계정 생성 OCI에 계정 생성 시, Oracle은 서로 다른 2개의 identity system에 접근 할 수 있는 사용자를 생성합니다. OCI에서 Sign up시 Oracle Identity Cloud Service에 설정된 아이디와 비번의 사용자가 생성됩니다. SSO 옵션의 사용으로 재인증없이 Oracle Cloud Infrastructure에도 로그인 가능합니다.   OCI 주요 용어 Region과 AD(Availability Domains) OCI는 Region과 AD에서 운영됩니다. Region는 데이터 센터가 운영되는 지리적인 영역입니다. AD는 region을 구성하고 실제 OCI 서비스가 운영되는 데이터 센터 입니다. region는 오라클 클라우드가 서비스되는 물리적 데이터 센터인 AD를 묶는 논리적 단위로 각 region은 한개에 최대 3개 AD로 구성됩니다. AD는 어떤 자원도 공유하지 않는 물리적으로 독립된 데이터 센터입니다. AD는 물지적 자원을 공유하지 않기 때문에 특정 AD 장애가 다른 AD로 파급되지 않습니 다. AD는 고가용성을 위한 설계입니다. Console OCI를 접속하고 관리하기 위한 웹기반 user interface Tenancy OCI 계정을 생성하면, 해당 계정을 위한 Tenancy가 생성됩니다. OCI에서 Tenancy는 완전히 독립되고 격리된 사용자 기준의 최상위 단위입니다. Compartment OCI자원을 논리적으로 묶는 역할을 담당. 다양한 OCI자원의 논리 그룹을 Compartment로 만들고 이 단위로 자원 모니터링, 과금 및 권한을 설정. OCI자원을 관리하는 핵심 구성요소. Oracle Cloud 계정인 Tenancy가 만들어지면 Root Compartment(관리자 Compartment)가 만들어집니다. Compartment와 Region IAM resources(compartments, users, groups, policies, tags, federation provider...